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

git-svn-id: https://svn.apache.org/repos/asf/ant/core/tags/ANT_DOCS_PRE_14@269607 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 69abaa7..0000000
--- a/.cvsignore
+++ /dev/null
@@ -1,10 +0,0 @@
-.ant.properties
-dist
-build
-bootstrap
-distribution
-prj.el
-emacs-jprj.el
-bootstrap.bat.pif
-velocity.log
-
diff --git a/KEYS b/KEYS
deleted file mode 100644
index 1573ec5..0000000
--- a/KEYS
+++ /dev/null
@@ -1,70 +0,0 @@
-This file contains the PGP keys of various developers.
-Please don't use them for email unless you have to. Their main
-purpose is code signing.
-
-Users: pgp < KEYS
-Developers: 
-	pgp -kxa <your name> and append it to this file.
-	(pgpk -ll <your name> && pgpk -xa <your name>) >> this file.
-        (gpg --list-sigs <your name>
-             && gpg --armor --export <your name>) >> this file.
-
-Type Bits/KeyID    Date       User ID
-pub  1024/FEECAAED 1998/11/11 Stefan Bodewig <bodewig@bost.de>
-                              Stefan Bodewig <bodewig@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.3i
-
-mQCNAzZJoiMAAAEEAMzhUxTOC20Nprp6K4nLTiARt+EXii/dovNWWcfzZcYXi/lX
-r3zpUTTZxlKQpd4RaHjFmGgoOraZE4jCRFARVcFJgYmGUKpcWJZO7YKL36WUizTM
-+dyB2ycOtzlty1W5VmRL3FGqo67pKA9F/QHg3NSu9hY1W9xPPK7Kq3f+7KrtAAUR
-tCBTdGVmYW4gQm9kZXdpZyA8Ym9kZXdpZ0Bib3N0LmRlPokAlQIFEDZSrGXHcgyK
-jiW9zQEBshEEAMlG4qVjKp4/agdJG56M6izx9oaKecFLXHQJrFUy3w2PvZHFYtXc
-osXKorX6bPrE8uB57MxbY2WapKeVRodlG0+j39vAf501duK8q2rktfWt9Cl4JjJ4
-DbWhSWfV1ci62u2gCxwYQe22F9Wh+vhOR5NK9RTbSKhupdlFsnrk/i7xiQCVAwUQ
-NkmiI67Kq3f+7KrtAQGdxQQAlcFOzSv7G6M4uGbgvw7IGgrhx7rawtIyv9hLXgVC
-7ua9xaZV8G0Fl9gh8RnbdcZ4R/aT+KIiAFaslfZ3t6hlC4MTbnAJqvdS/NO98ZkJ
-YvnzZSKHflAbd5gyE7IVxBC9/xRlF/Wls5sYNwb6RjoRCaOjxN/y3WCLa3Va101v
-zNy0I1N0ZWZhbiBCb2Rld2lnIDxib2Rld2lnQGFwYWNoZS5vcmc+iQCVAwUQOxIo
-BK7Kq3f+7KrtAQGn6gP/SBACdHakA4H//otpyESSrk4PmyOaYF0Kyok43Gee2mT+
-m9+jZ3jLcC0oav6iH+otL/lhk9t/JDM8LjD2kAkdWWoIvvuPyCx97gOzojIo0Ve2
-1wuxJTF/VIjwyOtE8FzE7p4tkc6EubVpeZkV9Pq9HFRBCUcyKJDLnF4tbstScLU=
-=OBLe
------END PGP PUBLIC KEY BLOCK-----
-
-
-
-
-pub  1024D/51898504 2001-05-29 Conor MacNeill <conor@cortexebusiness.com.au>
-uid                            Conor MacNeill <conor@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.0.6 (MingW32)
-Comment: For info see http://www.gnupg.org
-
-mQGiBDsTqygRBACiZckNdclTlQFonLaIKBFGhMy0KKByw0x8XA4iwdbCXuF6xNIc
-HIFHajJ74AHchQ4d8xtomBy6b8yvFgWVeaZensvn69BlLeqGdyeJRzfPt6TgRnzZ
-2eWhb0HXdG3JwxL/2BabDhHfs4YJOrgB/vhRFQku6oCMRiBPtJj2werD6wCg0/zp
-jacYTw6+CR+sVvneCNyySFED/R3j10c4RnR8djgv1jKT8CKPuHYraupI9INEe+I6
-7qWjtJ02GzvMO6TElAtUsf4aysu45GgwkwEBnuG6mYb3Pq0V2c5tJc2A3Tj3DrdR
-i3HUNwurbus76I0sPyyENPu12QPeC6mvWLEsxVJ9o0hRKFayGvYUmrwWK9UFLjvp
-p9cXBACDHgLn7MAVLqUdYhRrUj/M+GOUpvBikEgoJJrEUmb5X4+++dffMh5HBIO4
-5LA11qEKuM2xnKqOilP7NLYXz1Fe0ocqv0jsHB4SprFTTai7ma31uwuRQvCQXVv1
-yJ5CLqYda64h/UA2kmmR2dfopmvDogYEMz/HU5voozxe7BEI7bQhQ29ub3IgTWFj
-TmVpbGwgPGNvbm9yQGFwYWNoZS5vcmc+iFcEExECABcFAjsTqygFCwcKAwQDFQMC
-AxYCAQIXgAAKCRCBBGRPUYmFBDgIAKCZztXqKhK6kXOnoGy7opCNmWU0lwCgsPDa
-4m+ruW3ch0rfbqtR75S52R+0LUNvbm9yIE1hY05laWxsIDxjb25vckBjb3J0ZXhl
-YnVzaW5lc3MuY29tLmF1PohXBBMRAgAXBQI7E6xMBQsHCgMEAxUDAgMWAgECF4AA
-CgkQgQRkT1GJhQTY0ACgmZmKheHzjPJs5hybpyvnvEiPYqYAn2+ryxdtz8XyOMEx
-GRmHNlhG7svsuQENBDsTqy0QBACfsCxJ6iCtgX8zjlVtMsMfDqu72x5sYatWKn8c
-u+4Oj5mi0x6azZIhwCa+K3ihLVOyG1mCRnzztGTIxWYRhq3TESIVOfgm+NgLGrmA
-XUTFyCT+21TExLCpuVZKmUHsWXLxDtfQ1diPeQpiQ8+Fvb/4jLGFjFIrQ2VjtFQn
-kumkSwADBgP9H0bF4hdMuVEcSJ9imxSoJshcOOA3Vd2+YiCTZhBygWM49wY5jNos
-/DArIjNCE53IlOu/UtHB2jqkSqjF0soGYsUjeCWouiTP9hLuMKPjnqj9ryJPTDKz
-nTCZ4TuB5CtzrKTlWLmPCPpFsGqe4KjMeKg/mqGqjPKl97xgStK9N9GIRgQYEQIA
-BgUCOxOrLQAKCRCBBGRPUYmFBMM6AJsF3FFyZGEmbt9aGG1W/u0oI9mcLgCfQyJ+
-aalbspazea4J9zgi59SSwOM=
-=Icm2
------END PGP PUBLIC KEY BLOCK-----
-
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/WHATSNEW b/WHATSNEW
deleted file mode 100644
index 641200a..0000000
--- a/WHATSNEW
+++ /dev/null
@@ -1,608 +0,0 @@
-Changes from Ant 1.4 to current CVS version
-===========================================
-
-Changes that could break older environments:
---------------------------------------------
-
-Other changes:
---------------
-
-Fixed bugs:
------------
-
-
-Changes from Ant 1.3 to Ant 1.4
-===========================================
-
-Changes that could break older environments:
---------------------------------------------
-* JUnitReport now uses the xalan redirect extension for multi-output.
-  With Xalan 1.2.2 it forces the use of bsf.jar in the classpath.
-  (Available in the xalan distribution). It is recommended to switch
-  to Xalan 2.x that do not need it.
-
-* Zip.setWhenempty() has changed its signature.
-
-* <rmic> is now implemented using a factory. This makes extending
-  rmic to use a new compiler a lot easier but may break custom
-  versions of this task that rely on the old implementation.
-
-* several Zip methods have changed their signature as we now use a Zip
-  package of our own that handles Unix permissions for directories.
-  Furthermore <zip> will now use the platform's default character
-  encoding for filenames - this is consistent with the command line
-  ZIP tools, but causes problems if you try to open them from within
-  Java and your filenames contain non US-ASCII characters. Use the new
-  encoding attribute of the task and set it to UTF8 to get the old
-  behavior.
-
-* The <pvcs> task has been move to a package of its own.
-
-* JUnitResultFormater has two additional methods that must be
-  implemented by custom formatters.
-
-* Ant will no longer use the canonical version of a path internally -
-  this may yield different results on filesystems that support
-  symbolic links.
-
-* The output generated by the xml formatter for <junit> has changed
-  again, it doesn't format the numeric value in the time attribute anymore.
-
-* Pattern matching rules have changes slightly, the pattern foo*
-  doesn't match files contained in a directory named foo - use foo/*
-  instead.
-
-* <fixcrlf> will not remove trailing whitespace at the end of lines anymore.
-
-* The Classloader usage has been changed for the taskdef, property, available 
-  and sql tasks so that it delegates to the parent classloader. This may cause 
-  ClassNotFoundExceptions to be thrown if a system class attempts to load a
-  class in the taskdef's classpath (typically factory objects).
-
-* Ant now allows multithreading of tasks and the containment of tasks within
-  other tasks. This can break customer listeners which do not expect messages
-  from a task before the previous task has finished. 
-  
-* Ant now installs its own ouput stream into System.out to route output to the
-  task currently executing on the current thread. This also means that all 
-  output is now routed as Ant message events. Customer listeners and loggers 
-  should not call System.out at any time. This has always been true but such 
-  usage now will cause problems due to possible recursion.
-
-* Invalid manifest files will now cause build failures in the <jar> task.
-
-* Ant Introspection now looks for methods with method names starting with
-  addConfigured. When called these methods are passed an argument after it has 
-  been configured from the build file. Custom tasks supporting nested elements 
-  starting with the name configured will no longer function.  
-
-* The environment variable JAVACMD that can be used to specify the
-  java executable to Ant's wrapper scripts must not contain additional
-  command line parameters any longer - please use the environment
-  variable ANT_OPTS for such parameters now.
-  
-* Ant's wrapper scripts now quote the CLASSPATH environment variable, thus
-  supporting classpaths which refer to directories containing spaces. This means
-  that the CLASSPATH environment variable cannot have quotes. Any quotes should
-  be removed. This will not affect the operation of the CLASSPATH environment
-  variable in other contexts.
-
-* A delete task like
-  <delete includeEmptyFilesets="true">
-    <fileset dir="somedir" />
-  </delete>
-  will now remove "somedir" as well, unless there are still files left
-  in it (matched by the default excludes).
-
-Other changes:
---------------
-
-* New tasks: ear, p4counter, record, cvspass, vsscheckin, vsscheckout,
-  typedef, sleep, mimemail, set of tasks for Continuus/Synergy, dependset,
-  condition, maudit, mmetrics, jpcoverage, jpcovreport, jpcovmerge
-
-* Ant now uses JAXP 1.1
-
-* rmic now supports Kaffe's and Weblogic's version of rmic.
-
-* new magic property build.rmic to chose the rmic implementation
-
-* <tar> will now add empty directories as well
-
-* you can now specify a description for <p4change>
-
-* <touch> can now work on <fileset>s
-
-* <uptodate> now supports a value attribute
-
-* <fail> supports nested text
-
-* <fixcrlf> won't override files that are already in the correct
-   format.
-
-* <sql> now supports REM comments as well as // and --
-
-* <jar> now has a nested <metainf> element following the same idea as
-  <war>'s <webinf>.
-
-* <pvcs> can now handle multiple projects.
-
-* <available> now has a "type" attribute you can use in conjunction
-  with the "file" attribute to specify whether the "file" you're
-  looking for is a file or a directory.
-
-* New <junit> formatter named "brief"
-
-* <ejbjar> changes
-  * Add support for Borland Application Server to the <ejbjar> task using
-    a <borland> nested element.
-  * Add support for iPlanet Application Server to the <ejbjar> task. Also 
-    includes some iPlanet utility tasks
-  * Add support for JBoss Application Server to the <ejbjar> task. 
-  * Add a naming attribute to control the naming scheme that
-    ejbjar uses to name the generated EJB jars.
-  * Weblogic element now sets the compiler class for EJB 2.0 beans
-  * <dtd> elements can be specified at the <ejbjar> level for building generic
-    beans
-  * <dtd> elements can now be URLs
-  * Allow the manifest to be specified for the generated jars
-  * The weblogic element now supprts an attribte noEJBC to skip the processing
-    of the jar by ejbc. The ejbc step will then occur at deployment
-  * weblogic will tell ejbc to use Jikes compiler if build.compiler is set to 
-    jikes. It can be restored to the default, javac, operation if desired.  
-  
-* Allow the <sql> Delimiter to be set in the so that Oracle stored procs may be
-  entered  
-
-* <execon> and <apply> can now optionally skip empty filesets.
-
-* <javadoc> has a new useexternalfile attribute that makes it use a
-  temporary file for sourcefile and package names - helps to defeat
-  command line length limitations.
-
-* Data types like <path> can now be defined inside of <target>s
-
-* you can now specify a classpath for <style> - the XSLZ processor
-  will be loaded from this path
-
-* added a force attribute to <style> to support dependencies that the
-  task cannot determine itself (dependency on parameters, not file
-  modification times for example)
-
-* added vmlauncher attribute to exec tasks. This defaults to true. If
-  it is set to false, the VM's ability to launch commands in bypassed
-  and the OS shell, either directly or through the auxillary antRun 
-  scripts is used. 
-
-* regexp mapper now supports the java.util.regex package of JDK 1.4.
-
-* New filesonly attribute for <zip> and friends to suppress directory
-  entries.
-
-* New update attribute for <zip> and friends - update an existing
-  archive instead of creating a new one.
-
-* <apply> and <execon> have been merged into a single task.
-
-* added vssver.scc to the default excludes
-
-* <available> has a new filepath attribute/nested element that allows
-  you top search for a file in a given path.
-
-* <junit> can now optionally set a property on test failure.
-
-* <taskdef> can now define several tasks at once, reading the 
-  name/classname pairs from a property file or resource.
-
-* <unzip/unjar/unwar> and <untar> now have an overwrite attribute that
-  defaults to true.  If set to false, files that are newer than the
-  files in the archive will not be replaced.
-
-* <patternset> and <fileset> now support nested <in/excludesfile>
-  elements - using these you can have more than one in/excludes file
-  per <patternset>. 
-
-* Three new supported compilers for javac: kjc for kopi, gcj for the
-  gcc frontend and sj for Symantec's compiler. 
-  In addition extJavac or the new fork attribute can be
-  used to run the JDK's javac in a JVM separate from Ant.
-
-* <fixrlf> can now with CR only line-ends and can use an arbitraty
-  between 2 and 80.
-
-* The .NET tasks have been adapted to the beta2 release of the framework.
-
-* <move> will now try to rename() files before copying them byte by
-  byte - only if filtering is of, of course.
-  
-* <ant> and <antcall> tasks now support a new attribute inheritAll. When set to
-  false, only user properties are passed through to the target Ant instance.
-  This includes properties set on the command line and properties explicitly
-  passed
-  
-* <javadoc> now skips off line links if the package list cannot be found.
-
-* <wlrun> now allows the security policy file to exist outside the weblogic
-  directory.
-  
-* <java> task will set the Thread contextClassLoader under JDKs 1.2+ to the
-  classloader for the class being executed.
-  
-* Introduce the concept of a TaskContainer - a task or element which can contain
-  Ant Tasks. 
-  
-* Add new tasks implementing the TaskContainer interface <parallel> and
-  <sequential> which allow parallel execution of tasks to be specified.
-
-* <depend> task will now take into account dependencies on jar files and class
-  files from a given classpath.
-  
-* <jar> manifest entries may now be specified in the build file either 
-  completely or to be merged with a manifest file.
-
-* <tstamp> task custom formats now support locales. 
-
-* Added a listner which will forward events to Log4J. The log4j configuration 
-  file should be in the directory from which Ant is run or passed as a system
-  property using a JVM argument.
-
-* Introduced the concept of <filtersets> to allow for more control in which 
-  filters get applied in a <copy> or <move> operation.       
-
-* Added nowarn attribute to javac and deprecated the Jikes-magic property
-  build.compiler.warnings.
-  
-* The <depend> task cache format has changed and all dependency information is
-  now stored in a single file.
-
-Fixed bugs:
------------
-
-* Testcases have been made independent of current working directory.
-
-* Input ZIP-Files will be closed when using a <zipfileset>.
-
-* p4 tasks now don't fail if user, port or client have been omitted
-  (and this is acceptable for the context of the command).
-
-* <javah>'s outputfile attribute will be resolved as relative to the
-  projects basedir.
-
-* <antstructure> should create a valid DTD for propertyfile.operation.entry 
-  and omit tasks it fails to load.
-
-* won't try to pass a -bootclasspath flag to javac 1.1 anymore
-
-* <style>'s style attribute no handles absolute paths correctly.
-
-* <delete includeemptydirs="true"> now deletes more than just the leaf
-  directories.
-
-* You can now specify a <fileset> for a directory that doesn't exist at
-  declaration time but will created before the fileset gets used for the
-  first time.
-
-* If the quiet attribute has been set, <delete> will handle <fileset>s
-  with non-existing directories gracefully.
-
-* Output written by testcases will now be captured by the <junit> task
-  and passed to the formatters.
-  
-* Quote the -group parameter to Javadoc as per the specification
-
-* Initialise classes when loaded through the AntClassLoader - that is, run
-  static initializers
-  
-* Implement getResource() and getResources() in AntClassLoader
-
-* Create the <ejbjar> weblogic command line as a set of arguments rather than
-  as a single line. Avoids problems with paths which contain spaces.
-  
-* <ejbjar> now fails when the weblogic ejbc compiler reports an error.
-  
-* Make the AntClassLoader load resources in the same order as it currently
-  loads classes. 
-  
-* Handle classpaths with spaces
-
-* Make sure XSLT processors close their output files in <style>.  
-
-* perform proper uptodate check in <rmic> when compiling for IIOP.
-
-* <jjtree>'s uptodate test works even if outputdirectory is not the
-  parent dir of target
-
-* <copy> will remove target file (if it exists) before writing to it -
-  this avoids problems with links on filesystems that support them.
-
-* <ftp> now properly recurses remote directories.
-
-* <ftp> closes remote connection when it's done.
-
-* <junit> tries to include all necessary classes for the task itself
-  to the classpath when running in fork mode - doesn't work for JDK 1.1
-
-* <apply> and <execon> do now execute the command only once, if you
-  specify the parallel attribute - instead of once per fileset.
-
-* directory based tasks and fileset could miss some included files in
-  directories that have been excluded
-
-* <fixcrlf> failed for large files.
-
-* <move> removed files you tried to move to themselves.
-
-* <sql> task will not trty to print the result set unless the query succeeded.
-
-* Ant classloader will now ignore paths which are invalid relative to the
-  project base
-  
-* <ejbjar> weblogic elements check for jar file changes has been fixed.
-  Previously some changes would not be included.
-
-* properties loaded from properties files are now resolved internally. This
-  removes the spurious warnings about usage of properties which have not been
-  set.
-  
-* <jar> task and friends now process the JAR manifest to ensure it is valid.
-
-* The task finished event now includes any exception thrown by the task.
-
-* <java> task now supports a jvmVersion attribute so that if another JVM is
-  being used, Ant can determine which options to use for features such as the 
-  VM memory limits 
-
-  
-Changes from Ant 1.2 to Ant 1.3
-===========================================
-
-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. At this
-  time, this is not part of the Ant release, although the source is
-  included if you are interested.
-
-* New tasks: stylebook, propertyfile, depend, antlr, telnet, csc,
-  ilasm, apply, javah, several clearcase tasks, junitreport, sound
-
-* 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.  
-
-* 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.
-  
-* The <tar> and <untar> tasks now support GNU format for handling paths
-  which are greater than 100 characters in length. In addition the <tar>
-  task now supports nested filesets through which the file permissions
-  may be controlled.
-
-* wlrun, wlstop and ejbjar now support Weblogic 6.0
-
-* The MPasre task has been updated to work with MParse 2.0
-
-* The documentation has been significantly updated.
-
-
-Fixed bugs:
------------
-
-* <signjar> doesn't use deprectated methods anymore.
-
-* javadoc's failonerror attribute works again
-
-* javadoc's additionalparam attribute will now be split into separate
-  parameters (on spaces) to allow for more than one parameter.
-
-* 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
-  
-* ejbjar includes super classes and super interfaces into the generated ejb 
-  jar files. The <support> nested element allows support classes to be 
-  included in the EJB jar. The toplink element should now correctly locate
-  the toplink descriptor.
-  
-* <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. 
-
-* The AntClassLoader now refers to the loader which loaded it, any 
-  requests it does not handle itself. Previously these went to the 
-  primordial loader.
-
-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 ...
-
-* The packagelistloc attribute of <javadoc>'s <link> child will be
-  resolved as a file (i.e. it is either absolute or relative to 
-  basedir).
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 787af61..0000000
--- a/bootstrap.bat
+++ /dev/null
@@ -1,85 +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\nul rmdir/s/q bootstrap
-if not "%OS%" == "Windows_NT" if exist bootstrap\nul deltree/y bootstrap
-if     "%OS%" == "Windows_NT" if exist build\classes\nul rmdir/s/q build\classes
-if not "%OS%" == "Windows_NT" if exist build\classes\nul deltree/y build\classes
-
-SET LOCALCLASSPATH=lib\crimson.jar;lib\jaxp.jar;lib\optional\junit.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;%CLASSPATH%
-
-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%\nul mkdir %CLASSDIR%
-if not exist build\nul mkdir build
-if not exist build\classes\nul mkdir build\classes
-
-echo.
-echo ... Compiling Ant Classes
-
-"%JAVAC%" -d %CLASSDIR% %TOOLS%\tar\*.java %TOOLS%\zip\*.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 %TOOLS%\ant\taskdefs\condition\*.java %TOOLS%\ant\taskdefs\compilers\*.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 -emacs 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 310b697..0000000
--- a/bootstrap.sh
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/bin/sh
-
-# Make sure that the classpath & java_home are in Unix format before we use them
-if [ "$OSTYPE" = "cygwin32" ] || [ "$OSTYPE" = "cygwin" ] ; then
-  CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-  JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# You will need to specify JAVA_HOME if compiling with 1.2 or later.
-
-if [ -n "$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
-
-# IBM's JDK on AIX uses strange locations for the executables:
-# JAVA_HOME/jre/sh for java and rmid
-# JAVA_HOME/sh for javac and rmic
-if [ -z "$JAVAC" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/sh/javac" ] ; then 
-      JAVAC=${JAVA_HOME}/sh/javac;
-    else
-      JAVAC=${JAVA_HOME}/bin/javac;
-    fi
-  else
-    JAVAC=javac
-  fi
-fi
-if [ -z "$JAVACMD" ] ; then 
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 
-      JAVACMD=$JAVA_HOME/jre/sh/java
-    else
-      JAVACMD=$JAVA_HOME/bin/java
-    fi
-  else
-    JAVACMD=java
-  fi
-fi
- 
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly."
-  echo "  We cannot execute $JAVACMD"
-  exit
-fi
-
-ANT_HOME=.
-export ANT_HOME
-
-echo ... Bootstrapping Ant Distribution
-
-if [ -d "bootstrap" ] ; then
-  rm -r bootstrap
-fi
-
-if [ -d "build/classes" ] ; then
-  rm -r build/classes
-fi
-
-CLASSPATH=lib/crimson.jar:lib/jaxp.jar:${CLASSPATH}
-
-DIRLIBS=lib/optional/*.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
-        CLASSPATH=$CLASSPATH:"$i"
-    fi
-done
-
-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
-mkdir -p bin
-
-echo ... Compiling Ant Classes
-
-"${JAVAC}" -d ${CLASSDIR} ${TOOLS}/tar/*.java ${TOOLS}/zip/*.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 \
-    ${TOOLS}/ant/taskdefs/compilers/*.java \
-    ${TOOLS}/ant/taskdefs/condition/*.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
-cp src/script/antRun bin
-chmod +x bin/antRun
-
-echo ... Building Ant Distribution
-
-cp -r ${CLASSDIR} build
-
-"${JAVACMD}" -classpath "${CLASSPATH}" -Dant.home=. org.apache.tools.ant.Main -emacs bootstrap
-
-echo ... Cleaning Up Build Directories
-
-rm -rf ${CLASSDIR}
-rm -rf bin
-
-echo ... Done Bootstrapping Ant Distribution
diff --git a/build.bat b/build.bat
deleted file mode 100755
index c3c315c..0000000
--- a/build.bat
+++ /dev/null
@@ -1,30 +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
-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
-echo Bootstrap FAILED
-goto cleanup
-
-:runAnt
-set LOCALCLASSPATH=lib\crimson.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 -emacs %1 %2 %3 %4 %5 %6 %7 %8 %9
-goto cleanup
-
-:install_ant
-call bootstrap\bin\ant.bat -emacs -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 b620867..0000000
--- a/build.sh
+++ /dev/null
@@ -1,35 +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    
-
-if test ! -f bootstrap/lib/ant.jar -o  ! -x bootstrap/bin/ant -o ! -x bootstrap/bin/antRun ; then
-  echo Bootstrap FAILED
-  exit
-fi
-
-LOCALCLASSPATH=lib/crimson.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 -emacs $ANT_INSTALL $*
-
diff --git a/build.xml b/build.xml
deleted file mode 100644
index fb47c73..0000000
--- a/build.xml
+++ /dev/null
@@ -1,755 +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.5alpha"/>
-
-  <property name="debug" value="true" />
-  <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}" />
-    <!--
-        include the test source and test data dirs
-        so that we can pick resources via getResource(AsStream)
-     -->
-    <pathelement location="${tests.dir}"/>
-    <pathelement location="${tests.etc.dir}"/>
-    <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="dist.dir" value="dist"/>
-  <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/manual/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"/>
-
-  <!-- 
-       ===================================================================
-         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="jdk1.4+" classname="java.lang.CharSequence" />
-    <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="xalan.present" 
-               classname="org.apache.xalan.xslt.XSLTProcessorFactory" 
-               classpathref="classpath" />
-    <available property="xalan2.present" 
-               classname="org.apache.xalan.transformer.TransformerImpl" 
-               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"/>
-    <available property="icontract.present"
-               classname="com.reliablesystems.iContract.IContracted"
-               classpathref="classpath"/>
-    <available property="jdepend.present" 
-               classname="jdepend.framework.JDepend"  
-               classpathref="classpath"/>
-    <available property="log4j.present"
-               classname="org.apache.log4j.Category"
-               classpathref="classpath"/>
-    <!-- this is just a way to check for a TraX implementation -->
-    <available property="trax.impl.present"
-               resource="META-INF/services/javax.xml.transform.TransformerFactory"
-               classpathref="classpath"/>
-               
-    <condition property="javamail.complete">
-      <and>
-        <available classname="javax.activation.DataHandler"
-                   classpathref="classpath"/>
-        <available classname="javax.mail.Transport"
-                   classpathref="classpath"/>
-      </and>
-    </condition>
-  </target>
-
-  <!-- 
-       ===================================================================
-         Prepare the build              
-       =================================================================== 
-  -->
-  <target name="prepare">
-    <tstamp>
-      <format property="year" pattern="yyyy" />
-    </tstamp>
-  </target>
-
-  <!-- 
-       ===================================================================
-         Build the code           
-       =================================================================== 
-  -->
-  <target name="build" 
-          depends="prepare, check_for_optional_packages"
-          description="--> compiles the source code">
-    <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="${ant.package}/util/regexp/Jdk14RegexpMatcher.java" 
-               unless="jdk1.4+" />
-      <exclude name="${ant.package}/AntSecurityManager.java"
-               unless="jdk1.2+" />
-      <exclude name="${ant.package}/listener/Log4jListener.java"
-               unless="log4j.present" />
-
-      <exclude name="${optional.package}/IContract.java" unless="icontract.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}/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}/ejb/IPlanet*.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/MimeMail.java" unless="javamail.complete" />
-      <exclude name="${optional.package}/net/FTP.java" unless="netcomp.present" />
-      <exclude name="${optional.package}/net/TelnetTask.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="xalan.present" />
-      <exclude name="${optional.package}/junit/AggregateTransformer.java"
-               unless="xalan.present" />
-      <exclude name="${optional.package}/jdepend/*" unless="jdepend.present" />
-      <exclude name="${optional.package}/sitraka/**" unless="jakarta.oro.present"/>
-      <exclude name="${optional.package}/metamata/MAudit*" unless="jakarta.oro.present"/>
-      <exclude name="${optional.package}/metamata/**" unless="jdk1.2+" />
-    </javac>
-    
-    <copy todir="${build.classes}">
-      <fileset dir="${java.dir}">
-        <include name="**/*.properties" />
-      </fileset>
-    </copy>
-
-    <copy    todir="${build.classes}" 
-             overwrite="true">
-      <fileset dir="${java.dir}">
-        <include name="**/version.txt" />
-        <include name="**/defaultManifest.mf" />
-      </fileset>
-      <filterset>
-        <filter token="VERSION" value="${version}" />
-        <filter token="DATE" value="${TODAY}" />
-        <filter token="TIME" value="${TSTAMP}" />
-      </filterset>
-      
-    </copy>
-
-    <copy todir="${build.classes}/${optional.package}/junit/xsl">
-       <fileset dir="${src.dir}/etc">
-         <include name="junit-frames.xsl" />
-         <include name="junit-noframes.xsl" />
-       </fileset>
-    </copy>
-
-  </target>
-  
-  <!-- 
-       =================================================================== 
-         Create the ant jars: ant.jar and optional.jar
-       =================================================================== 
-  -->
-  <target name="jars" 
-          depends="build" 
-          description="--> creates the ant jars">
-
-    <jar jarfile="${build.lib}/${name}.jar" 
-         basedir="${build.classes}" 
-         manifest="${manifest}">
-      <exclude name="org/apache/tools/ant/taskdefs/optional/**" />
-      <fileset dir="${build.classes}" 
-               includes="org/apache/tools/ant/taskdefs/optional/TraXLiaison.class" />
-    </jar>
-
-    <jar jarfile="${build.lib}/optional.jar" 
-         basedir="${build.classes}" 
-         manifest="${manifest}">
-      <include name="org/apache/tools/ant/taskdefs/optional/**" />
-      <exclude name="org/apache/tools/ant/taskdefs/optional/TraXLiaison.class" />
-    </jar>
-
-  </target>
-
-  <!--
-       ===================================================================
-         Create the essential distribution that can run ant
-       ===================================================================
-  -->
-  <target name="dist-lite" 
-          depends="jars"
-          description="--> creates a minimum distribution to run ant">
-
-    <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>
-
-    <fixcrlf srcdir="${dist.bin}" eol="crlf" includes="*.bat" />
-    <fixcrlf srcdir="${dist.bin}" eol="lf">
-      <include name="ant" />
-      <include name="antRun" />
-    </fixcrlf>
-    <fixcrlf srcdir="${dist.bin}" includes="runant.pl" />
-
-    <chmod perm="ugo+rx" dir="${dist.dir}" type="dir" includes="**" />
-    <chmod perm="ugo+r" dir="${dist.dir}" type="file" includes="**" />
-    <chmod perm="ugo+x" type="file">
-       <fileset dir="${dist.bin}">
-         <include name="**/ant" />
-         <include name="**/antRun" />
-         <include name="**/runant.pl" />
-       </fileset>
-    </chmod>
-  </target>
-
- <!--
-       ===================================================================
-         Create the complete distribution
-       ===================================================================
-  -->
-  <target name="dist" description="--> creates a complete distribution">
-    <antcall inheritAll="false" target="internal_dist">
-      <param name="dist.dir" value="${dist.name}" />
-    </antcall>
-  </target>  
-
-  <target name="dist_javadocs" depends="javadocs">
-    <mkdir dir="${dist.javadocs}"/>
-    <copy todir="${dist.javadocs}" overwrite="true">
-      <fileset dir="${build.javadocs}"/>
-    </copy>
-  </target>
-  
-  
-  <target name="internal_dist" depends="dist-lite,dist_javadocs">
-    <mkdir dir="${dist.docs}"/>
-
-    <copy todir="${dist.lib}">
-      <fileset dir="${lib.dir}">
-        <include name="*.jar" />
-        <include name="*.zip" />
-      </fileset>
-    </copy>
-
-    <copy todir="${dist.lib}" file="${lib.dir}/optional/README"/>
-    
-    <copy todir="${dist.docs}"
-          filtering="on">
-      <fileset dir="${docs.dir}"/>
-    </copy>
-
-    <copy todir="${dist.dir}">
-      <fileset dir=".">
-        <include name="README"/>
-        <include name="LICENSE"/>
-        <include name="TODO"/>
-        <include name="WHATSNEW"/>
-        <include name="KEYS"/>
-      </fileset>
-    </copy>
-
-    <chmod perm="ugo+rx" dir="${dist.dir}" type="dir" includes="**" />
-    <chmod perm="ugo+r" dir="${dist.dir}" type="file" includes="**" />
-    <chmod perm="ugo+x" type="file">
-       <fileset dir="${dist.bin}">
-         <include name="**/ant" />
-         <include name="**/antRun" />
-         <include name="**/runant.pl" />
-       </fileset>
-    </chmod>
-
-  </target>
-
-
-  <!--
-       ===================================================================
-         Target to create bootstrap build
-       ===================================================================
-  -->
-  <target name="bootstrap" description="--> creates a bootstrap build">
-    <antcall inheritAll="false" target="dist-lite">
-      <param name="dist.dir" value="${bootstrap.dir}" />
-    </antcall>
-  </target>
-
-
-  <!--
-       ===================================================================
-         Create the source distribution
-       ===================================================================
-  -->
-  <target name="src-dist" 
-          description="--> creates a source distribution">
-
-    <mkdir dir="${src.dist.dir}" />
- 
-    <copy todir="${src.dist.lib}">
-      <fileset dir="${lib.dir}">
-        <include name="*.jar" />
-        <include name="*.zip" />
-        <include name="optional/README"/>
-      </fileset>
-    </copy>
-
-    <copy todir="${src.dist.src}">
-      <fileset dir="${src.dir}"/>
-    </copy>
-
-    <copy todir="${src.dist.docs}">
-      <fileset dir="${docs.dir}">
-        <exclude name="manual/api/**"/>
-      </fileset>
-    </copy>
-
-    <copy todir="${src.dist.dir}">
-      <fileset dir=".">
-        <include name="README"/>
-        <include name="LICENSE"/>
-        <include name="TODO"/>
-        <include name="WHATSNEW"/>
-        <include name="KEYS"/>
-        <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}" eol="crlf" includes="*.bat" />
-    <fixcrlf srcdir="${src.dist.dir}" eol="lf">
-      <include name="**/*.sh" />
-      <include name="**/ant" />
-      <include name="**/antRun" />
-    </fixcrlf>
-    <fixcrlf srcdir="${src.dist.dir}">
-      <include name="**/runant.pl" />
-      <include name="**/*.java" />
-    </fixcrlf>
-
-    <chmod perm="ugo+x" dir="${src.dist.dir}" type="dir"/>
-    <chmod perm="ugo+r" dir="${src.dist.dir}" />
-    <chmod perm="ugo+x">
-       <fileset dir="${src.dist.dir}">
-         <include name="**/.sh" />
-         <include name="**/ant" />
-         <include name="**/antRun" />
-         <include name="**/runant.pl" />
-       </fileset>
-    </chmod>
-
-  </target>
-
-  <!--
-       ===================================================================
-         Create the binary distribution
-       ===================================================================
-  -->
-  <target name="distribution" 
-          description="--> creates a binary distribution">
-    <mkdir dir="${dist.base}"/>
-
-    <antcall inheritAll="false" target="internal_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">
-      <tarfileset dir="${dist.name}/.." mode="755" username="ant" group="ant">
-        <include name="${dist.name}/bin/ant"/>
-        <include name="${dist.name}/bin/antRun"/>
-      </tarfileset> 
-      <tarfileset 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"/>
-      </tarfileset> 
-    </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 inheritAll="false" 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" >
-      <tarfileset dir="${dist.name}/.." mode="755" username="ant" group="ant">
-        <include name="${dist.name}/bootstrap.sh"/>
-        <include name="${dist.name}/build.sh"/>
-      </tarfileset> 
-      <tarfileset dir="${dist.name}/.." username="ant" group="ant"> 
-        <include name="${dist.name}/**"/>
-        <exclude name="${dist.name}/bootstrap.sh"/>
-        <exclude name="${dist.name}/build.sh"/>
-      </tarfileset>
-    </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"
-          description="--> cleans up build and dist directories">
-    <delete dir="${build.dir}" />
-    <delete dir="${dist.base}" />
-    <delete dir="${dist.dir}" />
-    <delete> 
-      <fileset dir="." includes="**/*~" defaultexcludes="no"/>
-    </delete>
-  </target> 
-
-  <!--
-       ===================================================================
-         Cleans everything
-       ===================================================================
-  -->
-  <target name="allclean" 
-          depends="clean"
-          description="--> cleans up everything">
-    <delete file="${bootstrap.dir}/bin/antRun" />
-    <delete file="${bootstrap.dir}/bin/antRun.bat" />
-  </target> 
-
-  <!--
-       ===================================================================
-         Installs ant
-       ===================================================================
-  -->
-  <target name="install" if="ant.install">
-    <antcall inheritAll="false" target="internal_dist">
-      <param name="dist.dir" value="${ant.install}" />
-    </antcall>
-  </target>
-
-  <target name="install-lite" if="ant.install">
-    <antcall inheritAll="false" 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.*"
-             useexternalfile="yes"
-             sourcepath="${java.dir}"
-             destdir="${build.javadocs}"
-             author="true"
-             version="true"
-             windowtitle="${Name} API"
-             doctitle="${Name}">
-      <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*" />
-
-      <bottom>Copyright &#169; 1999-${year} Apache Software Foundation. All Rights Reserved.</bottom>
-    </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" />
-      <exclude name="org/apache/tools/ant/util/regexp/Jdk14RegexpMatcherTest.java" 
-               unless="jdk1.4+" />
-      <exclude name="org/apache/tools/ant/taskdefs/optional/sitraka/*.java"
-      				 unless="jakarta.oro.present" />
-      <exclude name="org/apache/tools/ant/taskdefs/optional/XslpLiaisonTest.java" 
-               unless="xslp.present"/>
-      <exclude name="org/apache/tools/ant/taskdefs/optional/XalanLiaisonTest.java" 
-               unless="xalan.present"/>
-    </javac>
-  </target>
-
-  <target name="dump-info">
-    <echo message="java.vm.info=${java.vm.info}" />
-    <echo message="java.vm.name=${java.vm.name}" />
-    <echo message="java.vm.vendor=${java.vm.vendor}" />
-    <echo message="java.vm.version=${java.vm.version}" />
-    <echo message="os.arch=${os.arch}" />
-    <echo message="os.name=${os.name}" />
-    <echo message="os.version=${os.version}" />
-    <echo message="file.encoding=${file.encoding}" />
-    <echo message="user.language=${user.language}" />
-  </target>
-
-  <!-- 
-       =================================================================== 
-         Run testcase                                                        
-       =================================================================== 
-  -->
-  <target name="test" depends="run-tests" description="--> run JUnit tests"/>
-
-  <target name="run-tests" depends="dump-info,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="brief" 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" />
-
-          <!-- helper classes, not testcases -->
-          <exclude name="org/apache/tools/ant/taskdefs/TaskdefTest*Task.java" />
-
-          <!-- these tests need to be localised before being ran???? -->
-          <exclude name="org/apache/tools/ant/taskdefs/optional/PvcsTest.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 these tests if their required libraries are 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" />
-          <exclude name="org/apache/tools/ant/util/regexp/Jdk14RegexpMatcherTest.java" 
-                   unless="jdk1.4+" />
-          <exclude name="${optional.package}/ide/VAJExportTest.java" unless="vaj.present" />
-          <exclude name="${optional.package}/sitraka/*.java" unless="jakarta.oro.present" />
-                   
-           <!-- run when you have the environment setup to support them -->
-          <exclude name="org/apache/tools/ant/taskdefs/optional/net/FtpTest.java" />
-
-          <!-- it's an abstract class, not a test -->
-          <exclude name="org/apache/tools/ant/taskdefs/optional/AbstractXSLTLiaisonTest.java" />
-          <exclude name="org/apache/tools/ant/taskdefs/optional/XslpLiaisonTest.java" unless="xslp.present"/>
-          <exclude name="org/apache/tools/ant/taskdefs/optional/XalanLiaisonTest.java" unless="xalan.present"/>
-          
-          <!-- ehm, this is not really a TraX test but rather a xalan2 test..-->
-          <exclude name="org/apache/tools/ant/taskdefs/optional/TraXLiaisonTest.java" unless="xalan2.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" />
-    <delete dir="${tests.etc.dir}/types/copytest" />
-    <!-- generated by testcases in jvm dir -->
-    <delete file="${user.dir}/xalan1-redirect-out.tmp" />
-    <delete file="${user.dir}/xalan2-redirect-out.tmp" />
-  </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 location="${java.home}/lib/classes.zip" />
-      <classpath refid="tests-classpath"/>
-      <formatter type="plain" usefile="false" />
-      <test name="${testcase}" />
-    </junit>
-  </target>
-
-  <!-- 
-       =================================================================== 
-         Main target - runs dist-lite by default
-       =================================================================== 
-  -->
-  <target name="main" 
-          description="--> creates a minimum distribution in ./dist">
-    <antcall inheritAll="false" target="dist-lite"/>
-  </target>
-  
-</project>
diff --git a/docs.xml b/docs.xml
deleted file mode 100644
index 758cb9c..0000000
--- a/docs.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<project name="build-site" default="docs" basedir=".">
-
-    <!-- Initialization properties -->
-    <property name="project.name" value="ant"/>
-    <property name="docs.src"     location="xdocs"/>
-    <property name="docs.dest"    location="docs"/>
-    <property name="project.file" value="stylesheets/project.xml" />
-    <property name="site.dir"     location="../jakarta-site2" />
-    <property name="templ.path"   location="xdocs/stylesheets" />
-    <property name="velocity.props"   location="${docs.src}/velocity.properties" />
-
-    <path id="anakia.classpath">
-        <fileset dir="${site.dir}/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" reverseloader="true">
-            <classpath refid="anakia.classpath"/>
-        </taskdef>
-        
-        <anakia basedir="${docs.src}" destdir="${docs.dest}/"
-             extension=".html" style="./site.vsl"
-             projectFile="${project.file}"
-             excludes="**/stylesheets/** faq.xml"
-             includes="**/*.xml"
-             lastModifiedCheck="true"
-             templatePath="${templ.path}"
-             velocityPropertiesFile="${velocity.props}">
-        </anakia>
-
-        <anakia basedir="${docs.src}" destdir="${docs.dest}/"
-             extension=".html" style="./faq.vsl"
-             projectFile="${project.file}"
-             includes="faq.xml"
-             lastModifiedCheck="true"
-             templatePath="${templ.path}"
-             velocityPropertiesFile="${velocity.props}">
-        </anakia>
-    </target>
-    
-    <target name="javadocs">
-      <ant antfile="build.xml" target="dist_javadocs">
-        <property name="dist.javadocs" value="${docs.dest}/manual/api" />
-      </ant>
-    </target>
-    
-    <target name="all" depends="docs, javadocs"/>
-</project>
diff --git a/lib/crimson.jar b/lib/crimson.jar
deleted file mode 100644
index 0536ae1..0000000
--- a/lib/crimson.jar
+++ /dev/null
Binary files differ
diff --git a/lib/jaxp.jar b/lib/jaxp.jar
deleted file mode 100644
index b881783..0000000
--- a/lib/jaxp.jar
+++ /dev/null
Binary files differ
diff --git a/lib/optional/.cvsignore b/lib/optional/.cvsignore
deleted file mode 100644
index cb6a712..0000000
--- a/lib/optional/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-jdepend*.jar
diff --git a/lib/optional/README b/lib/optional/README
deleted file mode 100644
index c7a66ac..0000000
--- a/lib/optional/README
+++ /dev/null
@@ -1,2 +0,0 @@
-Please refer to the Ant manual under Installing Ant / Library Dependencies for a list
-of the jar requirements for various optional tasks and features.
diff --git a/lib/optional/junit.jar b/lib/optional/junit.jar
deleted file mode 100644
index 914a5cf..0000000
--- a/lib/optional/junit.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/mutant/build.xml b/proposal/mutant/build.xml
deleted file mode 100644
index b10c42a..0000000
--- a/proposal/mutant/build.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<project default="jars">
-    <property name="src.dir" value="src/main"/>
-    <property name="component.src.dir" value="${src.dir}/org/apache/ant/component"/>
-    <property name="build.dir" value="build"/>
-    <property name="build.classes" value="build/classes"/>
-    <property name="component.classes.dir" value="org/apache/ant/component"/>
-    <property name="build.javadocs" value="build/javadocs"/>
-    <property name="build.lib" value="${build.dir}/lib"/>
-    <property name="frontend.manifest" value="${src.dir}/org/apache/ant/frontend/manifest.mf"/>
-    <property name="egg.manifest" value="${src.dir}/org/apache/ant/frontend/eggmanifest.mf"/>
-    
-    <target name="compile">
-        <mkdir dir="${build.classes}"/>
-        <depend srcdir="${src.dir}"
-                destdir="${build.classes}" closure="yes" 
-                cache="${build.dir}/depcache"/>
-        <javac srcdir="${src.dir}"
-               destdir="${build.classes}"
-               deprecation="true"
-               debug="true"/>
-    </target>
-
-    <target name="build-task">
-        <echo message="building Task jar from ${component.classes.dir}/${taskset}/**/*.class"/>
-        <jar jarfile="${build.lib}/task/${taskset}.tsk" 
-             basedir="${build.classes}">
-            <zipfileset dir="${component.src.dir}/${taskset}" 
-                        prefix="ANT-INF" 
-                        includes="antlib.xml"/>
-            <include name="${component.classes.dir}/${taskset}/**/*.class" />
-        </jar>
-    </target>
-
-    
-    <target name="jars" depends="compile">
-        <mkdir dir="${build.lib}"/>
-        <mkdir dir="${build.lib}/task"/>
-        <jar jarfile="${build.lib}/frontend.jar" 
-             basedir="${build.classes}"
-             manifest="${frontend.manifest}">
-            <include name="org/apache/ant/frontend/*.class" />
-        </jar>
-        <jar jarfile="${build.lib}/egg.jar" 
-             basedir="${build.classes}"
-             manifest="${egg.manifest}">
-            <include name="org/apache/ant/frontend/RemoteLauncher.class" />
-            <include name="org/apache/ant/core/support/AntClassLoader.class" />
-        </jar>
-        <jar jarfile="${build.lib}/core.jar" 
-             basedir="${build.classes}">
-            <include name="org/apache/ant/core/**/*.class" />
-        </jar>
-        <antcall target="build-task">
-            <param name="taskset" value="core"/>
-        </antcall>
-        <antcall target="build-task">
-            <param name="taskset" value="file"/>
-        </antcall>
-        <antcall target="build-task">
-            <param name="taskset" value="thread"/>
-        </antcall>
-        <copy todir="${build.lib}">
-          <fileset dir="lib"/>
-        </copy>
-    </target>
-    
-    <target name="clean">
-        <delete dir="${build.dir}"/>
-    </target>
-    
-    <target name="javadoc">
-        <mkdir dir="${build.javadocs}"/>
-        <javadoc packagenames="org.apache.*"
-                 sourcepath="${src.dir}"
-                 destdir="${build.javadocs}"
-                 author="true"
-                 version="true"
-                 windowtitle="Ant 2.0 API"
-                 doctitle="Ant 2.0"
-                 private="true"
-                 bottom="Copyright &#169; 2001 Apache Software Foundation. All Rights Reserved.">
-          <group title="Ant Core" packages="org.apache.ant.core*" />
-          <group title="Front End" packages="org.apache.ant.frontend*" />
-          <group title="XML Parsing" packages="org.apache.ant.xml*" />
-        </javadoc>
-    </target>
-</project>
\ No newline at end of file
diff --git a/proposal/mutant/src/bootstrap/org/apache/ant/bootstrap/BootstrapLoader.java b/proposal/mutant/src/bootstrap/org/apache/ant/bootstrap/BootstrapLoader.java
deleted file mode 100644
index d743218..0000000
--- a/proposal/mutant/src/bootstrap/org/apache/ant/bootstrap/BootstrapLoader.java
+++ /dev/null
@@ -1,298 +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.ant.bootstrap;
-
-import java.io.*;
-import java.util.*;
-import java.util.zip.*;
-import java.lang.reflect.*;
-
-/**
- * Bootstrap class to build the rest of ant with a minimum of user intervention
- *
- * The bootstrap class is able to act as a class loader to load new classes/jars
- * into the VM in which it is running.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class BootstrapLoader extends ClassLoader {
-    static public final String RECURSION_GUARD = "ant.bootstrap.recursionGuard";
-    static private final int BUFFER_SIZE = 1024;
-    
-    private String[] classpathElements;
-    
-    public BootstrapLoader(String classpath) {
-        StringTokenizer tokenizer = new StringTokenizer(classpath, File.pathSeparator);
-        classpathElements = new String[tokenizer.countTokens()];
-        
-        for (int i = 0; tokenizer.hasMoreTokens(); ++i) {
-            classpathElements[i] = tokenizer.nextToken();
-        }
-    }
-    
-    protected Class findClass(String name)
-                   throws ClassNotFoundException {
-        String resourceName = name.replace('.', '/') + ".class";
-        InputStream classStream = getResourceStream(resourceName);
-        
-        if (classStream == null) {
-            throw new ClassNotFoundException();
-        }
-        
-        try {            
-            return getClassFromStream(classStream, name);
-        }
-        catch (IOException ioe) {
-            ioe.printStackTrace();
-            throw new ClassNotFoundException();
-        }
-    }
-
-    /**
-     * 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.
-     */
-    private InputStream getResourceStream(String name) {
-        // we need to search the components of the path to see if we can find the 
-        // class we want. 
-        InputStream stream = null;
- 
-        for (int i = 0; i < classpathElements.length && stream == null; ++i) {
-            File pathComponent = new File(classpathElements[i]);
-            stream = getResourceStream(pathComponent, name);
-        }
-
-        return stream;
-    }
-    
-
-                   
-    /**
-     * 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) {
-        return getResourceStream(name);
-    }
-    
-    protected Class loadClass(String name,
-                              boolean resolve)
-                   throws ClassNotFoundException {
-        Class requestedClass = findLoadedClass(name);
-        try {
-            if (requestedClass == null) {
-                requestedClass = findClass(name);
-                if (resolve) {
-                    resolveClass(requestedClass);
-                }
-            }
-            return requestedClass;
-        }
-        catch (ClassNotFoundException cnfe) {
-            return super.loadClass(name, resolve);
-        }
-    }                    
-
-    /**
-     * 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;   
-    }
-
-    /**
-     * 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();
-
-        return defineClass(classname, classData, 0, classData.length); 
-    }
-
-
-    static private void buildAnt() {
-        System.out.println("Bootstrapping Ant ...");
-        
-    }
-
-    static private void runWithToolsJar(String[] args) {
-        try {
-            
-            String javaHome = System.getProperty("java.home");
-            if (javaHome.endsWith("jre")) {
-                javaHome = javaHome.substring(0, javaHome.length() - 4);
-            }
-            File toolsjar = new File(javaHome + "/lib/tools.jar");
-            if (!toolsjar.exists()) {
-                System.out.println("Unable to locate tools.jar. expected it to be in " +
-                                           toolsjar.getPath());
-                return;                                           
-            }                                            
-            String newclasspath = toolsjar.getPath() + File.pathSeparator + 
-                                  System.getProperty("java.class.path");
-            
-            System.out.println("New Classpath is " + newclasspath);
-            
-            BootstrapLoader loader = new BootstrapLoader(newclasspath);
-            
-            Class newBootClass = loader.loadClass("org.apache.ant.bootstrap.BootstrapLoader",
-                                                  true);
-            final Class[] param = { Class.forName("[Ljava.lang.String;") };
-            final Method main = newBootClass.getMethod("main", param);
-            final Object[] argument = { args };
-            main.invoke(null, argument);
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-            throw new RuntimeException("Unable to run boot with tools.jar");
-        }
-    }
-    
-    static public void main(String[] args) {
-        // check whether the tools.jar is already in the classpath.
-        try {
-            Class compilerClass = Class.forName("sun.tools.javac.Main");
-            System.out.println("Compiler is available");
-        } catch (ClassNotFoundException cnfe) {
-            if (System.getProperty(RECURSION_GUARD) != null) {
-                cnfe.printStackTrace();
-                System.out.println("Unable to load compiler");
-                return;
-            }
-            System.setProperty(RECURSION_GUARD, "yes");
-            System.out.println("Compiler is not on classpath - locating ...");
-            runWithToolsJar(args);
-            return;                                                           
-        }
-        
-        buildAnt();
-    }
-}
-
-
diff --git a/proposal/mutant/src/main/org/apache/ant/component/core/AntAspectHandler.java b/proposal/mutant/src/main/org/apache/ant/component/core/AntAspectHandler.java
deleted file mode 100644
index 1b69174..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/core/AntAspectHandler.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/>.
- */
-
-package org.apache.ant.component.core;
-
-import java.io.File;
-import java.net.*;
-import org.apache.ant.core.execution.*;
-
-/**
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class AntAspectHandler extends AbstractAspectHandler {
-    private String id;
-    
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public void afterConfigElement(Object element) throws ExecutionException {
-        getAspectContext().setDataValue(id, element);
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/component/core/Echo.java b/proposal/mutant/src/main/org/apache/ant/component/core/Echo.java
deleted file mode 100644
index a2305c9..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/core/Echo.java
+++ /dev/null
@@ -1,162 +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.ant.component.core;
-
-import org.apache.ant.core.execution.*;
-import org.apache.ant.core.types.*;
-import java.io.*;
-
-/**
- * Echo
- *
- * @author costin@dnt.ro
- */
-public class Echo extends AbstractTask {
-    protected String message = ""; // required
-    protected File file = null;
-    protected boolean append = false;
-    
-    // by default, messages are always displayed
-    protected int logLevel = BuildEvent.MSG_WARN;   
-    
-    /**
-     * Does the work.
-     *
-     * @throws ExecutionException if someting goes wrong with the build
-     */
-    public void execute() throws ExecutionException {
-        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 ExecutionException(ioe);
-            } 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 += msg;
-    }
-
-    /**
-     * 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 = BuildEvent.MSG_ERR;
-        } else if (option.equals("warning")) {
-            logLevel = BuildEvent.MSG_WARN;
-        } else if (option.equals("info")) {
-            logLevel = BuildEvent.MSG_INFO;
-        } else if (option.equals("verbose")) {
-            logLevel = BuildEvent.MSG_VERBOSE;
-        } else {
-            // must be "debug"
-            logLevel = BuildEvent.MSG_DEBUG;
-        }
-    }
-
-    public static class EchoLevel extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"error", "warning", "info", "verbose", "debug"};
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/component/core/EnumeratedAttributeConverter.java b/proposal/mutant/src/main/org/apache/ant/component/core/EnumeratedAttributeConverter.java
deleted file mode 100644
index 3380906..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/core/EnumeratedAttributeConverter.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/>.
- */
-
-package org.apache.ant.component.core;
-
-import org.apache.ant.core.execution.*;
-import org.apache.ant.core.types.EnumeratedAttribute;
-
-/**
- * Convert between a string and an enumeration
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class EnumeratedAttributeConverter implements AntConverter {
-    private ExecutionFrame frame;
-    
-    public void init(ExecutionFrame frame) {
-        this.frame = frame;
-    }
-    
-    public Object convert(String value, Class type) throws ConversionException {
-        // The string represents a value
-        // get the frame's URL
-        try {
-            Object instance = type.newInstance();
-            if (!(instance instanceof EnumeratedAttribute)) {
-                throw new ConversionException("The type " + type.getName() 
-                                             + " is not a subclass of EnumeratedAttribute");
-            }
-            EnumeratedAttribute enum = (EnumeratedAttribute)instance;
-            enum.setValue(value.trim());
-            return enum;
-        }
-        catch (InstantiationException e) {
-            throw new ConversionException("Unable to instantiate the enumerated type "
-                                          + type.getName());
-        }
-        catch (IllegalAccessException e) {
-            throw new ConversionException("Illegale access when instantiation enumerated type "
-                                          + type.getName());
-        }
-        catch (ExecutionException e) {
-            throw new ConversionException("Unable to set the value of the enumerated type "
-                                          + type.getName() + ": " + e.getMessage());
-        }                                                      
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/component/core/FileConverter.java b/proposal/mutant/src/main/org/apache/ant/component/core/FileConverter.java
deleted file mode 100644
index 0352d6d..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/core/FileConverter.java
+++ /dev/null
@@ -1,87 +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.ant.component.core;
-
-import java.io.File;
-import java.net.*;
-import org.apache.ant.core.execution.*;
-
-/**
- * Convert between a string and a data type
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class FileConverter implements AntConverter {
-    private ExecutionFrame frame;
-    
-    public void init(ExecutionFrame frame) {
-        this.frame = frame;
-    }
-    
-    public Object convert(String value, Class type) throws ConversionException {
-        // The string represents a value
-        // get the frame's URL
-        try {
-            URL url = new URL(frame.getBaseURL(), value);
-            if (url.getProtocol().equals("file")) {
-                return new File(url.getFile());
-            }
-        }
-        catch (MalformedURLException e) {
-            // ignore and return as a file.
-        }
-        return new File(value);
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/component/core/Property.java b/proposal/mutant/src/main/org/apache/ant/component/core/Property.java
deleted file mode 100644
index 0e964d3..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/core/Property.java
+++ /dev/null
@@ -1,248 +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.ant.component.core;
-
-import java.util.*;
-import java.io.*;
-import org.apache.ant.core.execution.*;
-import java.net.*;
-
-/**
- * 
- */ 
-public class Property extends AbstractTask {
-    private String name;
-    private String value;
-    private URL file;
-    private String resource;
-//    private Path classpath;
-    private String env;
-//    private Reference ref = null;
-    
-    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 void setFile(URL file) {
-        this.file = file;
-    }
-
-    public URL getFile() {
-        return file;
-    }
-
-    public void setLocation(File location) {
-        setValue(location.getAbsolutePath());
-    }
-
-//    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 execute() throws ExecutionException {
-        if ((name != null) && (value != null)) {
-            getTaskContext().setDataValue(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());
-//            }
-//        }
-    }
-
-    protected void loadFile (URL url) throws ExecutionException {
-        Properties props = new Properties();
-        log("Loading " + url, BuildEvent.MSG_VERBOSE);
-        try {
-            InputStream stream = null;
-            if (url.getProtocol().equals("file")) {
-                File file = new File(url.getFile());
-            
-                if (file.exists()) {
-                    stream = new FileInputStream(file);
-                } 
-            }
-            else {
-                stream = url.openStream();
-            }
-            
-            if (stream != null) {
-                try { 
-                    props.load(stream);
-                    resolveAllProperties(props);
-                    addProperties(props);
-                } finally {
-                    stream.close();
-                }
-            }
-        } catch (IOException e) {
-            throw new ExecutionException("Unable to load property file: " + url, e);
-        }
-    }
-
-    protected void addProperties(Properties properties) throws ExecutionException {
-        for (Iterator i = properties.keySet().iterator(); i.hasNext();) {
-            String propertyName = (String)i.next();
-            String propertyValue = properties.getProperty(propertyName);
-            getTaskContext().setDataValue(propertyName, 
-                                          getTaskContext().replacePropertyRefs(propertyValue));
-        }
-    }
-
-    private void resolveAllProperties(Properties props) throws ExecutionException {
-        for (Iterator propIterator = props.keySet().iterator(); propIterator.hasNext();) {
-            String name = (String)propIterator.next();
-            String value = props.getProperty(name);
-
-            boolean resolved = false;
-            while (!resolved) {
-                List fragments = new ArrayList();
-                List propertyRefs = new ArrayList();
-                ExecutionFrame.parsePropertyString(value, fragments, propertyRefs);
-                
-                resolved = true;
-                if (propertyRefs.size() != 0) {
-                    StringBuffer sb = new StringBuffer();
-                    Iterator i = fragments.iterator();
-                    Iterator j = propertyRefs.iterator();
-                    while (i.hasNext()) {
-                        String fragment = (String)i.next();
-                        if (fragment == null) {
-                            String propertyName = (String)j.next();
-                            if (propertyName.equals(name)) {
-                                throw new ExecutionException("Property " + name 
-                                                             + " from " + file 
-                                                             + " was circularly defined.");
-                            }
-                            if (props.containsKey(propertyName)) {
-                                fragment = props.getProperty(propertyName);
-                                resolved = false;
-                            }
-                            else {
-                                fragment = "${" + propertyName + "}";
-                            }
-                        }
-                        sb.append(fragment);
-                    }
-                    value = sb.toString();
-                    props.put(name, value);
-                }
-            }
-        }
-    }    
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/component/core/URLConverter.java b/proposal/mutant/src/main/org/apache/ant/component/core/URLConverter.java
deleted file mode 100644
index 94029db..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/core/URLConverter.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.ant.component.core;
-
-import org.apache.ant.core.execution.*;
-
-import java.net.*;
-import java.io.File;
-
-/**
- * Convert between a string and a URL, resolved to the ExecutionFrame's base
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class URLConverter implements AntConverter {
-    private ExecutionFrame frame;
-    
-    public void init(ExecutionFrame frame) {
-        this.frame = frame;
-    }
-    
-    public Object convert(String value, Class type) throws ConversionException {
-        // The string represents a value
-        // get the frame's URL
-        try {
-            URL url = new URL(frame.getBaseURL(), value);
-            return url;
-        }
-        catch (MalformedURLException e) {
-            //try a local file
-            try {
-                File file = new File(value);
-                return file.toURL();
-            }
-            catch (MalformedURLException e2) {
-                throw new ConversionException("Unable to convert " + value 
-                                              + " into a URL relative to the project's base");
-            }                                              
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/component/core/antlib.xml b/proposal/mutant/src/main/org/apache/ant/component/core/antlib.xml
deleted file mode 100644
index f3ef4d7..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/core/antlib.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<antlib>
-   <!-- Tasks -->
-   <taskdef name="property" classname="org.apache.ant.component.core.Property"/>
-   <taskdef name="echo" classname="org.apache.ant.component.core.Echo"/>
-   
-   <!-- Data Types -->
-   <taskdef name="patternset" classname="org.apache.ant.core.types.PatternSet"/>
-   <taskdef name="fileset" classname="org.apache.ant.core.types.FileSet"/>
-   
-   <!-- Converters -->
-   <converter target="java.io.File" classname="org.apache.ant.component.core.FileConverter"/>
-   <converter target="java.net.URL" classname="org.apache.ant.component.core.URLConverter"/>
-   <converter target="org.apache.ant.core.types.EnumeratedAttribute" 
-              classname="org.apache.ant.component.core.EnumeratedAttributeConverter"/>
-              
-   <!-- Aspect Handlers -->
-   <aspect prefix="ant" classname="org.apache.ant.component.core.AntAspectHandler"/>              
-</antlib>
\ No newline at end of file
diff --git a/proposal/mutant/src/main/org/apache/ant/component/file/antlib.xml b/proposal/mutant/src/main/org/apache/ant/component/file/antlib.xml
deleted file mode 100644
index df7f87c..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/file/antlib.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<antlib>
-</antlib>
\ No newline at end of file
diff --git a/proposal/mutant/src/main/org/apache/ant/component/thread/Parallel.java b/proposal/mutant/src/main/org/apache/ant/component/thread/Parallel.java
deleted file mode 100644
index eb5e226..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/thread/Parallel.java
+++ /dev/null
@@ -1,78 +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.ant.component.thread;
-
-import org.apache.ant.core.execution.*;
-import java.io.*;
-import java.util.*;
-
-/**
- * Parallel execution of contained tasks.
- *
- */
-public class Parallel extends AbstractTask implements TaskContainer {
-    private List tasks = new ArrayList();
-    
-    public void addTask(Task nestedTask) {
-        tasks.add(nestedTask);
-    }
-
-    public void execute() throws ExecutionException {
-        for (Iterator i = tasks.iterator(); i.hasNext(); ) {
-            Task nestedTask = (Task)i.next();
-            nestedTask.execute();
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/component/thread/Sequential.java b/proposal/mutant/src/main/org/apache/ant/component/thread/Sequential.java
deleted file mode 100644
index 3ae824c..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/thread/Sequential.java
+++ /dev/null
@@ -1,78 +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.ant.component.thread;
-
-import org.apache.ant.core.execution.*;
-import java.io.*;
-import java.util.*;
-
-/**
- * Sequential execution of contained tasks.
- *
- */
-public class Sequential extends AbstractTask implements TaskContainer {
-    private List tasks = new ArrayList();
-    
-    public void addTask(Task nestedTask) {
-        tasks.add(nestedTask);
-    }
-
-    public void execute() throws ExecutionException {
-        for (Iterator i = tasks.iterator(); i.hasNext(); ) {
-            Task nestedTask = (Task)i.next();
-            nestedTask.execute();
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/component/thread/antlib.xml b/proposal/mutant/src/main/org/apache/ant/component/thread/antlib.xml
deleted file mode 100644
index 1b22f56..0000000
--- a/proposal/mutant/src/main/org/apache/ant/component/thread/antlib.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<antlib>
-   <taskdef name="parallel" classname="org.apache.ant.component.thread.Parallel"/>
-   <taskdef name="sequential" classname="org.apache.ant.component.thread.Sequential"/>
-</antlib>
\ No newline at end of file
diff --git a/proposal/mutant/src/main/org/apache/ant/core/config/ComponentManager.java b/proposal/mutant/src/main/org/apache/ant/core/config/ComponentManager.java
deleted file mode 100644
index e37358b..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/config/ComponentManager.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.ant.core.config;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.*;
-import org.apache.ant.core.execution.*;
-import org.apache.ant.core.support.*;
-import org.apache.ant.core.xml.AntLibParser;
-import org.xml.sax.SAXParseException;
-
-/**
- * Manager for Ant components
- *
- * The component manager is responsible for locating and loading the 
- * components contained in Ant's lib/task directory.
- * 
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class ComponentManager {
-    /**
-     * When Ant is run remotely, we need to look up the list of component
-     * libraries from the server.
-     */
-    static public String COMPONENT_INDEX = "taskindex";
-    
-    /**
-     * Create the component manager. When the component manager is created
-     * it will read the component definitions from the  files in
-     * Ant's lib/task directory
-     */ 
-    static public AntLibrary[] getComponents() throws LocationException, ConfigException {
-        try {
-            URL componentsLocation = new URL(AntLocator.getLibraryURL(), "task/");
-            URL[] componentFiles = null;
-            if (componentsLocation.getProtocol().equals("file")) {
-                // component directory is local - we determine the 
-                // component files by scanning the local directory
-                HashSet componentFilesTypes = new HashSet();
-                componentFilesTypes.add(".tsk");
-                componentFilesTypes.add(".jar");
-                componentFilesTypes.add(".zip");
-                File componentsDirectory = new File(componentsLocation.getFile());
-                componentFiles = AntLocator.getDirectoryURLs(componentsDirectory, componentFilesTypes);
-            }
-            else {
-                // The component directory is remote - we determine the
-                // list of component files by reading a "known"  list file.
-                URL componentListURL = new URL(componentsLocation, COMPONENT_INDEX);
-                BufferedReader reader = null;
-                List componentList = new ArrayList();
-                try {
-                    reader = new BufferedReader(new InputStreamReader(componentListURL.openStream()));
-                    String line = null;
-                    while ((line = reader.readLine()) != null) {
-                        componentList.add(new URL(componentsLocation, line.trim()));
-                    }
-                }
-                finally {
-                    if (reader != null) {
-                        reader.close();
-                    }
-                }
-                componentFiles = (URL[])componentList.toArray(new URL[0]);
-            }
-                        
-            AntLibParser libdefParser = new AntLibParser();
-            
-            List libraries = new ArrayList();
-            
-            for (int i = 0; i < componentFiles.length; ++i) {
-                // We create a classloader for the component library
-                URL[] componentURLs = new URL[]{componentFiles[i]};
-                AntClassLoader componentClassLoader 
-                    = new AntClassLoader(componentURLs, 
-                                         ComponentManager.class.getClassLoader(),
-                                         componentFiles[i].toString());
-                URL libDefinition = componentClassLoader.getResource("ANT-INF/antlib.xml");
-                if (libDefinition != null) {
-                    AntLibrary library 
-                        = libdefParser.parseAntLibrary(libDefinition, componentClassLoader);
-                    libraries.add(library);                            
-                }
-            }
-            
-            return (AntLibrary[])libraries.toArray(new AntLibrary[0]);
-        }
-        catch (IOException e) {
-            throw new ConfigException(e);
-        }
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/AbstractAspectHandler.java b/proposal/mutant/src/main/org/apache/ant/core/execution/AbstractAspectHandler.java
deleted file mode 100644
index bd7f903..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/AbstractAspectHandler.java
+++ /dev/null
@@ -1,83 +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.ant.core.execution;
-
-import org.apache.ant.core.model.*;
-import org.apache.ant.core.support.*;
-import java.util.*;
-import java.net.URL;
-
-/**
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public abstract class AbstractAspectHandler implements AspectHandler {
-    private ExecutionContext aspectContext;
-    
-    public void setAspectContext(ExecutionContext context) {
-        this.aspectContext = context;
-    }
-
-    protected ExecutionContext getAspectContext() {
-        return aspectContext;
-    }
-    
-    public void beforeConfigElement(Object element) throws ExecutionException  {
-}
-
-    public void afterConfigElement(Object element) throws ExecutionException  {
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/AbstractTask.java b/proposal/mutant/src/main/org/apache/ant/core/execution/AbstractTask.java
deleted file mode 100644
index 9fac29a..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/AbstractTask.java
+++ /dev/null
@@ -1,96 +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.ant.core.execution;
-
-import org.apache.ant.core.model.*;
-import org.apache.ant.core.support.*;
-import java.util.*;
-import java.net.URL;
-
-/**
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public abstract class AbstractTask implements Task {
-    private ExecutionContext taskContext;
-    
-    public void setTaskContext(ExecutionContext context) {
-        this.taskContext = context;
-    }
-
-    protected ExecutionContext getTaskContext() {
-        return taskContext;
-    }
-    
-    /**
-     * Log a message with the default (INFO) priority.
-     *
-     * @param msg the message to be logged.
-     */
-    public void log(String msg) {
-        log(msg, BuildEvent.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) {
-        taskContext.log(msg, msgLevel);
-    }
-
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/AntConverter.java b/proposal/mutant/src/main/org/apache/ant/core/execution/AntConverter.java
deleted file mode 100644
index 314e589..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/AntConverter.java
+++ /dev/null
@@ -1,65 +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.ant.core.execution;
-
-/**
- * An AntConverter is a Converter which is initialised with the 
- * ExecutionFrame context in which it will perform its conversions
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public interface AntConverter extends Converter {
-    void init(ExecutionFrame frame);
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/AntLibrary.java b/proposal/mutant/src/main/org/apache/ant/core/execution/AntLibrary.java
deleted file mode 100644
index 6e48731..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/AntLibrary.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.ant.core.execution;
-
-import org.apache.ant.core.support.*;
-import java.util.*;
-import java.net.URL;
-
-/**
- * This object represents an Ant library definition. An Ant library
- * is a set of plug-in for Ant consisting primarily of tasks but may include
- * other ant components.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class AntLibrary {
-    /**
-     * The task definitions contained by this library
-     */
-    private Map taskDefinitions = new HashMap();
-    
-    /**
-     * The converter definitions contained by this library
-     */
-    private Map converterDefinitions = new HashMap();
-    
-    /**
-     * The aspect handler definitions contained by this library
-     */
-    private Map aspectDefinitions = new HashMap();
-    
-    /**
-     * Add a task definition to this library
-     */
-    public void addTaskDefinition(TaskDefinition taskDefinition) {
-        String taskName = taskDefinition.getName();
-        taskDefinitions.put(taskName, taskDefinition);
-    }
-    
-    /**
-     * Add a converter definition to this library
-     */
-    public void addConverterDefinition(ConverterDefinition converterDef) {
-        String targetClassname = converterDef.getTargetClassName();
-        converterDefinitions.put(targetClassname, converterDef);
-    }
-
-    /**
-     * Add an aspect handler definition to this library
-     */
-    public void addAspectDefinition(AspectDefinition aspectDef) {
-        String aspectPrefix = aspectDef.getAspectPrefix();
-        aspectDefinitions.put(aspectPrefix, aspectDef);
-    }
-
-    /**
-     * Get the task definitions
-     *
-     * @return an iterator which returns TaskDefinition objects.
-     */
-    public Iterator getTaskDefinitions() {
-        return taskDefinitions.values().iterator();
-    }
-    
-   
-    /**
-     * Get the converter definitions
-     *
-     * @return an iterator which returns ConverterDefinition objects.
-     */
-    public Iterator getConverterDefinitions() {
-        return converterDefinitions.values().iterator();
-    }
-
-    /**
-     * Get the aspect handler definitions
-     *
-     * @return an iterator which returns AspectDefinition objects.
-     */
-    public Iterator getAspectDefinitions() {
-        return aspectDefinitions.values().iterator();
-    }
-    
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/AspectDefinition.java b/proposal/mutant/src/main/org/apache/ant/core/execution/AspectDefinition.java
deleted file mode 100644
index 5a20ec3..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/AspectDefinition.java
+++ /dev/null
@@ -1,124 +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.ant.core.execution;
-
-import java.util.*;
-import java.net.URL;
-
-/**
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class AspectDefinition {
-    /** The URL of the library which defines this aspect handler */
-    private URL aspectLibraryURL;
-     
-    /** The aspect's tag */
-    private String aspectPrefix;
-    
-    /** The aspect handler's classname */
-    private String aspectClassName;
-    
-    /** The aspect handler's class loader. */
-    private ClassLoader aspectClassLoader;
-    
-    /** The class to which this converter converts. */
-    private Class aspectHandlerClass = null;
-
-    public AspectDefinition(URL aspectLibraryURL, String aspectPrefix, 
-                            String aspectClassName, ClassLoader aspectClassLoader) {
-        this.aspectLibraryURL = aspectLibraryURL;
-        this.aspectPrefix = aspectPrefix;
-        this.aspectClassName = aspectClassName;
-        this.aspectClassLoader = aspectClassLoader;
-    }
-    
-    /**
-     * Get the URL where this aspect handler was defined.
-     *
-     * @returns a URL of the lib defintion file
-     */
-    public URL getLibraryURL() {
-        return aspectLibraryURL;
-    }
-    
-    /**
-     * Get the Aspect's Prefix
-     */
-    public String getAspectPrefix() {
-        return aspectPrefix;
-    }
-
-
-    /**
-     * Get the aspect handler class
-     *
-     * @return a class object for this aspect handler's class
-     */
-    public synchronized Class getAspectHandlerClass() throws ClassNotFoundException {
-        if (aspectHandlerClass == null) {
-            aspectHandlerClass = Class.forName(aspectClassName, true, aspectClassLoader);
-        }
-        return aspectHandlerClass;
-    }
-    
-    /**
-     * Get the classname of the aspect handler that is being defined.
-     */
-    public String getAspectHandlerClassName() {
-        return aspectClassName;
-    }
-    
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/AspectHandler.java b/proposal/mutant/src/main/org/apache/ant/core/execution/AspectHandler.java
deleted file mode 100644
index 5a586dc..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/AspectHandler.java
+++ /dev/null
@@ -1,75 +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.ant.core.execution;
-
-import org.apache.ant.core.model.*;
-import org.apache.ant.core.support.*;
-import java.util.*;
-import java.net.URL;
-
-/**
- * An AspectHandler is used to handle a set of aspects which may occur in a number
- * of elements in the build model.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public interface AspectHandler {
-   
-    void setAspectContext(ExecutionContext context);
-    
-    void beforeConfigElement(Object element) throws ExecutionException ;
-    void afterConfigElement(Object element) throws ExecutionException ;
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/BuildEvent.java b/proposal/mutant/src/main/org/apache/ant/core/execution/BuildEvent.java
deleted file mode 100644
index 40cf633..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/BuildEvent.java
+++ /dev/null
@@ -1,171 +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.ant.core.execution;
-
-import java.util.EventObject;
-import org.apache.ant.core.model.*;
-
-/*
- * A BuildEvent indicates the occurence of a significant event
- * in the build.
- *
- * All build events come from an ExecutionFrame or an ExecutionManager.
- * There are a number of different types of event and they will
- * generally be associated with some build element from the build model.
- */
-public class BuildEvent extends EventObject {
-    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;
-
-    public static final int BUILD_STARTED = 1;
-    public static final int BUILD_FINISHED = 2;
-    public static final int TARGET_STARTED = 3;
-    public static final int TARGET_FINISHED = 4;
-    public static final int TASK_STARTED = 5;
-    public static final int TASK_FINISHED = 6;
-    public static final int MESSAGE = 7;
-
-    private int eventType;
-    private BuildElement buildElement = null;
-    private Throwable cause = null;
-    private String message = null;
-    private int messagePriority;
-
-    /**
-     * Create a build event. 
-     * 
-     * @param soure the source of the build event.
-     * @param eventType the type of the buildEvent.
-     * @param buildElement the build element with which the event is associated.
-     */
-    public BuildEvent(Object source, int eventType, BuildElement buildElement) {
-        super(source);
-        this.eventType = eventType;
-        this.buildElement = buildElement;
-    }
-    
-    /**
-     * Create a build event with an associated exception. 
-     * 
-     * @param soure the source of the build event.
-     * @param eventType the type of the buildEvent.
-     * @param buildElement the build element with which the event is associated.
-     */
-    public BuildEvent(Object source, int eventType, BuildElement buildElement, 
-                      Throwable cause) {
-        this(source, eventType, buildElement);                        
-        this.cause = cause;
-    }
-
-    /**
-     * Create a build event for a message 
-     * 
-     * @param soure the source of the build event.
-     * @param buildElement the build element with which the event is associated.
-     * @param message the message associated with this event
-     * @param priority the message priority
-     */
-    public BuildEvent(Object source, BuildElement buildElement, String message, 
-                      int priority) {
-        this(source, MESSAGE, buildElement);                        
-        this.message = message;
-        this.messagePriority = priority;
-    }
-    
-    /**
-     * Get the type of this event
-     *
-     * @return the event type
-     */
-    public int getEventType() {
-        return eventType;
-    }
-    
-    /**
-     * Get the build element involved in this event.
-     *
-     * @return the build element to which this event is associated.
-     */
-    public BuildElement getBuildElement() {
-        return buildElement;
-    }
-    
-    /**
-     *  Returns the logging message. This field will only be set
-     *  for "messageLogged" events.
-     *
-     */
-    public String getMessage() {
-        return message;
-    }
-
-    /**
-     *  Returns the priority of the logging message. This field will only
-     *  be set for "messageLogged" events.
-     */
-    public int getPriority(){
-        return messagePriority;
-    }
-
-    /**
-     *  Returns the exception that was thrown, if any. This field will only
-     *  be set for "taskFinished", "targetFinished", and "buildFinished" events.
-     */
-    public Throwable getCause() {
-        return cause;
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/BuildEventSupport.java b/proposal/mutant/src/main/org/apache/ant/core/execution/BuildEventSupport.java
deleted file mode 100644
index c4fd5db..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/BuildEventSupport.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.ant.core.execution;
-
-import java.util.*;
-import org.apache.ant.core.model.*;
-
-/**
- * BuildEventSupport is used by classes which which to send 
- * build events to the BuoldListeners
- */
-public class BuildEventSupport {
-    private List listeners = new ArrayList();
-    
-    public void addBuildListener(BuildListener listener) {
-        listeners.add(listener);
-    }
-    
-    public void removeBuildListener(BuildListener listener) {
-        listeners.remove(listener);
-    }
-
-    public void forwardEvent(BuildEvent event) {
-        for (Iterator i = listeners.iterator(); i.hasNext();) {
-            BuildListener listener = (BuildListener)i.next();
-            listener.processBuildEvent(event);
-        }
-    }
-    
-    public void fireBuildStarted(Object source, BuildElement element) {
-        BuildEvent event = new BuildEvent(source, BuildEvent.BUILD_STARTED, element);
-        forwardEvent(event);
-    }
-
-    public void fireBuildFinished(Object source, BuildElement element, Throwable cause) {
-        BuildEvent event = new BuildEvent(source, BuildEvent.BUILD_FINISHED, element, cause);
-        forwardEvent(event);
-    }
-
-    public void fireTargetStarted(Object source, BuildElement element) {
-        BuildEvent event = new BuildEvent(source, BuildEvent.TARGET_STARTED, element);
-        forwardEvent(event);
-    }
-
-    public void fireTargetFinished(Object source, BuildElement element, Throwable cause) {
-        BuildEvent event = new BuildEvent(source, BuildEvent.TARGET_FINISHED, element, cause);
-        forwardEvent(event);
-    }
-
-    public void fireTaskStarted(Object source, BuildElement element) {
-        BuildEvent event = new BuildEvent(source, BuildEvent.TASK_STARTED, element);
-        forwardEvent(event);
-    }
-
-    public void fireTaskFinished(Object source, BuildElement element, Throwable cause) {
-        BuildEvent event = new BuildEvent(source, BuildEvent.TASK_FINISHED, element, cause);
-        forwardEvent(event);
-    }
-
-    public void fireMessageLogged(Object source, BuildElement element,
-                                   String message, int priority) {
-        BuildEvent event = new BuildEvent(source,  element, message, priority);
-        forwardEvent(event);
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/BuildListener.java b/proposal/mutant/src/main/org/apache/ant/core/execution/BuildListener.java
deleted file mode 100644
index a4071cd..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/BuildListener.java
+++ /dev/null
@@ -1,67 +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.ant.core.execution;
-
-import java.util.EventListener;
-
-/**
- *  Classes that implement this interface will be notified when
- *  things happend during a build.
- *
- *  @see BuildEvent
- */
-public interface BuildListener extends EventListener {
-    void processBuildEvent(BuildEvent event);
-}
\ No newline at end of file
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/ClassIntrospectionException.java b/proposal/mutant/src/main/org/apache/ant/core/execution/ClassIntrospectionException.java
deleted file mode 100644
index 088ac34..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/ClassIntrospectionException.java
+++ /dev/null
@@ -1,144 +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.ant.core.execution;
-
-
-import java.io.*;
-
-/**
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class ClassIntrospectionException extends Exception {
-    /** 
-     * Exception that might have caused this one. 
-     */
-    private Throwable cause = null;
-
-    /**
-     * Constructs an exception with the given descriptive message.
-     * @param msg Description of or information about the exception.
-     */
-    public ClassIntrospectionException(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 ClassIntrospectionException(String msg, Throwable cause) {
-        super(msg);
-        this.cause = cause;
-    }
-
-    /**
-     * Constructs an exception with the given exception as a root cause.
-     * @param cause Exception that might have caused this one.
-     */
-    public ClassIntrospectionException(Throwable cause) {
-        super(cause.getMessage());
-        this.cause = cause;
-    }
-
-    /**
-     * Returns the nested exception.
-     *
-     * @return the underlying exception
-     */
-    public Throwable getCause() {
-        return cause;
-    }
-
-    /**
-     * Print the stack trace to System.err
-     */
-    public void printStackTrace() {
-        printStackTrace(System.err);
-    }
-    
-    /**
-     * Print the stack trace to the given PrintStream
-     *
-     * @param ps the PrintStream onto which the stack trace 
-     *           of this exception is to be printed
-     */
-    public void printStackTrace(PrintStream ps) {
-        synchronized (ps) {
-            ps.println(this);
-            if (cause != null) {
-                ps.println("--- Nested Exception ---");
-                cause.printStackTrace(ps);
-            }
-        }
-    }
-    
-    /**
-     * Print the stack trace to the given PrintWriter
-     *
-     * @param pw the PrintWriter onto which the stack trace 
-     *           of this exception is to be printed
-     */
-    public void printStackTrace(PrintWriter pw) {
-        synchronized (pw) {
-            pw.println(this);
-            if (cause != null) {
-                pw.println("--- Nested Exception ---");
-                cause.printStackTrace(pw);
-            }
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/ClassIntrospector.java b/proposal/mutant/src/main/org/apache/ant/core/execution/ClassIntrospector.java
deleted file mode 100644
index 563523c..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/ClassIntrospector.java
+++ /dev/null
@@ -1,477 +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.ant.core.execution;
-
-import java.lang.reflect.*;
-import java.io.File;
-import java.util.*;
-
-/**
- * Introspects a class and builds a set of objects to assist in intospecting the 
- * class.
- *
- * @author Stefan Bodewig <a href="mailto:stefan.bodewig@megabit.net">stefan.bodewig@megabit.net</a> 
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class ClassIntrospector {
-    /**
-     * 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;
-
-    /**
-     * 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"));
-    }
-
-    public ClassIntrospector(final Class bean, Map converters) {
-        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();
-
-            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], converters);
-                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) {
-                }
-                    
-            }
-        }
-    }
-    
-    /**
-     * Sets the named attribute.
-     */
-    public void setAttribute(Object element, String attributeName, 
-                             String value)
-        throws ClassIntrospectionException, ConversionException {
-        AttributeSetter as = (AttributeSetter) attributeSetters.get(attributeName);
-        if (as == null) {
-            String msg = "Class " + element.getClass().getName() +
-                " doesn't support the \"" + attributeName + "\" attribute";
-            throw new ClassIntrospectionException(msg);
-        }
-        try {
-            as.set(element, value);
-        } catch (IllegalAccessException ie) {
-            // impossible as getMethods should only return public methods
-            throw new ClassIntrospectionException(ie);
-        } catch (InvocationTargetException ite) {
-            Throwable t = ite.getTargetException();
-            if (t instanceof ClassIntrospectionException) {
-                throw (ClassIntrospectionException) t;
-            }
-            throw new ClassIntrospectionException(t);
-        }
-    }
-
-    /**
-     * Adds PCDATA areas.
-     */
-    public void addText(Object element, String text) 
-        throws ClassIntrospectionException {
-            
-        if (addText == null) {
-            String msg = "Class " + element.getClass().getName() +
-                " doesn't support nested text elements";
-            throw new ClassIntrospectionException(msg);
-        }
-        try {
-            addText.invoke(element, new String[] {text});
-        } catch (IllegalAccessException ie) {
-            // impossible as getMethods should only return public methods
-            throw new ClassIntrospectionException(ie);
-        } catch (InvocationTargetException ite) {
-            Throwable t = ite.getTargetException();
-            if (t instanceof ClassIntrospectionException) {
-                throw (ClassIntrospectionException) t;
-            }
-            throw new ClassIntrospectionException(t);
-        }
-    }
-
-    public boolean supportsNestedElement(String elementName) {
-        return nestedCreators.containsKey(elementName);
-    }
-
-    /**
-     * Creates a named nested element.
-     */
-    public Object createElement(Object element, String elementName) 
-         throws ClassIntrospectionException {
-        NestedCreator nc = (NestedCreator) nestedCreators.get(elementName);
-        if (nc == null) {
-            String msg = "Class " + element.getClass().getName() +
-                " doesn't support the nested \"" + elementName + "\" element";
-            throw new ClassIntrospectionException(msg);
-        }
-        try {
-            return nc.create(element);
-        } catch (IllegalAccessException ie) {
-            // impossible as getMethods should only return public methods
-            throw new ClassIntrospectionException(ie);
-        } catch (InstantiationException ine) {
-            // impossible as getMethods should only return public methods
-            throw new ClassIntrospectionException(ine);
-        } catch (InvocationTargetException ite) {
-            Throwable t = ite.getTargetException();
-            if (t instanceof ClassIntrospectionException) {
-                throw (ClassIntrospectionException) t;
-            }
-            throw new ClassIntrospectionException(t);
-        }
-    }
-
-    /**
-     * returns the type of a named nested element.
-     */
-    public Class getElementType(String elementName) 
-        throws ClassIntrospectionException  {
-        Class nt = (Class) nestedTypes.get(elementName);
-        if (nt == null) {
-            String msg = "Class " + bean.getName() +
-                " doesn't support the nested \"" + elementName + "\" element";
-            throw new ClassIntrospectionException(msg);
-        }
-        return nt;
-    }
-
-    /**
-     * returns the type of a named attribute.
-     */
-    public Class getAttributeType(String attributeName) 
-        throws ClassIntrospectionException {
-        Class at = (Class) attributeTypes.get(attributeName);
-        if (at == null) {
-            String msg = "Class " + bean.getName() +
-                " doesn't support the \"" + attributeName + "\" attribute";
-            throw new ClassIntrospectionException(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,
-                                                  Map converters) {
-
-        if (converters != null && converters.containsKey(arg)) {
-            // we have a converter to use to convert the strign 
-            // value of into something the set method expects.
-            final Converter converter = (Converter)converters.get(arg);
-            return new AttributeSetter() {
-                    public void set(Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException, 
-                               ClassIntrospectionException, ConversionException {
-                        m.invoke(parent, new Object[] {converter.convert(value, arg)});
-                    }
-                };
-        }
-        // simplest case - setAttribute expects String
-        else if (java.lang.String.class.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(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(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(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(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(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(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(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(Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new Double[] {new Double(value)});
-                    }
-
-                };
-
-        } else if (java.lang.Boolean.class.equals(arg) 
-                   || java.lang.Boolean.TYPE.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, 
-                                 new Boolean[] {new Boolean(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(Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException, ClassIntrospectionException {
-                        try {
-                            m.invoke(parent, new Class[] {Class.forName(value)});
-                        } catch (ClassNotFoundException ce) {
-                            throw new ClassIntrospectionException(ce);
-                        }
-                    }
-                };
-        // 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(Object parent, 
-                                        String value) 
-                            throws InvocationTargetException, IllegalAccessException, ClassIntrospectionException {
-                            try {
-                                m.invoke(parent, new Object[] {c.newInstance(new String[] {value})});
-                            } catch (InstantiationException ie) {
-                                throw new ClassIntrospectionException(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(Object parent, String value)
-            throws InvocationTargetException, IllegalAccessException, 
-                   ClassIntrospectionException, ConversionException;
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/ConversionException.java b/proposal/mutant/src/main/org/apache/ant/core/execution/ConversionException.java
deleted file mode 100644
index 5925d24..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/ConversionException.java
+++ /dev/null
@@ -1,144 +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.ant.core.execution;
-
-
-import java.io.*;
-
-/**
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class ConversionException extends Exception {
-    /** 
-     * Exception that might have caused this one. 
-     */
-    private Throwable cause = null;
-
-    /**
-     * Constructs an exception with the given descriptive message.
-     * @param msg Description of or information about the exception.
-     */
-    public ConversionException(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 ConversionException(String msg, Throwable cause) {
-        super(msg);
-        this.cause = cause;
-    }
-
-    /**
-     * Constructs an exception with the given exception as a root cause.
-     * @param cause Exception that might have caused this one.
-     */
-    public ConversionException(Throwable cause) {
-        super(cause.toString());
-        this.cause = cause;
-    }
-
-    /**
-     * Returns the nested exception.
-     *
-     * @return the underlying exception
-     */
-    public Throwable getCause() {
-        return cause;
-    }
-
-    /**
-     * Print the stack trace to System.err
-     */
-    public void printStackTrace() {
-        printStackTrace(System.err);
-    }
-    
-    /**
-     * Print the stack trace to the given PrintStream
-     *
-     * @param ps the PrintStream onto which the stack trace 
-     *           of this exception is to be printed
-     */
-    public void printStackTrace(PrintStream ps) {
-        synchronized (ps) {
-            ps.println(this);
-            if (cause != null) {
-                ps.println("--- Nested Exception ---");
-                cause.printStackTrace(ps);
-            }
-        }
-    }
-    
-    /**
-     * Print the stack trace to the given PrintWriter
-     *
-     * @param pw the PrintWriter onto which the stack trace 
-     *           of this exception is to be printed
-     */
-    public void printStackTrace(PrintWriter pw) {
-        synchronized (pw) {
-            pw.println(this);
-            if (cause != null) {
-                pw.println("--- Nested Exception ---");
-                cause.printStackTrace(pw);
-            }
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/Converter.java b/proposal/mutant/src/main/org/apache/ant/core/execution/Converter.java
deleted file mode 100644
index 11cc0d7..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/Converter.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.ant.core.execution;
-
-/**
- * Convert between a string and a data type
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public interface Converter {
-    /**
-     * Convert a string from the value given to an instance of the given type.
-     */
-    Object convert(String value, Class type) throws ConversionException;
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/ConverterDefinition.java b/proposal/mutant/src/main/org/apache/ant/core/execution/ConverterDefinition.java
deleted file mode 100644
index b1a4640..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/ConverterDefinition.java
+++ /dev/null
@@ -1,144 +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.ant.core.execution;
-
-import java.util.*;
-import java.net.URL;
-
-/**
- * A Converter definition defines a class which will convert
- * a string into an instance of a particular type of class. Converters
- * are typically only needed when some context information is 
- * required to perform the conversion.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class ConverterDefinition {
-    /** The URL of the library which defines this converter */
-    private URL converterLibraryURL;
-     
-    /** The converter's class name */
-    private String converterClassName;
-    
-    /** The converted class returned by this converter */
-    private String targetClassName;
-    
-    /** The converter class loaded from the loader on demand.
-     */
-    private Class converterClass = null;
-    
-    /** The class to which this converter converts.
-     */
-    private Class targetClass = null;
-    
-    /** The converters's class loader. */
-    private ClassLoader converterClassLoader;
-    
-    public ConverterDefinition(URL converterLibraryURL, String converterClassName, 
-                               String targetClassName, ClassLoader converterClassLoader) {
-        this.converterLibraryURL = converterLibraryURL;
-        this.converterClassName = converterClassName;
-        this.targetClassName = targetClassName;
-        this.converterClassLoader = converterClassLoader;
-    }
-    
-    /**
-     * Get the name of the class that this converter will return.
-     */
-    public String getTargetClassName() {
-        return targetClassName;
-    }
-    
-    /**
-     * Get the classname of the converter that is being defined.
-     */
-    public String getConverterClassName() {
-        return converterClassName;
-    }
-    
-    /**
-     * Get the URL where this converter was defined.
-     *
-     * @returns a URL of the lib defintion file
-     */
-    public URL getLibraryURL() {
-        return converterLibraryURL;
-    }
-    
-    /**
-     * Get the converter class
-     *
-     * @return a class object for this converter
-     */
-    public synchronized Class getConverterClass() throws ClassNotFoundException {
-        if (converterClass == null) {
-            converterClass = Class.forName(converterClassName, true, converterClassLoader);
-        }
-        return converterClass;
-    }
-    
-    /**
-     * Get the converter class
-     *
-     * @return a class object for this converter
-     */
-    public synchronized Class getTargetClass() throws ClassNotFoundException {
-        if (targetClass == null) {
-            targetClass = Class.forName(targetClassName, true, converterClassLoader);
-        }
-        return targetClass;
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/ExecutionContext.java b/proposal/mutant/src/main/org/apache/ant/core/execution/ExecutionContext.java
deleted file mode 100644
index cb4b768..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/ExecutionContext.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.ant.core.execution;
-
-import org.apache.ant.core.model.*;
-import org.apache.ant.core.support.*;
-import java.util.*;
-import java.net.URL;
-
-/**
- * The ExecutionContext interface provides a task or apsect instance with access to the 
- * container-provided services. This is the only way to access the container.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class ExecutionContext {
-    private ExecutionFrame frame = null;
-    private BuildEventSupport eventSupport;
-    private BuildElement buildElement;
-
-    public ExecutionContext(ExecutionFrame frame, BuildEventSupport eventSupport, 
-                            BuildElement buildElement) {
-        this.frame = frame;
-        this.eventSupport = eventSupport;
-        this.buildElement = buildElement;
-    }
-
-    /**
-     * 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) {
-        eventSupport.fireMessageLogged(this, buildElement, msg, msgLevel);
-    }
-
-    public void setDataValue(String name, Object value) throws ExecutionException {
-        frame.setDataValue(name, value);
-    }
-
-    public Object getDataValue(String name) throws ExecutionException {
-        return frame.getDataValue(name);
-    }
-
-    /**
-     * Replace ${} style constructions in the given value with the string value of
-     * the corresponding data types.
-     *
-     * @param value the string to be scanned for property references.
-     */
-    public String replacePropertyRefs(String value) throws ExecutionException {
-        return frame.replacePropertyRefs(value);
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/ExecutionException.java b/proposal/mutant/src/main/org/apache/ant/core/execution/ExecutionException.java
deleted file mode 100644
index 7b82e8c..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/ExecutionException.java
+++ /dev/null
@@ -1,125 +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.ant.core.execution;
-
-import org.apache.ant.core.support.*;
-import java.io.*;
-
-/**
- * An ExecutiuonException indicates a problem during 
- * the execution of the build files tasks
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class ExecutionException extends AntException {
-    /**
-     * Constructs an exception with the given descriptive message.
-     *
-     * @param msg Description of or information about the exception.
-     */
-    public ExecutionException(String msg) {
-        super(msg);
-    }
-
-    /**
-     * 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 ExecutionException(String msg, Location location) {
-        super(msg, location);
-    }
-
-    /**
-     * 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 ExecutionException(String msg, Throwable cause) {
-        super(msg, 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 ExecutionException(String msg, Throwable cause, Location location) {
-        super(msg, cause, location);
-    }
-
-    /**
-     * Constructs an exception with the given exception as a root cause.
-     *
-     * @param cause Exception that might have caused this one.
-     */
-    public ExecutionException(Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * 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 ExecutionException(Throwable cause, Location location) {
-        super(cause, location);
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/ExecutionFrame.java b/proposal/mutant/src/main/org/apache/ant/core/execution/ExecutionFrame.java
deleted file mode 100644
index 1844df6..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/ExecutionFrame.java
+++ /dev/null
@@ -1,920 +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.ant.core.execution;
-
-import org.apache.ant.core.model.*;
-import org.apache.ant.core.support.*;
-import org.apache.ant.core.types.*;
-
-import java.util.*;
-import java.net.*;
-
-/**
- * An ExecutionFrame is the state of a project during an execution. 
- * The ExecutionFrame contains the data values set by Ant tasks as
- * they are executed, including task definitions, property values, etc.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class ExecutionFrame {
-    /** State used in dependency analysis when a target's dependencies are being
-        examined. */
-    private static final String VISITING = "VISITING";
-
-    /** State used in dependency analysis to indicate a target has been examined */
-    private static final String VISITED = "VISITED";
-
-    /** The Project that this execiton frame is processing */
-    private Project project = null;
-    
-    /** The base URL for this frame. This is derived from the 
-        Project's source URL and it's base attribute. */
-    private URL baseURL = null;
-    
-    /** The imported frames of this frame. For each project imported by this frame's
-        project, a corresponding ExecutionFrame is created. */
-    private Map importedFrames = new HashMap();
-    
-    /** BuildEvent support used to fire events and manage listeners */
-    private BuildEventSupport eventSupport = new BuildEventSupport();
-    
-    /** The context of this execution. This contains all data object's
-        created by tasks that have been executed */
-    private Map dataValues = new HashMap();
-    
-    /** Introspector objects used to configure Tasks from the Task models.*/
-    private Map introspectors = new HashMap();
-    
-    /** The task defs that this frame will use to process tasks */
-    private Map taskDefs = new HashMap();
-    
-    /** Type converters for this executionFrame. Converters are used when configuring
-        Tasks to handle special type conversions. */
-    private Map converters = new HashMap();
-    
-    /** The aspect handler active in this frame */
-    private Map aspectHandlers = new HashMap();
-    
-    /** The namespace under which this execution frame lives in the hierarchical
-        project namespace - null for the root namespace */
-    private String namespace;
-    
-    /**
-     * Construct an execution frame to process the given project model with 
-     * the configuration represented by the libraries.
-     *
-     * @param project the model of the project to be built.
-     * @param libraries an Array of AntLibrary objects containing the 
-     *                  configuration of Ant for this build.
-     *
-     * @throws ConfigException when the project cannot be setup with the
-     *                         given configuration
-     */
-    public ExecutionFrame(Project project, AntLibrary[] libraries) 
-        throws ConfigException {
-    
-        this.namespace = null;
-        setupFrame(project, libraries);
-    }
-    
-    /**
-     * Construct a subframe for managing a project imported into the main project.
-     * @param project the model of the project to be built.
-     * @param libraries an Array of AntLibrary objects containing the 
-     *                  configuration of Ant for this build.
-     * @param namespace the location of this project within the overall import
-     *                  namespace.
-     *
-     * @throws ConfigException when the project cannot be setup with the
-     *                         given configuration
-     */     
-    private ExecutionFrame(Project project, AntLibrary[] libraries, String namespace) 
-        throws ConfigException {
-    
-        this.namespace = namespace;
-        setupFrame(project, libraries);
-    }
-    
-
-    /**
-     * Set up the execution frame. 
-     *
-     * This method examines the project model and constructs the required
-     * subframes to handle imported projects.
-     * @param project the model of the project to be built.
-     * @param libraries an Array of AntLibrary objects containing the 
-     *                  configuration of Ant for this build.
-     *
-     * @throws ConfigException when the project cannot be setup with the
-     *                         given configuration
-     */
-    private void setupFrame(Project project, AntLibrary[] libraries) 
-        throws ConfigException {
-
-        this.project = project;
-        for (int i = 0; i < libraries.length; ++i) {
-            addLibrary(libraries[i]);
-        }
-
-        try {        
-            String base = project.getBase();
-            if (base == null) {
-                baseURL = project.getSourceURL();
-            }
-            else {
-                base = base.trim();
-                if (!base.endsWith("/")) {
-                    base += "/";
-                }
-                baseURL = new URL(project.getSourceURL(), base);
-            }            
-        }
-        catch (MalformedURLException e) {
-            throw new ConfigException("Project's base value \"" + project.getBase() 
-                                      + "\" is not valid", e, project.getLocation());
-        }                                      
-        
-        for (Iterator i = project.getImportedProjectNames(); i.hasNext();) {
-            String importName = (String)i.next();
-            Project importedProject = project.getImportedProject(importName);
-            String importNamespace 
-                = namespace == null ? importName : namespace + ":" + importName;
-            ExecutionFrame importedFrame 
-                = new ExecutionFrame(importedProject, libraries, importNamespace);
-            importedFrames.put(importName, importedFrame);
-        }
-    }
-
-    /**
-     * Add a configuration library to this execution frame. The library
-     * will contain task definitions, converters, apsect handler definitions,
-     * etc.
-     *
-     * @param library the configuration library to add to this frame.
-     *
-     * @throws ConfigException if the items in the library cannot be configured.
-     */
-    public void addLibrary(AntLibrary library) throws ConfigException {
-        for (Iterator i = library.getTaskDefinitions(); i.hasNext(); ) {
-            TaskDefinition taskDefinition = (TaskDefinition)i.next();
-            addTaskDefinition(taskDefinition);
-        }
-        for (Iterator i = library.getConverterDefinitions(); i.hasNext(); ) {
-            ConverterDefinition converterDef = (ConverterDefinition)i.next();
-            addConverterDefinition(converterDef);
-        }
-        for (Iterator i = library.getAspectDefinitions(); i.hasNext(); ) {
-            AspectDefinition aspectDef = (AspectDefinition)i.next();
-            addAspectHandler(aspectDef);
-        }
-    }
-
-    /**
-     * Add a task definition to this execution frame
-     *
-     * @param taskDefinition the TaskDefinition to be added to the project.
-     */
-    public void addTaskDefinition(TaskDefinition taskDefinition) {
-        String taskName = taskDefinition.getName();
-        taskDefs.put(taskName, taskDefinition);
-    }
-    
-    /**
-     * Add a aspect handler definition to this execution frame
-     *
-     * @param taskDefinition the TaskDefinition to be added to the project.
-     *
-     * @throws ConfigException if the aspect handler cannot be created or configured.
-     */
-    public void addAspectHandler(AspectDefinition aspectDefinition) 
-        throws ConfigException {
-        String aspectPrefix = aspectDefinition.getAspectPrefix();
-        try {
-            Class aspectHandlerClass = aspectDefinition.getAspectHandlerClass();
-            aspectHandlers.put(aspectPrefix, aspectHandlerClass);
-        }    
-        catch (ClassNotFoundException e) {
-            throw new ConfigException("Unable to load aspect handler class for " 
-                                      + aspectDefinition.getAspectHandlerClassName()
-                                      + " in converter from " + aspectDefinition.getLibraryURL(),
-                                      e);
-        }
-    }
-    
-    /**
-     * Add a converter definition to this library.
-     *
-     * The converter is created immediately to handle conversions
-     * when items are being configured. If the converter is an instance of
-     * an AntConverter, the converter is configured with this execution
-     * frame giving it the context it needs to resolve items relative to the
-     * project's base, etc.
-     *
-     * @param converterDef the converter definition to load
-     *
-     * @throws ConfigException if the converter cannot be created or configured.
-     */
-    public void addConverterDefinition(ConverterDefinition converterDef) throws ConfigException {
-        boolean targetLoaded = false;
-        try {
-            Class targetClass = converterDef.getTargetClass();
-            targetLoaded = false;
-            Class converterClass = converterDef.getConverterClass();
-            Converter converter = (AntConverter)converterClass.newInstance();
-            if (converter instanceof AntConverter) {
-                ((AntConverter)converter).init(this);
-            }
-            converters.put(targetClass, converter);
-        }
-        catch (ClassNotFoundException e) {
-            if (targetLoaded) {
-                throw new ConfigException("Unable to load converter class for " 
-                                          + converterDef.getConverterClassName()
-                                          + " in converter from " + converterDef.getLibraryURL(),
-                                          e);
-            }
-            else {
-                throw new ConfigException("Unable to load target class " 
-                                          + converterDef.getTargetClassName()
-                                          + " in converter from " + converterDef.getLibraryURL(),
-                                          e);
-            }
-        }
-        catch (InstantiationException e) {
-            throw new ConfigException("Unable to instantiate converter class " 
-                                      + converterDef.getTargetClassName()
-                                      + " in converter from " + converterDef.getLibraryURL(),
-                                      e);
-        }
-        catch (IllegalAccessException e) {
-            throw new ConfigException("Unable to access converter class " 
-                                      + converterDef.getTargetClassName()
-                                      + " in converter from " + converterDef.getLibraryURL(),
-                                      e);
-        }
-    }
-
-    
-    /**
-     * Get the bae URL of this frame. This will either be specified by the project's
-     * base attribute or be derived implicitly from the project's location.
-     */
-    public URL getBaseURL() {
-        return baseURL;
-    }
-
-
-    public void addBuildListener(BuildListener listener) {
-        for (Iterator i = getImportedFrames(); i.hasNext(); ) {
-            ExecutionFrame subFrame = (ExecutionFrame)i.next();
-            subFrame.addBuildListener(listener);
-        }
-        eventSupport.addBuildListener(listener);
-    }
-    
-    public void removeBuildListener(BuildListener listener) {
-        for (Iterator i = getImportedFrames(); i.hasNext(); ) {
-            ExecutionFrame subFrame = (ExecutionFrame)i.next();
-            subFrame.removeBuildListener(listener);
-        }
-        eventSupport.removeBuildListener(listener);
-    }
-
-    /**
-     * Get the project associated with this execution frame.
-     *
-     * @return the project associated iwth this execution frame.
-     */
-    public Project getProject() {
-        return project;
-    }
-    
-
-    /**
-     * Get the names of the frames representing imported projects.
-     *
-     * @return an iterator which returns the names of the imported frames.
-     */
-    public Iterator getImportedFrameNames() {
-        return importedFrames.keySet().iterator();
-    }
-    
-
-    /**
-     * Get the frames representing imported projects.
-     *
-     * @return an iterator which returns the imported ExeuctionFrames..
-     */
-    public Iterator getImportedFrames() {
-        return importedFrames.values().iterator();
-    }
-    
-    /**
-     * Get an imported frame by name
-     *
-     * @param importName the name under which the frame was imported.
-     *
-     * @return the ExecutionFrame asscociated with the given import name or null 
-     *         if there is no such project.
-     */
-    public ExecutionFrame getImportedFrame(String importName) {
-        return (ExecutionFrame)importedFrames.get(importName);
-    }
-    
-    /**
-     * Get the location of this frame in the namespace hierarchy
-     *
-     * @return the location of this frame within the project import
-     *         namespace hierarchy.
-     */
-    public String getNamespace() {
-        return namespace;
-    }
-    
-    /**
-     * Get the fully qualified name of something with respect to this 
-     * execution frame.
-     * 
-     * @param name the unqualified name.
-     * 
-     * @return the fully qualified version of the given name
-     */
-    public String getQualifiedName(String name) {
-        return namespace == null ? name : namespace + ":" + name;
-    }
-    
-    /**
-     * Execute the given target's tasks
-     *
-     * @param the name of the target within this frame that is to be executed.
-     */
-    public void executeTargetTasks(String targetName) throws ExecutionException, ConfigException {
-        Target target = project.getTarget(targetName);
-        try {
-            Iterator taskIterator = target.getTasks();
-            eventSupport.fireTargetStarted(this, target);
-            executeTasks(taskIterator);
-            eventSupport.fireTargetFinished(this, target, null);
-        }
-        catch (RuntimeException e) {
-            eventSupport.fireTargetFinished(this, target, e);
-            throw e;
-        }
-    }
-    
-    /**
-     * Initialize the frame by executing the project level tasks if any
-     */
-    public void initialize() throws ExecutionException, ConfigException {
-        for (Iterator i = getImportedFrames(); i.hasNext(); ) {
-            ExecutionFrame subFrame = (ExecutionFrame)i.next();
-            subFrame.initialize();
-        }
-        Iterator taskIterator = project.getTasks();
-        executeTasks(taskIterator);
-    }
-
-    public void fillinDependencyOrder(String targetName, List dependencyOrder, 
-                                      Map state, Stack visiting) throws ConfigException {
-        String fullTargetName = getQualifiedName(targetName); 
-        if (state.get(fullTargetName) == VISITED) {
-            return;
-        }
-        Target target = getProject().getTarget(targetName);                                       
-        if (target == null) {
-            StringBuffer sb = new StringBuffer("Target `");
-            sb.append(targetName);
-            sb.append("' does not exist in this project. ");
-            if (!visiting.empty()) {
-                String parent = (String)visiting.peek();
-                sb.append("It is used from target `");
-                sb.append(parent);
-                sb.append("'.");
-            }
-
-            throw new ConfigException(new String(sb), getProject().getLocation());
-        }
-        
-        state.put(fullTargetName, VISITING);
-        visiting.push(fullTargetName);
-        for (Iterator i = target.getDependencies(); i.hasNext(); ) {
-            String dependency = (String)i.next();
-            try {
-                ExecutionFrame dependencyFrame = getRelativeFrame(dependency);
-                if (dependencyFrame == null) {
-                    StringBuffer sb = new StringBuffer("Target `");
-                    sb.append(dependency);
-                    sb.append("' does not exist in this project. ");
-                    throw new ConfigException(new String(sb), target.getLocation());
-                }
-                
-                String fullyQualifiedName = getQualifiedName(dependency);
-                String dependencyState = (String)state.get(fullyQualifiedName);
-                if (dependencyState == null) {
-                    dependencyFrame.fillinDependencyOrder(getNameInFrame(dependency), dependencyOrder, 
-                                                          state, visiting);
-                }
-                else if (dependencyState == VISITING) {
-                    String circleDescription
-                        = getCircularDesc(dependency, visiting);
-                    throw new ConfigException(circleDescription, target.getLocation());
-                }
-            }
-            catch (ExecutionException e) {
-                throw new ConfigException(e.getMessage(), e, target.getLocation());
-            }
-        }
-        
-        state.put(fullTargetName, VISITED);
-        String poppedNode = (String)visiting.pop();
-        if (poppedNode != fullTargetName) {
-            throw new ConfigException("Problem determining dependencies " + 
-                                        " - expecting '" + fullTargetName + 
-                                        "' but got '" + poppedNode + "'");
-        }
-        dependencyOrder.add(fullTargetName);                                        
-    }
-                                
-    private String getCircularDesc(String end, Stack visitingNodes) {
-        StringBuffer sb = new StringBuffer("Circular dependency: ");
-        sb.append(end);
-        String c;
-        do {
-            c = (String)visitingNodes.pop();
-            sb.append(" <- ");
-            sb.append(c);
-        } while(!c.equals(end));
-        return new String(sb);
-    }
-
-    /**
-     * Check whether the targets in this frame and its subframes are OK
-     */
-    public void checkTargets(List dependencyOrder, Map state, Stack visiting) 
-            throws ConfigException {
-        // get the targets and just iterate through them.
-        for (Iterator i = getProject().getTargets(); i.hasNext();) {
-            Target target = (Target)i.next();
-            fillinDependencyOrder(target.getName(),
-                                  dependencyOrder, state, visiting);
-        }
-        
-        // Now do the subframes.
-        for (Iterator i = getImportedFrames(); i.hasNext();) {
-            ExecutionFrame importedFrame = (ExecutionFrame)i.next();
-            importedFrame.checkTargets(dependencyOrder, state, visiting);
-        }
-    }
-
-        
-    /**
-     * Create a Task and configure it according to the given model.
-     */        
-    private Task configureTask(TaskElement model) 
-        throws ConfigException, ExecutionException {
-
-        String taskType = model.getType();
-        TaskDefinition taskDefinition = (TaskDefinition)taskDefs.get(taskType);
-        if (taskDefinition == null) {
-            throw new ConfigException("There is no defintion for tasks of type <" 
-                                      + taskType + ">", model.getLocation());
-        }
-        
-        try {
-            Class elementClass = taskDefinition.getExecutionTaskClass();
-            Object element = elementClass.newInstance();
-            Task task = null;
-            if (element instanceof Task) {
-                // create a Task context for the Task
-                task = (Task)element;
-            }
-            else {
-                task = new TaskAdapter(taskType, element);
-            }
-            
-            configureElement(element, model);
-
-            return task;
-        }
-        catch (ClassNotFoundException e) {
-            throw new ConfigException("Execution class " + taskDefinition.getTaskClassName()
-                                         + " was not found", e, model.getLocation());
-        }
-        catch (InstantiationException e) {
-            throw new ConfigException("Unable to instantiate execution class "
-                                          + taskDefinition.getTaskClassName(), 
-                                          e, model.getLocation());
-        }
-        catch (IllegalAccessException e) {
-            throw new ConfigException("Unable to access execution class "
-                                          + taskDefinition.getTaskClassName(), 
-                                          e, model.getLocation());
-        }
-    }        
-
-    private List getActiveAspects(BuildElement model) 
-            throws ConfigException, ExecutionException, 
-                   ClassIntrospectionException, ConversionException {
-        List activeAspects = new ArrayList();
-        for (Iterator i = model.getAspectNames(); i.hasNext();) {
-            String aspectPrefix = (String)i.next();
-            Class aspectHandlerClass = (Class)aspectHandlers.get(aspectPrefix);
-            if (aspectHandlerClass != null) {
-                try {
-                    AspectHandler aspectHandler 
-                        = (AspectHandler)aspectHandlerClass.newInstance();
-                    ClassIntrospector introspector = getIntrospector(aspectHandlerClass);
-                    
-                    ExecutionContext context = new ExecutionContext(this, eventSupport, model);
-                    aspectHandler.setAspectContext(context);
-                    
-                    Map aspectAttributes = model.getAspectAttributes(aspectPrefix);
-                    for (Iterator j = aspectAttributes.keySet().iterator(); j.hasNext();) {
-                        String attributeName = (String)j.next();
-                        String attributeValue = (String)aspectAttributes.get(attributeName);
-                        introspector.setAttribute(aspectHandler, attributeName, 
-                                                  replacePropertyRefs(attributeValue));
-                    }
-                    activeAspects.add(aspectHandler);
-                }
-                catch (InstantiationException e) {
-                    throw new ConfigException("Unable to instantiate aspect handler class " 
-                                              + aspectHandlerClass,
-                                              e);
-                }
-                catch (IllegalAccessException e) {
-                    throw new ConfigException("Unable to access aspect handler class " 
-                                              + aspectHandlerClass,
-                                              e);
-                }
-            }
-        }                                                          
-        return activeAspects;
-    }
-    
-
-    /**
-     * Configure an element according to the given model.
-     */   
-    private void configureElement(Object element, TaskElement model) 
-        throws ExecutionException, ConfigException {
-        
-        if (element instanceof Task) {
-            Task task = (Task)element;
-            ExecutionContext context = new ExecutionContext(this, eventSupport, model);
-            task.setTaskContext(context);
-        }
-        try {
-            ClassIntrospector introspector = getIntrospector(element.getClass());
-                
-            List aspects = getActiveAspects(model);
-            for (Iterator i = aspects.iterator(); i.hasNext(); ) {
-                AspectHandler aspectHandler = (AspectHandler)i.next();
-                aspectHandler.beforeConfigElement(element);
-            }
-            
-            // start by setting the attributes of this element
-            for (Iterator i = model.getAttributeNames(); i.hasNext();) {
-                String attributeName = (String)i.next();
-                String attributeValue = model.getAttributeValue(attributeName);
-                introspector.setAttribute(element, attributeName, 
-                                          replacePropertyRefs(attributeValue));
-            }
-            
-            String modelText = model.getText().trim();
-            if (modelText.length() != 0) {
-                introspector.addText(element, replacePropertyRefs(modelText));
-            }
-
-            // now do the nested elements
-            for (Iterator i = model.getNestedElements(); i.hasNext();) {
-                TaskElement nestedElementModel = (TaskElement)i.next();
-                if (element instanceof TaskContainer &&
-                    !introspector.supportsNestedElement(nestedElementModel.getType())) {
-                    
-                    Task nestedTask = configureTask(nestedElementModel);
-                    TaskContainer container = (TaskContainer)element;
-                    container.addTask(nestedTask);
-                }
-                else {                        
-                    Object nestedElement 
-                        = introspector.createElement(element, nestedElementModel.getType());
-                    configureElement(nestedElement, nestedElementModel);
-                }                    
-            }
-            for (Iterator i = aspects.iterator(); i.hasNext(); ) {
-                AspectHandler aspectHandler = (AspectHandler)i.next();
-                aspectHandler.afterConfigElement(element);
-            }
-        }
-        catch (ClassIntrospectionException e) {
-            throw new ExecutionException(e, model.getLocation());
-        }
-        catch (ConversionException e) {
-            throw new ExecutionException(e, model.getLocation());
-        }
-    }
-
-    /**
-     * Run the tasks returned by the give iterator
-     *
-     * @param taskIterator the iterator giving the tasks to execute
-     */
-    public void executeTasks(Iterator taskIterator) throws ExecutionException, ConfigException {
-        TaskElement task = null;
-        try {
-            while (taskIterator.hasNext()) {
-                task = (TaskElement)taskIterator.next();
-                try {
-                    Task configuredTask = configureTask(task);
-                    eventSupport.fireTaskStarted(this, task);
-                    configuredTask.execute();
-                }
-                catch (ExecutionException e) {
-                    if (e.getLocation() == null || e.getLocation() == Location.UNKNOWN_LOCATION) {
-                        e.setLocation(task.getLocation());
-                    }
-                    throw e;
-                }
-                catch (ConfigException e) {
-                    if (e.getLocation() == null || e.getLocation() == Location.UNKNOWN_LOCATION) {
-                        e.setLocation(task.getLocation());
-                    }
-                    throw e;
-                }
-                eventSupport.fireTaskFinished(this, task, null);
-            }
-        }
-        catch (RuntimeException e) {
-            eventSupport.fireTaskFinished(this, task, e);
-            throw e;
-        }
-    }        
-
-    private ClassIntrospector getIntrospector(Class c) {
-        if (introspectors.containsKey(c)) {
-            return (ClassIntrospector)introspectors.get(c);
-        }
-        ClassIntrospector introspector = new ClassIntrospector(c, converters);
-        introspectors.put(c, introspector);
-        return introspector;
-    }
-                            
-    /**
-     * Replace ${} style constructions in the given value with the string value of
-     * the corresponding data types.
-     *
-     * @param value the string to be scanned for property references.
-     */
-    public String replacePropertyRefs(String value) throws ExecutionException {
-        if (value == null) {
-            return null;
-        }
-
-        List fragments = new ArrayList();
-        List propertyRefs = new ArrayList();
-        parsePropertyString(value, fragments, propertyRefs);
-
-        StringBuffer sb = new StringBuffer();
-        Iterator i = fragments.iterator();
-        Iterator j = propertyRefs.iterator();
-        while (i.hasNext()) {
-            String fragment = (String)i.next();
-            if (fragment == null) {
-                String propertyName = (String)j.next();
-                if (!isDataValueSet(propertyName)) {
-                    throw new ExecutionException("Property " + propertyName + " has not been set");
-                }
-                fragment = getDataValue(propertyName).toString();
-            }
-            sb.append(fragment);
-        }                        
-        
-        return sb.toString();
-    }
-    
-
-    /**
-     * This method will parse a string containing ${value} style 
-     * property values into two list. The first list is a collection
-     * of text fragments, while the other is a set of string property names
-     * null entries in the first list indicate a property reference from the
-     * second list.
-     */
-    static public void parsePropertyString(String value, List fragments, List propertyRefs) 
-        throws ExecutionException {
-        int prev = 0;
-        int pos;
-        while ((pos = value.indexOf("$", prev)) >= 0) {
-            if (pos > 0) {
-                fragments.add(value.substring(prev, pos));
-            }
-
-            if( pos == (value.length() - 1)) {
-                fragments.add("$");
-                prev = pos + 1;
-            }
-            else if (value.charAt(pos + 1) != '{' ) {
-                fragments.add(value.substring(pos + 1, pos + 2));
-                prev = pos + 2;
-            } else {
-                int endName = value.indexOf('}', pos);
-                if (endName < 0) {
-                    throw new ExecutionException("Syntax error in property: " 
-                                                 + value );
-                }
-                String propertyName = value.substring(pos + 2, endName);
-                fragments.add(null);
-                propertyRefs.add(propertyName);
-                prev = endName + 1;
-            }
-        }
-
-        if (prev < value.length()) {
-            fragments.add(value.substring(prev));
-        }
-    }
-
-    /**
-     * Given a name of an object, get the frame relative from this frame that
-     * contains that object.
-     */
-    public ExecutionFrame getRelativeFrame(String name) throws ExecutionException {
-        int index = name.lastIndexOf(":");
-        if (index == -1) {
-            return this;
-        }
-        
-        ExecutionFrame currentFrame = this;
-        String relativeFrameName = name.substring(0, index);
-        StringTokenizer tokenizer = new StringTokenizer(relativeFrameName, ":");
-        while (tokenizer.hasMoreTokens()) {
-            String frameName = tokenizer.nextToken();
-            currentFrame = currentFrame.getImportedFrame(frameName);
-            if (currentFrame == null) {
-                throw new ExecutionException("The project " + frameName + " in " 
-                                             + name + " was not found");
-            }
-        }
-        
-        return currentFrame;
-    }
-
-    /**
-     * Get the name of an object in its frame
-     */
-    public String getNameInFrame(String name) {
-        int index = name.lastIndexOf(":");
-        if (index == -1) {
-            return name;
-        }
-        return name.substring(index+1);
-    }
-
-    /**
-     * Set a value in this frame or any of its imported frames
-     */
-    public void setDataValue(String name, Object value) throws ExecutionException {
-        ExecutionFrame frame = getRelativeFrame(name);
-        frame.setDirectDataValue(getNameInFrame(name), value);
-    }
-    
-    /**
-     * Get a value from this frame or any imported frame
-     */
-    public Object getDataValue(String name) throws ExecutionException {
-        ExecutionFrame frame = getRelativeFrame(name);
-        return frame.getDirectDataValue(getNameInFrame(name));
-    }
-    
-    /**
-     * Set a value in this frame only
-     */
-    private void setDirectDataValue(String name, Object value) {
-        dataValues.put(name, value);
-    }
-    
-    /**
-     * Get a value from this frame
-     */
-    private Object getDirectDataValue(String name) {
-        return dataValues.get(name);
-    }
-
-    /**
-     * Indicate if a data value has been set
-     */
-    public boolean isDataValueSet(String name) throws ExecutionException {
-        ExecutionFrame frame = getRelativeFrame(name);
-        return frame.isDirectDataValueSet(getNameInFrame(name));
-    }
-        
-    /**
-     * Indicate if a data value has been set in this frame
-     */
-    private boolean isDirectDataValueSet(String name) {
-        return dataValues.containsKey(name);
-    }
-
-    public void runBuild(List targetNames) throws AntException {
-        Throwable buildFailureCause = null;
-        try {
-            eventSupport.fireBuildStarted(this, project);
-            initialize();
-
-            if (targetNames.isEmpty()) {
-                // we just execute the default target if any
-                String defaultTarget = project.getDefaultTarget();
-                if (defaultTarget != null) {
-                    executeTarget(defaultTarget);
-                }
-            }
-            else {
-                for (Iterator i = targetNames.iterator(); i.hasNext();) {
-                    executeTarget((String)i.next());
-                }
-            }
-            eventSupport.fireBuildFinished(this, project, null);
-        }
-        catch (RuntimeException e) {
-            buildFailureCause = e;
-            throw e;
-        }
-        catch (AntException e) {
-            buildFailureCause = e;
-            throw e;
-        }
-        finally {
-            eventSupport.fireBuildFinished(this, project, buildFailureCause);
-        }
-    }
-
-    public void executeTarget(String targetName) throws ExecutionException, ConfigException {
-        // to execute a target we must determine its dependencies and 
-        // execute them in order.
-        Map state = new HashMap();
-        Stack visiting = new Stack();
-        List dependencyOrder = new ArrayList();
-        ExecutionFrame startingFrame = getRelativeFrame(targetName);
-        startingFrame.fillinDependencyOrder(getNameInFrame(targetName),
-                                            dependencyOrder, state, visiting);
-
-        // Now tell each frame to execute the targets required
-        for (Iterator i = dependencyOrder.iterator(); i.hasNext();) {
-            String fullTargetName = (String)i.next();
-            ExecutionFrame frame = getRelativeFrame(fullTargetName);
-            frame.executeTargetTasks(getNameInFrame(fullTargetName));
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/InputProvider.java b/proposal/mutant/src/main/org/apache/ant/core/execution/InputProvider.java
deleted file mode 100644
index 21cb036..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/InputProvider.java
+++ /dev/null
@@ -1,77 +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.ant.core.execution;
-
-/*
- * An input provider is an object which is provided to Ant's core
- * execution system to provide input from the user. Typically command
- * line based clients will request input from the console whilst 
- * GUI clients may pop up an input dialog. Unattended operation may
- * be able to source input from some form of script.
- */
-public interface InputProvider {
-    /** 
-     * Request input from the user
-     *
-     * @param prompt a string which is used to prompt the user for input.
-     * @param defaultInput the default value initially supplied to the user
-     * @param timeout a timeout in milliseconds which some clients may use
-     *        to either accept the default or to fail.
-     *
-     * @return a string of the user's input if the user provided any.
-     *
-     * @throws ExecutionException if the no input could be obtained from the user
-     */
-    String userInput(String prompt, String defaultInput) throws ExecutionException;
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/Task.java b/proposal/mutant/src/main/org/apache/ant/core/execution/Task.java
deleted file mode 100644
index ba98152..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/Task.java
+++ /dev/null
@@ -1,73 +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.ant.core.execution;
-
-import org.apache.ant.core.model.*;
-import org.apache.ant.core.support.*;
-import java.util.*;
-import java.net.URL;
-
-/**
- * A task is a top level element in the buidl which will be processed. Ant
- * currently handles two types of tasks - DataType tasks and execution tasks.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public interface Task {
-    void setTaskContext(ExecutionContext context);
-    
-    void execute() throws ExecutionException;
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/TaskAdapter.java b/proposal/mutant/src/main/org/apache/ant/core/execution/TaskAdapter.java
deleted file mode 100644
index ab87110..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/TaskAdapter.java
+++ /dev/null
@@ -1,100 +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.ant.core.execution;
-
-import java.lang.reflect.*;
-import java.util.*;
-
-/**
- * Use introspection to "adapt" an arbitrary Bean ( not extending Task, but with similar
- * patterns).
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class TaskAdapter extends AbstractTask {
-
-    /**
-     * The real object that is performing the work
-     */
-    private Object worker;
-
-    private Method executeMethod = null;
-
-    public TaskAdapter(String taskType, Object worker) 
-        throws ExecutionException {
-        this.worker = worker;
-        try {
-            Class workerClass = worker.getClass();
-            executeMethod = workerClass.getMethod("execute", new Class[0]);
-            if (executeMethod == null) {
-                throw new ExecutionException("No execute method in the class for the <"
-                                             + taskType + "> task.");
-            }
-        }
-        catch (NoSuchMethodException e) {
-            throw new ExecutionException(e);
-        }
-    }
-                                                             
-
-    public void execute() throws ExecutionException {
-        try {
-            executeMethod.invoke(worker, null);
-        }
-        catch( Exception ex ) {
-            throw new ExecutionException(ex);
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/TaskContainer.java b/proposal/mutant/src/main/org/apache/ant/core/execution/TaskContainer.java
deleted file mode 100644
index edd6fbf..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/TaskContainer.java
+++ /dev/null
@@ -1,72 +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.ant.core.execution;
-
-import java.util.*;
-import java.net.URL;
-
-/**
- * A TaskContainer is an object which can contain and manage 
- * ExecutionTasks.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public interface TaskContainer {
-    /**
-     * Add a task to the container.
-     */
-    void addTask(Task task) throws ExecutionException;
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/execution/TaskDefinition.java b/proposal/mutant/src/main/org/apache/ant/core/execution/TaskDefinition.java
deleted file mode 100644
index 8402181..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/execution/TaskDefinition.java
+++ /dev/null
@@ -1,125 +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.ant.core.execution;
-
-import java.util.*;
-import java.net.URL;
-
-/**
- * A Task definition provides the information necessary to execute
- * a task implementation.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class TaskDefinition {
-    /** The URL of the library which defines this task */
-    private URL taskLibraryURL;
-     
-    /** The task's name */
-    private String taskName;
-    
-    /** The task's class */
-    private String taskClassName;
-    
-    /** The task's class loaded from the loader on demand. */
-    private Class taskClass = null;
-    
-    /** The task's class loader. */
-    private ClassLoader taskClassLoader;
-    
-    public TaskDefinition(URL taskLibraryURL, String taskName, String taskClassName, 
-                          ClassLoader taskClassLoader) {
-        this.taskLibraryURL = taskLibraryURL;
-        this.taskName = taskName;
-        this.taskClassName = taskClassName;
-        this.taskClassLoader = taskClassLoader;
-    }
-    
-    /**
-     * Get the name of the task that is being defined.
-     */
-    public String getName() {
-        return taskName;
-    }
-    
-    /**
-     * Get the classname of the task that is being defined.
-     */
-    public String getTaskClassName() {
-        return taskClassName;
-    }
-    
-    /**
-     * Get the URL where this task was defined.
-     *
-     * @returns a URL of the lib defintion file
-     */
-    public URL getLibraryURL() {
-        return taskLibraryURL;
-    }
-    
-    /**
-     * Get the task class for this task
-     *
-     * @return a class object for this task
-     */
-    public synchronized Class getExecutionTaskClass() throws ClassNotFoundException {
-        if (taskClass == null) {
-            taskClass = Class.forName(taskClassName, true, taskClassLoader);
-        }
-        return taskClass;
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/model/BuildElement.java b/proposal/mutant/src/main/org/apache/ant/core/model/BuildElement.java
deleted file mode 100644
index b24f77f..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/model/BuildElement.java
+++ /dev/null
@@ -1,157 +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.ant.core.model;
-
-import java.util.*;
-import org.apache.ant.core.support.*;
-
-/**
- * A BuildElement is an element of a build file and has a location
- * within that file.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class BuildElement {
-    /** The aspects defined for this element. */
-    private Map aspectMaps;
-
-    /** The location of this element */
-    private Location location;
-    
-    /** A comment associated with this element, if any */
-    private String comment;
-    
-    /**
-     * Create a build element giving its location.
-     *
-     * @param location identifies where this element is defined
-     */
-    public BuildElement(Location location) {
-        this.location = location;
-    }
-    
-    /**
-     * Get the location of the source where this element is defined
-     *
-     * @return the element's location
-     */
-    public Location getLocation() {
-        return location;
-    }
-    
-    /**
-     * Set a comment associated with this element
-     *
-     * @param comment the comment to be associated with this element.
-     */
-    public void setComment(String comment) {
-        this.comment = comment;
-    }
-    
-    /**
-     * Get the comment associated with this element.
-     *
-     * @return the element's comment which may be null.
-     */
-    public String getComment() {
-        return comment;
-    }
-    
-    /**
-     * Set the aspects of this element
-     *
-     * @param aspects a Map of apects that relate to this build element.
-     */
-    public void setAspects(Map aspects) {
-        aspectMaps = new HashMap();
-        for (Iterator i = aspects.keySet().iterator(); i.hasNext(); ) {
-            String aspectName = (String)i.next();
-            int separator = aspectName.indexOf(":");
-            if (separator != -1) {
-                String prefix = aspectName.substring(0, separator);
-                String name = aspectName.substring(separator + 1);
-                if (prefix.length() != 0 && name.length() != 0) {
-                    Map prefixMap = (Map)aspectMaps.get(prefix);
-                    if (prefixMap == null) {
-                        prefixMap = new HashMap();
-                        aspectMaps.put(prefix, prefixMap);
-                    }
-                    prefixMap.put(name, aspects.get(aspectName));
-                }
-            }
-        }
-    }
-    
-    /**
-     * Get an iterator on the aspects which have been given values on this element
-     * 
-     * @return an iterator of Strings , being the aspects which have been given values on
-     * this element.
-     */
-    public Iterator getAspectNames() {
-        return aspectMaps.keySet().iterator();
-    }
-    
-    /**
-     * Get the set of attribute values related to the given aspect
-     *
-     * @param apsectPrefix the prefix used to identify the prefix.
-     *
-     * @return a map of the attribute values for the given aspect.
-     */
-    public Map getAspectAttributes(String aspectPrefix) {
-        return (Map)aspectMaps.get(aspectPrefix);
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/model/Project.java b/proposal/mutant/src/main/org/apache/ant/core/model/Project.java
deleted file mode 100644
index 1bb746f..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/model/Project.java
+++ /dev/null
@@ -1,267 +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.ant.core.model;
-
-import org.apache.ant.core.support.*;
-import java.util.*;
-import java.net.URL;
-
-/**
- * A project is a collection of targets and global tasks. A project
- * may reference objects in other projects using named references of 
- * the form project:object
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class Project extends BuildElement {
-    /** The default target in this project. */
-    private String defaultTarget = null;
-
-    /** The base URL of this project. Relative locations are relative to this base.*/
-    private String base;
-    
-    /**
-     * The name of this project when referenced by a script within this project. 
-     */
-    private String name;
-    
-    /**
-     * These are the targets which belong to the project. They
-     * will have interdependencies which are used to determine
-     * which targets need to be executed before a given target.
-     */
-    private Map targets = new HashMap();
-    
-    /**
-     * The global tasks for this project. These are the tasks that will get executed
-     * whenever an execution context is associated with this project.
-     */
-    private List tasks = new ArrayList();
-    
-    /**
-     * The projects imported into this project. Each imported project is
-     * given a name which is used to identify access to that project's
-     * elements.
-     */
-    private Map importedProjects = new HashMap(); 
-
-    /**
-     * The URL where the project is defined.
-     * 
-     */
-    private URL sourceURL;
-
-    /**
-     * Create a Project
-     *
-     * @param sourceURL the URL where the project is defined.
-     * @param location the location of this element within the source.
-     */
-    public Project(URL sourceURL, Location location) {
-        super(location);
-        this.sourceURL = sourceURL;
-    }
-
-    /**
-     * Get the URL where this project is defined
-     *
-     * @return the project source URL
-     */
-    public URL getSourceURL() {
-        return sourceURL;
-    }
-        
-    /**
-     * Add a target to the project.
-     *
-     * @param target the Target to be added
-     * 
-     * @throws ProjectModelException if a target with the same name already exists.
-     */
-    public void addTarget(Target target) throws ProjectModelException {
-        if (targets.containsKey(target.getName())) {
-            throw new ProjectModelException("A target with name '" + target.getName() +
-                                            "' has already been defined in this project", 
-                                            target.getLocation());
-        }                                            
-        targets.put(target.getName(), target);
-    }
-    
-    /**
-     * Set the defautl target of this project.
-     *
-     * @param defaultTarget the name of the defaultTarget of this project.
-     */
-    public void setDefaultTarget(String defaultTarget) {
-        this.defaultTarget = defaultTarget;
-    }
-    
-    /**
-     * Get the Project's default Target, if any
-     *
-     * @return the project's defautl target or null if there is no default.
-     */
-    public String getDefaultTarget() {
-        return defaultTarget;
-    }
-
-    /**
-     * Set the base URL for this project.
-     *
-     * @param base the baseURL for this project.
-     */
-    public void setBase(String base) {
-        this.base = base;
-    }
-        
-    /**
-     * Get the base URL for this project.
-     *
-     * @return the baseURL for this project as a string.
-     */
-    public String getBase() {
-        return base;
-    }
-        
-    /**
-     * Set the name of this project.
-     *
-     * @param name the name for this project.
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-        
-
-    /**
-     * Add a task to the list of global tasks for this project.
-     *
-     * @param task a task to be executed when an execution context
-     * is associated with the Project (a non-target task)
-     */
-    public void addTask(TaskElement task) {
-        tasks.add(task);
-    }
-    
-    /**
-     * Import a project to be referenced using the given name.
-     *
-     * @param importName the name under which the project will be referenced.
-     * @param project the imported project.
-     *
-     * @throws ProjectModelException if an existing project has already 
-     *                               been imported with that name.
-     */
-    public void importProject(String importName, Project project) 
-            throws ProjectModelException {
-        if (importedProjects.containsKey(importName)) {
-            throw new ProjectModelException("A project has already been imported with name '" + 
-                                            importName + "'");
-        }
-        importedProjects.put(importName, project);
-    }
-    
-    /**
-     * Get the targets in this project.
-     *
-     * @return an iterator returning Target objects.
-     */
-    public Iterator getTargets() {
-        return targets.values().iterator();
-    }
-    
-    /**
-     * Get the target with the given name
-     *
-     * @param targetName the name of the desired target.
-     *
-     * @return the target with the given name or null if there is no
-     *         such target.
-     */
-    public Target getTarget(String targetName) {
-        return (Target)targets.get(targetName);
-    }
-    
-    /**
-     * Get the name sof the imported projects.
-     *
-     * @return an iterator which returns the name sof the imported projects.
-     */
-    public Iterator getImportedProjectNames() {
-        return importedProjects.keySet().iterator();
-    }
-    
-    /**
-     * Get an imported project by name
-     *
-     * @param importName the name under which the project was imported.
-     *
-     * @return the project asscociated with the given import name or null 
-     *         if there is no such project.
-     */
-    public Project getImportedProject(String importName) {
-        return (Project)importedProjects.get(importName);
-    }
-    
-    /**
-     * Get the initialisation tasks for this project
-     *
-     * @return an iterator over the set of tasks for this project.
-     */
-    public Iterator getTasks() {
-        return tasks.iterator();
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/model/ProjectModelException.java b/proposal/mutant/src/main/org/apache/ant/core/model/ProjectModelException.java
deleted file mode 100644
index 68cc9a8..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/model/ProjectModelException.java
+++ /dev/null
@@ -1,129 +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.ant.core.model;
-
-import org.apache.ant.core.support.*;
-import java.util.*;
-import java.net.URL;
-
-/**
- * A project model exception is thrown when an operation is attempted
- * which would violate the integrity of the Project/Target/Task object
- * model
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class ProjectModelException extends AntException {
-    /**
-     * Constructs an exception with the given descriptive message.
-     *
-     * @param msg Description of or information about the exception.
-     */
-    public ProjectModelException(String msg) {
-        super(msg);
-    }
-
-    /**
-     * 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 ProjectModelException(String msg, Location location) {
-        super(msg, location);
-    }
-
-    /**
-     * 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 ProjectModelException(String msg, Throwable cause) {
-        super(msg, 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 ProjectModelException(String msg, Throwable cause, Location location) {
-        super(msg, cause, location);
-    }
-
-    /**
-     * Constructs an exception with the given exception as a root cause.
-     *
-     * @param cause Exception that might have caused this one.
-     */
-    public ProjectModelException(Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * 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 ProjectModelException(Throwable cause, Location location) {
-        super(cause, location);
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/model/Target.java b/proposal/mutant/src/main/org/apache/ant/core/model/Target.java
deleted file mode 100644
index e86582f..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/model/Target.java
+++ /dev/null
@@ -1,136 +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.ant.core.model;
-
-import java.util.*;
-import org.apache.ant.core.support.*;
-
-/**
- * A Target is a collection of tasks. It may have
- * dependencies on other targets
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class Target extends BuildElement {
-    private List dependencies = new ArrayList();
-    
-    /**
-     * This target's list of tasks
-     */
-    private List tasks = new ArrayList();
-    
-    /**
-     * The target's name.
-     */
-    private String name;
-    
-    /**
-     * Construct the target, given its name
-     *
-     * @param location the location of the element
-     * @param name the target's name.
-     */
-    public Target(Location location, String name) {
-        super(location);
-        this.name = name;
-    }
-    
-    /**
-     * Get this target's name.
-     *
-     * @return the target's name.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Add a task to this target
-     *
-     * @param task the task to be added to the target.
-     */
-    public void addTask(TaskElement task) {
-        tasks.add(task);
-    }
-    
-    /**
-     * Add a dependency to this target
-     *
-     * @param dependency the name of a target upon which this target 
-     *                   depends
-     */
-    public void addDependency(String dependency) {
-        dependencies.add(dependency);
-    }
-
-    /**
-     * Get this target's dependencies.
-     *   
-     * @return an iterator over the target's dependencies.
-     */
-    public Iterator getDependencies() {
-        return dependencies.iterator();
-    }
-    
-    /**
-     * Get the tasks for this target
-     *
-     * @return an iterator over the set of tasks for this target.
-     */
-    public Iterator getTasks() {
-        return tasks.iterator();
-    }
-    
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/model/TaskElement.java b/proposal/mutant/src/main/org/apache/ant/core/model/TaskElement.java
deleted file mode 100644
index 7c0b738..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/model/TaskElement.java
+++ /dev/null
@@ -1,169 +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.ant.core.model;
-
-import java.util.*;
-import org.apache.ant.core.support.*;
-
-/**
- * A TaskElement is a holder for Task configuration information.
- * TaskElements may be grouped into a hierarchy to capture
- * any level of Task element nesting.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class TaskElement extends BuildElement {
-    /** The attributes of this task element */
-    private Map attributes = new HashMap();
-
-    /**
-     * The task's name or type
-     */
-    private String type;
-    
-    /**
-     * The task elements that make up this task.
-     */
-    private List taskElements = new ArrayList();
-    
-    /** The content (text) of this task */
-    private String text = "";
-    
-    /**
-     * Create a Task of the given type
-     *
-     * @param location the location of the element
-     * @param type the task element's type
-     */
-    public TaskElement(Location location, String type) {
-        super(location);
-        this.type = type;
-    }
-    
-    /**
-     * Add text to this task.
-     *
-     * @param text the element text to add.
-     */
-    public void addText(String text) {
-        this.text += text;
-    }
-
-    /**
-     * Get the text of this task
-     *
-     * @return the task's text.
-     */
-     public String getText() {
-        return text;
-    }
-     
-    /**
-     * Add a task element to this task
-     * 
-     * @param taskElement the task element to be added.
-     */
-    public void addTaskElement(TaskElement taskElement) {
-        taskElements.add(taskElement);
-    }
-
-    /**
-     * Get an iterator over this element's nexted elements
-     *
-     * @return an iterator which provides TaskElement instances
-     */
-    public Iterator getNestedElements() {
-        return taskElements.iterator();
-    }
-    
-    /**
-     * Get the type of this task element
-     *
-     * @return the element's type
-     */
-    public String getType() {
-        return type;
-    }
-
-    /**
-     * Add an attribute to this task element
-     *
-     * @param attributeName the name of the attribute
-     * @param attributeValue the attribute's value.
-     */
-    public void addAttribute(String attributeName, String attributeValue) {
-        attributes.put(attributeName, attributeValue);
-    }
-    
-    /**
-     * Get an iterator over the task's attributes
-     *
-     * @return an iterator which provide's attribute names
-     */
-    public Iterator getAttributeNames() {
-        return attributes.keySet().iterator();
-    }
-    
-    /**
-     * Get the value of an attribute.
-     *
-     * @param attributeName the name of the attribute
-     *
-     * @return the value of the attribute or null if there is no such attribute.
-     */
-    public String getAttributeValue(String attributeName) {
-        return (String)attributes.get(attributeName);
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/support/AntClassLoader.java b/proposal/mutant/src/main/org/apache/ant/core/support/AntClassLoader.java
deleted file mode 100644
index 697da33..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/support/AntClassLoader.java
+++ /dev/null
@@ -1,150 +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.ant.core.support;
-
-import java.util.*;
-import java.net.*;
-import java.io.*;
-
-/**
- * The AntClassLoader is a type of URL classloader which reverses the standard
- * lookup order to load things from the URLs first and then to use the parent class
- * loader only if the class does not exist in the URLs.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class AntClassLoader extends URLClassLoader {
-    /** A Debug label to print when the Classloader finds or fails to find a class. */
-    private String debugLabel = null;
-    
-    /** A flag whihc controls whether messages are logged by the loader */
-    private boolean debug = false;
-
-    private void dumpURLs() {
-        if (debug && debugLabel != null) {
-            System.out.println(debugLabel + ": loader URLs");
-            URL[] urls = getURLs();
-            for (int i = 0; i < urls.length; ++i) {
-                System.out.println(debugLabel + ": URL: " + urls[i]);
-            }
-        }
-    }        
-    
-    public AntClassLoader(URL[] urls) {
-        super(urls);
-    }
-
-    public AntClassLoader(URL[] urls, String debugLabel) {
-        super(urls);
-        this.debugLabel = debugLabel;
-    }
-
-    public AntClassLoader(URL[] urls,
-                          ClassLoader parent) {
-        super(urls, parent);
-    }
-    
-    public AntClassLoader(URL[] urls,
-                          ClassLoader parent, String debugLabel) {
-        super(urls, parent);
-        this.debugLabel = debugLabel;
-    }
-    
-    public void setDebug(boolean debug) {
-        this.debug = debug;
-        dumpURLs();    
-    }
-
-    protected Class loadClass(String name, boolean resolve) 
-            throws ClassNotFoundException {
-        if (debug && debugLabel != null) {                
-            System.out.println(debugLabel + ": Trying to load class " + name);
-        }
-
-        Class c = findLoadedClass(name);
-        if (c == null) {
-            try {
-                c = findClass(name);
-                if (debug && debugLabel != null) {
-                    System.out.println(debugLabel + ": Found class " + name + " in this loader");
-                }
-            } catch (ClassNotFoundException e) {
-                c = super.loadClass(name, resolve);
-                if (debug && debugLabel != null) {
-                    System.out.println(debugLabel + ": Found class " + name + " in parent loader");
-                }
-                return c;
-            }
-        }
-        if (resolve) {
-            resolveClass(c);
-        }
-        return c;
-    }
-        
-    public void addURL(URL url) {
-        super.addURL(url);
-    }
-
-    public URL getResource(String name) {
-        URL url = findResource(name);
-        if (url == null) {
-            url = super.getResource(name);
-        }
-        
-        return url;
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/support/AntException.java b/proposal/mutant/src/main/org/apache/ant/core/support/AntException.java
deleted file mode 100644
index 1520452..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/support/AntException.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.ant.core.support;
-
-
-import java.io.*;
-
-/**
- * An AntException indicates some exceptional case has been encountered in
- * the processing of Ant. AntExceptions may accept a Throwable as a
- * cause allowing exceptions to be nested
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public abstract class AntException extends Exception {
-    /** 
-     * Exception that might have caused this one. 
-     */
-    private Throwable cause = null;
-
-    /**
-     * The location of the element which is associated with this exception if known.
-     */
-    private Location location = Location.UNKNOWN_LOCATION;
-    
-    /**
-     * Constructs an exception with the given descriptive message.
-     * @param msg Description of or information about the exception.
-     */
-    public AntException(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 AntException(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 AntException(String msg, Throwable cause, Location location) {
-        this(msg, cause);
-        setLocation(location);
-    }
-
-    /**
-     * Constructs an exception with the given exception as a root cause.
-     * @param cause Exception that might have caused this one.
-     */
-    public AntException(Throwable cause) {
-        super(cause.getMessage());
-        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 AntException(String msg, Location location) {
-        super(msg);
-        setLocation(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 AntException(Throwable cause, Location location) {
-        this(cause);
-        setLocation(location);
-    }
-
-    /**
-     * Returns the nested exception.
-     *
-     * @return the underlying exception
-     */
-    public Throwable getCause() {
-        return cause;
-    }
-
-    /**
-     * Sets the file location where the error occured.
-     */
-    public void setLocation(Location location) {
-        if (location == null) {
-            this.location = Location.UNKNOWN_LOCATION;
-        }
-        else {
-            this.location = location;
-        }
-    }
-
-    /**
-     * Returns the file location where the error occured.
-     */
-    public Location getLocation() {
-        return location;
-    }
-
-    /**
-     * Print the stack trace to System.err
-     */
-    public void printStackTrace() {
-        printStackTrace(System.err);
-    }
-    
-    /**
-     * Print the stack trace to the given PrintStream
-     *
-     * @param ps the PrintStream onto which the stack trace 
-     *           of this exception is to be printed
-     */
-    public void printStackTrace(PrintStream ps) {
-        synchronized (ps) {
-            ps.println(this);
-            if (cause != null) {
-                ps.println("--- Nested Exception ---");
-                cause.printStackTrace(ps);
-            }
-        }
-    }
-    
-    /**
-     * Print the stack trace to the given PrintWriter
-     *
-     * @param pw the PrintWriter onto which the stack trace 
-     *           of this exception is to be printed
-     */
-    public void printStackTrace(PrintWriter pw) {
-        synchronized (pw) {
-            pw.println(this);
-            if (cause != null) {
-                pw.println("--- Nested Exception ---");
-                cause.printStackTrace(pw);
-            }
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/support/AntLocator.java b/proposal/mutant/src/main/org/apache/ant/core/support/AntLocator.java
deleted file mode 100644
index 859a635..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/support/AntLocator.java
+++ /dev/null
@@ -1,331 +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.ant.core.support;
-
-import java.util.*;
-import java.net.*;
-import java.io.*;
-
-/**
- * The Ant Locator is used to find various Ant components without
- * requiring the user to maintain environment properties. 
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class AntLocator {
-    private AntLocator() {}
-    
-    /**
-     * Get the URL for the given class's load location.
-     *
-     * @param theClass the class whose loadURL is desired.
-     * @return a URL which identifies the component from which this class was loaded.
-     *
-     * @throws LocationException if the class' URL cannot be constructed.
-     */
-    static public URL getClassLocationURL(Class theClass) 
-            throws LocationException {
-        String className = theClass.getName().replace('.', '/') + ".class";
-        URL classRawURL = theClass.getClassLoader().getResource(className);
-        
-        try {
-            String fileComponent = classRawURL.getFile();
-            if (classRawURL.getProtocol().equals("file")) {
-                // Class comes from a directory of class files rather than
-                // from a jar. 
-                int classFileIndex = fileComponent.lastIndexOf(className);
-                if (classFileIndex != -1) {
-                    fileComponent = fileComponent.substring(0, classFileIndex);
-                }
-                
-                return new URL("file:" + fileComponent);
-            }
-            else if (classRawURL.getProtocol().equals("jar")) {
-                // Class is coming from a jar. The file component of the URL
-                // is actually the URL of the jar file
-                int classSeparatorIndex = fileComponent.lastIndexOf("!");
-                if (classSeparatorIndex != -1) {
-                    fileComponent = fileComponent.substring(0, classSeparatorIndex);
-                }
-                
-                return new URL(fileComponent);
-            }
-            else {
-                // its running out of something besides a jar. We just return the Raw
-                // URL as a best guess
-                return classRawURL;
-            }
-        }
-        catch (MalformedURLException e) {
-            throw new LocationException(e);
-        }
-    }
-
-
-    /**
-     * Get the location of AntHome
-     *
-     * @return the URL containing AntHome.
-     *
-     * @throws LocationException if Ant's home cannot be determined.
-     */
-    static public URL getAntHome() throws LocationException {
-        try {
-            URL libraryURL = getLibraryURL();
-            if (libraryURL != null) {
-                return new URL(libraryURL, "..");
-            }
-            else {
-                return null;
-            }
-        }
-        catch (MalformedURLException e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    /**
-     * Get a URL to the Ant core jar. Other jars can be located 
-     * from this as relative URLs
-     *
-     * @return a URL containing the Ant core or null if the core cannot be determined.
-     *
-     * @throws LocationException if the URL of the core.jar cannot be determined.
-     */
-    static public URL getCoreURL() throws LocationException {
-        return getClassLocationURL(AntLocator.class);
-    }
-    
-    /**
-     * Get a URL to the Ant Library directory.
-     *
-     * @throws LocationException if the location of the Ant library directory cannot 
-     *         be determined
-     */
-    static public URL getLibraryURL() throws LocationException {
-        URL coreURL = getCoreURL();
-        
-        try {
-            if (coreURL.getProtocol().equals("file") &&
-                coreURL.getFile().endsWith("/")) {
-                // we are running from a set of classes. This should only happen
-                // in an Ant build situation. We use some embedded knowledge to
-                // locate the lib directory
-                File coreClassDirectory = new File(coreURL.getFile());
-                File libDirectory = coreClassDirectory.getParentFile().getParentFile();
-                if (!libDirectory.exists()) {
-                    throw new LocationException("Ant library directory " + libDirectory + 
-                                                   " does not exist");
-                }
-                return (new File(libDirectory, "lib")).toURL();
-            }
-            else {
-                String coreURLString = coreURL.toString();
-                int index = coreURLString.lastIndexOf("/");
-                if (index != -1) {
-                    coreURLString = coreURLString.substring(0, index+1);
-                }
-                return new URL(coreURLString);
-            }
-        }
-        catch (MalformedURLException e) {
-            throw new LocationException(e);
-        }
-    }
-    
-    /**
-     * Get a classloader with which to load the SAX parser
-     *
-     * @return the classloader to use to load Ant's XML parser
-     *
-     * @throws LocationException if the location of the parser jars 
-     *                              could not be determined.
-     */
-    static public ClassLoader getParserClassLoader(Properties properties) 
-            throws LocationException {
-        // we look for the parser directory based on a system property first
-        String parserURLString = properties.getProperty(Constants.PropertyNames.PARSER_URL);
-        URL parserURL = null;
-        if (parserURLString != null) {
-            try {
-                parserURL = new URL(parserURLString);
-            }
-            catch (MalformedURLException e) {
-                throw new LocationException("XML Parser URL " + parserURLString + 
-                                               " is malformed.", e);
-            }
-        }
-        else {
-            try {
-                parserURL = new URL(getLibraryURL(), "parser/");
-            }
-            catch (Exception e) {
-                // ignore - we will just use the default class loader.
-            }
-        }
-
-        if (parserURL != null) {
-            try {
-                URL[] parserURLs = null;
-                if (parserURL.getProtocol().equals("file")) {
-                    // build up the URLs for each jar file in the 
-                    // parser directory
-                    parserURLs = getDirectoryJarURLs(new File(parserURL.getFile()));
-                }
-                else {
-                    // we can't search the URL so we look for a known parser relative to
-                    // that URL
-                    String defaultParser = properties.getProperty(Constants.PropertyNames.DEFAULT_PARSER);
-                    if (defaultParser == null) {
-                        defaultParser = Constants.Defaults.DEFAULT_PARSER;
-                    }
-                    
-                    parserURLs = new URL[1];
-                    parserURLs[0] = new URL(parserURL, defaultParser);
-                    
-                }
-                
-                return new AntClassLoader(parserURLs, "parser");
-            }
-            catch (MalformedURLException e) {
-                throw new LocationException(e);
-            }
-        }
-        
-        return AntLocator.class.getClassLoader();
-    }
-
-    /**
-     * Get an array of URLs for each file matching the given set of extensions
-     *
-     * @param directory the local directory
-     * @param extensions the set of extensions to be returned
-     *
-     * @return an array of URLs for the file found in the directory.
-     */
-    static public URL[] getDirectoryURLs(File directory, final Set extensions) {
-        URL[] urls = new URL[0];
-        
-        if (!directory.exists()) {
-            return urls;
-        }
-        
-        File[] jars = directory.listFiles(new FilenameFilter() {
-                                                public boolean accept(File dir, String name) {
-                                                    int extensionIndex = name.lastIndexOf(".");
-                                                    if (extensionIndex == -1) {
-                                                        return false;
-                                                    }
-                                                    String extension = name.substring(extensionIndex);
-                                                    return extensions.contains(extension);
-                                                }
-                                            });
-        urls = new URL[jars.length];
-        for (int i = 0; i < jars.length; ++i) {
-            try {
-                urls[i] = jars[i].toURL();
-            }
-            catch (MalformedURLException e) {
-                // just ignore
-            }
-        }
-        return urls;
-    }
-    
-
-
-    
-    /**
-     * Get an array of URLs for each jar file in a local directory.
-     *
-     * @param directory the local directory
-     *
-     * @return an array of URLs for the jars found in the directory.
-     */
-    static private URL[] getDirectoryJarURLs(File directory) {
-        HashSet extensions = new HashSet();
-        extensions.add(".jar");
-        return getDirectoryURLs(directory, extensions);        
-    }
-    
-    /**
-     * Get the Core Class Loader. The core requires a SAX parser which must come from the
-     * given classloader
-     *
-     * @throws LocationException if the location of the core ant classes could 
-     *                              not be determined
-     */
-    static public AntClassLoader getCoreClassLoader(Properties properties) 
-            throws LocationException {
-        URL[] coreURL = new URL[1];
-        coreURL[0] = getCoreURL();
-        AntClassLoader coreLoader 
-            = new AntClassLoader(coreURL, getParserClassLoader(properties), "core");
-        URL libraryURL = getLibraryURL();
-        if (libraryURL != null && libraryURL.getProtocol().equals("file")) {
-            // we can search this
-
-            URL[] optionalURLs = getDirectoryJarURLs(new File(libraryURL.getFile(), "optional"));
-            for (int i = 0; i < optionalURLs.length; ++i) {
-                coreLoader.addURL(optionalURLs[i]);
-            }
-            
-        }
-        
-        return coreLoader;          
-    }        
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/support/ConfigException.java b/proposal/mutant/src/main/org/apache/ant/core/support/ConfigException.java
deleted file mode 100644
index c4863de..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/support/ConfigException.java
+++ /dev/null
@@ -1,125 +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.ant.core.support;
-
-import java.io.*;
-
-/**
- * A ConfigException indicates a problem with 
- * Ant's configuration.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class ConfigException extends AntException {
-    /**
-     * Constructs an exception with the given descriptive message.
-     *
-     * @param msg Description of or information about the exception.
-     */
-    public ConfigException(String msg) {
-        super(msg);
-    }
-
-    /**
-     * 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 ConfigException(String msg, Location location) {
-        super(msg, location);
-    }
-
-    /**
-     * 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 ConfigException(String msg, Throwable cause) {
-        super(msg, 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 ConfigException(String msg, Throwable cause, Location location) {
-        super(msg, cause, location);
-    }
-
-    /**
-     * Constructs an exception with the given exception as a root cause.
-     *
-     * @param cause Exception that might have caused this one.
-     */
-    public ConfigException(Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * 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 ConfigException(Throwable cause, Location location) {
-        super(cause, location);
-    }
-
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/support/Constants.java b/proposal/mutant/src/main/org/apache/ant/core/support/Constants.java
deleted file mode 100644
index 1be623d..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/support/Constants.java
+++ /dev/null
@@ -1,76 +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.ant.core.support;
-
-import java.util.*;
-import java.net.*;
-import java.io.*;
-
-/**
- * Constants used by the Ant core
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class Constants {
-    static public class PropertyNames {
-        static public final String PARSER_URL = "ant.parser.url";
-        static public final String DEFAULT_PARSER = "ant.parser.default";
-    }
-    
-    static public class Defaults {
-        static public final String DEFAULT_PARSER = "crimson.jar";
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/support/Location.java b/proposal/mutant/src/main/org/apache/ant/core/support/Location.java
deleted file mode 100644
index 9e55bdd..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/support/Location.java
+++ /dev/null
@@ -1,166 +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.ant.core.support;
-
-/**
- * Stores the file name and line number in a file.
- */
-public class Location {
-    /**
-     * The source URL to which this location relates.
-     */
-    private String source;
-    
-    /**
-     * The line number of this location within the source
-     */
-    private int lineNumber;
-    
-    /**
-     * The column number of this locatin within the source
-     */
-    private int columnNumber;
-
-    /**
-     * Standard unknown location constant;
-     */
-    public static final Location UNKNOWN_LOCATION = new Location();
-
-    /**
-     * Creates an "unknown" location.
-     */
-    private Location() {
-        this(null, 0, 0);
-    }
-
-    /**
-     * Creates a location consisting of a source location but no line number.
-     *
-     * @param source the source (URL) to which this location is associated.
-     */
-    public Location(String source) {
-        this(source, 1, 1);
-    }
-
-    /**
-     * Creates a location consisting of a source location and co-ordinates within that
-     * source
-     *
-     * @param source the source (URL) to which this location is associated.
-     * @param lineNumber the line number of this location
-     * @param columnNumber the column number of this location
-     */
-    public Location(String source, int lineNumber, int columnNumber) {
-        this.source = source;
-        this.lineNumber = lineNumber;
-        this.columnNumber = columnNumber;
-    }
-
-    /**
-     * Returns the source name, line number and a trailing space. An error
-     * message can be appended easily. For unknown locations, returns
-     * an empty string.
-     *
-     * @return a suitable string representation of the location
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-
-        if (source != null) {
-            if (source.startsWith("file:")) {
-                buf.append(source.substring(5));
-            }
-            else {
-                buf.append(source);
-            }
-
-            if (lineNumber != 0) {
-                buf.append(":");
-                buf.append(lineNumber);
-            }
-
-            buf.append(": ");
-        }
-
-        return buf.toString();
-    }
-    
-    /**
-     * Get the source URL for this location
-     *
-     * @return a URL string 
-     */
-    public String getSourceURL() {
-        return source;
-    }
-    
-    /**
-     * Get the line number of this location
-     *
-     * @return an integer line number
-     */
-    public int getLineNumber() {
-        return lineNumber;
-    }
-
-    /**
-     * Get the column number of this location
-     *
-     * @return an integer column number
-     */
-    public int getColumnNumber() {
-        return columnNumber;
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/support/LocationException.java b/proposal/mutant/src/main/org/apache/ant/core/support/LocationException.java
deleted file mode 100644
index c3a32aa..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/support/LocationException.java
+++ /dev/null
@@ -1,97 +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.ant.core.support;
-
-import java.util.*;
-import java.net.URL;
-
-/**
- * A LocationException is thrown when there is a problem determining
- * the location of an Ant component.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class LocationException extends AntException {
-    /**
-     * Constructs an exception with the given descriptive message.
-     *
-     * @param msg Description of or information about the exception.
-     */
-    public LocationException(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 LocationException(String msg, Throwable cause) {
-        super(msg, cause);
-    }
-
-    /**
-     * Constructs an exception with the given exception as a root cause.
-     *
-     * @param cause Exception that might have caused this one.
-     */
-    public LocationException(Throwable cause) {
-        super(cause);
-    }
-
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/types/AbstractScanner.java b/proposal/mutant/src/main/org/apache/ant/core/types/AbstractScanner.java
deleted file mode 100644
index 0c96c79..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/types/AbstractScanner.java
+++ /dev/null
@@ -1,580 +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.ant.core.types;
-
-import java.io.*;
-import java.util.*;
-import org.apache.ant.core.execution.*;
-
-/**
- * The abstract FileSetInfo performs all of the name matching and mapping operations
- * common to FileSetInfo classes.
- */
-public abstract class AbstractScanner implements FileSetScanner {
-    /** The list of patternSets to process on this directory */
-    List patternSets;
-    
-    /** Indicator for whether default excludes should be applied. */
-    boolean useDefaultExcludes;      
-    
-    /*
-     * The patterns for the files that should be included.
-     */
-    private String[] includes;
-
-    /**
-     * The patterns for the files that should be excluded.
-     */
-    private String[] excludes;
-
-    /**
-     * Patterns that should be excluded by default.
-     *
-     * @see #addDefaultExcludes()
-     */
-    protected final static String[] DEFAULTEXCLUDES = {
-        "**/*~",
-        "**/#*#",
-        "**/.#*",
-        "**/%*%",
-        "**/CVS",
-        "**/CVS/**",
-        "**/.cvsignore",
-        "**/SCCS",
-        "**/SCCS/**"
-    };
-
-    public AbstractScanner(List patternSets, 
-                           boolean useDefaultExcludes) throws ExecutionException {
-        this.patternSets = patternSets;
-        this.useDefaultExcludes = useDefaultExcludes; 
-        
-        //convert patternsets into excludes
-        PatternSet combinedSet = new PatternSet();
-        for (Iterator i = patternSets.iterator(); i.hasNext(); ) {
-            PatternSet set = (PatternSet)i.next();
-            combinedSet.append(set);
-        }
-        
-        String[] includes = combinedSet.getIncludePatterns();
-        if (includes == null) {
-            // No includes supplied, so set it to 'matches all'
-            includes = new String[1];
-            includes[0] = "**";
-        }
-        String[] excludes = combinedSet.getExcludePatterns();
-        if (excludes == null) {
-            excludes = new String[0];
-        }
-
-        setIncludes(includes);
-        setExcludes(excludes);
-        if (useDefaultExcludes) {
-            addDefaultExcludes();
-        }
-    }
-
-    /**
-     * 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
-     */
-    protected 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
-     */
-    protected 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;
-            }
-        }
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * 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/proposal/mutant/src/main/org/apache/ant/core/types/DataType.java b/proposal/mutant/src/main/org/apache/ant/core/types/DataType.java
deleted file mode 100644
index fc5bbd5..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/types/DataType.java
+++ /dev/null
@@ -1,140 +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.ant.core.types;
-
-import org.apache.ant.core.execution.*;
-import java.io.*;
-
-/**
- * A DataType is an element which can register a named value in the
- * ExecutionFrame's context. 
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public abstract class DataType extends AbstractTask {
-    private String reference = null;
-    private Object referencedObject = null;
-
-    public void execute() throws ExecutionException {
-        validate();
-    }
-
-    protected void validate() throws ExecutionException {
-    }
-
-    /**
-     * Creates an exception that indicates that refid has to be the
-     * only attribute if it is set.  
-     */
-    protected ExecutionException tooManyAttributes() {
-        return new ExecutionException("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 ExecutionException noChildrenAllowed() {
-        return new ExecutionException("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 ExecutionException circularReference() {
-        return new ExecutionException("This data type contains a circular reference.");
-    }
-    
-    /**
-     * Makes this instance in effect a reference to another DataType
-     * instance.
-     */
-    public void setRefid(String reference) throws ExecutionException {
-        this.reference = reference;
-        Object referencedObject = getTaskContext().getDataValue(reference);
-
-        if (referencedObject == null) {
-            throw new ExecutionException("Unable to locate the reference specified by refid '" +
-                                         getReference() + "'");
-        }
-        
-        if (!this.getClass().isAssignableFrom(referencedObject.getClass())) {
-            throw new ExecutionException("The object referenced by refid '" +
-                                         getReference() + "' is not compatible with this element ");
-        }
-    }
-
-    /**
-     * Has the refid attribute of this element been set?
-     */
-    public boolean isReference() {
-        return referencedObject != null;
-    }
-
-
-    protected Object getReferencedObject() throws ExecutionException {
-        if (!isReference()) {
-            throw new ExecutionException("You cannot get a referenced value from a data type " + 
-                                         "which does not have the refid attribute");
-        }
-        
-        return referencedObject;
-    }
-    
-    protected String getReference() {
-        return reference;
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/types/DirectoryScanner.java b/proposal/mutant/src/main/org/apache/ant/core/types/DirectoryScanner.java
deleted file mode 100644
index 365f091..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/types/DirectoryScanner.java
+++ /dev/null
@@ -1,266 +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.ant.core.types;
-
-import java.io.*;
-import java.util.*;
-import org.apache.ant.core.execution.*;
-
-/**
- * A DirectoryFileset is a fileset where the files come from a directory and
- * its subdirectories. 
- */
-public class DirectoryScanner extends AbstractScanner {
-    /** The directory which is the root of the search space. */
-    File basedir;
-    
-    /**
-     * The files that where found and matched at least one includes, and matched
-     * no excludes.
-     */
-    protected List filesIncluded;
-
-    /**
-     * The files that where found and did not match any includes.
-     */
-    protected List filesNotIncluded;
-
-    /**
-     * The files that where found and matched at least one includes, and also
-     * matched at least one excludes.
-     */
-    protected List filesExcluded;
-
-    /**
-     * The directories that where found and matched at least one includes, and
-     * matched no excludes.
-     */
-    protected List dirsIncluded;
-
-    /**
-     * The directories that where found and did not match any includes.
-     */
-    protected List dirsNotIncluded;
-
-    /**
-     * The files that where found and matched at least one includes, and also
-     * matched at least one excludes.
-     */
-    protected List dirsExcluded;
-
-    /** Map to map filenames to actual File objects */
-    private Map filenameMap = null;
-
-    public DirectoryScanner(File basedir, List patternSets, 
-                            boolean useDefaultExcludes) throws ExecutionException {
-        super(patternSets, useDefaultExcludes);
-        this.basedir = basedir;
-    }
-    
-    public String[] getIncludedFiles() throws ExecutionException {
-        if (filesIncluded == null) {
-            scan();
-        }
-        
-        return (String[])filesIncluded.toArray(new String[0]);
-    }
-
-    /**
-     * Scans the base directory for files that match at least one include
-     * pattern, and don't match any exclude patterns.
-     *
-     * @throws ExecutionException when basedir was set incorrecly
-     */
-    public void scan() throws ExecutionException  {
-        if (basedir == null) {
-            throw new ExecutionException("The directory to scan has not been set");
-        }
-        if (!basedir.exists()) {
-            throw new ExecutionException("basedir \"" + basedir
-                                            + "\" does not exist");
-        }
-        if (!basedir.isDirectory()) {
-            throw new ExecutionException("basedir \"" + basedir
-                                            + "\" is not a directory");
-        }
-
-        filesIncluded = new ArrayList();
-        filesNotIncluded = new ArrayList();
-        filesExcluded = new ArrayList();
-        dirsIncluded = new ArrayList();
-        dirsNotIncluded = new ArrayList();
-        dirsExcluded = new ArrayList();
-        filenameMap = new HashMap();
-
-        String root = "";
-        String mappedRoot = mapName(root);
-        filenameMap.put(mappedRoot, root);
-        if (isIncluded(root)) {
-            if (!isExcluded(root)) {
-                dirsIncluded.add(mappedRoot);
-            } else {
-                dirsExcluded.add(mappedRoot);
-            }
-        } else {
-            dirsNotIncluded.add(mappedRoot);
-        }
-        scandir(basedir, root, 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) 
-        throws ExecutionException {
-        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 ExecutionException ("IO error scanning directory "
-                                           + dir.getAbsolutePath());
-        }
-
-        for (int i = 0; i < newfiles.length; i++) {
-            String name = vpath+newfiles[i];
-            String mappedName = mapName(name);
-            filenameMap.put(mappedName, name);
-            File   file = new File(dir,newfiles[i]);
-            if (file.isDirectory()) {
-                if (isIncluded(name)) {
-                    if (!isExcluded(name)) {
-                        dirsIncluded.add(mappedName);
-                        if (fast) {
-                            scandir(file, name+File.separator, fast);
-                        }
-                    } else {
-                        dirsExcluded.add(mappedName);
-                    }
-                } else {
-                    dirsNotIncluded.add(mappedName);
-                    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.add(mappedName);
-                    } else {
-                        filesExcluded.add(mappedName);
-                    }
-                } else {
-                    filesNotIncluded.add(mappedName);
-                }
-            }
-        }
-    }
-
-    private String mapName(String rawName) {
-        return "bozo/" + rawName;
-    }
-
-    public File getLocalFile(String mappedName) throws ExecutionException {
-        if (filesIncluded == null) {
-            scan();
-        }
-        
-        String realName = (String)filenameMap.get(mappedName);
-        if (realName == null) {
-            throw new ExecutionException("\"" + mappedName + "\" was not included in the scan.");
-        }
-        
-        return new File(basedir, realName);
-    }
-
-    public String toString() {
-        try {
-            String[] files = getIncludedFiles();
-            StringBuffer sb = new StringBuffer();
-            String lsep = System.getProperty("line.separator");
-            for (int i = 0; i < files.length; ++i) {
-                sb.append(files[i]);
-                sb.append(lsep);
-            }
-            
-            return sb.toString();
-        }
-        catch (ExecutionException e) {
-            return "Fileset from \"" + basedir + "\"";
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/types/EnumeratedAttribute.java b/proposal/mutant/src/main/org/apache/ant/core/types/EnumeratedAttribute.java
deleted file mode 100644
index ffe03ba..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/types/EnumeratedAttribute.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.ant.core.types;
-
-import org.apache.ant.core.execution.*;
-
-/**
- * Helper class for attributes that can only take one of a fixed list
- * of values.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public abstract class EnumeratedAttribute {
-
-    /** The value of this attribute. */
-    private 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();
-
-    /**
-     * Set the value of the enumeration.
-     *
-     * Invoked by {@link org.apache.ant.core.execution.IntrospectionHelper IntrospectionHelper}.
-     *
-     * @param value the value of the enumeration
-     *
-     * @throws ExecutionException if the value is not value
-     */
-    public final void setValue(String value) throws ExecutionException {
-        if (!containsValue(value)) {
-            throw new ExecutionException(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/proposal/mutant/src/main/org/apache/ant/core/types/FileSet.java b/proposal/mutant/src/main/org/apache/ant/core/types/FileSet.java
deleted file mode 100644
index 018576b..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/types/FileSet.java
+++ /dev/null
@@ -1,319 +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.ant.core.types;
-
-import java.util.*;
-import java.io.*;
-import java.net.URL;
-import org.apache.ant.core.execution.*;
-
-/**
- * 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 FileSetScanner scanner = null;
-    
-    private PatternSet defaultPatterns = new PatternSet();
-    private List patternSets = new ArrayList();
-
-    /** 
-     * The dir attribute is set when you are generating the list of files
-     *  from a directory. 
-     */
-    private File dir = null;
-    
-    /** The zipfile attribute is used when the source of files is a zip file */
-    private URL zipFile = null;
-    
-    /** 
-     * The filelist attribute is a file which contains a list of file names. It must be used
-     * with the base attribute which indicates where the files are stored.
-     */
-    private URL fileList = null;
-    
-    /**
-     * When using the filelist this attribute indicates the base location of the files in
-     * the list.
-     */
-    private URL fileListBase = null;
-    
-    private boolean useDefaultExcludes = true;
-
-    public FileSet() {
-        patternSets.add(defaultPatterns);
-    }
-
-    /**
-     * Makes this instance in effect a reference to another FileSet
-     * instance.
-     *
-     * <p>You must not set another attribute or nest elements inside
-     * this element if you make it a reference.</p> 
-     */
-    public void setRefid(String reference) throws ExecutionException {
-        if (dir != null || defaultPatterns.hasPatterns()) {
-            throw tooManyAttributes();
-        }
-        if (!(patternSets.size() == 1)) {
-            throw noChildrenAllowed();
-        }
-        super.setRefid(reference);
-    }
-
-    public void setDir(File dir) throws ExecutionException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-
-        this.dir = dir;
-    }
-
-    public void setZipFile(URL zipFile) throws ExecutionException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-
-        this.zipFile = zipFile;
-    }
-
-    public void setFileList(URL fileList) throws ExecutionException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-
-        this.fileList = fileList;
-    }
-
-    public void setFileListBase(URL fileListBase) throws ExecutionException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-
-        this.fileListBase = fileListBase;
-    }
-
-    public PatternSet createPatternSet() throws ExecutionException {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        PatternSet patternSet = new PatternSet();
-        patternSets.add(patternSet);
-        return patternSet;
-    }
-
-    /**
-     * add a name entry on the include list
-     */
-    public PatternSet.NameEntry createInclude() throws ExecutionException {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return defaultPatterns.createInclude();
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public PatternSet.NameEntry createExclude() throws ExecutionException {
-        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) throws ExecutionException {
-        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) throws ExecutionException {
-        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(URL incl) throws ExecutionException {
-         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(URL excl) throws ExecutionException {
-         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) throws ExecutionException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-
-        this.useDefaultExcludes = useDefaultExcludes;
-    }
-
-    protected FileSet getReferencedFileSet() throws ExecutionException {
-        Object o = getReferencedObject();
-        if (!(o instanceof FileSet)) {
-            throw new ExecutionException(getReference() + " doesn\'t denote a fileset");;
-        } else {
-            return (FileSet) o;
-        }
-    }
-
-    public void validate() throws ExecutionException {
-        if (dir != null) {
-            // firstly validate that the other attributes are not set
-            if (zipFile != null || fileList != null || fileListBase != null) {
-                throw new ExecutionException("The 'dir' attribute may not be combined with any " 
-                                             + "of the 'zipfile', 'filelist' and 'base' attributes");
-            }
-        }
-        else if (zipFile != null) {
-            if (fileList != null || fileListBase != null) {
-                throw new ExecutionException("The 'zipfile' attribute may not be combined with any " 
-                                             + "of the 'dir', 'filelist' and 'base' attributes");
-            }
-        }
-        else if (fileList != null) {
-            if (fileListBase == null) {
-                throw new ExecutionException("A 'base' attribute is required when using the 'filelist' "
-                                             + "attribute");
-            }
-        }
-        else {
-            throw new ExecutionException("You must specify one of the 'dir', 'zipfile', or 'filelist' " 
-                                         + "attributes");
-        }
-    }
-    
-    public FileSetScanner getScanner() throws ExecutionException {
-        if (isReference()) {
-            return getReferencedFileSet().getScanner();
-        }
-        
-        if (scanner != null) {
-            return scanner;
-        }
-        
-        // need to create the fileset info. For that we are going to need
-        // to determine which type of FileSetInfo implementation we should use.
-        if (dir != null) {
-            scanner = new DirectoryScanner(dir, patternSets, useDefaultExcludes);
-        }
-        else if (zipFile != null) {
-        }
-        else if (fileList != null) {
-        }
-        else {
-        }
-        
-        return scanner;
-    }
-    
-    public String toString() {
-        try {
-            return getScanner().toString();
-        }
-        catch (ExecutionException e) {
-            return "FileSet";
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/types/FileSetScanner.java b/proposal/mutant/src/main/org/apache/ant/core/types/FileSetScanner.java
deleted file mode 100644
index b8f2d4b..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/types/FileSetScanner.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.ant.core.types;
-
-import java.io.*;
-import java.net.URL;
-import org.apache.ant.core.execution.*;
-
-/**
- * The FileSetInfo interface defines the result of applying filtering to
- * some base collection of files. Filtering involves both file exclusion 
- * and file name mapping.
- *
- * FileSetInfo should be lazily evaluated to allow them to be defined before the
- * required files have been created. They should be evaluated at first use.
- */
-public interface FileSetScanner {
-    /**
-     * Get the included files after their file names have been mapped
-     *
-     * @return an array of strings, each one is the mapped name of a file.
-     */
-    String[] getIncludedFiles() throws ExecutionException ;
-//    
-//    /**
-//     * Get directories included after their file names have been mapped
-//     *
-//     * @return an array of strings, each one is the mapped name of a file.
-//     */
-//    String[] getIncludedDirectories();
-//
-//    /**
-//     * Get a file for the content of the named included file. If the content
-//     * is not stored in the local filesystem, a temporary file is created with the content. 
-//     * Callers should not rely on this file representing the actual location of the underlying
-//     * data.
-//     */
-//    File getContentFile(String mappedName);
-//    
-//    /**
-//     * Get a URL for the content. The content may be cached on the local system and thus
-//     * callers should not rely on the location
-//     *
-//     */
-//    URL getContentURL(String mappedName);
-//    
-//    /**
-//     * Get an input stream to the content of the named entry of the fileset.
-//     */
-//    InputStream getInputStream(String mappedName);
-//    
-    /**
-     * Get a local file.
-     *
-     * This method returns a file pointing to the actual local filesystem file from 
-     * which the file content comes. If the file does not exist locally, a null is 
-     * returned. Note that due to name mapping, the actual file name may be different
-     * from the mapped name.
-     *
-     * @return a file representing the mapped file in the local filesystem.
-     */
-    File getLocalFile(String mappedName) throws ExecutionException ;
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/types/PatternSet.java b/proposal/mutant/src/main/org/apache/ant/core/types/PatternSet.java
deleted file mode 100644
index e20a31f..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/types/PatternSet.java
+++ /dev/null
@@ -1,373 +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.ant.core.types;
-
-import java.io.*;
-import java.util.*;
-import org.apache.ant.core.execution.*;
-import java.net.URL;
-
-/**
- * Named collection of include/exclude tags.
- *
- * @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 boolean filesRead = false;
-    private List includeList = new ArrayList();
-    private List excludeList = new ArrayList();
-    
-    private URL includeFile = null;
-    private URL excludeFile = 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;
-//        }
-    }
-
-    /**
-     * 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(String reference) throws ExecutionException {
-        if (!includeList.isEmpty() || !excludeList.isEmpty()) {
-            throw tooManyAttributes();
-        }
-        super.setRefid(reference);
-    }
-
-    /**
-     * add a name entry on the include list
-     */
-    public NameEntry createInclude() throws ExecutionException {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return addPatternToList(includeList);
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public NameEntry createExclude() throws ExecutionException {
-        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) throws ExecutionException {
-        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) throws ExecutionException {
-        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(List list) {
-        NameEntry result = new NameEntry();
-        list.add(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(URL includeFile) throws ExecutionException {
-         if (isReference()) {
-             throw tooManyAttributes();
-         }
-         
-//         if (!incl.exists()) {
-//             throw new BuildException("Includesfile "+incl.getAbsolutePath()
-//                                      +" not found.");
-//         }
-         this.includeFile = includeFile;
-     }
-
-    /**
-     * Sets the name of the file containing the excludes patterns.
-     *
-     * @param excludeFile The file to fetch the exclude patterns from.  
-     */
-     public void setExcludesFile(URL excludeFile) throws ExecutionException {
-         if (isReference()) {
-             throw tooManyAttributes();
-         }
-//         if (!excl.exists()) {
-//             throw new BuildException("Excludesfile "+excl.getAbsolutePath()
-//                                      +" not found.");
-//         }
-         this.excludeFile = excludeFile;
-     }
-    
-    /**
-     *  Reads path matching patterns from a file and adds them to the
-     *  includes or excludes list (as appropriate).  
-     */
-    private void readPatterns(URL patternFile, List patternList)
-        throws ExecutionException {
-        
-        BufferedReader patternReader = null;
-        try {
-            // Get a FileReader
-            patternReader = 
-                new BufferedReader(new InputStreamReader(patternFile.openStream())); 
-        
-            // Create one NameEntry in the appropriate pattern list for each 
-            // line in the file.
-            String line = null;
-            while ((line = patternReader.readLine()) != null) {
-                if (line.length() > 0) {
-                    line = getTaskContext().replacePropertyRefs(line);
-                    addPatternToList(patternList).setName(line);
-                }
-            }
-        } catch(IOException ioe)  {
-            throw new ExecutionException("An error occured while reading from pattern file: " 
-                                         + patternFile, ioe);
-        }
-        finally {
-            if (patternReader != null) {
-                try {
-                    patternReader.close();
-                }
-                catch (IOException e) {
-                    // do nothing
-                }
-            }
-        }
-    }
-
-    /**
-     * Adds the patterns of the other instance to this set.
-     */
-    public void append(PatternSet other) throws ExecutionException {
-        if (isReference()) {
-            throw new ExecutionException("Cannot append to a reference");
-        }
-
-        String[] incl = other.getIncludePatterns();
-        if (incl != null) {
-            for (int i=0; i<incl.length; i++) {
-                createInclude().setName(incl[i]);
-            }
-        }
-        
-        String[] excl = other.getExcludePatterns();
-        if (excl != null) {
-            for (int i=0; i<excl.length; i++) {
-                createExclude().setName(excl[i]);
-            }
-        }
-    }
-
-    /**
-     * Returns the filtered include patterns.
-     */
-    public String[] getIncludePatterns() throws ExecutionException {
-        if (isReference()) {
-            return getReferencedPatternSet().getIncludePatterns();
-        } else {
-            readFiles();
-            return makeArray(includeList);
-        }
-    }
-
-    /**
-     * Returns the filtered include patterns.
-     */
-    public String[] getExcludePatterns() throws ExecutionException {
-        if (isReference()) {
-            return getReferencedPatternSet().getExcludePatterns();
-        } else {
-            readFiles();
-            return makeArray(excludeList);
-        }
-    }
-
-    /**
-     * helper for FileSet.
-     */
-    boolean hasPatterns() {
-        return includeFile != null || excludeFile != null
-            || includeList.size() > 0 || excludeList.size() > 0;
-    }
-
-    /**
-     * Performs the check for circular references and returns the
-     * referenced PatternSet.  
-     */
-    private PatternSet getReferencedPatternSet() throws ExecutionException {
-        Object o = getReferencedObject();
-        if (!(o instanceof PatternSet)) {
-            throw new ExecutionException(getReference() + " doesn\'t denote a patternset");;
-        } else {
-            return (PatternSet) o;
-        }
-    }
-
-
-    /**
-     * Convert a list of NameEntry elements into an array of Strings.
-     */
-    private String[] makeArray(List list) {
-        if (list.size() == 0) {
-            return null;
-        }
-
-        List tmpNames = new Vector();
-        for (Iterator i = list.iterator() ; i.hasNext() ;) {
-            NameEntry ne = (NameEntry)i.next();
-            String pattern = ne.getName();
-            if (pattern != null && pattern.length() > 0) {
-                tmpNames.add(pattern);
-            }
-        }
-
-        String[] result = (String[])tmpNames.toArray(new String[0]);
-        return result;
-    }
-        
-    /**
-     * Read includefile ot excludefile if not already done so.
-     */
-    private void readFiles() throws ExecutionException {
-        if (!filesRead) {
-            filesRead = true;
-            if (includeFile != null) {
-                readPatterns(includeFile, includeList);
-            }
-            if (excludeFile != null) {
-                readPatterns(excludeFile, excludeList);
-            }
-        }
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/xml/AntLibParser.java b/proposal/mutant/src/main/org/apache/ant/core/xml/AntLibParser.java
deleted file mode 100644
index aabc271..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/xml/AntLibParser.java
+++ /dev/null
@@ -1,285 +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.ant.core.xml;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-import javax.xml.parsers.*;
-import org.apache.ant.core.support.*;
-import org.apache.ant.core.execution.*;
-import org.xml.sax.*;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * Parses the TASK-INF/antlib.xml file of an ant library
- * component. An Ant library may contains tasks, apsects and
- * other ant plug in components
- */ 
-public class AntLibParser {
-    public static final String TASK_ELEMENT = "taskdef";
-    public static final String CONVERTER_ELEMENT = "converter";
-    public static final String ASPECT_ELEMENT = "aspect";
-    
-    /**
-     * The factory used to create SAX parsers.
-     */
-    private SAXParserFactory parserFactory;
-
-    /**
-     * Parse the library definition
-     *
-     * @param libSource the URL from where the library XML is read.
-     *
-     * @throws SAXParseException if there is a problem parsing the task definitions
-     */
-    public AntLibrary parseAntLibrary(URL libSource, ClassLoader componentLoader) 
-            throws ConfigException {
-        try {
-            parserFactory = SAXParserFactory.newInstance();
-            SAXParser saxParser = parserFactory.newSAXParser();
-            XMLReader xmlReader = saxParser.getXMLReader();
-
-            AntLibRootHandler rootHandler = new AntLibRootHandler(libSource, xmlReader, componentLoader);
-            saxParser.parse(libSource.toString(), rootHandler);
-            return rootHandler.getAntLibrary();
-        }
-        catch (SAXParseException e) {
-            throw new ConfigException(e.getMessage(), e, 
-                                      new Location(libSource.toString(), 
-                                                   e.getLineNumber(), e.getColumnNumber()));
-        }
-        catch (ParserConfigurationException e) {
-            throw new ConfigException("Unable to parse Ant library component", e, 
-                                      new Location(libSource.toString()));
-        }
-        catch (SAXException e) {
-            throw new ConfigException("Unable to parse Ant library component", e, 
-                                      new Location(libSource.toString()));
-        }
-        catch (IOException e) {
-            throw new ConfigException("Unable to parse Ant library component", e, 
-                                      new Location(libSource.toString()));
-        }
-    }
-    
-    /**
-     * The root handler handles the antlib element. An ant lib may
-     * contain a number of different types of elements
-     * <ul>
-     *    <li>taskdef</li>
-     *    <li>aspect</li>
-     *    <li>converter</li>
-     * </ul>
-     */
-    private class AntLibRootHandler extends RootHandler {
-        static private final int STATE_LOOKING_FOR_ROOT = 1;
-        static private final int STATE_ROOT_SEEN = 2;
-        static private final int STATE_FINISHED = 3;
-        
-        private int state = STATE_LOOKING_FOR_ROOT;
-        
-        /**
-         * The AntLibrary that will be defined by parsing the library's definition
-         * file.
-         */
-        private AntLibrary library = null;
-
-        private ClassLoader componentLoader = null;
-
-        /**
-         * Create an Ant Library Root Handler.
-         *
-         * @param taskdefSource the URL from where the task definitions exist
-         * @param reader the XML parser.
-         */
-        public AntLibRootHandler(URL taskdefSource, XMLReader reader, ClassLoader componentLoader) {
-            super(taskdefSource, reader);
-            this.componentLoader = componentLoader;
-        }
-    
-        /**
-         * Get the library which has been parsed.
-         *
-         * @return an AntLibary with the library definitions
-         */
-        public AntLibrary getAntLibrary() {
-            return library;
-        }
-
-        /**
-         * Start a new element in the root. This must be a taskdefs element
-         * All other elements are invalid.
-         *
-         * @param uri The Namespace URI.
-         * @param localName The local name (without prefix).
-         * @param qualifiedName The qualified name (with prefix)
-         * @param attributes The attributes attached to the element. 
-         *
-         * @throws SAXParseException if there is a parsing problem.
-         */
-        public void startElement(String uri, String localName, String qualifiedName,
-                                 Attributes attributes) throws SAXParseException {
-            switch (state) {
-                case STATE_LOOKING_FOR_ROOT:
-                    if (qualifiedName.equals("antlib")) {
-                        state = STATE_ROOT_SEEN;
-                        library = new AntLibrary();
-                    }
-                    else {
-                        throw new SAXParseException("An Ant library component must start with an " +
-                                                    "<antlib> element and not with <" + 
-                                                     qualifiedName + ">", getLocator());
-                    }
-                    break;
-                case STATE_ROOT_SEEN:                                                     
-                    if (qualifiedName.equals(TASK_ELEMENT)) {
-                        createTaskDef(attributes);
-                    }
-                    else if (qualifiedName.equals(CONVERTER_ELEMENT)) {
-                        createConverterDef(attributes);
-                    } 
-                    else if (qualifiedName.equals(ASPECT_ELEMENT)) {
-                        createAspectHandler(attributes);
-                    } 
-                    else {
-                        throw new SAXParseException("Unrecognized element <" + 
-                                                     qualifiedName + "> in Ant library definition", getLocator());
-                    }
-                    break;
-            }
-        }
-        
-
-        public void createTaskDef(Attributes attributes) throws SAXParseException {
-            Set validAttributes = new HashSet();
-            validAttributes.add("name");
-            validAttributes.add("classname");
-            Map attributeValues 
-                = AttributeValidator.validateAttributes(TASK_ELEMENT, attributes, 
-                                                        validAttributes, getLocator());
-            String taskName = (String)attributeValues.get("name");
-            String className = (String)attributeValues.get("classname");
-            if (taskName == null) {
-                throw new SAXParseException("'name' attribute is required in a <" 
-                                            + TASK_ELEMENT + "> element",
-                                            getLocator());
-            }
-            if (className == null) {
-                throw new SAXParseException("'classname' attribute is required in a " + 
-                                            "<" + TASK_ELEMENT + "> element", getLocator());
-            }
-            
-            TaskDefinition taskdef = new TaskDefinition(getSourceURL(), taskName, className, componentLoader);
-            library.addTaskDefinition(taskdef);
-        }                        
-            
-        public void createConverterDef(Attributes attributes) throws SAXParseException {
-            Set validAttributes = new HashSet();
-            validAttributes.add("target");
-            validAttributes.add("classname");
-            Map attributeValues 
-                = AttributeValidator.validateAttributes(CONVERTER_ELEMENT, attributes, 
-                                                        validAttributes, getLocator());
-            String targetClassName = (String)attributeValues.get("target");
-            String className = (String)attributeValues.get("classname");
-            if (targetClassName == null) {
-                throw new SAXParseException("'target' attribute is required in a <" 
-                                            + CONVERTER_ELEMENT + "> element",
-                                            getLocator());
-            }
-            if (className == null) {
-                throw new SAXParseException("'classname' attribute is required in a " + 
-                                            "<" + CONVERTER_ELEMENT + "> element", getLocator());
-            }
-            
-            ConverterDefinition converterDef 
-                = new ConverterDefinition(getSourceURL(), className, targetClassName, componentLoader);
-            library.addConverterDefinition(converterDef);
-        }                        
-
-        public void createAspectHandler(Attributes attributes) throws SAXParseException {
-            Set validAttributes = new HashSet();
-            validAttributes.add("prefix");
-            validAttributes.add("classname");
-            Map attributeValues 
-                = AttributeValidator.validateAttributes(ASPECT_ELEMENT, attributes, 
-                                                        validAttributes, getLocator());
-            String aspectPrefix = (String)attributeValues.get("prefix");
-            String aspectClassname  = (String)attributeValues.get("classname");
-            if (aspectPrefix == null) {
-                throw new SAXParseException("'prefix' attribute is required in a <" 
-                                            + ASPECT_ELEMENT + "> element",
-                                            getLocator());
-            }
-            if (aspectClassname == null) {
-                throw new SAXParseException("'classname' attribute is required in a " + 
-                                            "<" + ASPECT_ELEMENT + "> element", getLocator());
-            }
-            
-            AspectDefinition aspectDef 
-                = new AspectDefinition(getSourceURL(), aspectPrefix, aspectClassname, componentLoader);
-            library.addAspectDefinition(aspectDef);
-        }
-                                
-        public void endElement(String namespaceURI, String localName, String qName) {
-            if (state == STATE_ROOT_SEEN && qName.equals("antlib")) {
-                state = STATE_FINISHED;
-            }
-        }
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/core/xml/AttributeValidator.java b/proposal/mutant/src/main/org/apache/ant/core/xml/AttributeValidator.java
deleted file mode 100644
index 7c8b0bd..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/xml/AttributeValidator.java
+++ /dev/null
@@ -1,112 +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.ant.core.xml;
-
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.*;
-import java.util.*;
-
-
-/**
- * Validates and extracts attribute values from a set of element attributes.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public abstract class AttributeValidator {
-    static public Map validateAttributes(String elementName, Attributes attributes, 
-                                          Set validAttributes, Locator locator) 
-        throws SAXParseException {
-            
-        return validateAttributes(elementName, attributes, null, validAttributes, locator);
-    }
-
-    static public Map validateAttributes(String elementName, Attributes attributes, Map aspects,
-                                          Set validAttributes, Locator locator) 
-        throws SAXParseException {
-            
-        Map attributeValues = new HashMap();    
-        Set invalidAttributes = new HashSet();
-        for (int i = 0; i < attributes.getLength(); ++i) {
-            String attributeName = attributes.getQName(i);
-            String attributeValue = attributes.getValue(i);
-            if (validAttributes.contains(attributeName)) {
-                attributeValues.put(attributeName, attributeValue);
-            }
-            else if (aspects != null && attributeName.indexOf(":") != -1) {
-                aspects.put(attributeName, attributeValue);
-            }
-            else {
-                invalidAttributes.add(attributeName);
-            }
-        }
-        
-        if (invalidAttributes.size() != 0) {
-            StringBuffer message = new StringBuffer();
-            boolean justOne = invalidAttributes.size() == 1;
-            message.append(justOne ? "The attribute " : "The attributes ");
-            for (Iterator i = invalidAttributes.iterator(); i.hasNext();) {
-                String attributeName = (String)i.next();
-                message.append(attributeName + " ");
-            }
-            message.append(justOne ? "is " : "are ");
-            message.append("not valid for the <" + elementName + "> element.");
-            
-            throw new SAXParseException(message.toString(), locator);
-        }
-        
-        return attributeValues;
-    }
-
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/xml/ElementHandler.java b/proposal/mutant/src/main/org/apache/ant/core/xml/ElementHandler.java
deleted file mode 100644
index 00c5c73..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/xml/ElementHandler.java
+++ /dev/null
@@ -1,109 +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.ant.core.xml;
-
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.*;
-
-/**
- * An Element Handler is a handler which handles a single element by becoming
- * the handler for the parser while processing the element. Any sub elements 
- * must be delegated to separate handlers. When this element is finished, 
- * control returns to the parent handler.
- */ 
-public abstract class ElementHandler extends DefaultHandler {
-    private XMLReader reader;
-    private ContentHandler parent;
-    private Locator locator;
-
-    public ElementHandler(XMLReader reader, ContentHandler parent,
-                          Locator locator) {
-        this.reader = reader;
-        this.parent = parent;
-        this.locator = locator;
-        reader.setContentHandler(this);
-    }
-
-    /**
-     * This element is finished - complete any necessary processing.
-     */
-    protected void finish() {
-    }
-
-    /**
-     * Get the XML Reader being used to parse the XML.
-     *
-     * @return the XML Reader.
-     */
-    protected XMLReader getXMLReader() {
-        return reader;
-    }
-    
-    /**
-     * Get the locator used to locate elements in the XML source as
-     * they are parsed.
-     *
-     * @return the locator object which can be used to determine an elements location
-     *         within the XML source
-     */
-    protected Locator getLocator() {
-        return locator;
-    }
-
-    public void endElement(String namespaceURI, String localName, String qName) {
-        finish();
-        reader.setContentHandler(parent);
-    }
-}
diff --git a/proposal/mutant/src/main/org/apache/ant/core/xml/RootHandler.java b/proposal/mutant/src/main/org/apache/ant/core/xml/RootHandler.java
deleted file mode 100644
index a2a39e2..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/xml/RootHandler.java
+++ /dev/null
@@ -1,131 +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.ant.core.xml;
-
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.*;
-import java.net.URL;
-
-/**
- * Handle the root of a XML parse
- */
-public abstract class RootHandler extends DefaultHandler {
-    /**
-     * Locator used to identify where in the build source particular elements
-     * occur.
-     */
-    private Locator locator;
-    
-    /**
-     * The actual XML parser used to parse the build source
-     */
-    private XMLReader reader;
-    
-    /**
-     * The URL from which the XML source is being read.
-     */
-    private URL sourceURL;
-
-    /**
-     * Create a Root Handler.
-     *
-     * @param sourceURL the URL containing the XML source
-     * @param reader the XML parser.
-     */
-    public RootHandler(URL sourceURL, XMLReader reader) {
-        this.sourceURL = sourceURL;
-        this.reader = reader;
-    }
-    
-    /**
-     * Set the locator to use when parsing elements. This is passed onto
-     * child elements.
-     *
-     * @param locator the locator for locating elements in the build source.
-     */
-    public void setDocumentLocator(Locator locator) {
-        this.locator = locator;
-    }
-
-    /**
-     * Get the XML Reader being used to parse the XML.
-     *
-     * @return the XML Reader.
-     */
-    protected XMLReader getXMLReader() {
-        return reader;
-    }
-    
-    /**
-     * Get the locator used to locate elements in the XML source as
-     * they are parsed.
-     *
-     * @return the locator object which can be used to determine an elements location
-     *         within the XML source
-     */
-    protected Locator getLocator() {
-        return locator;
-    }
-
-    /**
-     * Get the source URL
-     *
-     * @return a URL identifiying from where the XML is being read.
-     */
-    public URL getSourceURL() {
-        return sourceURL;
-    }
-}
-    
diff --git a/proposal/mutant/src/main/org/apache/ant/core/xml/XMLProjectParser.java b/proposal/mutant/src/main/org/apache/ant/core/xml/XMLProjectParser.java
deleted file mode 100644
index 4617268..0000000
--- a/proposal/mutant/src/main/org/apache/ant/core/xml/XMLProjectParser.java
+++ /dev/null
@@ -1,831 +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.ant.core.xml;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-import javax.xml.parsers.*;
-import org.apache.ant.core.model.*;
-import org.apache.ant.core.support.*;
-import org.xml.sax.*;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * Parses a project from an XML source using a SAX Parser.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class XMLProjectParser {
-    private Stack recursionCheck = new Stack();
-    
-    /**
-     * The factory used to create SAX parsers.
-     */
-    private SAXParserFactory parserFactory;
-
-    static private Location getLocation(Locator locator) {
-        return new Location(locator.getSystemId(), locator.getLineNumber(),
-                            locator.getColumnNumber());
-    }                            
-
-    /**
-     * Parse a build file form the given URL.
-     *
-     * @param buildSource the URL from where the build source may be read.
-     *
-     * @throws SAXParseException if there is a problem parsing the build file.
-     */
-    public Project parseBuildFile(URL buildSource) 
-            throws ConfigException {
-        try {
-            parserFactory = SAXParserFactory.newInstance();
-            SAXParser saxParser = parserFactory.newSAXParser();
-            XMLReader xmlReader = saxParser.getXMLReader();
-
-            recursionCheck.push(buildSource);
-            ProjectRootHandler projectRootHandler 
-                = new ProjectRootHandler(buildSource, xmlReader);
-            saxParser.parse(buildSource.toString(), projectRootHandler);
-            return projectRootHandler.getProject();
-        }
-        catch (SAXParseException e) {
-            throw new ConfigException(e.getMessage(), e, 
-                                      new Location(buildSource.toString(), 
-                                                   e.getLineNumber(), e.getColumnNumber()));
-        }
-        catch (NoProjectReadException e) {
-            throw new ConfigException("No project defined in build source", e, 
-                                      new Location(buildSource.toString()));
-       }
-        catch (ParserConfigurationException e) {
-            throw new ConfigException("Unable to parse project: " + e.getMessage(), e, 
-                                      new Location(buildSource.toString()));
-        }
-        catch (SAXException e) {
-            throw new ConfigException("Unable to parse project: " + e.getMessage(), e, 
-                                      new Location(buildSource.toString()));
-        }
-        catch (IOException e) {
-            throw new ConfigException("Unable to parse project: " + e.getMessage(), e, 
-                                      new Location(buildSource.toString()));
-        }
-    }
-    
-    /**
-     * The root handler handles the start of parsing. This element looks for the 
-     * root element which must be a project element. It then delegates handling of the
-     * project element to a project handler from which it extracts the parsed project.
-     */
-    private class ProjectRootHandler extends RootHandler {
-        /**
-         * The project handler created to parse the project element.
-         */
-        ProjectHandler projectHandler;
-        
-        /**
-         * Create a Root Handler.
-         *
-         * @param buildSource the URL containing the build definition
-         * @param reader the XML parser.
-         */
-        public ProjectRootHandler(URL buildSource, XMLReader reader) {
-            super(buildSource, reader);
-        }
-
-        /**
-         * Start a new element in the root. This must be a project element
-         * All other elements are invalid.
-         *
-         * @param uri The Namespace URI.
-         * @param localName The local name (without prefix).
-         * @param qualifiedName The qualified name (with prefix)
-         * @param attributes The attributes attached to the element. 
-         *
-         * @throws SAXParseException if there is a parsing problem.
-         */
-        public void startElement(String uri, String localName, String qualifiedName,
-                                  Attributes attributes) throws SAXParseException {
-            if (qualifiedName.equals("project")) {
-                projectHandler = new ProjectHandler(getXMLReader(), this, 
-                                                    getLocator(), attributes, getSourceURL());
-            } else {
-                throw new SAXParseException("Build file should start with a <project> element not <" + 
-                                             qualifiedName + ">", getLocator());
-            }
-        }
-        
-        /**
-         * Get the project that has been parsed from the element
-         *
-         * @return the project that has been parsed from the build osurce
-         * 
-         * @throws NoProjectReadException thrown if no project was read in.
-         */
-        public Project getProject() throws NoProjectReadException {
-            if (projectHandler == null) {
-                throw new NoProjectReadException();
-            }
-            return projectHandler.getProject();
-        }
-    }
-    
-    /**
-     * Root Handler for include elements.
-     * 
-     * Includes must contain either a project (which is being extended) or 
-     * a fragment element which contains the fragment to be included.
-     */
-    private class IncludeRootHandler extends RootHandler {
-        /**
-         * The project into which the fragment is to be included.
-         */
-        private Project project;
-        
-        /**
-         * Create an Include Root Handler.
-         *
-         * @param buildSource the URL containing the fragment definition
-         * @param reader the XML parser.
-         * @param project the project into which the fragment's elements will be included.
-         */
-        public IncludeRootHandler(URL buildSource, XMLReader reader, Project project) {
-            super(buildSource, reader);
-            this.project = project;
-        }
-
-        /**
-         * Start a new element in the include root. This must be a project element
-         * or a fragment element. All other elements are invalid.
-         *
-         * @param uri The Namespace URI.
-         * @param localName The local name (without prefix).
-         * @param qualifiedName The qualified name (with prefix)
-         * @param attributes The attributes attached to the element. 
-         *
-         * @throws SAXParseException if there is a parsing problem.
-         */
-        public void startElement(String uri, String localName, String qualifiedName,
-                                  Attributes attributes) throws SAXParseException {
-            if (qualifiedName.equals("project") ||
-                qualifiedName.equals("fragment")) {
-                // if it is a fragment, it must have no attributes
-                // any project attributes are ignored
-                if (qualifiedName.equals("fragment") && attributes.getLength() != 0) {
-                    throw new SAXParseException("<fragment> element may not have any attributes", 
-                                                getLocator());
-                }                                                
-                new ProjectHandler(getXMLReader(), this, getLocator(), 
-                                   getSourceURL(), project);
-            } else {
-                throw new SAXParseException("An included file should contain either a " +
-                                            "<project> or <fragment> element and not a <" + 
-                                            qualifiedName + "> element", getLocator());
-            }
-        }
-    }
-    
-    /**
-     * Element to parse the project element.
-     *
-     * The project handler creates a number of different handlers to which it
-     * delegates processing of child elements.
-     */
-    private class ProjectHandler extends ElementHandler {
-        /**
-         * The project being parsed.
-         */
-        private Project project;
-        
-        /**
-         * The sourceURL for the current content being added to the project.
-         */
-        private URL sourceURL;
-
-        /**
-         * Create a ProjectHandler to read in a complete project.
-         * 
-         * @param xmlReader the XML parser being used to parse the project element.
-         * @param parent the parent element handler.
-         * @param locator the SAX locator object used to associate elements with source
-         *        locations.
-         * @param attributes the project element's attributes.
-         * @param projectSource the URL from which the XML source is being parsed.
-         */
-        public ProjectHandler(XMLReader xmlReader, ContentHandler parent,
-                              Locator locator, Attributes attributes, URL projectSource) 
-            throws SAXParseException {
-                
-            super(xmlReader, parent, locator);
-            this.sourceURL = projectSource;                            
-            project = new Project(projectSource, getLocation(locator));
-
-            String base = null;
-            String defaultTarget = null;
-            String projectName = null;
-            
-            Map aspects = new HashMap();
-            for (int i = 0; i < attributes.getLength(); ++i) {
-                String attributeName = attributes.getQName(i);
-                String attributeValue = attributes.getValue(i);
-                if (attributeName.equals("base")) {
-                    base = attributeValue;
-                }
-                else if (attributeName.equals("default")) {
-                    defaultTarget = attributeValue;
-                }
-                else if (attributeName.equals("name")) {
-                    projectName = attributeValue;
-                }
-                else if (attributeName.indexOf(":") != -1) {
-                    // potential aspect attribute
-                    aspects.put(attributeName, attributeValue);
-                }
-                else {
-                    throw new SAXParseException("The attribute '" + attributeName + "' is not " + 
-                                                "supported by the <project> element", getLocator());
-                }
-            }
-            
-            project.setDefaultTarget(defaultTarget);
-            project.setBase(base);
-            project.setName(projectName);
-            project.setAspects(aspects);
-        }
-        
-        /**
-         * Create a Project handler for an included fragment. The elements
-         * from the fragment are added to the given project.
-         *
-         * @param xmlReader the XML parser being used to parse the project element.
-         * @param parent the parent element handler.
-         * @param locator the SAX locator object used to associate elements with source
-         *        locations.
-         * @param includeSource the URL from which the XML source is being included.
-         * @param project the project to which the included fragments elements are added.
-         */
-        public ProjectHandler(XMLReader xmlReader, ContentHandler parent,
-                              Locator locator, URL includeSource, Project project) {
-            super(xmlReader, parent, locator);
-            this.sourceURL = includeSource;                            
-            this.project = project;
-        }
-        
-        /**
-         * Start a new element in the project. Project currently handle the 
-         * following elements
-         * <ul>
-         *   <li>import</li>
-         *   <li>include</li>
-         *   <li>target</li>
-         * </ul>
-         *
-         * Everything else is treated as a task.
-         *
-         * @param uri The Namespace URI.
-         * @param localName The local name (without prefix).
-         * @param qualifiedName The qualified name (with prefix)
-         * @param attributes The attributes attached to the element. 
-         *
-         * @throws SAXParseException if there is a parsing problem.
-         */
-        public void startElement(String uri, String localName, String qualifiedName,
-                                 Attributes attributes) throws SAXParseException {
-            if (qualifiedName.equals("import")) {
-                ImportHandler importHandler 
-                    = new ImportHandler(getXMLReader(), this, getLocator(), 
-                                        attributes, sourceURL);
-                try {                                        
-                    project.importProject(importHandler.getImportName(), 
-                                      importHandler.getImportedProject());
-                }
-                catch (ProjectModelException e) {
-                    throw new SAXParseException(e.getMessage(), getLocator(), e);
-                }
-            }
-            else if (qualifiedName.equals("include")) {
-                IncludeHandler includeHandler 
-                    = new IncludeHandler(getXMLReader(), this, getLocator(), 
-                                         attributes, sourceURL, project);
-            }
-            else if (qualifiedName.equals("target")) {
-                TargetHandler targetHandler 
-                    = new TargetHandler(getXMLReader(), this, getLocator(), attributes);
-                try {                    
-                    project.addTarget(targetHandler.getTarget());
-                }
-                catch (ProjectModelException e) {
-                    throw new SAXParseException(e.getMessage(), getLocator(), e);
-                }
-            }
-            else {
-                // everything else is a task
-                TaskElementHandler taskElementHandler 
-                    = new TaskElementHandler(getXMLReader(), this, getLocator(), 
-                                      attributes, qualifiedName);
-                project.addTask(taskElementHandler.getTaskElement());
-            }
-        }
-    
-        /**
-         * Get the project that has been parsed from the XML source
-         *
-         * @return the project model of the parsed project.
-         */
-        public Project getProject() {
-            return project;
-        }
-    }
-    
-    /**
-     * The import handler handles the importing of one project into another.
-     * 
-     * The project to be imported is parsed with a new parser and then added to the
-     * current project under the given import name
-     */
-    private class ImportHandler extends ElementHandler {
-        /**
-         * The attribute used to name the import.
-         */
-        static public final String IMPORT_NAME_ATTR = "name";
-        
-        /**
-         * The attribute name used to locate the project to be imported.
-         */
-        static public final String IMPORT_SYSTEMID_ATTR = "project";
-        
-        /**
-         * The project that has been imported.
-         */
-        private Project importedProject;
-        
-        /**
-         * The name under which the project is being imported.
-         */
-        private String importName;
-        
-        /**
-         * The systemId (URL) where the project is to be imported from.
-         */
-        private String projectSystemId;
-
-        /**
-         * Create an import handler to import a project.
-         *
-         * @param xmlReader the XML parser being used to parse the import element.
-         * @param parent the parent element handler.
-         * @param locator the SAX locator object used to associate elements with source
-         *        locations.
-         * @param attributes attributes of the import statement.
-         * @param importingSource the URL of the importing source.
-         */
-        public ImportHandler(XMLReader xmlReader, ContentHandler parent,
-                             Locator locator, Attributes attributes, URL importingSource) 
-                throws SAXParseException {
-            super(xmlReader, parent, locator);
-            for (int i = 0; i < attributes.getLength(); ++i) {
-                String attributeName = attributes.getQName(i);
-                String attributeValue = attributes.getValue(i);
-                if (attributeName.equals(IMPORT_NAME_ATTR)) {
-                    importName = attributeValue;
-                }
-                else if (attributeName.equals(IMPORT_SYSTEMID_ATTR)) {
-                    projectSystemId = attributeValue;
-                }
-                else {
-                    throw new SAXParseException("Attribute " + attributeName + 
-                                                " is not allowed in an <import> element", getLocator());
-                }                                                    
-            }
-            
-            if (importName == null) {
-                throw new SAXParseException("Attribute " + IMPORT_NAME_ATTR + 
-                                            " is required in an <import> element", getLocator());
-            }
-            
-            if (projectSystemId == null) {
-                throw new SAXParseException("Attribute " + IMPORT_SYSTEMID_ATTR + 
-                                            " is required in an <import> element", getLocator());
-            }
-
-            // create a new parser to read this project relative to the 
-            // project's URI
-            try {
-                URL importURL = new URL(importingSource, projectSystemId);
-                SAXParser importSAXParser = parserFactory.newSAXParser();
-                XMLReader importXMLReader = importSAXParser.getXMLReader();
-    
-                
-                if (recursionCheck.contains(importURL)) {
-                    throw new SAXParseException("Circular import detected when importing '" + 
-                                                importURL + "'", getLocator());
-                }
-                recursionCheck.push(importURL);                                                
-                ProjectRootHandler importRootHandler = new ProjectRootHandler(importURL, importXMLReader);
-                importSAXParser.parse(importURL.toString(), importRootHandler);
-                if (recursionCheck.pop() != importURL) {
-                    throw new RuntimeException("Failure to pop expected element off recursion stack");
-                }
-                importedProject = importRootHandler.getProject();
-            }
-            catch (SAXParseException e) {
-                throw e;
-            }
-            catch (NoProjectReadException e) {
-                throw new SAXParseException("No project was imported from " + projectSystemId, 
-                                            getLocator());
-            }
-            catch (MalformedURLException e) {
-                throw new SAXParseException("Unable to import project from " + projectSystemId + 
-                                            ": " + e.getMessage(), 
-                                            getLocator());
-            }
-            catch (ParserConfigurationException e) {
-                throw new SAXParseException("Unable to parse project imported from " + projectSystemId + 
-                                            ": " + e.getMessage(), 
-                                            getLocator());
-            }
-            catch (SAXException e) {
-                throw new SAXParseException("Unable to parse project imported from " + projectSystemId + 
-                                            ": " + e.getMessage(), 
-                                            getLocator());
-            }
-            catch (IOException e) {
-                throw new SAXParseException("Error reading project imported from " + projectSystemId + 
-                                            ": " + e.getMessage(), 
-                                            getLocator());
-            }
-        }
-        
-        /**
-         * Import does not support nested elements. This method will always throw an
-         * exception
-         * @param uri The Namespace URI.
-         * @param localName The local name (without prefix).
-         * @param qualifiedName The qualified name (with prefix)
-         * @param attributes The attributes attached to the element. 
-         *
-         * @throws SAXParseException always.
-         */
-        public void startElement(String uri, String localName, String qualifiedName,
-                                 Attributes attributes) throws SAXParseException {
-            // everything is a task
-            throw new SAXParseException("<import> does not support nested elements", getLocator()); 
-        }
-        
-        /**
-         * Get the project imported.
-         *
-         * @return an imported Project.
-         */
-        public Project getImportedProject() {
-            return importedProject;
-        }
-        
-        /**
-         * Get the name under which the project is imported.
-         *
-         * @return the import name of the project
-         */
-        public String getImportName() {
-            return importName;
-        }
-    }
-
-    /**
-     * The include handler is used to read in included projects or
-     * fragments into a project.
-     */
-    private class IncludeHandler extends ElementHandler {
-        /**
-         * The attribute name which identifies the fragment to be included
-         */
-        static public final String INCLUDE_SYSTEMID_ATTR = "fragment";
-        
-        /**
-         * The system id of the fragment to be included.
-         */
-        private String includeSystemId;
-
-        /**
-         * Create an IncludeHandler to include an element into the
-         * current project
-         *       
-         * @param xmlReader the XML parser being used to parse the include element.
-         * @param parent the parent element handler.
-         * @param locator the SAX locator object used to associate elements with source
-         *        locations.
-         * @param attributes attributes of the include statement.
-         * @param includingSource the URL of the including source.
-         * @param project the project into which the included elements are added.
-         */
-        public IncludeHandler(XMLReader xmlReader, ContentHandler parent,
-                              Locator locator, Attributes attributes, URL includingSource,
-                              Project project) 
-                throws SAXParseException {
-            super(xmlReader, parent, locator);
-            for (int i = 0; i < attributes.getLength(); ++i) {
-                String attributeName = attributes.getQName(i);
-                String attributeValue = attributes.getValue(i);
-                if (attributeName.equals(INCLUDE_SYSTEMID_ATTR)) {
-                    includeSystemId = attributeValue;
-                }
-                else {
-                    throw new SAXParseException("Attribute " + attributeName + 
-                                                " is not allowed in an <include> element", getLocator());
-                }                                                    
-            }
-            
-            if (includeSystemId == null) {
-                throw new SAXParseException("Attribute " + INCLUDE_SYSTEMID_ATTR + 
-                                            " is required in an <include> element", getLocator());
-            }
-
-            // create a new parser to read this project relative to the 
-            // project's URI
-            try {
-                URL includeURL = new URL(includingSource, includeSystemId);
-                SAXParser includeSAXParser = parserFactory.newSAXParser();
-                XMLReader includeXMLReader = includeSAXParser.getXMLReader();
-    
-                if (recursionCheck.contains(includeURL)) {
-                    throw new SAXParseException("Circular include detected when including '" + 
-                                                includeURL + "'", getLocator());
-                }
-                recursionCheck.push(includeURL);                                                
-                IncludeRootHandler includeRootHandler 
-                    = new IncludeRootHandler(includeURL, includeXMLReader, project);
-                includeSAXParser.parse(includeURL.toString(), includeRootHandler);
-                if (recursionCheck.pop() != includeURL) {
-                    throw new RuntimeException("Failure to pop expected element off recursion stack");
-                }
-            }
-            catch (SAXParseException e) {
-                throw e;
-            }
-            catch (MalformedURLException e) {
-                throw new SAXParseException("Unable to include " + includeSystemId + 
-                                            ": " + e.getMessage(), 
-                                            getLocator());
-            }
-            catch (ParserConfigurationException e) {
-                throw new SAXParseException("Unable to parse include " + includeSystemId + 
-                                            ": " + e.getMessage(), 
-                                            getLocator());
-            }
-            catch (SAXException e) {
-                throw new SAXParseException("Unable to parse include " + includeSystemId + 
-                                            ": " + e.getMessage(), 
-                                            getLocator());
-            }
-            catch (IOException e) {
-                throw new SAXParseException("Error reading include " + includeSystemId + 
-                                            ": " + e.getMessage(), 
-                                            getLocator());
-            }
-        }
-
-        /**
-         * Include does not support nested elements. This method will always throw an
-         * exception
-         *
-         * @param uri The Namespace URI.
-         * @param localName The local name (without prefix).
-         * @param qualifiedName The qualified name (with prefix)
-         * @param attributes The attributes attached to the element. 
-         *
-         * @throws SAXParseException always.
-         */
-        public void startElement(String uri, String localName, String qualifiedName,
-                                 Attributes attributes) throws SAXParseException {
-            // everything is a task
-            throw new SAXParseException("<include> does not support nested elements", getLocator()); 
-        }
-        
-    }
-
-    /**
-     * A TargetHandler process the Target element.
-     */
-    private class TargetHandler extends ElementHandler {
-        /**
-         * The target being configured.
-         */
-        private Target target;
-        
-        /**
-         * Create a Target handler. Event element in a target is 
-         * considered to be a task
-         *
-         * @param xmlReader the XML parser being used to parse the target element.
-         * @param parent the parent element handler.
-         * @param locator the SAX locator object used to associate elements with source
-         *        locations.
-         * @param attributes attributes of the target
-         */
-        public TargetHandler(XMLReader xmlReader, ContentHandler parent,
-                             Locator locator, Attributes attributes) 
-                throws SAXParseException {
-            super(xmlReader, parent, locator);
-            String targetName = null;
-            String depends = null;
-            Map aspects = new HashMap();
-            for (int i = 0; i < attributes.getLength(); ++i) {
-                String attributeName = attributes.getQName(i);
-                String attributeValue = attributes.getValue(i);
-                if (attributeName.equals("name")) {
-                    targetName = attributeValue;
-                }
-                else if (attributeName.equals("depends")) {
-                    depends = attributeValue;
-                }
-                else if (attributeName.indexOf(":") != -1) {
-                    // potential aspect attribute
-                    aspects.put(attributeName, attributeValue);
-                }
-                else {
-                    throw new SAXParseException("The attribute '" + attributeName + "' is not " + 
-                                                "supported by the <target> element", getLocator());
-                }
-            }
-            if (targetName == null) {
-                throw new SAXParseException("Targets must have a name attribute", locator);
-            }
-            target = new Target(getLocation(locator), targetName);
-            target.setAspects(aspects);
-            
-            if (depends != null) {
-                StringTokenizer tokenizer = new StringTokenizer(depends, ",");
-                while (tokenizer.hasMoreTokens()) {
-                    String dependency = tokenizer.nextToken();
-                    target.addDependency(dependency);
-                }
-            }
-        }
-
-        /*
-         * Process an element within this target. All elements within the target are 
-         * treated as tasks.
-         *
-         * @param uri The Namespace URI.
-         * @param localName The local name (without prefix).
-         * @param qualifiedName The qualified name (with prefix)
-         * @param attributes The attributes attached to the element. 
-         *
-         * @throws SAXParseException if there is a parsing problem.
-         */
-        public void startElement(String uri, String localName, String qualifiedName,
-                                 Attributes attributes) throws SAXParseException {
-            // everything is a task
-            TaskElementHandler taskHandler 
-                = new TaskElementHandler(getXMLReader(), this, getLocator(), 
-                                                 attributes, qualifiedName);
-            target.addTask(taskHandler.getTaskElement());
-        }
-        
-        /**
-         * Get the target parsed by this handler.
-         *
-         * @return the Target model object parsed by this handler.
-         */
-        public Target getTarget() {
-            return target;
-        }
-    }
-
-    /**
-     * A TaskElementHandler parses the task elements of a build
-     */
-    private class TaskElementHandler extends ElementHandler  {
-        /**
-         * The task element being parsed by this handler.
-         */
-        private TaskElement taskElement;
-        
-        /**
-         * Create a task element handler to parse a task element
-         *
-         * @param xmlReader the XML parser being used to parse the task element.
-         * @param parent the parent element handler.
-         * @param locator the SAX locator object used to associate elements with source
-         *        locations.
-         * @param attributes attributes of the task element
-         * @param elementTagName the name of the task element.
-         */
-        public TaskElementHandler(XMLReader xmlReader, ContentHandler parent, Locator locator, 
-                                          Attributes attributes, String elementTagName) {
-            super(xmlReader, parent, locator);     
-            taskElement 
-                = new TaskElement(getLocation(locator), elementTagName);
-                
-            Map aspects = new HashMap();
-            for (int i = 0; i < attributes.getLength(); ++i) {
-                String attributeName = attributes.getQName(i);
-                String attributeValue = attributes.getValue(i);
-                if (attributeName.indexOf(":") != -1) {
-                    // potential aspect attribute
-                    aspects.put(attributeName, attributeValue);
-                }
-                else {
-                    taskElement.addAttribute(attributeName, attributeValue);
-                }
-            }
-            taskElement.setAspects(aspects);
-        }
-        
-        /** 
-         * Process a nested element of this task element. All nested elements
-         * of a taskElement are themselves taskElements.
-         *
-         * @param uri The Namespace URI.
-         * @param localName The local name (without prefix).
-         * @param qualifiedName The qualified name (with prefix)
-         * @param attributes The attributes attached to the element. 
-         *
-         * @throws SAXParseException if there is a parsing problem.
-         */
-        public void startElement(String uri, String localName, String qualifiedName,
-                                 Attributes attributes) throws SAXParseException {
-            // everything within a task element is also a task element
-            TaskElementHandler nestedHandler 
-                = new TaskElementHandler(getXMLReader(), this, getLocator(), 
-                                                 attributes, qualifiedName);
-            taskElement.addTaskElement(nestedHandler.getTaskElement());                                         
-        }
-        
-        public void characters(char[] buf, int start, int end) throws SAXParseException {
-            taskElement.addText(new String(buf, start, end));
-        }
-
-        /**
-         * Get the task element being parsed by this handler.
-         *
-         * @return the TaskElement being parsed.
-         */
-        public TaskElement getTaskElement() {
-            return taskElement;
-        }
-    }
-    
-    /**
-     * A NoProjectReadException is used to indicate that a project
-     * was not read from the particular source. This will happen
-     * if the source is empty.
-     */
-    private class NoProjectReadException extends Exception {
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/frontend/BuildLogger.java b/proposal/mutant/src/main/org/apache/ant/frontend/BuildLogger.java
deleted file mode 100644
index 8a654c8..0000000
--- a/proposal/mutant/src/main/org/apache/ant/frontend/BuildLogger.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.ant.frontend;
-
-import org.apache.ant.core.execution.*;
-
-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 <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-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.
-     *
-     * @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 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/proposal/mutant/src/main/org/apache/ant/frontend/Commandline.java b/proposal/mutant/src/main/org/apache/ant/frontend/Commandline.java
deleted file mode 100644
index 809e8a8..0000000
--- a/proposal/mutant/src/main/org/apache/ant/frontend/Commandline.java
+++ /dev/null
@@ -1,311 +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.ant.frontend;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import javax.xml.parsers.*;
-import org.xml.sax.SAXParseException;
-import java.lang.reflect.*;
-
-import org.apache.ant.core.execution.*;
-import org.apache.ant.core.support.*;
-import org.apache.ant.core.xml.*;
-import org.apache.ant.core.config.*;
-import org.apache.ant.core.model.*;
-
-/**
- * This is the command line front end to end. It drives the core
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class Commandline {
-    /** The default build file name */
-    static public final String DEFAULT_BUILD_FILENAME = "build.ant";
-
-    /** 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;
-
-    /** Names of classes to add as listeners to project */
-    private List listeners = new ArrayList(2);
-
-    /** The list of targets to be evaluated in this invocation */
-    private List targets = new ArrayList(4);
-
-    /** Our current message output status. Follows Project.MSG_XXX */
-    private int messageOutputLevel = BuildEvent.MSG_VERBOSE;
-
-    /**
-     * This is the build file to run. By default it is a file: type URL
-     * but other URL protocols can be used.
-     */
-    private URL buildFileURL;
-    
-    /**
-     * 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;
-
-    public static void start(String[] args) {
-        // create a command line and use it to run ant
-        Commandline commandline = new Commandline();
-        commandline.runAnt(args);
-    }
-    
-    public void runAnt(String[] args) {
-        ExecutionFrame mainFrame = null;
-        try {
-            parseArguments(args);
-            Project project = getProject();
-            for (Iterator i = project.getTargets(); i.hasNext();) {
-                Target target = (Target)i.next();
-            }
-
-            // Get the list of library components 
-            AntLibrary[] libraries = ComponentManager.getComponents();
-
-            mainFrame = new ExecutionFrame(project, libraries);
-            
-            // We iterate through all nodes of all projects and make sure every node is OK
-            Map state = new HashMap();
-            Stack visiting = new Stack();
-            List dependencyOrder = new ArrayList();
-    
-            mainFrame.checkTargets(dependencyOrder, state, visiting);
-            addBuildListeners(mainFrame);
-        }
-        catch (AntException e) {
-            Location location = e.getLocation();
-            Throwable cause = e.getCause();
-            if (location != null && location != Location.UNKNOWN_LOCATION) {
-                System.out.print(location);
-            }
-            System.out.println(e.getMessage());
-            
-            if (cause != null) {
-                System.out.println("Root cause: " + cause.getClass().getName() + ": " + cause.getMessage());
-            }
-            
-            System.exit(1);
-        }
-        
-        try {
-            mainFrame.runBuild(targets);
-            System.exit(0);
-        }
-        catch (Exception e) {
-            System.exit(1);
-        }
-    }
-    
-    protected void addBuildListeners(ExecutionFrame frame) 
-            throws ConfigException {
-
-        // Add the default listener
-        frame.addBuildListener(createLogger());
-
-        for (Iterator i = listeners.iterator(); i.hasNext(); ) {
-            String className = (String) i.next();
-            try {
-                BuildListener listener =
-                    (BuildListener) Class.forName(className).newInstance();
-                frame.addBuildListener(listener);
-            }
-            catch(Exception exc) {
-                throw new ConfigException("Unable to instantiate listener " + className, exc);
-            }
-        }
-    }
-    
-    /**
-     *  Creates the default build logger for sending build events to the ant log.
-     */
-    private BuildLogger createLogger() throws ConfigException {
-        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 ConfigException("Unable to instantiate logger " + loggerClassname, e);
-            }
-            catch (Exception e) {
-                System.err.println("Unable to instantiate specified logger class " +
-                                           loggerClassname + " : " + e.getClass().getName());
-                throw new ConfigException("Unable to instantiate logger " + loggerClassname, e);
-            }
-        }
-        else {
-            logger = new DefaultLogger();
-        }
-
-        logger.setMessageOutputLevel(messageOutputLevel);
-        logger.setOutputPrintStream(out);
-        logger.setErrorPrintStream(err);
-
-        return logger;
-    }
-
-
-    /**
-     * Parse the command line arguments.
-     */
-    private void parseArguments(String[] args) throws ConfigException {
-        for (int i = 0; i < args.length; i++) {
-            String arg = args[i];
-
-            if (arg.equals("-buildfile") || arg.equals("-file") || arg.equals("-f")) {
-                try {
-                    String url = args[i+1];
-                    if (url.indexOf(":") == -1) {
-                        File file = new File(url);
-                        String uri = "file:" + file.getAbsolutePath().replace('\\', '/');
-                        for (int index = uri.indexOf('#'); index != -1; index = uri.indexOf('#')) {
-                            uri = uri.substring(0, index) + "%23" + uri.substring(index+1);
-                        }
-                        buildFileURL = new URL(uri);
-                        // We convert any hash characters to their URL escape.
-                    }
-                    else {
-                        buildFileURL = new URL(url);
-                    }
-                    i++;
-                }
-                catch (MalformedURLException e) {
-                    System.err.println("Buildfile is not valid: " + e.getMessage());
-                    throw new ConfigException("Build file is not valid", e);
-                } 
-                catch (ArrayIndexOutOfBoundsException e) {
-                    System.err.println("You must specify a buildfile when " +
-                                       "using the -buildfile argument");
-                    return;
-                }
-            }
-            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;
-                } catch (IOException ioe) {
-                    System.err.println("Cannot write on the specified log file. " +
-                                       "Make sure the path exists and you have write permissions.");
-                    return;
-                } catch (ArrayIndexOutOfBoundsException aioobe) {
-                    System.err.println("You must specify a log file when " +
-                                       "using the -log argument");
-                    return;
-                }
-            }
-            else if (arg.equals("-listener")) {
-                try {
-                    listeners.add(args[i+1]);
-                    i++;
-                } catch (ArrayIndexOutOfBoundsException aioobe) {
-                    System.err.println("You must specify a classname when " +
-                                       "using the -listener argument");
-                    return;
-                }
-            } 
-            else if (arg.equals("-logger")) {
-                if (loggerClassname != null) {
-                    System.err.println("Only one logger class may be specified.");
-                    return;
-                }
-                try {
-                    loggerClassname = args[++i];
-                } catch (ArrayIndexOutOfBoundsException aioobe) {
-                    System.err.println("You must specify a classname when " +
-                                       "using the -logger argument");
-                    return;
-                }
-            }
-            else if (arg.startsWith("-")) {
-                // we don't have any more args to recognize!
-                System.out.println("Unknown argument: " + arg);
-                return;
-            } else {
-                // if it's no other arg, it must be a target
-                targets.add(arg);
-            }
-        }
-        
-        if (buildFileURL == null) {
-            File defaultBuildFile = new File(DEFAULT_BUILD_FILENAME);
-            try {
-                buildFileURL = defaultBuildFile.toURL();
-            }
-            catch (MalformedURLException e) {
-                System.err.println("Buildfile is not valid: " + e.getMessage());
-                throw new ConfigException("Build file is not valid", e);
-            } 
-        }
-    }
-    
-    private Project getProject() throws ConfigException {
-        XMLProjectParser parser = new XMLProjectParser();
-        Project project = parser.parseBuildFile(buildFileURL); 
-        return project;       
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/frontend/DefaultLogger.java b/proposal/mutant/src/main/org/apache/ant/frontend/DefaultLogger.java
deleted file mode 100644
index 211b9cc..0000000
--- a/proposal/mutant/src/main/org/apache/ant/frontend/DefaultLogger.java
+++ /dev/null
@@ -1,225 +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.ant.frontend;
-
-import org.apache.ant.core.support.*;
-import org.apache.ant.core.model.*;
-import org.apache.ant.core.execution.*;
-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 = BuildEvent.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 reportException(Throwable t) {
-        if (t instanceof AntException) {
-            AntException e = (AntException)t;
-            Location location = e.getLocation();
-            Throwable cause = e.getCause();
-            if (location != null && location != Location.UNKNOWN_LOCATION) {
-                out.print(location);
-            }
-            out.println(e.getMessage());
-            
-            if (cause != null) {
-                out.println("Root cause: " + cause.toString());
-            }
-        }
-        else {
-            t.printStackTrace(err);
-        }
-    }
-    
-    public void processBuildEvent(BuildEvent event) {
-        switch (event.getEventType()) {
-            case BuildEvent.BUILD_STARTED:
-                startTime = System.currentTimeMillis();
-                break;
-            case BuildEvent.BUILD_FINISHED:
-                Throwable cause = event.getCause();
-        
-                if (cause == null) {
-                    out.println(lSep + "BUILD SUCCESSFUL");
-                }
-                else {
-                    err.println(lSep + "BUILD FAILED" + lSep);
-        
-                    reportException(cause);
-                }
-        
-                out.println(lSep + "Total time: " + formatTime(System.currentTimeMillis() - startTime));
-                break;
-            case BuildEvent.TARGET_STARTED:
-                if (BuildEvent.MSG_INFO <= msgOutputLevel) {
-                    Target target = (Target)event.getBuildElement();
-                    out.println(lSep + target.getName() + ":");
-                }
-                break;
-            case BuildEvent.TARGET_FINISHED:
-                break;
-            case BuildEvent.TASK_STARTED:
-                break;
-            case BuildEvent.TASK_FINISHED:
-                break;
-            case BuildEvent.MESSAGE:
-                PrintStream logTo = event.getPriority() == BuildEvent.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
-                    Object buildElement = event.getBuildElement();
-                    if (buildElement instanceof TaskElement) {
-                        TaskElement taskElement = (TaskElement)buildElement;
-                        String name = taskElement.getType();
-        
-                        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());
-                }
-                break;
-            default:
-                err.println("Unrecognized event type = " + event.getEventType());
-                break;
-        }
-    }            
-
-    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/proposal/mutant/src/main/org/apache/ant/frontend/EmbedTest.java b/proposal/mutant/src/main/org/apache/ant/frontend/EmbedTest.java
deleted file mode 100644
index 10f0018..0000000
--- a/proposal/mutant/src/main/org/apache/ant/frontend/EmbedTest.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.ant.frontend;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import javax.xml.parsers.*;
-import org.xml.sax.SAXParseException;
-import java.lang.reflect.*;
-
-import org.apache.ant.core.support.*;
-import org.apache.ant.core.xml.*;
-import org.apache.ant.core.config.*;
-
-/**
- * This class illustrates the use of the ExecutionFrame class
- * standalone to execute tasks
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class EmbedTest {
-    
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/frontend/Launcher.java b/proposal/mutant/src/main/org/apache/ant/frontend/Launcher.java
deleted file mode 100644
index ccc0248..0000000
--- a/proposal/mutant/src/main/org/apache/ant/frontend/Launcher.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.ant.frontend;
-
-import java.io.*;
-import java.net.*;
-import javax.xml.parsers.*;
-import java.lang.reflect.*;
-
-import org.apache.ant.core.support.*;
-
-/**
- * This is the command line front end to end. It drives the core
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class Launcher {
-    public static void main(String[] args) throws Exception {
-        
-        // we need to find the parser jars and makre sure we are going to use
-        // those in preference to anything else that may be lying about in the
-        // user's classpath
-        AntClassLoader coreClassLoader = AntLocator.getCoreClassLoader(System.getProperties());
-
-        URL frontEndURL = AntLocator.getClassLocationURL(Launcher.class);
-        coreClassLoader.addURL(frontEndURL);
-        
-        Class commandLineClass = Class.forName("org.apache.ant.frontend.Commandline", true, coreClassLoader);
-        
-        final Class[] param = {Class.forName("[Ljava.lang.String;")};
-        Class target = null;
-        final Method startMethod = commandLineClass.getMethod("start", param);
-        final Object[] argument = {args};
-        startMethod.invoke(null, argument);
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/frontend/RemoteLauncher.java b/proposal/mutant/src/main/org/apache/ant/frontend/RemoteLauncher.java
deleted file mode 100644
index 63cea5a..0000000
--- a/proposal/mutant/src/main/org/apache/ant/frontend/RemoteLauncher.java
+++ /dev/null
@@ -1,97 +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.ant.frontend;
-
-import java.io.*;
-import java.net.*;
-import javax.xml.parsers.*;
-import java.lang.reflect.*;
-
-import org.apache.ant.core.support.*;
-
-/**
- * Command line to run Ant core from a remote server
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class RemoteLauncher {
-    public static void main(String[] args) throws Exception {
-
-        String antHome = args[0];
-        String parserHome = args[1];
-        
-        URL[] remoteCore = new URL[3];
-        remoteCore[0] = new URL(antHome + "/lib/core.jar");
-        remoteCore[1] = new URL(antHome + "/lib/frontend.jar");
-        remoteCore[2] = new URL(parserHome);
-        AntClassLoader coreClassLoader = new AntClassLoader(remoteCore);
-
-        String[] realArgs = new String[args.length - 2];
-        System.arraycopy(args, 2, realArgs, 0, realArgs.length);
-                
-
-        System.out.print("Loading remote Ant ... ");        
-        Class launcher = Class.forName("org.apache.ant.frontend.Commandline", true, coreClassLoader);
-        
-        final Class[] param = { Class.forName("[Ljava.lang.String;") };
-        Class target = null;
-        final Method startMethod = launcher.getMethod("start", param);
-        final Object[] argument = {realArgs};
-        System.out.println("Done");        
-        System.out.println("Starting remote Ant");        
-        startMethod.invoke(null, argument);
-    }
-}
-
diff --git a/proposal/mutant/src/main/org/apache/ant/frontend/eggmanifest.mf b/proposal/mutant/src/main/org/apache/ant/frontend/eggmanifest.mf
deleted file mode 100644
index 99001c2..0000000
--- a/proposal/mutant/src/main/org/apache/ant/frontend/eggmanifest.mf
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Created-By: Ant 2.0alpha
-Main-Class: org.apache.ant.frontend.RemoteLauncher
-Class-Path: core.jar
-Sealed: true
\ No newline at end of file
diff --git a/proposal/mutant/src/main/org/apache/ant/frontend/manifest.mf b/proposal/mutant/src/main/org/apache/ant/frontend/manifest.mf
deleted file mode 100644
index bffb780..0000000
--- a/proposal/mutant/src/main/org/apache/ant/frontend/manifest.mf
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Created-By: Ant 2.0alpha
-Main-Class: org.apache.ant.frontend.Launcher
-Class-Path: core.jar
-Sealed: true
\ No newline at end of file
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/WARNING b/proposal/myrmidon/WARNING
deleted file mode 100644
index 0e048b1..0000000
--- a/proposal/myrmidon/WARNING
+++ /dev/null
@@ -1,28 +0,0 @@
-*****************************  W A R N I N G  **********************************
-
-  All user accessible points in this software package are to be considered
-  "alpha". This means that the developer team is not investing _any_ effort
-  in providing back compatibility between alpha releases.
-  
-  This software will continue to be released as "alpha" until both code, 
-  schemas and APIs will be considered stable.
-  
-  Until then, there will be no warranty that newer versions will maintain back
-  compatibility even in the most simple cases.
-  
-  On the other hand, once "beta" status is reached, back incompatible changes
-  will be made only if absolutely necessary to reach "final" status.
-  
-  The Ant development team understands the importance of reliable
-  software as well as the importance of protecting user investiments by the
-  creation of a solid development platform that doesn't change.
-
-  On the other hand, being the Ant project a pioneer in many fields, this
-  cannot be guaranteed before a final status is reached for the software.
-  
-  Until then, no effort will be provided to guarantee back compatibility.
-  
-  You have been warned.
-
-*****************************  W A R N I N G  **********************************
-
diff --git a/proposal/myrmidon/build.sh b/proposal/myrmidon/build.sh
deleted file mode 100644
index aff1fe2..0000000
--- a/proposal/myrmidon/build.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-echo
-echo "Myrmidon Build System"
-echo "---------------------"
-
-export MYRMIDON_HOME=tools
-
-chmod u+x $MYRMIDON_HOME/bin/antRun
-chmod u+x $MYRMIDON_HOME/bin/ant
-
-export ANT_HOME=
-export CLASSPATH=lib/crimson.jar:lib/jaxp.jar
-
-$MYRMIDON_HOME/bin/ant -logger org.apache.tools.ant.NoBannerLogger -emacs $@
diff --git a/proposal/myrmidon/build.xml b/proposal/myrmidon/build.xml
deleted file mode 100644
index 22c487e..0000000
--- a/proposal/myrmidon/build.xml
+++ /dev/null
@@ -1,204 +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="src.base" value="src"/>
-  <property name="manifest.dir" value="${src.base}/manifest"/>
-  <property name="java.dir" value="${src.base}/java"/>
-  <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"/>
-  <property name="dist.bin" value="${dist.dir}/bin"/>
-  <property name="dist.lib" value="${dist.dir}/lib"/>
-  <property name="dist.ext" value="${dist.dir}/ext"/>
-
-  <property name="constants.file" value="org/apache/myrmidon/Constants.java"/>
-
-  <path id="project.class.path">
-    <pathelement path="${java.class.path}" />
-    <fileset dir="${lib.dir}">
-      <include name="*.jar" />
-    </fileset>
-    <pathelement path="${build.classes}" />
-  </path>
-
-  <!-- Main target -->
-  <target name="main" depends="dist" />
- 
-  <!-- Compiles the source code -->
-  <target name="compile">
-
-    <tstamp/>
-    <mkdir dir="${build.src}"/>
-    <copy file="${java.dir}/${constants.file}" tofile="${build.src}/${constants.file}"/>
-    <replace file="${build.src}/${constants.file}" token="@@VERSION@@" value="${version}" />
-    <replace file="${build.src}/${constants.file}" token="@@DATE@@" value="${TODAY}" />
-
-    <mkdir dir="${build.classes}"/>
-    <javac srcdir="${java.dir}"
-           destdir="${build.classes}"
-           debug="${debug}"
-           optimize="${optimize}"
-           deprecation="${deprecation}">
-        <classpath refid="project.class.path"/>        
-        <exclude name="org/apache/ant/gui/**"/>
-        <exclude name="${constants.file}"/>
-        <src path="${build.src}" />
-    </javac>
-
-  </target>
-
-  <!-- Creates the jars file -->
-  <target name="jars" depends="compile">
-
-    <mkdir dir="${build.lib}"/>
-
-    <jar jarfile="${build.lib}/ant.jar" 
-         basedir="${build.classes}" 
-         manifest="${manifest.dir}/ant-manifest.mf">
-      <include name="org/apache/myrmidon/launcher/*" />
-    </jar>
-
-    <jar jarfile="${build.lib}/myrmidon.jar" 
-         basedir="${build.classes}" 
-         manifest="${manifest.dir}/myrmidon-manifest.mf">
-      <include name="org/apache/**" />
-      <exclude name="org/apache/myrmidon/launcher/*" />
-      <exclude name="org/apache/myrmidon/libs/*" />
-      <exclude name="org/apache/ant/**" />
-
-      <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-roles.xml">
-        <include name="builtin-ant-roles.xml"/>
-      </zipfileset>
-
-      <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml">
-        <include name="builtin-ant-descriptor.xml"/>
-      </zipfileset>
-
-    </jar>
-
-    <jar jarfile="${build.lib}/core.atl" basedir="${build.classes}">
-      <include name="org/apache/ant/modules/**" />
-      <include name="org/apache/myrmidon/libs/core/**" />
-      <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml">
-        <include name="core-ant-descriptor.xml"/>
-      </zipfileset>
-    </jar>
-
-    <jar jarfile="${build.lib}/selftest.atl" basedir="${build.classes}">
-      <include name="org/apache/myrmidon/libs/selftest/**" />
-      <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml">
-        <include name="selftest-ant-descriptor.xml"/>
-      </zipfileset>
-    </jar>
-
-    <jar jarfile="${build.lib}/runtime.atl" basedir="${build.classes}">
-      <include name="org/apache/myrmidon/libs/runtime/**"/>
-      <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml">
-        <include name="runtime-ant-descriptor.xml"/>
-      </zipfileset>
-    </jar>
-
-    <jar jarfile="${build.lib}/ant1.atl" basedir="${build.classes}">
-      <include name="org/apache/myrmidon/libs/ant1/**"/>
-      <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml">
-        <include name="ant1-ant-descriptor.xml"/>
-      </zipfileset>
-    </jar>
-
-  </target>
-
-  <!-- Creates the distribution -->
-  <target name="dist" depends="jars">
-
-    <mkdir dir="${dist.bin}"/>
-    <mkdir dir="${dist.lib}"/>
-    <mkdir dir="${dist.ext}"/>
-
-    <copy file="tools/lib/ant.jar" tofile="${dist.lib}/ant1-compat.jar" />
-
-    <copy todir="${dist.lib}">
-      <fileset dir="${build.lib}">
-        <exclude name="selftest.atl"/>
-      </fileset>
-    </copy>
-
-    <copy todir="${dist.ext}">
-      <fileset dir="${build.lib}">
-        <include name="selftest.atl"/>
-      </fileset>
-    </copy>
-
-    <copy todir="${dist.lib}">
-      <fileset dir="${lib.dir}"/>
-    </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>
-
-  <!-- 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>
-
-</project>
diff --git a/proposal/myrmidon/lib/avalon-excalibur.jar b/proposal/myrmidon/lib/avalon-excalibur.jar
deleted file mode 100644
index 29c3af6..0000000
--- a/proposal/myrmidon/lib/avalon-excalibur.jar
+++ /dev/null
Binary files differ
diff --git a/proposal/myrmidon/lib/avalon-framework.jar b/proposal/myrmidon/lib/avalon-framework.jar
deleted file mode 100644
index bbc88e5..0000000
--- a/proposal/myrmidon/lib/avalon-framework.jar
+++ /dev/null
Binary files differ
diff --git a/proposal/myrmidon/lib/logkit.jar b/proposal/myrmidon/lib/logkit.jar
deleted file mode 100644
index 13e43d1..0000000
--- a/proposal/myrmidon/lib/logkit.jar
+++ /dev/null
Binary files differ
diff --git a/proposal/myrmidon/lib/xalan.jar b/proposal/myrmidon/lib/xalan.jar
deleted file mode 100644
index aa2a5c2..0000000
--- a/proposal/myrmidon/lib/xalan.jar
+++ /dev/null
Binary files differ
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java b/proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java
deleted file mode 100644
index 5116f0b..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/Constants.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.myrmidon;
-
-/**
- * Abstract interface to hold constants.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Constants
-{
-    //Constants to indicate the build of Myrmidon
-    String  BUILD_DATE         = "@@DATE@@";
-    String  BUILD_VERSION      = "@@VERSION@@";
-
-    String  BUILD_DESCRIPTION  = "Myrmidon " + BUILD_VERSION + " compiled on " + BUILD_DATE;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/api/AbstractTask.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/AbstractTask.java
deleted file mode 100644
index 29d37ff..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/api/AbstractTask.java
+++ /dev/null
@@ -1,78 +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.myrmidon.api;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLoggable;
-
-/**
- * This is the class that Task writers should extend to provide custom tasks.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public abstract class AbstractTask
-    extends AbstractLoggable
-    implements Task, Contextualizable, Initializable, Disposable
-{
-    ///Variable to hold context for use by sub-classes
-    private TaskContext            m_context;
-
-    /**
-     * Retrieve context from container.
-     *
-     * @param context the context
-     */
-    public void contextualize( final Context context )
-    {
-        m_context = (TaskContext)context;
-    }
-
-    /**
-     * This will be called before execute() method and checks any preconditions.
-     *
-     * @exception Exception if an error occurs
-     */
-    public void initialize()
-        throws Exception
-    {
-    }
-
-    /**
-     * Execute task. 
-     * This method is called to perform actual work associated with task.
-     * It is called after Task has been Configured and Initialized and before
-     * beig Disposed (If task implements appropriate interfaces).
-     *
-     * @exception Exception if an error occurs
-     */
-    public abstract void execute()
-        throws TaskException;
-
-    /**
-     * This will be called after execute() method.
-     * Use this to clean up any resources associated with task.
-     *
-     * @exception Exception if an error occurs
-     */
-    public void dispose()
-    {
-    }
-
-    /**
-     * Convenience method for sub-class to retrieve context.
-     *
-     * @return the context
-     */
-    protected final TaskContext getContext()
-    {
-        return m_context;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/api/DefaultTaskContext.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/DefaultTaskContext.java
deleted file mode 100644
index c2c4d7b..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/api/DefaultTaskContext.java
+++ /dev/null
@@ -1,205 +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.myrmidon.api;
-
-import java.io.File;
-import java.util.Map;
-import org.apache.avalon.excalibur.io.FileUtil;
-import org.apache.avalon.excalibur.property.PropertyException;
-import org.apache.avalon.excalibur.property.PropertyUtil;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.DefaultContext;
-
-/**
- * Default implementation of TaskContext.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultTaskContext
-    extends DefaultContext
-    implements TaskContext
-{
-    /**
-     * Constructor for Context with no parent contexts.
-     */
-    public DefaultTaskContext( final Map contextData )
-    {
-        super( contextData );
-    }
-
-    /**
-     * Constructor for Context with no parent contexts.
-     */
-    public DefaultTaskContext()
-    {
-        this( (TaskContext)null );
-    }
-
-    /**
-     * Constructor.
-     */
-    public DefaultTaskContext( final TaskContext parent )
-    {
-        super( parent );
-    }
-
-    /**
-     * Retrieve JavaVersion running under.
-     *
-     * @return the version of JVM
-     */
-    public JavaVersion getJavaVersion()
-    {
-        try { return (JavaVersion)get( JAVA_VERSION ); }
-        catch( final ContextException ce )
-        {
-            throw new IllegalStateException( "No JavaVersion in Context" );
-        }
-    }
-
-
-    /**
-     * Retrieve Name of tasklet.
-     *
-     * @return the name
-     */
-    public String getName()
-    {
-        try { return (String)get( NAME ); }
-        catch( final ContextException ce )
-        {
-            throw new IllegalStateException( "No Name in Context" );
-        }
-    }
-
-    /**
-     * Retrieve base directory.
-     *
-     * @return the base directory
-     */
-    public File getBaseDirectory()
-    {
-        try { return (File)get( BASE_DIRECTORY ); }
-        catch( final ContextException ce )
-        {
-            throw new IllegalStateException( "No Base Directory in Context" );
-        }
-    }
-
-    /**
-     * 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 )
-    {
-        return FileUtil.resolveFile( getBaseDirectory(), filename );
-    }
-
-    /**
-     * Retrieve property for name.
-     *
-     * @param name the name of property
-     * @return the value of the property
-     */
-    public Object getProperty( final String name )
-    {
-        try { return get( name ); }
-        catch( final ContextException ce )
-        {
-            return null;
-        }
-    }
-
-    /**
-     * 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 )
-        throws TaskException
-    {
-        setProperty( name, value, CURRENT );
-    }
-
-    /**
-     * Set property value.
-     *
-     * @param property the property
-     */
-    public void setProperty( final String name, final Object value, final ScopeEnum scope )
-        throws TaskException
-    {
-        checkPropertyValid( name, value );
-
-        if( CURRENT == scope ) put( name, value );
-        else if( PARENT == scope )
-        {
-            if( null == getParent() )
-            {
-                throw new TaskException( "Can't set a property with parent scope when context " +
-                                         " has no parent" );
-            }
-            else
-            {
-                ((TaskContext)getParent()).setProperty( name, value );
-            }
-        }
-        else if( TOP_LEVEL == scope )
-        {
-            DefaultTaskContext context = this;
-
-            while( null != context.getParent() )
-            {
-                context = (DefaultTaskContext)context.getParent();
-            }
-
-            context.put( name, value );
-        }
-        else
-        {
-            throw new IllegalStateException( "Unknown property scope! (" + scope + ")" );
-        }
-    }
-
-    /**
-     * 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 TaskException if an error occurs
-     */
-    protected void checkPropertyValid( final String name, final Object value )
-        throws TaskException
-    {
-        if( BASE_DIRECTORY.equals( name ) && !( value instanceof File ) )
-        {
-            throw new TaskException( "Property " + BASE_DIRECTORY +
-                                     " must have a value of type " +
-                                     File.class.getName() );
-        }
-        else if( NAME.equals( name ) && !( value instanceof String ) )
-        {
-            throw new TaskException( "Property " + NAME +
-                                     " must have a value of type " +
-                                     String.class.getName() );
-        }
-        else if( JAVA_VERSION.equals( name ) && !( value instanceof JavaVersion ) )
-        {
-            throw new TaskException( "Property " + JAVA_VERSION +
-                                     " must have a value of type " +
-                                     JavaVersion.class.getName() );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/api/JavaVersion.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/JavaVersion.java
deleted file mode 100644
index df47b18..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/api/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.myrmidon.api;
-
-import org.apache.avalon.framework.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/myrmidon/api/Task.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/Task.java
deleted file mode 100644
index ccc6615..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/api/Task.java
+++ /dev/null
@@ -1,40 +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.myrmidon.api;
-
-/**
- * This is the interface that tasks implement to be executed in Myrmidon runtime.
- * 
- * Instances can also implement the Avalon lifecycle methods 
- * Loggable, Contextualizable, Composable, Initializable and Disposable.
- * Each of these lifecycle stages will be executed at appropriate time.
- *
- * Tasks can also choose to implement Configurable if they wish to directly
- * receive the Configuration data representing the task. If this interface is
- * not implemented then the engine will be responsbil for mapping configuration
- * to task object.
- *
- * The Components passed in via ComponentManager are determined by container.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Task
-{
-    String ROLE = "org.apache.myrmidon.api.Task";
-
-    /**
-     * Execute task. 
-     * This method is called to perform actual work associated with task.
-     * It is called after Task has been Configured and Initialized and before
-     * being Disposed (If task implements appropriate interfaces).
-     *
-     * @exception TaskException if an error occurs
-     */
-    void execute()
-        throws TaskException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/api/TaskContext.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/TaskContext.java
deleted file mode 100644
index 9880861..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/api/TaskContext.java
+++ /dev/null
@@ -1,121 +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.myrmidon.api;
-
-import java.io.File;
-import org.apache.avalon.framework.Enum;
-import org.apache.avalon.framework.context.Context;
-
-/**
- * This interface represents the <em>Context</em> in which Task is executed.
- * Like other Component APIs the TaskContext represents the communication
- * path between the container and the Task.
- * Unlike other APIs the Logging is provided through another interface (Loggable)
- * as is access to Peer components (via Composable).
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface TaskContext
-    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       = "myrmidon.java.version";
-    String          BASE_DIRECTORY     = "myrmidon.base.directory";
-    String          NAME               = "myrmidon.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 )
-        throws TaskException;
-
-    /**
-     * 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 )
-        throws TaskException;
-
-    /**
-     * 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 )
-        throws TaskException;
-
-    /**
-     * Create a Child Context.
-     * This allows separate hierarchly contexts to be easily constructed.
-     *
-     * @param name the name of sub-context
-     * @return the created TaskContext
-     * @exception TaskException if an error occurs
-     */
-    //TaskContext createSubContext( String name )
-    //throws TaskException;
-
-    /**
-     * 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/myrmidon/api/TaskException.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/TaskException.java
deleted file mode 100644
index 44e108d..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/api/TaskException.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.myrmidon.api;
-
-import org.apache.avalon.framework.CascadingException;
-
-/**
- * TaskException thrown when a problem with tasks etc.
- * It is cascading so that further embedded information can be contained.
- * ie TaskException was caused by IOException etc.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class TaskException
-    extends CascadingException
-{
-    /**
-     * Basic constructor with a message
-     *
-     * @param message the message
-     */
-    public TaskException( 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 TaskException( final String message, final Throwable throwable )
-    {
-        super( message, throwable );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/aspects/AbstractAspectHandler.java b/proposal/myrmidon/src/java/org/apache/myrmidon/aspects/AbstractAspectHandler.java
deleted file mode 100644
index 74a34a7..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/aspects/AbstractAspectHandler.java
+++ /dev/null
@@ -1,114 +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.myrmidon.aspects;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.log.Logger;
-import org.apache.myrmidon.api.Task;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * AspectHandler is the interface through which aspects are handled.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public abstract class AbstractAspectHandler
-    implements AspectHandler
-{
-    private Parameters       m_aspectParameters;
-    private Configuration[]  m_aspectElements;
-
-    private Task             m_task;
-    private Logger           m_logger;
-    private Configuration    m_taskModel;
-
-    public Configuration preCreate( final Configuration taskModel )
-        throws TaskException
-    {
-        return taskModel;
-    }
-
-    public void aspectSettings( final Parameters parameters, final Configuration[] elements )
-        throws TaskException
-    {
-        m_aspectParameters = parameters;
-        m_aspectElements = elements;
-    }
-
-    public void postCreate( final Task task )
-        throws TaskException
-    {
-        m_task = task;
-    }
-
-    public void preLoggable( final Logger logger )
-        throws TaskException
-    {
-        m_logger = logger;
-    }
-
-    public void preConfigure( final Configuration taskModel )
-        throws TaskException
-    {
-        m_taskModel = taskModel;
-    }
-
-    public void preExecute()
-        throws TaskException
-    {
-    }
-
-    public void preDestroy()
-        throws TaskException
-    {
-        reset();
-    }
-
-    public boolean error( final TaskException te )
-        throws TaskException
-    {
-        reset();
-        return false;
-    }
-
-    protected void reset()
-    {
-        m_aspectParameters = null;
-        m_aspectElements = null;
-        m_task = null;
-        m_logger = null;
-        m_taskModel = null;
-    }
-
-    protected final Configuration getTaskModel()
-    {
-        return m_taskModel;
-    }
-
-    protected final Task getTask()
-    {
-        return m_task;
-    }
-
-    protected final Logger getLogger()
-    {
-        return m_logger;
-    }
-
-    protected final Configuration[] getAspectElements()
-    {
-        return m_aspectElements;
-    }
-
-    protected final Parameters getAspectParameters()
-    {
-        return m_aspectParameters;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/aspects/AspectHandler.java b/proposal/myrmidon/src/java/org/apache/myrmidon/aspects/AspectHandler.java
deleted file mode 100644
index d5ac6d1..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/aspects/AspectHandler.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.myrmidon.aspects;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.log.Logger;
-import org.apache.myrmidon.api.Task;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * AspectHandler is the interface through which aspects are handled.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface AspectHandler
-{
-    String ROLE = "org.apache.myrmidon.aspects.AspectHandler";
-
-    Configuration preCreate( Configuration taskModel )
-        throws TaskException;
-
-    void aspectSettings( Parameters parameters, Configuration[] children )
-        throws TaskException;
-
-    void postCreate( Task task )
-        throws TaskException;
-
-    void preLoggable( Logger logger )
-        throws TaskException;
-
-    void preConfigure( Configuration taskModel )
-        throws TaskException;
-
-    void preExecute()
-        throws TaskException;
-
-    void preDestroy()
-        throws TaskException;
-
-    boolean error( TaskException te )
-        throws TaskException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/aspects/NoopAspectHandler.java b/proposal/myrmidon/src/java/org/apache/myrmidon/aspects/NoopAspectHandler.java
deleted file mode 100644
index 2ca3525..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/aspects/NoopAspectHandler.java
+++ /dev/null
@@ -1,18 +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.myrmidon.aspects;
-
-/**
- * A Noop aspect handler that does nothing.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class NoopAspectHandler
-    extends AbstractAspectHandler
-{
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/aspect/AspectManager.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/aspect/AspectManager.java
deleted file mode 100644
index 2706ffd..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/aspect/AspectManager.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.myrmidon.components.aspect;
-
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.aspects.AspectHandler;
-
-/**
- * Manage and propogate Aspects.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface AspectManager
-    extends Component, AspectHandler
-{
-    String ROLE = "org.apache.myrmidon.components.aspect.AspectManager";
-
-    String[] getNames();
-
-    void dispatchAspectSettings( String name, Parameters parameters, Configuration[] elements )
-        throws TaskException;
-
-    void addAspectHandler( String name, AspectHandler handler )
-        throws TaskException;
-
-    void removeAspectHandler( String name, AspectHandler handler )
-        throws TaskException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/aspect/DefaultAspectManager.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/aspect/DefaultAspectManager.java
deleted file mode 100644
index de94dc5..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/aspect/DefaultAspectManager.java
+++ /dev/null
@@ -1,168 +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.myrmidon.components.aspect;
-
-import java.util.HashMap;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.log.Logger;
-import org.apache.myrmidon.api.Task;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.aspects.AspectHandler;
-import org.apache.myrmidon.aspects.NoopAspectHandler;
-
-/**
- * Manage and propogate Aspects.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultAspectManager
-    implements AspectManager, Initializable
-{
-    private HashMap          m_aspectMap  = new HashMap();
-    private AspectHandler[]  m_aspects    = new AspectHandler[ 0 ];
-    private String[]         m_names      = new String[ 0 ];
-
-    public void initialize()
-        throws Exception
-    {
-        ///UGLY HACK!!!!
-        addAspectHandler( "ant", new NoopAspectHandler() );
-        addAspectHandler( "doc", new NoopAspectHandler() );
-    }
-
-    public synchronized void addAspectHandler( final String name, final AspectHandler handler )
-        throws TaskException
-    {
-        m_aspectMap.put( name, handler );
-        rebuildArrays();
-    }
-
-    public synchronized void removeAspectHandler( final String name, final AspectHandler handler )
-        throws TaskException
-    {
-        final AspectHandler entry = (AspectHandler)m_aspectMap.remove( name );
-        if( null == entry )
-        {
-            throw new TaskException( "No such aspect with name '" + name + "'" );
-        }
-
-        rebuildArrays();
-    }
-
-    private void rebuildArrays()
-    {
-        m_aspects = (AspectHandler[])m_aspectMap.values().toArray( m_aspects );
-        m_names = (String[])m_aspectMap.keySet().toArray( m_names );
-    }
-
-    public String[] getNames()
-    {
-        return m_names;
-    }
-
-    public void dispatchAspectSettings( final String name,
-                                        final Parameters parameters,
-                                        final Configuration[] elements )
-        throws TaskException
-    {
-        final AspectHandler handler = (AspectHandler)m_aspectMap.get( name );
-        if( null == handler )
-        {
-            throw new TaskException( "No such aspect with name '" + name + "'" );
-        }
-
-        handler.aspectSettings( parameters, elements );
-    }
-
-    public Configuration preCreate( final Configuration configuration )
-        throws TaskException
-    {
-        Configuration model = configuration;
-
-        final AspectHandler[] aspects = m_aspects;
-        for( int i = 0; i < aspects.length; i++ )
-        {
-            model = aspects[ i ].preCreate( model );
-        }
-
-        return model;
-    }
-
-    public void aspectSettings( final Parameters parameters, final Configuration[] elements )
-        throws TaskException
-    {
-        throw new UnsupportedOperationException( "Can not provide Settings to AspectManager" );
-    }
-
-    public void postCreate( final Task task )
-        throws TaskException
-    {
-        final AspectHandler[] aspects = m_aspects;
-        for( int i = 0; i < aspects.length; i++ )
-        {
-            aspects[ i ].postCreate( task );
-        }
-    }
-
-    public void preLoggable( final Logger logger )
-        throws TaskException
-    {
-        final AspectHandler[] aspects = m_aspects;
-        for( int i = 0; i < aspects.length; i++ )
-        {
-            aspects[ i ].preLoggable( logger );
-        }
-    }
-
-    public void preConfigure( final Configuration taskModel )
-        throws TaskException
-    {
-        final AspectHandler[] aspects = m_aspects;
-        for( int i = 0; i < aspects.length; i++ )
-        {
-            aspects[ i ].preConfigure( taskModel );
-        }
-    }
-
-    public void preExecute()
-        throws TaskException
-    {
-        final AspectHandler[] aspects = m_aspects;
-        for( int i = 0; i < aspects.length; i++ )
-        {
-            aspects[ i ].preExecute();
-        }
-    }
-
-    public void preDestroy()
-        throws TaskException
-    {
-        final AspectHandler[] aspects = m_aspects;
-        for( int i = 0; i < aspects.length; i++ )
-        {
-            aspects[ i ].preDestroy();
-        }
-    }
-
-    public boolean error( final TaskException te )
-        throws TaskException
-    {
-        final AspectHandler[] aspects = m_aspects;
-        for( int i = 0; i < aspects.length; i++ )
-        {
-            if( true == aspects[ i ].error( te ) )
-            {
-                return true;
-            }
-        }
-
-        return false;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/ATIProjectBuilder.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/ATIProjectBuilder.java
deleted file mode 100644
index 878c7bc..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/ATIProjectBuilder.java
+++ /dev/null
@@ -1,216 +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.myrmidon.components.builder;
-
-import java.net.URL;
-import java.io.InputStream;
-import java.util.Properties;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import org.apache.avalon.framework.configuration.SAXConfigurationHandler;
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.sax.SAXTransformerFactory;
-import javax.xml.transform.sax.TransformerHandler;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.stream.StreamResult;
-
-/**
- * Default implementation to construct project from a build file.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ATIProjectBuilder
-    extends DefaultProjectBuilder
-    implements Parameterizable
-{
-    private final static String PARAM_EXCEPTION = 
-        "Malformed PI: expected <?xsl-param name=\"foo\" value=\"bar\"?>";
-
-    private final static String PARAMS_EXCEPTION = 
-        "Malformed PI: expected <?xsl-params location=\"myparams.properties\"?>";
-
-    private final static String STYLE_EXCEPTION = 
-        "Malformed PI: expected <?xsl-params href=\"mystylesheet.xsl\"?>";
-
-    private Parameters     m_parameters;
-    private URL            m_systemID;
-
-    public void parameterize( final Parameters parameters )
-    {
-        m_parameters = parameters;
-    }
-
-    protected void process( final URL sourceID,
-                            final SAXConfigurationHandler handler )
-        throws Exception
-    {
-        final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
-        final SAXParser saxParser = saxParserFactory.newSAXParser();
-        final XMLReader reader = saxParser.getXMLReader();
-        reader.setFeature( "http://xml.org/sax/features/validation", false );
-        reader.setErrorHandler( handler );
-
-        final ReactorPIHandler reactorHandler = new ReactorPIHandler();
-        reader.setContentHandler( reactorHandler );
-
-        try { reader.parse( sourceID.toString() ); }
-        catch( final StopParsingException spe )
-        {
-            //Ignore me
-        }
-
-        Transformer transformer = null;
-
-        final int size = reactorHandler.getPICount();
-        for( int i = 0; i < size; i++ )
-        {
-            final String target = reactorHandler.getTarget( i );
-            final String data = reactorHandler.getData( i );
-
-            if( target.equals( "xsl-param" ) ) handleParameter( data );
-            else if( target.equals( "xsl-params" ) ) handleParameters( data, sourceID );
-            else if( target.equals( "xsl-stylesheet" ) ) 
-            {
-                if( null != transformer )
-                {
-                    throw new SAXException( "Build file can not contain " + 
-                                            "two xsl-stylesheet PIs" );
-                }
-
-                final TransformerFactory factory = TransformerFactory.newInstance();
-                final String stylesheet = getStylesheet( data, sourceID );
-                transformer = factory.newTransformer( new StreamSource( stylesheet ) );
-            }
-        }
-
-        if( null == transformer )
-        {
-            reader.setContentHandler( handler );
-            reader.parse( sourceID.toString() );
-        }
-        else
-        {
-            final String[] names = m_parameters.getNames();
-            for( int i = 0; i < names.length; i++ )
-            {
-                final String name = names[ i ];
-                final String value = m_parameters.getParameter( name );
-                transformer.setParameter( name, value );
-            }
-
-            final SAXResult result = new SAXResult( handler );
-            transformer.transform( new StreamSource( sourceID.toString() ), result );
-            //transformer.transform( new StreamSource( sourceID.toString() ), 
-            //new StreamResult( System.out ) );
-        }        
-    }
-
-    private void handleParameter( final String data )
-        throws SAXException
-    {
-        int index = data.indexOf( '\"' );
-        if( -1 == index )
-        {
-            throw new SAXException( PARAM_EXCEPTION );
-        }
-
-        index = data.indexOf( '\"', index + 1 );
-        if( -1 == index )
-        {
-            throw new SAXException( PARAM_EXCEPTION );
-        }
-
-        //split between two "attributes" occurs on index
-        final String[] name = parseAttribute( data.substring( 0, index + 1 ) );
-        final String[] value = parseAttribute( data.substring( index + 1 ).trim() );
-        
-        if( !name[ 0 ].equals( "name" ) || !value[ 0 ].equals( "value" ) )
-        {
-            throw new SAXException( PARAM_EXCEPTION );
-        }
-
-        m_parameters.setParameter( name[ 1 ], value[ 1 ] );
-    }
-
-    private void handleParameters( final String data, final URL baseSource )
-        throws SAXException
-    {
-        final String[] params = parseAttribute( data );
-        if( !params[ 0 ].equals( "location" ) )
-        {
-            throw new SAXException( PARAMS_EXCEPTION );
-        }
-
-        try
-        {
-            final Properties properties = new Properties();
-            final URL url = new URL( baseSource, params[ 1 ] );
-            final InputStream input = url.openStream();
-            properties.load( input );
-            final Parameters parameters = Parameters.fromProperties( properties );
-            m_parameters.merge( parameters );
-        }
-        catch( final Exception e )
-        {
-            throw new SAXException( "Error loading parameters: " + e );
-        }
-    }
-
-    private String getStylesheet( final String data, final URL baseSource )
-        throws SAXException
-    {
-        final String[] stylesheet = parseAttribute( data );
-        if( !stylesheet[ 0 ].equals( "href" ) )
-        {
-            throw new SAXException( STYLE_EXCEPTION );
-        }
-
-        try { return new URL( baseSource, stylesheet[ 1 ] ).toString(); }
-        catch( final Exception e )
-        {
-            throw new SAXException( "Error locating stylesheet '" + stylesheet[ 1 ] + 
-                                    "' due to " + e );
-        }
-    }
-
-    private String[] parseAttribute( final String data )
-        throws SAXException
-    {
-        //name="value"
-        int index = data.indexOf( '=' );
-        if( -1 == index )
-        {
-            throw new SAXException( "Expecting an attribute but received '" + 
-                                    data + "'" );
-        }
-
-        final int size = data.length();
-        if( '\"' != data.charAt( index + 1 ) || 
-            '\"' != data.charAt( size - 1 ) ||
-            size - 1 == index )
-        {
-            throw new SAXException( "Expecting the value of attribute " + 
-                                    data.substring( 0, index ) +
-                                    " to be enclosed in quotes" );
-        }
-        
-        final String[] result = new String[ 2 ];
-        result[ 0 ] = data.substring( 0, index );
-        result[ 1 ] = data.substring( index + 2, size - 1 );
-
-        return result;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/DefaultProjectBuilder.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/DefaultProjectBuilder.java
deleted file mode 100644
index 2464b10..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/DefaultProjectBuilder.java
+++ /dev/null
@@ -1,374 +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.myrmidon.components.builder;
-
-import java.net.URL;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import org.apache.avalon.framework.ExceptionUtil;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.SAXConfigurationHandler;
-import org.apache.avalon.framework.logger.AbstractLoggable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.log.Logger;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.framework.Condition;
-import org.apache.myrmidon.components.model.DefaultProject;
-import org.apache.myrmidon.components.model.TypeLib;
-import org.apache.myrmidon.components.model.Project;
-import org.apache.myrmidon.components.model.Target;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
-/**
- * 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
-{
-    private final static int    PROJECT_REFERENCES  = 0;
-    private final static int    LIBRARY_IMPORTS     = 1;
-    private final static int    IMPLICIT_TASKS      = 2;
-    private final static int    TARGETS             = 3;
-
-    /**
-     * build a project from file.
-     *
-     * @param source the source
-     * @return the constructed Project
-     * @exception IOException if an error occurs
-     * @exception Exception if an error occurs
-     */
-    public Project build( final String source )
-        throws Exception
-    {
-        final File file = new File( source );
-        return build( file, new HashMap() );
-    }
-
-    private Project build( final File file, final HashMap projects )
-        throws Exception
-    {
-        final URL systemID = file.toURL();
-        final Project result = (Project)projects.get( systemID.toString() );
-        if( null != result )
-        {
-            return result;
-        }
-
-        final SAXConfigurationHandler handler = new SAXConfigurationHandler();
-
-        process( systemID, handler );
-
-        final Configuration configuration = handler.getConfiguration();
-
-        final DefaultProject project = buildProject( file, configuration );
-
-        projects.put( systemID.toString(), project );
-
-        //build using all top-level attributes
-        buildTopLevelProject( project, configuration, projects );
-
-        return project;
-    }
-
-    protected void process( final URL systemID, 
-                            final SAXConfigurationHandler handler )
-        throws Exception
-    {
-        final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
-        final SAXParser saxParser = saxParserFactory.newSAXParser();
-        final XMLReader parser = saxParser.getXMLReader();
-        parser.setFeature( "http://xml.org/sax/features/namespace-prefixes", false );
-        parser.setFeature( "http://xml.org/sax/features/namespaces", false );
-        //parser.setFeature( "http://xml.org/sax/features/validation", false );
-
-        parser.setContentHandler( handler );
-        parser.setErrorHandler( handler );
-        parser.parse( systemID.toString() );
-    }
-
-    /**
-     * 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 Exception if an error occurs
-     * @exception ConfigurationException if an error occurs
-     */
-    private DefaultProject buildProject( final File file,
-                                         final Configuration configuration )
-        throws Exception
-    {
-        if( !configuration.getName().equals( "project" ) )
-        {
-            throw new Exception( "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 name = configuration.getAttribute( "name" );
-
-        //determine base directory for project
-        final File baseDirectory =
-            (new File( file.getParentFile(), baseDirectoryName )).getAbsoluteFile();
-
-        getLogger().debug( "Project " + file + " base directory: " + baseDirectory );
-
-        //create project and ...
-        final DefaultProject project = new DefaultProject();
-        project.setDefaultTargetName( defaultTarget );
-        project.setBaseDirectory( baseDirectory );
-        //project.setName( name );
-
-        return project;
-    }
-
-    /**
-     * Handle all top level elements in configuration.
-     *
-     * @param project the project
-     * @param configuration the Configuration
-     * @exception Exception if an error occurs
-     */
-    private void buildTopLevelProject( final DefaultProject project, 
-                                       final Configuration configuration,
-                                       final HashMap projects )
-        throws Exception
-    {
-        final ArrayList implicitTaskList = new ArrayList();
-        final Configuration[] children = configuration.getChildren();
-
-        int state = PROJECT_REFERENCES;
-
-        for( int i = 0; i < children.length; i++ )
-        {
-            final Configuration element = children[ i ];
-            final String name = element.getName();
-
-            if( PROJECT_REFERENCES == state )
-            {
-                if( name.equals( "projectref" ) )
-                {
-                    buildProjectRef( project, element, projects );
-                    continue;
-                }
-                else
-                {
-                    state = LIBRARY_IMPORTS;
-                }
-            }
-
-            if( LIBRARY_IMPORTS == state )
-            {
-                if( name.equals( "import" ) )
-                {
-                    buildTypeLib( project, element );
-                    continue;
-                }
-                else
-                {
-                    state = IMPLICIT_TASKS;
-                }
-            }
-
-            if( IMPLICIT_TASKS == state )
-            {
-                //Check for any implicit tasks here
-                if( !name.equals( "target" ) )
-                {
-                    implicitTaskList.add( element );
-                    continue;
-                }
-                else
-                {
-                    state = TARGETS;
-                }
-            }
-
-            if( name.equals( "target" ) ) buildTarget( project, element );
-            else
-            {
-                throw new Exception( "Unknown top-level element " + name +
-                                     " at " + element.getLocation() +
-                                     ". Expecting target" );
-            }
-        }
-
-        final Configuration[] implicitTasks =
-            (Configuration[])implicitTaskList.toArray( new Configuration[ 0 ] );
-
-        final Target implicitTarget = new Target( null, implicitTasks, null );
-        project.setImplicitTarget( implicitTarget );
-    }
-
-    private void buildProjectRef( final DefaultProject project,
-                                  final Configuration element,
-                                  final HashMap projects )
-        throws Exception
-    {
-        final String name = element.getAttribute( "name", null );
-        final String location = element.getAttribute( "location", null );
-
-        if( null == name )
-        {
-            throw new Exception( "Malformed projectref without a name attribute at " +
-                                 element.getLocation() );
-        }
-
-        if( !validName( name ) )
-        {
-            throw new Exception( "Projectref with an invalid name attribute at " +
-                                 element.getLocation() );
-        }
-
-        if( null == location )
-        {
-            throw new Exception( "Malformed projectref without a location attribute at " +
-                                 element.getLocation() );
-        }
-
-        final File baseDirectory = project.getBaseDirectory();
-
-        //TODO: standardize and migrate to Avalon-Excalibur.io
-        final File file = new File( baseDirectory, location );
-
-        final String systemID = file.toURL().toString();
-        Project other = (Project)projects.get( systemID );
-
-        if( null == other )
-        {
-            other = build( file, projects );
-        }
-
-        project.addProject( name, other );
-    }
-
-    private void buildTypeLib( final DefaultProject project,
-                               final Configuration element )
-        throws Exception
-    {
-        final String library = element.getAttribute( "library", null );
-        final String name = element.getAttribute( "name", null );
-        final String type = element.getAttribute( "type", null );
-
-        if( null == library )
-        {
-            throw new Exception( "Malformed import without a library attribute at " +
-                                 element.getLocation() );
-        }
-
-        if( null == name || null == type )
-        {
-            if( null != name || null != type )
-            {
-                throw new Exception( "Malformed import at " + element.getLocation() +
-                                     ". If name or type attribute is specified, both " +
-                                     "attributes must be specified." );
-            }
-        }
-
-        project.addTypeLib( new TypeLib( library, type, name ) );
-    }
-
-    /**
-     * Build a target from configuration.
-     *
-     * @param project the project
-     * @param task the Configuration
-     */
-    private void buildTarget( final DefaultProject project, final Configuration target )
-        throws Exception
-    {
-        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 Exception( "Discovered un-named target at " +
-                                 target.getLocation() );
-        }
-
-        if( !validName( name ) )
-        {
-            throw new Exception( "Target with an invalid name at " +
-                                 target.getLocation() );
-        }
-
-        getLogger().debug( "Parsing target: " + name );
-
-        if( null != ifCondition && null != unlessCondition )
-        {
-            throw new Exception( "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 );
-        }
-
-        String[] dependencies = null;
-
-        //apply depends attribute
-        if( null != depends )
-        {
-            final String[] elements = ExceptionUtil.splitString( depends, "," );
-            final ArrayList dependsList = new ArrayList();
-
-            for( int i = 0; i < elements.length; i++ )
-            {
-                final String dependency = elements[ i ].trim();
-
-                if( 0 == dependency.length() )
-                {
-                    throw new Exception( "Discovered empty dependency in target " +
-                                         target.getName() + " at " + target.getLocation() );
-                }
-
-                getLogger().debug( "Target dependency: " + dependency );
-                dependsList.add( dependency );
-            }
-
-            dependencies = (String[])dependsList.toArray( new String[ 0 ] );
-        }
-
-        final Target defaultTarget =
-            new Target( condition, target.getChildren(), dependencies );
-
-        //add target to project
-        project.addTarget( name, defaultTarget );
-    }
-
-    protected boolean validName( final String name )
-    {
-        if( -1 != name.indexOf( "->" ) ) return false;
-        else return true;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/ProjectBuilder.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/ProjectBuilder.java
deleted file mode 100644
index 9016751..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/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.myrmidon.components.builder;
-
-import java.io.File;
-import java.io.IOException;
-import org.apache.avalon.framework.component.Component;
-import org.apache.myrmidon.components.model.Project;
-
-/**
- * Interface implemented by components that build projects from sources.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface ProjectBuilder
-    extends Component
-{
-    String ROLE = "org.apache.myrmidon.components.builder.ProjectBuilder";
-
-    /**
-     * 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( String source )
-        throws Exception;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/ReactorPIHandler.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/ReactorPIHandler.java
deleted file mode 100644
index b75b524..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/ReactorPIHandler.java
+++ /dev/null
@@ -1,59 +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.myrmidon.components.builder;
-
-import java.util.ArrayList;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * Handler that reacts to PIs before first element.
- * Have to do it this way as there doesn't seem to be a *safe* way
- * of redirecting content handlers at runtime while using transformers.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ReactorPIHandler
-    extends DefaultHandler
-{
-    private ArrayList    m_targets    = new ArrayList();
-    private ArrayList    m_data       = new ArrayList();
-
-    public int getPICount()
-    {
-        return m_targets.size();
-    }
-
-    public String getTarget( final int index )
-    {
-        return (String)m_targets.get( index );
-    }
-
-    public String getData( final int index )
-    {
-        return (String)m_data.get( index );
-    }
-
-    public void processingInstruction( final String target, final String data )
-        throws SAXException
-    {
-        m_targets.add( target );
-        m_data.add( data );
-    }
-    
-    public void startElement( final String uri,
-                              final String localName,
-                              final String qName,
-                              final Attributes atts )
-        throws SAXException
-    {
-        //Workaround to stop SAX pipeline
-        throw new StopParsingException();
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/StopParsingException.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/StopParsingException.java
deleted file mode 100644
index d81bb8f..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/StopParsingException.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.myrmidon.components.builder;
-
-import org.xml.sax.SAXException;
-
-/**
- * Dummy exception to stop parsing "safely".
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-class StopParsingException
-    extends SAXException
-{
-    public StopParsingException()
-    {
-        super( "" );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/configurer/Configurer.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/configurer/Configurer.java
deleted file mode 100644
index 021cb8d..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/configurer/Configurer.java
+++ /dev/null
@@ -1,51 +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.myrmidon.components.configurer;
-
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.context.Context;
-
-/**
- * Class used to configure tasks.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Configurer
-    extends Component
-{
-    String ROLE = "org.apache.myrmidon.components.configurer.Configurer";
-
-    /**
-     * 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;
-
-    /**
-     * Configure named attribute of object in a particular context.
-     * This configuring can be done in different ways for different
-     * configurers.
-     *
-     * @param object the object
-     * @param name the attribute name
-     * @param value the attribute value
-     * @param context the Context
-     * @exception ConfigurationException if an error occurs
-     */
-    void configure( Object object, String name, String value, Context context )
-        throws ConfigurationException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/configurer/DefaultConfigurer.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/configurer/DefaultConfigurer.java
deleted file mode 100644
index 4ba57dc..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/configurer/DefaultConfigurer.java
+++ /dev/null
@@ -1,508 +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.myrmidon.components.configurer;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.apache.avalon.excalibur.property.PropertyException;
-import org.apache.avalon.excalibur.property.PropertyUtil;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.logger.AbstractLoggable;
-import org.apache.avalon.framework.logger.Loggable;
-import org.apache.log.Logger;
-import org.apache.myrmidon.components.converter.MasterConverter;
-import org.apache.myrmidon.converter.Converter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * Class used to configure tasks.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultConfigurer
-    extends AbstractLoggable
-    implements Configurer, Composable, Loggable
-{
-    ///Compile time constant to turn on extreme debugging
-    private final static boolean   DEBUG         = false;
-
-    /*
-     * TODO: Should reserved names be "configurable" ?
-     */
-
-    ///Attribute names that are reserved
-    private final static String  RESERVED_ATTRIBUTES[] =
-    {
-        "logger"
-    };
-
-    ///Element names that are reserved
-    private final static String  RESERVED_ELEMENTS[] =
-    {
-        "content"
-    };
-
-    ///Converter to use for converting between values
-    private MasterConverter        m_converter;
-
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_converter = (MasterConverter)componentManager.lookup( MasterConverter.ROLE );
-    }
-
-    /**
-     * 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
-     * mapping rules to map configuration to types
-     *
-     * @param object the object
-     * @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 )
-        {
-            getLogger().debug( "Configuring " + object );
-        }
-
-        if( object instanceof Configurable )
-        {
-            if( DEBUG )
-            {
-                getLogger().debug( "Configuring object via Configurable interface" );
-            }
-
-            ((Configurable)object).configure( configuration );
-        }
-        else
-        {
-            if( DEBUG )
-            {
-                getLogger().debug( "Configuring object via Configurable reflection" );
-            }
-
-            final String[] attributes = configuration.getAttributeNames();
-            for( int i = 0; i < attributes.length; i++ )
-            {
-                final String name = attributes[ i ];
-                final String value = configuration.getAttribute( name );
-
-                if( DEBUG )
-                {
-                    getLogger().debug( "Configuring attribute name=" + name +
-                                       " value=" + value );
-                }
-
-                configureAttribute( object, name, value, context );
-            }
-
-            final Configuration[] children = configuration.getChildren();
-
-            for( int i = 0; i < children.length; i++ )
-            {
-                final Configuration child = children[ i ];
-
-                if( DEBUG )
-                {
-                    getLogger().debug( "Configuring subelement name=" + child.getName() );
-                }
-
-                configureElement( object, child, context );
-            }
-
-            final String content = configuration.getValue( null );
-
-            if( null != content )
-            {
-                if( !content.trim().equals( "" ) )
-                {
-                    if( DEBUG )
-                    {
-                        getLogger().debug( "Configuring content " + content );
-                    }
-
-                    configureContent( object, content, context );
-                }
-            }
-        }
-    }
-
-    /**
-     * Configure named attribute of object in a particular context.
-     * This configuring can be done in different ways for different
-     * configurers.
-     *
-     * @param object the object
-     * @param name the attribute name
-     * @param value the attribute value
-     * @param context the Context
-     * @exception ConfigurationException if an error occurs
-     */
-    public void configure( final Object object, 
-                           final String name, 
-                           final String value, 
-                           final Context context )
-        throws ConfigurationException
-    {
-        configureAttribute( object, name, value, 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
-     */
-    private void configureContent( final Object object,
-                                   final String content,
-                                   final Context context )
-        throws ConfigurationException
-    {
-        setValue( object, "addContent", content, context );
-    }
-
-    private 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 ) ) 
-            {
-                throw new ConfigurationException( "Can not specify reserved attribute " + 
-                                                  name );
-            }
-        }
-
-        final String methodName = getMethodNameFor( name );
-        setValue( object, methodName, value, context );
-    }
-
-    private 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 );
-    }
-
-    private 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 );
-        }
-    }
-
-    private 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" );
-    }
-
-    private 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 )
-            {
-                getLogger().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;
-    }
-
-    private 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() );
-        }
-    }
-
-    private 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] );
-    }
-
-    private 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] );
-    }
-
-    private String getMethodNameFor( final String attribute )
-    {
-        return "set" + getJavaNameFor( attribute.toLowerCase() );
-    }
-
-    private 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();
-    }
-
-    private 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 );
-        }
-    }
-
-    private 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 );
-        }
-    }
-
-    private 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/myrmidon/components/converter/ConverterRegistry.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/ConverterRegistry.java
deleted file mode 100644
index fffbc61..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/ConverterRegistry.java
+++ /dev/null
@@ -1,40 +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.myrmidon.components.converter;
-
-import org.apache.avalon.framework.component.Component;
-
-/**
- * Interface for registry for ConverterInfos.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface ConverterRegistry
-    extends Component
-{
-    String ROLE = "org.apache.myrmidon.components.converter.ConverterRegistry";
-
-    /**
-     * 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 className of converter or null if none available
-     */
-    String getConverterName( String source, String destination );
-
-    /**
-     * Register a converter
-     *
-     * @param className the className of converter
-     * @param source the source classname
-     * @param destination the destination classname
-     */
-    void registerConverter( String className, String source, String destination );
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/DefaultConverterRegistry.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/DefaultConverterRegistry.java
deleted file mode 100644
index b2d0def..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/DefaultConverterRegistry.java
+++ /dev/null
@@ -1,42 +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.myrmidon.components.converter;
-
-import java.util.HashMap;
-
-/**
- * Default implementation of Converter registry.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultConverterRegistry
-    implements ConverterRegistry
-{
-    private final HashMap      m_mapping   = new HashMap();
-
-    public String getConverterName( final String source, final String destination )
-    {
-        final HashMap map = (HashMap)m_mapping.get( source );
-        if( null == map ) return null;
-        return (String)map.get( destination );
-    }
-
-    public void registerConverter( final String className, 
-                                   final String source, 
-                                   final String destination )
-    {
-        HashMap map = (HashMap)m_mapping.get( source );
-        if( null == map )
-        {
-            map = new HashMap();
-            m_mapping.put( source, map );
-        }
-
-        map.put( destination, className );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/DefaultMasterConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/DefaultMasterConverter.java
deleted file mode 100644
index c457968..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/DefaultMasterConverter.java
+++ /dev/null
@@ -1,110 +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.myrmidon.components.converter;
-
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.logger.AbstractLoggable;
-import org.apache.myrmidon.components.converter.MasterConverter;
-import org.apache.myrmidon.components.type.TypeException;
-import org.apache.myrmidon.components.type.TypeFactory;
-import org.apache.myrmidon.components.type.TypeManager;
-import org.apache.myrmidon.converter.Converter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * Converter engine to handle converting between types.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultMasterConverter
-    extends AbstractLoggable
-    implements MasterConverter, Composable
-{
-    private final static boolean DEBUG                = false;
-
-    private ConverterRegistry    m_registry;
-    private TypeFactory          m_factory;
-
-    /**
-     * Retrieve relevent services needed to deploy.
-     *
-     * @param componentManager the ComponentManager
-     * @exception ComponentException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_registry = (ConverterRegistry)componentManager.lookup( ConverterRegistry.ROLE );
-
-        final TypeManager typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
-        try { m_factory = typeManager.getFactory( Converter.ROLE ); }
-        catch( final TypeException te )
-        {
-            throw new ComponentException( "Unable to retrieve factory from TypeManager", te );
-        }
-    }
-
-    /**
-     * 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 ConverterException
-    {
-        final Class originalClass = original.getClass();
-
-        if( destination.isAssignableFrom( originalClass ) )
-        {
-            return original;
-        }
-
-        if( DEBUG )
-        {
-            getLogger().debug( "Looking for converter from " + originalClass.getName() +
-                               " to " + destination.getName() );
-        }
-
-        //TODO: Start searching inheritance hierarchy for converter
-        final String name = m_registry.getConverterName( originalClass.getName(),
-                                                         destination.getName() );
-
-        if( null == name )
-        {
-            throw new ConverterException( "Unable to find converter for " +
-                                          originalClass.getName() + " to " +
-                                          destination.getName() + " conversion" );
-        }
-
-        try
-        {
-            //TODO: Start caching converters instead of repeatedly instantiating em.
-            final Converter converter = (Converter)m_factory.create( name );
-
-
-            if( DEBUG )
-            {
-                getLogger().debug( "Found Converter: " + converter );
-            }
-
-            return converter.convert( destination, original, context );
-        }
-        catch( final TypeException te )
-        {
-            throw new ConverterException( "Badly configured TypeManager missing " +
-                                          "converter definition", te );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/MasterConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/MasterConverter.java
deleted file mode 100644
index 16cf9c0..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/MasterConverter.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.myrmidon.components.converter;
-
-import org.apache.avalon.framework.component.Component;
-import org.apache.myrmidon.converter.Converter;
-
-/**
- * Master Converter to handle converting between types.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface MasterConverter
-    extends Component, Converter
-{
-    String ROLE = "org.apache.myrmidon.components.converter.MasterConverter";
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultDeployer.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultDeployer.java
deleted file mode 100644
index c92de15..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultDeployer.java
+++ /dev/null
@@ -1,307 +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.myrmidon.components.deployer;
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Enumeration;
-import java.util.HashMap;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.SAXConfigurationHandler;
-import org.apache.avalon.framework.logger.AbstractLoggable;
-import org.apache.myrmidon.api.Task;
-import org.apache.myrmidon.components.converter.ConverterRegistry;
-import org.apache.myrmidon.components.type.DefaultTypeFactory;
-import org.apache.myrmidon.components.type.TypeManager;
-import org.apache.myrmidon.components.role.RoleManager;
-import org.apache.myrmidon.converter.Converter;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
-/**
- * This class deploys a .tsk file into a registry.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultDeployer
-    extends AbstractLoggable
-    implements Deployer, Initializable, Composable
-{
-    private final static String TYPE_DESCRIPTOR = "META-INF/ant-types.xml";
-
-    private ConverterRegistry            m_converterRegistry;
-    private TypeManager                  m_typeManager;
-    private RoleManager                  m_roleManager;
-
-    /**
-     * Retrieve relevent services needed to deploy.
-     *
-     * @param componentManager the ComponentManager
-     * @exception ComponentException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_converterRegistry = (ConverterRegistry)componentManager.lookup( ConverterRegistry.ROLE );
-        m_typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
-        m_roleManager = (RoleManager)componentManager.lookup( RoleManager.ROLE );
-    }
-
-    public void initialize()
-        throws Exception
-    {
-        final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
-        final SAXParser saxParser = saxParserFactory.newSAXParser();
-        final XMLReader parser = saxParser.getXMLReader();
-        //parser.setFeature( "http://xml.org/sax/features/namespace-prefixes", false );
-
-        final SAXConfigurationHandler handler = new SAXConfigurationHandler();
-        parser.setContentHandler( handler );
-        parser.setErrorHandler( handler );
-
-        final ClassLoader classLoader = getClass().getClassLoader();
-        final DefaultTypeFactory factory = new DefaultTypeFactory( classLoader );
-
-        final Enumeration enum = classLoader.getResources( Deployment.DESCRIPTOR_NAME );
-        while( enum.hasMoreElements() )
-        {
-            final URL url = (URL)enum.nextElement();
-            parser.parse( url.toString() );
-            getLogger().debug( "deploying " + url );
-            deployFromDescriptor( handler.getConfiguration(), classLoader, url );
-        }
-    }
-
-    public void deploy( final File file )
-        throws DeploymentException
-    {
-        getLogger().info( "Deploying AntLib file (" + file + ")" );
-
-        checkFile( file );
-
-        final Deployment deployment = new Deployment( file );
-        final Configuration descriptor = deployment.getDescriptor();
-        final URL[] urls = new URL[] { deployment.getURL() };
-        final URLClassLoader classLoader = 
-            new URLClassLoader( urls, Thread.currentThread().getContextClassLoader() );
-
-        try
-        {
-            deployFromDescriptor( descriptor, classLoader, deployment.getURL() );
-        }
-        catch( final DeploymentException de )
-        {
-            throw de;
-        }
-        catch( final Exception e )
-        {
-            throw new DeploymentException( "Error deploying library", e );
-        }
-    }
-
-    public void deployConverter( final String name, final File file )
-        throws DeploymentException
-    {
-        checkFile( file );
-
-        final Deployment deployment = new Deployment( file );
-        final Configuration descriptor = deployment.getDescriptor();
-        final DefaultTypeFactory factory = new DefaultTypeFactory( deployment.getURL() );
-
-        try
-        {
-            final Configuration[] converters =
-                descriptor.getChild( "converters" ).getChildren( "converter" );
-
-            for( int i = 0; i < converters.length; i++ )
-            {
-                if( converters[ i ].getAttribute( "classname" ).equals( name ) )
-                {
-                    handleConverter( converters[ i ], factory );
-                    break;
-                }
-            }
-        }
-        catch( final ConfigurationException ce )
-        {
-            throw new DeploymentException( "Malformed taskdefs.xml", ce );
-        }
-        catch( final Exception e )
-        {
-            throw new DeploymentException( "Failed to deploy " + name, e );
-        }
-    }
-
-    public void deployType( final String role, final String name, final File file )
-        throws DeploymentException
-    {
-        checkFile( file );
-
-        final String shorthand = getNameForRole( role );
-        final Deployment deployment = new Deployment( file );
-        final Configuration descriptor = deployment.getDescriptor();
-        final DefaultTypeFactory factory = new DefaultTypeFactory( deployment.getURL() );
-
-        try
-        {
-            final Configuration[] datatypes =
-                descriptor.getChild( "types" ).getChildren( shorthand );
-
-            for( int i = 0; i < datatypes.length; i++ )
-            {
-                if( datatypes[ i ].getAttribute( "name" ).equals( name ) )
-                {
-                    handleType( role, datatypes[ i ], factory );
-                    break;
-                }
-            }
-        }
-        catch( final ConfigurationException ce )
-        {
-            throw new DeploymentException( "Malformed taskdefs.xml", ce );
-        }
-        catch( final Exception e )
-        {
-            throw new DeploymentException( "Failed to deploy " + name, e );
-        }
-    }
-
-    private void deployFromDescriptor( final Configuration descriptor,
-                                       final ClassLoader classLoader,
-                                       final URL url )
-        throws DeploymentException, Exception
-    {
-        try
-        {
-            //Have to keep a new factory per role
-            //To avoid name clashes (ie a datatype and task with same name)
-            final HashMap factorys = new HashMap();
-
-            final Configuration[] types = descriptor.getChild( "types" ).getChildren();
-            for( int i = 0; i < types.length; i++ )
-            {
-                final String name = types[ i ].getName();
-                final String role = getRoleForName( name );
-                final DefaultTypeFactory factory = getFactory( role, classLoader, factorys );
-                handleType( role, types[ i ], factory );
-            }
-
-            final DefaultTypeFactory factory = new DefaultTypeFactory( classLoader );
-            final Configuration[] converters = descriptor.getChild( "converters" ).getChildren();
-            for( int i = 0; i < converters.length; i++ )
-            {
-                final String name = converters[ i ].getName();
-                handleConverter( converters[ i ], factory );
-            }
-        }
-        catch( final DeploymentException de )
-        {
-            throw de;
-        }
-        catch( final Exception e )
-        {
-            throw new DeploymentException( "Error deploying library from " + url, e );
-        }
-    }
-
-    private DefaultTypeFactory getFactory( final String role, 
-                                           final ClassLoader classLoader, 
-                                           final HashMap factorys )
-    {
-        DefaultTypeFactory factory = (DefaultTypeFactory)factorys.get( role );
-
-        if( null == factory )
-        {
-            factory = new DefaultTypeFactory( classLoader );
-            factorys.put( role, factory );
-        }
-
-        return factory;
-    }
-
-    private String getNameForRole( final String role )
-        throws DeploymentException
-    {
-        final String name = m_roleManager.getNameForRole( role );
-
-        if( null == name )
-        {
-            throw new DeploymentException( "RoleManager does not know name for role " + role );
-        }
-
-        return name;
-    }
-
-    private String getRoleForName( final String name )
-        throws DeploymentException
-    {
-        final String role = m_roleManager.getRoleForName( name );
-
-        if( null == role )
-        {
-            throw new DeploymentException( "RoleManager does not know role for name " + name );
-        }
-
-        return role;
-    }
-
-    private void checkFile( final File file )
-        throws DeploymentException
-    {
-        if( !file.exists() )
-        {
-            throw new DeploymentException( "Could not find application archive at " +
-                                           file );
-        }
-
-        if( file.isDirectory() )
-        {
-            throw new DeploymentException( "Could not find application archive at " +
-                                           file + " as it is a directory." );
-        }
-    }
-
-    private void handleConverter( final Configuration converter,
-                                  final DefaultTypeFactory factory )
-        throws Exception
-    {
-        final String name = converter.getAttribute( "classname" );
-        final String source = converter.getAttribute( "source" );
-        final String destination = converter.getAttribute( "destination" );
-
-        m_converterRegistry.registerConverter( name, source, destination );
-
-        factory.addNameClassMapping( name, name );
-        m_typeManager.registerType( Converter.ROLE, name, factory );
-
-        getLogger().debug( "Registered converter " + name + " that converts from " +
-                           source + " to " + destination );
-    }
-
-    private void handleType( final String role,
-                             final Configuration type,
-                             final DefaultTypeFactory factory )
-        throws Exception
-    {
-        final String name = type.getAttribute( "name" );
-        final String className = type.getAttribute( "classname" );
-
-        factory.addNameClassMapping( name, className );
-        m_typeManager.registerType( role, name, factory );
-
-        getLogger().debug( "Registered " + role + "/" + name + " as " + className );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployer.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployer.java
deleted file mode 100644
index 6c4e878..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployer.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.myrmidon.components.deployer;
-
-import java.io.File;
-import org.apache.avalon.framework.component.Component;
-
-/**
- * This class deploys a .tsk file into a registry.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Deployer
-    extends Component
-{
-    String ROLE = "org.apache.myrmidon.components.deployer.Deployer";
-
-    /**
-     * Deploy a library.
-     *
-     * @param file the file deployment
-     * @exception DeploymentException if an error occurs
-     */
-    void deploy( File file )
-        throws DeploymentException;
-
-    void deployConverter( String name, File file )
-        throws DeploymentException;
-
-    void deployType( String role, String name, File file )
-        throws DeploymentException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployment.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployment.java
deleted file mode 100644
index 99e1cd9..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployment.java
+++ /dev/null
@@ -1,95 +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.myrmidon.components.deployer;
-
-import java.io.File;
-import java.net.URL;
-import java.net.MalformedURLException;
-import java.io.IOException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.SAXConfigurationHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
-/**
- * This class deploys a .tsk file into a registry.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Deployment
-{
-    public final static String   DESCRIPTOR_NAME     = "META-INF/ant-descriptor.xml";
-
-    private File            m_file;
-
-    private Configuration   m_descriptor;
-
-    public Deployment( final File file )
-    {
-        m_file = file;
-    }
-    
-    public Configuration getDescriptor()
-        throws DeploymentException
-    {
-        if( null == m_descriptor )
-        {
-            m_descriptor = buildDescriptor();
-        }
-
-        return m_descriptor;
-    }
-
-    public URL getURL()
-        throws DeploymentException
-    {
-        try { return m_file.getCanonicalFile().toURL(); }
-        catch( final IOException ioe )
-        {
-            throw new DeploymentException( "Unable to form url", ioe );
-        }
-    }
-
-    private Configuration buildDescriptor()
-        throws DeploymentException
-    {
-        final String systemID = "jar:" + getURL() + "!/" + DESCRIPTOR_NAME;
-
-        try
-        {
-            final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
-            final SAXParser saxParser = saxParserFactory.newSAXParser();
-            final XMLReader parser = saxParser.getXMLReader();
-            //parser.setFeature( "http://xml.org/sax/features/namespace-prefixes", false );
-
-            final SAXConfigurationHandler handler = new SAXConfigurationHandler();
-            parser.setContentHandler( handler );
-            parser.setErrorHandler( handler );
-
-            parser.parse( systemID );
-            return handler.getConfiguration();
-        }
-        catch( final SAXException se )
-        {
-            throw new DeploymentException( "Malformed configuration data", se );
-        }
-        catch( final ParserConfigurationException pce )
-        {
-            throw new DeploymentException( "Error configuring parser", pce );
-        }
-        catch( final IOException ioe )
-        {
-            throw new DeploymentException( "Error reading configuration", ioe );
-        }
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DeploymentException.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DeploymentException.java
deleted file mode 100644
index 78881f8..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DeploymentException.java
+++ /dev/null
@@ -1,40 +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.myrmidon.components.deployer;
-
-import org.apache.avalon.framework.CascadingException;
-
-/**
- * Exception to indicate error deploying.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public final class DeploymentException
-    extends CascadingException
-{
-    /**
-     * Construct a new <code>DeploymentException</code> instance.
-     *
-     * @param message The detail message for this exception.
-     */
-    public DeploymentException( final String message )
-    {
-        this( message, null );
-    }
-
-    /**
-     * Construct a new <code>DeploymentException</code> instance.
-     *
-     * @param message The detail message for this exception.
-     * @param throwable the root cause of the exception
-     */
-    public DeploymentException( final String message, final Throwable throwable )
-    {
-        super( message, throwable );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java
deleted file mode 100644
index 654ec04..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java
+++ /dev/null
@@ -1,530 +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.myrmidon.components.embeddor;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.Map;
-import org.apache.avalon.excalibur.io.ExtensionFileFilter;
-import org.apache.avalon.excalibur.io.FileUtil;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.DefaultComponentManager;
-import org.apache.avalon.framework.logger.AbstractLoggable;
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.myrmidon.api.JavaVersion;
-import org.apache.myrmidon.components.aspect.AspectManager;
-import org.apache.myrmidon.components.builder.ProjectBuilder;
-import org.apache.myrmidon.components.configurer.Configurer;
-import org.apache.myrmidon.components.converter.ConverterRegistry;
-import org.apache.myrmidon.components.converter.MasterConverter;
-import org.apache.myrmidon.components.deployer.Deployer;
-import org.apache.myrmidon.components.deployer.DeploymentException;
-import org.apache.myrmidon.components.executor.Executor;
-import org.apache.myrmidon.components.workspace.Workspace;
-import org.apache.myrmidon.components.model.Project;
-import org.apache.myrmidon.components.role.RoleManager;
-import org.apache.myrmidon.components.type.TypeFactory;
-import org.apache.myrmidon.components.type.TypeManager;
-
-/**
- * Default implementation of Embeddor.
- * Instantiate this to embed inside other applications.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultEmbeddor
-    extends AbstractLoggable
-    implements Embeddor
-{
-    private Deployer                 m_deployer;
-    private RoleManager              m_roleManager;
-
-    private AspectManager            m_aspectManager;
-    private TypeManager              m_typeManager;
-    private MasterConverter          m_converter;
-    private ConverterRegistry        m_converterRegistry;
-
-    private Executor                 m_executor;
-    private Configurer               m_configurer;
-
-    private DefaultComponentManager  m_componentManager;
-    private Parameters               m_parameters;
-    private Parameters               m_defaults;
-
-    private File                     m_homeDir;
-    private File                     m_binDir;
-    private File                     m_libDir;
-    private 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 parameterize( final Parameters parameters )
-    {
-        m_parameters = parameters;
-    }
-
-    public Project createProject( final String location, 
-                                  String type, 
-                                  final Parameters parameters )
-        throws Exception
-    {
-        if( null == type )
-        {
-            type = guessTypeFor( location );
-        }
-
-        final ProjectBuilder builder = getProjectBuilder( type, parameters );
-        return builder.build( location );
-    }
-
-    private String guessTypeFor( final String location )
-    {
-        return FileUtil.getExtension( location );
-    }
-
-    private ProjectBuilder getProjectBuilder( final String type, 
-                                              final Parameters parameters )
-        throws Exception
-    {
-
-        final TypeFactory factory = m_typeManager.getFactory( ProjectBuilder.ROLE );
-        final ProjectBuilder builder = (ProjectBuilder)factory.create( type );
-
-        setupLogger( builder );
-
-        if( builder instanceof Composable )
-        {
-            ((Composable)builder).compose( m_componentManager );
-        }
-
-        if( builder instanceof Parameterizable )
-        {
-            ((Parameterizable)builder).parameterize( parameters );
-        }        
-
-        if( builder instanceof Initializable )
-        {
-            ((Initializable)builder).initialize();
-        }        
-
-        return builder;
-    }
-
-    public Workspace createWorkspace( final Parameters parameters )
-        throws Exception
-    {
-        final String component = getParameter( Workspace.ROLE );
-        final Workspace workspace = 
-            (Workspace)createComponent( component, Workspace.class );
-
-        setupLogger( workspace );
-
-
-        if( workspace instanceof Composable )
-        {
-            ((Composable)workspace).compose( m_componentManager );
-        }
-
-        if( workspace instanceof Parameterizable )
-        {
-            ((Parameterizable)workspace).parameterize( parameters );
-        }        
-
-        if( workspace instanceof Initializable )
-        {
-            ((Initializable)workspace).initialize();
-        }        
-
-        return workspace;
-    }
-
-    /**
-     * Initialize the system.
-     *
-     * @exception Exception if an error occurs
-     */
-    public void initialize()
-        throws Exception
-    {
-        //setup default properties
-        m_defaults = createDefaultParameters();
-
-        //create all the components
-        createComponents();
-
-        //setup the component manager
-        m_componentManager = createComponentManager();
-
-        setupComponents();
-
-        setupFiles();
-    }
-
-    public void start()
-        throws Exception
-    {
-        final ExtensionFileFilter filter = new ExtensionFileFilter( ".atl" );
-        deployFromDirectory( m_deployer, m_taskLibDir, filter );
-    }
-
-    public void stop()
-    {
-        //Undeploy all the tasks by killing ExecutionFrame???
-    }
-
-    /**
-     * Dispose engine.
-     *
-     * @exception Exception if an error occurs
-     */
-    public void dispose()
-    {
-        m_aspectManager = null;
-        m_roleManager = null;
-        m_converterRegistry = null;
-        m_converter = null;
-        m_executor = null;
-        m_deployer = null;
-        m_configurer = null;
-        m_componentManager = null;
-        m_parameters = 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 Parameters
-     */
-    private Parameters createDefaultParameters()
-    {
-        final Parameters defaults = new Parameters();
-
-        //create all the default properties for files/directories
-        defaults.setParameter( "myrmidon.bin.path", "bin" );
-        defaults.setParameter( "myrmidon.lib.path", "lib" );
-
-        //create all the default properties for components
-        defaults.setParameter( AspectManager.ROLE,
-                               "org.apache.myrmidon.components.aspect.DefaultAspectManager" );
-        defaults.setParameter( RoleManager.ROLE,
-                               "org.apache.myrmidon.components.role.DefaultRoleManager" );
-        defaults.setParameter( MasterConverter.ROLE,
-                               "org.apache.myrmidon.components.converter.DefaultMasterConverter" );
-        defaults.setParameter( ConverterRegistry.ROLE,
-                               "org.apache.myrmidon.components.converter.DefaultConverterRegistry" );
-        defaults.setParameter( TypeManager.ROLE,
-                               "org.apache.myrmidon.components.type.DefaultTypeManager" );
-        defaults.setParameter( Executor.ROLE,
-                               //"org.apache.myrmidon.components.executor.DefaultExecutor" );
-                               //"org.apache.myrmidon.components.executor.PrintingExecutor" );
-                               "org.apache.myrmidon.components.executor.AspectAwareExecutor" );
-        defaults.setParameter( Workspace.ROLE,
-                               "org.apache.myrmidon.components.workspace.DefaultWorkspace" );
-        defaults.setParameter( Deployer.ROLE,
-                               "org.apache.myrmidon.components.deployer.DefaultDeployer" );
-        defaults.setParameter( Configurer.ROLE,
-                               "org.apache.myrmidon.components.configurer.DefaultConfigurer" );
-
-        return defaults;
-    }
-
-    /**
-     * Create a ComponentManager containing all components in engine.
-     *
-     * @return the ComponentManager
-     */
-    private DefaultComponentManager createComponentManager()
-    {
-        final DefaultComponentManager componentManager = new DefaultComponentManager();
-
-        componentManager.put( MasterConverter.ROLE, m_converter );
-
-        //Following components required when Myrmidon is used as build tool
-        componentManager.put( Embeddor.ROLE, this );
-
-        //Following components required when Myrmidon allows user deployment of tasks etal.
-        componentManager.put( RoleManager.ROLE, m_roleManager );
-        componentManager.put( Deployer.ROLE, m_deployer );
-
-        //Following components used when want to types (ie tasks/mappers etc)
-        componentManager.put( TypeManager.ROLE, m_typeManager );
-        componentManager.put( ConverterRegistry.ROLE, m_converterRegistry );
-
-        componentManager.put( AspectManager.ROLE, m_aspectManager );
-
-        //Following components required when allowing Container tasks
-        componentManager.put( Configurer.ROLE, m_configurer );
-        componentManager.put( Executor.ROLE, m_executor );
-
-        return componentManager;
-    }
-
-    /**
-     * Create all required components.
-     *
-     * @exception Exception if an error occurs
-     */
-    private void createComponents()
-        throws Exception
-    {
-        String component = null;
-
-        component = getParameter( ConverterRegistry.ROLE );
-        m_converterRegistry = (ConverterRegistry)createComponent( component, ConverterRegistry.class );
-
-        component = getParameter( MasterConverter.ROLE );
-        m_converter = (MasterConverter)createComponent( component, MasterConverter.class );
-
-        component = getParameter( Configurer.ROLE );
-        m_configurer = (Configurer)createComponent( component, Configurer.class );
-
-        component = getParameter( TypeManager.ROLE );
-        m_typeManager = (TypeManager)createComponent( component, TypeManager.class );
-
-        component = getParameter( RoleManager.ROLE );
-        m_roleManager = (RoleManager)createComponent( component, RoleManager.class );
-
-        component = getParameter( AspectManager.ROLE );
-        m_aspectManager = (AspectManager)createComponent( component, AspectManager.class );
-
-        component = getParameter( Deployer.ROLE );
-        m_deployer = (Deployer)createComponent( component, Deployer.class );
-
-        component = getParameter( Executor.ROLE );
-        m_executor = (Executor)createComponent( component, Executor.class );
-    }
-
-    /**
-     * Setup all the components. (ir run all required lifecycle methods).
-     *
-     * @exception Exception if an error occurs
-     */
-    private void setupComponents()
-        throws Exception
-    {
-        setupComponent( m_roleManager );
-        setupComponent( m_aspectManager );
-        setupComponent( m_converterRegistry );
-        setupComponent( m_converter );
-        setupComponent( m_executor );
-        setupComponent( m_deployer );
-        setupComponent( m_configurer );
-    }
-
-    /**
-     * Setup an individual component.
-     *
-     * @param component the component
-     * @exception Exception if an error occurs
-     */
-    private void setupComponent( final Component component )
-        throws Exception
-    {
-        setupLogger( component );
-
-        if( component instanceof Composable )
-        {
-            ((Composable)component).compose( m_componentManager );
-        }
-
-        if( component instanceof Initializable )
-        {
-            ((Initializable)component).initialize();
-        }
-    }
-
-    /**
-     * Setup all the files attributes.
-     */
-    private void setupFiles()
-        throws Exception
-    {
-        String filepath = null;
-
-        filepath = getParameter( "myrmidon.home" );
-        m_homeDir = (new File( filepath )).getAbsoluteFile();
-        checkDirectory( m_homeDir, "home" );
-
-        filepath = getParameter( "myrmidon.bin.path" );
-        m_binDir = resolveDirectory( filepath, "bin-dir" );
-
-        filepath = getParameter( "myrmidon.lib.path" );
-        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
-     */
-    private String getParameter( final String name )
-    {
-        String value = m_parameters.getParameter( name, null );
-
-        if( null == value )
-        {
-            value = m_defaults.getParameter( name, null );
-        }
-
-        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 Exception if an error occurs
-     */
-    private File resolveDirectory( final String dir, final String name )
-        throws Exception
-    {
-        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)
-     */
-    private void checkDirectory( final File file, final String name )
-        throws Exception
-    {
-        if( !file.exists() )
-        {
-            throw new Exception( name + " (" + file + ") does not exist" );
-        }
-        else if( !file.isDirectory() )
-        {
-            throw new Exception( name + " (" + file + ") is not a directory" );
-        }
-    }
-
-    /**
-     * Helper method to retrieve current JVM version.
-     *
-     * @return the current JVM version
-     */
-    private 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 Exception if an error occurs
-     */
-    private Object createComponent( final String component, final Class clazz )
-        throws Exception
-    {
-        try
-        {
-            final Object object = Class.forName( component ).newInstance();
-
-            if( !clazz.isInstance( object ) )
-            {
-                throw new Exception( "Object " + component + " is not an instance of " +
-                                     clazz );
-            }
-
-            return object;
-        }
-        catch( final IllegalAccessException iae )
-        {
-            throw new Exception( "Non-public constructor for " + clazz + " " + component );
-        }
-        catch( final InstantiationException ie )
-        {
-            throw new Exception( "Error instantiating class for " + clazz + " " + component );
-        }
-        catch( final ClassNotFoundException cnfe )
-        {
-            throw new Exception( "Could not find the class for " + clazz +
-                                 " (" + component + ")" );
-        }
-    }
-
-
-    private void deployFromDirectory( final Deployer deployer,
-                                      final File directory,
-                                      final FilenameFilter filter )
-        throws DeploymentException
-    {
-        final File[] files = directory.listFiles( filter );
-
-        if( null != files )
-        {
-            deployFiles( deployer, files );
-        }
-    }
-
-    private void deployFiles( final Deployer deployer, final File[] files )
-        throws DeploymentException
-    {
-        for( int i = 0; i < files.length; i++ )
-        {
-            final String filename = files[ i ].getName();
-
-            int index = filename.lastIndexOf( '.' );
-            if( -1 == index ) index = filename.length();
-
-            final String name = filename.substring( 0, index );
-
-            try
-            {
-                final File file = files[ i ].getCanonicalFile();
-                deployer.deploy( file );
-            }
-            catch( final DeploymentException de )
-            {
-                throw de;
-            }
-            catch( final Exception e )
-            {
-                throw new DeploymentException( "Unable to retrieve filename for file " +
-                                               files[ i ], e );
-            }
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/Embeddor.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/Embeddor.java
deleted file mode 100644
index e844ade..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/Embeddor.java
+++ /dev/null
@@ -1,46 +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.myrmidon.components.embeddor;
-
-import java.util.Map;
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.activity.Startable;
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.myrmidon.components.model.Project;
-import org.apache.myrmidon.components.workspace.Workspace;
-
-/**
- * Interface through which you embed Myrmidon into applications.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Embeddor
-    extends Component, Parameterizable, Initializable, Startable, Disposable
-{
-    String ROLE = "org.apache.myrmidon.components.embeddor.Embeddor";
-
-    /**
-     * Create a project.
-     *
-     * @return the created Project
-     */
-    Project createProject( String location, String type, Parameters parameters )
-        throws Exception;
-
-    /**
-     * Create a Workspace for a particular project.
-     *
-     * @param defines the defines in workspace
-     * @return the Workspace
-     */
-    Workspace createWorkspace( Parameters parameters )
-        throws Exception;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/AspectAwareExecutor.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/AspectAwareExecutor.java
deleted file mode 100644
index 965dde3..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/AspectAwareExecutor.java
+++ /dev/null
@@ -1,304 +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.myrmidon.components.executor;
-
-import java.util.HashMap;
-import java.util.ArrayList;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.log.Logger;
-import org.apache.myrmidon.api.Task;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.aspects.AspectHandler;
-import org.apache.myrmidon.components.aspect.AspectManager;
-
-public class AspectAwareExecutor
-    extends DefaultExecutor
-{
-    private final static Parameters       EMPTY_PARAMETERS;
-    private final static Configuration[]  EMPTY_ELEMENTS       = new Configuration[ 0 ];
-
-    static
-    {
-        EMPTY_PARAMETERS = new Parameters();
-        EMPTY_PARAMETERS.makeReadOnly();
-    }
-
-    private AspectManager        m_aspectManager;
-
-    /**
-     * Retrieve relevent services.
-     *
-     * @param componentManager the ComponentManager
-     * @exception ComponentException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        super.compose( componentManager );
-
-        m_aspectManager = (AspectManager)componentManager.lookup( AspectManager.ROLE );
-    }
-
-    public void execute( final Configuration taskModel, final ExecutionFrame frame )
-        throws TaskException
-    {
-        try
-        {
-            executeTask( taskModel, frame );
-        }
-        catch( final TaskException te )
-        {
-            if( false == getAspectManager().error( te ) )
-            {
-                throw te;
-            }
-        }
-    }
-
-    private void executeTask( Configuration taskModel, final ExecutionFrame frame )
-        throws TaskException
-    {
-        taskModel = getAspectManager().preCreate( taskModel );
-        taskModel = prepareAspects( taskModel );
-
-        getLogger().debug( "Pre-Create" );
-        final Task task = createTask( taskModel.getName(), frame );
-        getAspectManager().postCreate( task );
-
-        getLogger().debug( "Pre-Loggable" );
-        final Logger logger = frame.getLogger();
-        getAspectManager().preLoggable( logger );
-        doLoggable( task, taskModel, logger );
-
-        getLogger().debug( "Contextualizing" );
-        doContextualize( task, taskModel, frame.getContext() );
-
-        getLogger().debug( "Composing" );
-        doCompose( task, taskModel, frame.getComponentManager() );
-
-        getLogger().debug( "Configuring" );
-        getAspectManager().preConfigure( taskModel );
-        doConfigure( task, taskModel, frame.getContext() );
-
-        getLogger().debug( "Initializing" );
-        doInitialize( task, taskModel );
-
-        getLogger().debug( "Executing" );
-        getAspectManager().preExecute();
-        doExecute( taskModel, task );
-
-        getLogger().debug( "Disposing" );
-        getAspectManager().preDestroy();
-        doDispose( task, taskModel );
-    }
-
-    protected void doExecute( final Configuration taskModel, final Task task )
-        throws TaskException
-    {
-        task.execute();
-    }
-
-    //TODO: Extract and clean taskModel here.
-    //Get all parameters from model and provide to appropriate aspect.
-    //aspect( final Parameters parameters, final Configuration[] elements )
-    private final Configuration prepareAspects( final Configuration taskModel )
-        throws TaskException
-    {
-        final DefaultConfiguration newTaskModel = 
-            new DefaultConfiguration( taskModel.getName(), taskModel.getLocation() );
-        final HashMap parameterMap = new HashMap();
-        final HashMap elementMap = new HashMap();
-
-        processAttributes( taskModel, newTaskModel, parameterMap );
-        processElements( taskModel, newTaskModel, elementMap );
-
-        dispatchAspectsSettings( parameterMap, elementMap );
-        checkForUnusedSettings( parameterMap, elementMap );
-
-        return newTaskModel;
-    }
-
-    private final void dispatchAspectsSettings( final HashMap parameterMap, 
-                                                final HashMap elementMap )
-        throws TaskException
-    {
-        final String[] names = getAspectManager().getNames();
-        
-        for( int i = 0; i < names.length; i++ )
-        {
-            final ArrayList elementList = (ArrayList)elementMap.remove( names[ i ] );
-
-            Parameters parameters = (Parameters)parameterMap.remove( names[ i ] );
-            if( null == parameters ) parameters = EMPTY_PARAMETERS;
-
-            Configuration[] elements = null;
-            if( null == elementList ) elements = EMPTY_ELEMENTS;
-            else
-            {
-                elements = (Configuration[])elementList.toArray( EMPTY_ELEMENTS );
-            }
-            
-            dispatch( names[ i ], parameters, elements );
-        }
-    }
-
-    private final void checkForUnusedSettings( final HashMap parameterMap, 
-                                               final HashMap elementMap )
-        throws TaskException
-    {
-        if( 0 != parameterMap.size() )
-        {
-            final String[] namespaces = 
-                (String[])parameterMap.keySet().toArray( new String[ 0 ] );
-
-            for( int i = 0; i < namespaces.length; i++ )
-            {
-                final String namespace = namespaces[ i ];
-                final Parameters parameters = (Parameters)parameterMap.get( namespace );
-                final ArrayList elementList = (ArrayList)elementMap.remove( namespace );
-                
-                Configuration[] elements = null;
-                
-                if( null == elementList ) elements = EMPTY_ELEMENTS;
-                else
-                {
-                    elements = (Configuration[])elementList.toArray( EMPTY_ELEMENTS );
-                }
-                
-                unusedSetting( namespace, parameters, elements );
-            }
-        }
-
-        if( 0 != elementMap.size() )
-        {
-            final String[] namespaces = 
-                (String[])elementMap.keySet().toArray( new String[ 0 ] );
-            
-            for( int i = 0; i < namespaces.length; i++ )
-            {
-                final String namespace = namespaces[ i ];
-                final ArrayList elementList = (ArrayList)elementMap.remove( namespace );
-                final Configuration[] elements = 
-                    (Configuration[])elementList.toArray( EMPTY_ELEMENTS );
-                
-                unusedSetting( namespace, EMPTY_PARAMETERS, elements );
-            }
-        }
-    }
-
-    private void unusedSetting( final String namespace, 
-                                final Parameters parameters, 
-                                final Configuration[] elements )
-        throws TaskException
-    {
-        throw new TaskException( "Unused aspect settings for namespace " + namespace + 
-                                " (parameterCount=" + parameters.getNames().length + 
-                                 " elementCount=" + elements.length + ")" ); 
-    }
-
-    private void dispatch( final String namespace, 
-                           final Parameters parameters, 
-                           final Configuration[] elements )
-        throws TaskException
-    {
-        getAspectManager().dispatchAspectSettings( namespace, parameters, elements );
-
-        if( getLogger().isDebugEnabled() )
-        {
-            getLogger().debug( "Dispatching Aspect Settings to: " + namespace + 
-                               " parameterCount=" + parameters.getNames().length + 
-                               " elementCount=" + elements.length ); 
-        }
-    }
-
-    private final void processElements( final Configuration taskModel, 
-                                        final DefaultConfiguration newTaskModel,
-                                        final HashMap map )
-    {
-        final Configuration[] elements = taskModel.getChildren();
-        for( int i = 0; i < elements.length; i++ )
-        {
-            final String name = elements[ i ].getName();
-            final int index = name.indexOf( ':' );
-            
-            if( -1 == index ) 
-            {
-                newTaskModel.addChild( elements[ i ] );
-            }
-            else
-            {
-                final String namespace = name.substring( 0, index );
-                final String localName = name.substring( index + 1 );
-                final ArrayList elementSet = getElements( namespace, map );
-                elementSet.add( elements[ i ] );
-            }
-        }
-    }
-
-    private final void processAttributes( final Configuration taskModel, 
-                                          final DefaultConfiguration newTaskModel,
-                                          final HashMap map )
-    {
-        final String[] attributes = taskModel.getAttributeNames();
-        for( int i = 0; i < attributes.length; i++ )
-        {
-            final String name = attributes[ i ];
-            final String value = taskModel.getAttribute( name, null );
-
-            final int index = name.indexOf( ':' );
-            
-            if( -1 == index ) 
-            {
-                newTaskModel.setAttribute( name, value );
-            }
-            else
-            {
-                final String namespace = name.substring( 0, index );
-                final String localName = name.substring( index + 1 );
-                final Parameters parameters = getParameters( namespace, map );
-                parameters.setParameter( localName, value );
-            }
-        }
-    }
-
-    private final ArrayList getElements( final String namespace, final HashMap map )
-    {
-        ArrayList elements = (ArrayList)map.get( namespace );
-
-        if( null == elements )
-        {
-            elements = new ArrayList();
-            map.put( namespace, elements );
-        }
-
-        return elements;
-    }
-
-    private final Parameters getParameters( final String namespace, final HashMap map )
-    {
-        Parameters parameters = (Parameters)map.get( namespace );
-
-        if( null == parameters )
-        {
-            parameters = new Parameters();
-            map.put( namespace, parameters );
-        }
-
-        return parameters;
-    }
-
-    protected final AspectManager getAspectManager()
-    {
-        return m_aspectManager;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/DefaultExecutionFrame.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/DefaultExecutionFrame.java
deleted file mode 100644
index 345939c..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/DefaultExecutionFrame.java
+++ /dev/null
@@ -1,86 +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.myrmidon.components.executor;
-
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.DefaultComponentManager;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.Loggable;
-import org.apache.log.Logger;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.components.aspect.AspectManager;
-import org.apache.myrmidon.components.builder.ProjectBuilder;
-import org.apache.myrmidon.components.configurer.Configurer;
-import org.apache.myrmidon.components.converter.ConverterRegistry;
-import org.apache.myrmidon.components.converter.MasterConverter;
-import org.apache.myrmidon.components.deployer.Deployer;
-import org.apache.myrmidon.components.executor.Executor;
-import org.apache.myrmidon.components.role.RoleManager;
-import org.apache.myrmidon.components.type.TypeManager;
-
-/**
- * Frames in which tasks are executed.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultExecutionFrame
-    implements ExecutionFrame, Loggable, Contextualizable, Composable
-{
-    private TypeManager              m_typeManager;
-
-    private Logger                   m_logger;
-    private TaskContext              m_context;
-    private ComponentManager         m_componentManager;
-
-    public void setLogger( final Logger logger )
-    {
-        m_logger = logger;
-    }
-
-    public void contextualize( final Context context )
-    {
-        m_context = (TaskContext)context;
-    }
-
-    /**
-     * Retrieve relevent services needed to deploy.
-     *
-     * @param componentManager the ComponentManager
-     * @exception ComponentException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_componentManager = componentManager;
-
-        m_typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
-    }
-
-    public TypeManager getTypeManager()
-    {
-        return m_typeManager;
-    }
-
-    public Logger getLogger()
-    {
-        return m_logger;
-    }
-
-    public TaskContext getContext()
-    {
-        return m_context;
-    }
-
-    public ComponentManager getComponentManager()
-    {
-        return m_componentManager;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/DefaultExecutor.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/DefaultExecutor.java
deleted file mode 100644
index 2e22a30..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/DefaultExecutor.java
+++ /dev/null
@@ -1,189 +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.myrmidon.components.executor;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.DefaultComponentManager;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLoggable;
-import org.apache.avalon.framework.logger.Loggable;
-import org.apache.log.Logger;
-import org.apache.myrmidon.api.Task;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.configurer.Configurer;
-import org.apache.myrmidon.components.type.TypeException;
-import org.apache.myrmidon.components.type.TypeFactory;
-import org.apache.myrmidon.components.type.TypeManager;
-
-public class DefaultExecutor
-    extends AbstractLoggable
-    implements Executor, Composable
-{
-    private Configurer           m_configurer;
-
-    /**
-     * Retrieve relevent services needed to deploy.
-     *
-     * @param componentManager the ComponentManager
-     * @exception ComponentException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_configurer = (Configurer)componentManager.lookup( Configurer.ROLE );
-    }
-
-    public void execute( final Configuration taskModel, final ExecutionFrame frame )
-        throws TaskException
-    {
-        getLogger().debug( "Creating" );
-        final Task task = createTask( taskModel.getName(), frame );
-        doLoggable( task, taskModel, frame.getLogger() );
-
-        getLogger().debug( "Contextualizing" );
-        doContextualize( task, taskModel, frame.getContext() );
-
-        getLogger().debug( "Composing" );
-        doCompose( task, taskModel, frame.getComponentManager() );
-
-        getLogger().debug( "Configuring" );
-        doConfigure( task, taskModel, frame.getContext() );
-
-        getLogger().debug( "Initializing" );
-        doInitialize( task, taskModel );
-
-        getLogger().debug( "Running" );
-
-        task.execute();
-
-        getLogger().debug( "Disposing" );
-        doDispose( task, taskModel );
-    }
-
-    protected final Task createTask( final String name, final ExecutionFrame frame )
-        throws TaskException
-    {
-        try
-        {
-            final TypeFactory factory = frame.getTypeManager().getFactory( Task.ROLE );
-            return (Task)factory.create( name );
-        }
-        catch( final TypeException te )
-        {
-            throw new TaskException( "Unable to create task " + name, te );
-        }
-    }
-
-    protected final void doConfigure( final Task task,
-                                      final Configuration taskModel,
-                                      final TaskContext context )
-        throws TaskException
-    {
-        try { m_configurer.configure( task, taskModel, context ); }
-        catch( final Throwable throwable )
-        {
-            throw new TaskException( "Error configuring task " +  taskModel.getName() + " at " +
-                                     taskModel.getLocation() + "(Reason: " +
-                                     throwable.getMessage() + ")", throwable );
-        }
-    }
-
-    protected final void doCompose( final Task task, 
-                                    final Configuration taskModel,
-                                    final ComponentManager componentManager )
-        throws TaskException
-    {
-        if( task instanceof Composable )
-        {
-            try { ((Composable)task).compose( componentManager ); }
-            catch( final Throwable throwable )
-            {
-                throw new TaskException( "Error composing task " +  taskModel.getName() + " at " +
-                                         taskModel.getLocation() + "(Reason: " +
-                                         throwable.getMessage() + ")", throwable );
-            }
-        }
-    }
-
-    protected final void doContextualize( final Task task,
-                                          final Configuration taskModel,
-                                          final TaskContext context )
-        throws TaskException
-    {
-        try
-        {
-            if( task instanceof Contextualizable )
-            {
-                ((Contextualizable)task).contextualize( context );
-            }
-        }
-        catch( final Throwable throwable )
-        {
-            throw new TaskException( "Error contextualizing task " +  taskModel.getName() + " at " +
-                                     taskModel.getLocation() + "(Reason: " +
-                                     throwable.getMessage() + ")", throwable );
-        }
-    }
-
-    protected final void doDispose( final Task task, final Configuration taskModel )
-        throws TaskException
-    {
-        if( task instanceof Disposable )
-        {
-            try { ((Disposable)task).dispose(); }
-            catch( final Throwable throwable )
-            {
-                throw new TaskException( "Error disposing task " +  taskModel.getName() + " at " +
-                                         taskModel.getLocation() + "(Reason: " +
-                                         throwable.getMessage() + ")", throwable );
-            }
-        }
-    }
-
-    protected final void doLoggable( final Task task, 
-                                     final Configuration taskModel, 
-                                     final Logger logger )
-        throws TaskException
-    {
-        if( task instanceof Loggable )
-        {
-            try { ((Loggable)task).setLogger( logger ); }
-            catch( final Throwable throwable )
-            {
-                throw new TaskException( "Error setting logger for task " +  taskModel.getName() + 
-                                         " at " + taskModel.getLocation() + "(Reason: " +
-                                         throwable.getMessage() + ")", throwable );
-            }
-        }
-    }
-
-    protected final void doInitialize( final Task task, final Configuration taskModel )
-        throws TaskException
-    {
-        if( task instanceof Initializable )
-        {
-            try { ((Initializable)task).initialize(); }
-            catch( final Throwable throwable )
-            {
-                throw new TaskException( "Error initializing task " +  taskModel.getName() + " at " +
-                                         taskModel.getLocation() + "(Reason: " +
-                                         throwable.getMessage() + ")", throwable );
-            }
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/ExecutionFrame.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/ExecutionFrame.java
deleted file mode 100644
index 22f354c..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/ExecutionFrame.java
+++ /dev/null
@@ -1,26 +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.myrmidon.components.executor;
-
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.log.Logger;
-import org.apache.myrmidon.components.type.TypeManager;
-import org.apache.myrmidon.api.TaskContext;
-
-/**
- * Frames in which tasks are executed.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface ExecutionFrame
-{
-    TypeManager getTypeManager();
-    Logger getLogger();
-    TaskContext getContext();
-    ComponentManager getComponentManager();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/Executor.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/Executor.java
deleted file mode 100644
index e41dcf9..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/Executor.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.myrmidon.components.executor;
-
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
- 
-/**
- * Engine inteface that should be implemented by all tasklet engines.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Executor
-    extends Component
-{
-    String ROLE = "org.apache.myrmidon.components.executor.Executor";
-
-    /**
-     * execute a task.
-     *
-     * @param task the configruation data for task
-     * @exception TaskException if an error occurs
-     */
-    void execute( Configuration task, ExecutionFrame frame )
-        throws TaskException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/PrintingExecutor.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/PrintingExecutor.java
deleted file mode 100644
index 6ba68aa..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/PrintingExecutor.java
+++ /dev/null
@@ -1,76 +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.myrmidon.components.executor;
-
-import org.apache.myrmidon.api.Task;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.avalon.framework.configuration.Configuration;
-
-public class PrintingExecutor
-    extends AspectAwareExecutor
-{
-    protected void doExecute( final Configuration taskModel, final Task task )
-        throws TaskException
-    {
-        final StringBuffer sb = new StringBuffer();
-        printConfiguration( taskModel, 0, sb );
-        
-        System.out.println( sb.toString() );
-    }
-
-    private void printConfiguration( final Configuration taskModel, 
-                                     final int level, 
-                                     final StringBuffer sb )
-    {
-        for( int i = 0; i < level; i++ )
-        {
-            sb.append( ' ' );
-        }
-        
-        sb.append( '<' );
-        sb.append( taskModel.getName() );
-
-
-        final String[] names = taskModel.getAttributeNames();
-        for( int i = 0; i < names.length; i++ )
-        {
-            final String name = names[ i ];
-            final String value = taskModel.getAttribute( name, null );
-
-            sb.append( ' ' );
-            sb.append( name );
-            sb.append( "=\"" );
-            sb.append( value );
-            sb.append( '\"' );
-        }
-
-        final Configuration[] children = taskModel.getChildren();
-        if( 0 == children.length )
-        {
-            sb.append( "/>\n" );
-        }
-        else
-        {
-            sb.append( ">\n" );
-
-            for( int i = 0; i < children.length; i++ )
-            {
-                printConfiguration( children[ i ], level + 1, sb );
-            }
-
-            for( int i = 0; i < level; i++ )
-            {
-                sb.append( ' ' );
-            }
-
-            sb.append( "</" );
-            sb.append( taskModel.getName() );
-            sb.append( ">\n" );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/DefaultProject.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/DefaultProject.java
deleted file mode 100644
index 83ec132..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/DefaultProject.java
+++ /dev/null
@@ -1,198 +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.myrmidon.components.model;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-/**
- * Default project implementation.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultProject
-    implements Project
-{
-    ///The imports
-    private final ArrayList m_imports         = new ArrayList();
-
-    ///The projects refferred to by this project
-    private final HashMap   m_projects        = new HashMap();
-
-    ///The targets contained by this project
-    private final HashMap   m_targets         = new HashMap();
-
-    ///The implicit target (not present in m_targets)
-    private Target          m_implicitTarget;
-
-    ///The name of the default target
-    private String          m_defaultTarget;
-
-    ///The base directory of project
-    private File            m_baseDirectory;
-
-    /**
-     * Get the imports for project.
-     *
-     * @return the imports
-     */
-    public TypeLib[] getTypeLibs()
-    {
-        return (TypeLib[])m_imports.toArray( new TypeLib[ 0 ] );
-    }
-
-    /**
-     * Get names of projects referred to by this project.
-     *
-     * @return the names
-     */
-    public String[] getProjectNames()
-    {
-        return (String[])m_projects.keySet().toArray( new String[ 0 ] );
-    }
-
-    /**
-     * Retrieve project reffered to by this project.
-     *
-     * @param name the project name
-     * @return the Project or null if none by that name
-     */
-    public Project getProject( final String name )
-    {
-        return (Project)m_projects.get( name );
-    }
-
-    /**
-     * Retrieve base directory of project.
-     *
-     * @return the projects base directory
-     */
-    public final File getBaseDirectory()
-    {
-        return m_baseDirectory;
-    }
-
-    /**
-     * Retrieve implicit target.
-     * The implicit target contains all the top level tasks.
-     *
-     * @return the Target
-     */
-    public final Target getImplicitTarget()
-    {
-        return m_implicitTarget;
-    }
-
-    /**
-     * Set ImplicitTarget.
-     *
-     * @param target the implicit target
-     */
-    public final 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 final Target getTarget( final String targetName )
-    {
-        return (Target)m_targets.get( targetName );
-    }
-
-    /**
-     * Get name of default target.
-     *
-     * @return the default target name
-     */
-    public final String getDefaultTargetName()
-    {
-        return m_defaultTarget;
-    }
-
-    /**
-     * Retrieve names of all targets in project.
-     *
-     * @return an array target names
-     */
-    public final String[] getTargetNames()
-    {
-        return (String[])m_targets.keySet().toArray( new String[ 0 ] );
-    }
-
-    /**
-     * Set DefaultTargetName.
-     *
-     * @param defaultTarget the default target name
-     */
-    public final void setDefaultTargetName( final String defaultTarget )
-    {
-        m_defaultTarget = defaultTarget;
-    }
-
-    /**
-     * Retrieve base directory of project.
-     *
-     * @return the projects base directory
-     */
-    public final void setBaseDirectory( final File baseDirectory )
-    {
-        m_baseDirectory = baseDirectory;
-    }
-
-    public final void addTypeLib( final TypeLib typeLib )
-    {
-        m_imports.add( typeLib );
-    }
-
-    /**
-     * Add a target.
-     *
-     * @param name the name of target
-     * @param target the Target
-     * @exception IllegalArgumentException if target already exists with same name
-     */
-    public final void addTarget( final String name, final Target target )
-    {
-        if( null != m_targets.get( name ) )
-        {
-            throw new IllegalArgumentException( "Can not have two targets in a " +
-                                                "file with the name " + name );
-        }
-        else
-        {
-            m_targets.put( name, target );
-        }
-    }
-
-    /**
-     * Add a project reference.
-     *
-     * @param name the name of target
-     * @param project the Project
-     * @exception IllegalArgumentException if project already exists with same name
-     */
-    public final void addProject( final String name, final Project project )
-    {
-        if( null != m_projects.get( name ) )
-        {
-            throw new IllegalArgumentException( "Can not have two projects referenced in a " +
-                                                "file with the name " + name );
-        }
-        else
-        {
-            m_projects.put( name, project );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/Project.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/Project.java
deleted file mode 100644
index 18ca3e7..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/Project.java
+++ /dev/null
@@ -1,95 +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.myrmidon.components.model;
-
-import java.io.File;
-import org.apache.avalon.framework.component.Component;
-
-/**
- * Abstraction used to interact with projects.
- * Implementations may choose to structure it anyway they choose.
- *
- * TODO: Determine if projects should carry their own name. Breaks IOC but
- * Can be useful as project files embed own name (or should that be description).
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Project
-    extends Component
-{
-    String ROLE = "org.apache.myrmidon.components.model.Project";
-
-    // the name of currently executing project
-    String PROJECT          = "myrmidon.project.name";
-
-    // the name of currently executing project
-    //String PROJECT_FILE     = "myrmidon.project.file";
-
-    // the name of currently executing target
-    //String TARGET           = "myrmidon.target.name";
-
-    /**
-     * Get the imports for project.
-     *
-     * @return the imports
-     */
-    TypeLib[] getTypeLibs();
-
-    /**
-     * Get names of projects referred to by this project.
-     *
-     * @return the names
-     */
-    String[] getProjectNames();
-
-    /**
-     * Retrieve project reffered to by this project.
-     *
-     * @param name the project name
-     * @return the Project or null if none by that name
-     */
-    Project getProject( String 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
-     */
-    String[] getTargetNames();
-
-    /**
-     * Retrieve base directory of project.
-     *
-     * @return the projects base directory
-     */
-    File getBaseDirectory();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/Target.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/Target.java
deleted file mode 100644
index 3e88fd2..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/Target.java
+++ /dev/null
@@ -1,78 +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.myrmidon.components.model;
-
-import java.util.ArrayList;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.myrmidon.framework.Condition;
-
-/**
- * Targets in build file.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Target
-{
-    private final ArrayList   m_dependencies     = new ArrayList();
-    private final ArrayList   m_tasks            = new ArrayList();
-    private final Condition   m_condition;
-
-    /**
-     * Constructor taking condition for target.
-     *
-     * @param condition the condition
-     */
-    public Target( final Condition condition, 
-                   final Configuration[] tasks, 
-                   final String[] dependencies )
-    {
-        m_condition = condition;
-
-        for( int i = 0; i < tasks.length; i++ )
-        {
-            m_tasks.add( tasks[ i ] );
-        }
-
-        if( null != dependencies )
-        {
-            for( int i = 0; i < dependencies.length; i++ )
-            {
-                m_dependencies.add( dependencies[ i ] );
-            }
-        }
-    }
-
-    /**
-     * Get condition under which target is executed.
-     *
-     * @return the condition for target or null
-     */
-    public final Condition getCondition()
-    {
-        return m_condition;
-    }
-    /**
-     * Get dependencies of target
-     *
-     * @return the dependency list
-     */
-    public final String[] getDependencies()
-    {
-        return (String[])m_dependencies.toArray( new String[ 0 ] );
-    }
-
-    /**
-     * Get tasks in target
-     *
-     * @return the target list
-     */
-    public final Configuration[] getTasks()
-    {
-        return (Configuration[])m_tasks.toArray( new Configuration[ 0 ] );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/TypeLib.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/TypeLib.java
deleted file mode 100644
index 60410a3..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/model/TypeLib.java
+++ /dev/null
@@ -1,82 +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.myrmidon.components.model;
-
-/**
- * Imports in a build file.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class TypeLib
-{
-    //Name of library (this is location independent)
-    private final String    m_library;
-
-    //Do we need this??
-    //private final String    m_namespace;
-
-    //The role of object to be imported
-    private final String    m_role;
-
-    //The name of type instance
-    private final String    m_name;
-
-    public TypeLib( final String library )
-    {
-        this( library, null, null );
-    }
-
-    public TypeLib( final String library, final String role, final String name )
-    {
-        m_library = library;
-        m_role = role;
-        m_name = name;
-       
-        //If only one of name or type is null, throw an exception
-        if( null == m_role || null == m_name )
-        {
-            if( null != m_role || null != m_name )
-            {
-                throw new IllegalArgumentException( "Can not have an import that specifies " +
-                                                    "only one of; name or role" );
-            }
-        }
-    }
-
-    /**
-     * Get role
-     *
-     * @return the role
-     */
-    public final String getRole()
-    {
-        return m_role;
-    }
-
-    /**
-     * Get name of imported 
-     *
-     * @return the name
-     */
-    public final String getName()
-    {
-        return m_name;
-    }
-
-    /**
-     * Get name of library 
-     *
-     * @return the library name
-     */
-    public final String getLibrary()
-    {
-        return m_library;
-    }
-}
-
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/role/DefaultRoleManager.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/role/DefaultRoleManager.java
deleted file mode 100644
index ff0c391..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/role/DefaultRoleManager.java
+++ /dev/null
@@ -1,169 +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.myrmidon.components.role;
-
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.HashMap;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.SAXConfigurationHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
-/**
- * Interface to manage roles and mapping to names.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- * @version CVS $Revision$ $Date$
- */
-public class DefaultRoleManager
-    implements RoleManager, Initializable
-{
-    private final static String ROLE_DESCRIPTOR = "META-INF/ant-roles.xml";
-
-    /** Parent <code>RoleManager</code> for nested resolution */
-    private final RoleManager  m_parent;
-
-    /** Map for name to role mapping */
-    private final HashMap      m_names = new HashMap();
-
-    /** Map for role to name mapping */
-    private final HashMap      m_roles = new HashMap();
-
-    /**
-     *  constructor--this RoleManager has no parent.
-     */
-    public DefaultRoleManager()
-    {
-        this( null );
-    }
-
-    /**
-     * Alternate constructor--this RoleManager has the specified
-     * parent.
-     *
-     * @param parent The parent <code>RoleManager</code>.
-     */
-    public DefaultRoleManager( final RoleManager parent )
-    {
-        m_parent = parent;
-    }
-
-    /**
-     * initialize the RoleManager.
-     * This involves reading all Role descriptors in common classloader.
-     *
-     * @exception Exception if an error occurs
-     */
-    public void initialize()
-        throws Exception
-    {
-        final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
-        final SAXParser saxParser = saxParserFactory.newSAXParser();
-        final XMLReader parser = saxParser.getXMLReader();
-        //parser.setFeature( "http://xml.org/sax/features/namespace-prefixes", false );
-
-        final SAXConfigurationHandler handler = new SAXConfigurationHandler();
-        parser.setContentHandler( handler );
-        parser.setErrorHandler( handler );
-
-        final Enumeration enum = getClass().getClassLoader().getResources( ROLE_DESCRIPTOR );
-        while( enum.hasMoreElements() )
-        {
-            final URL url = (URL)enum.nextElement();
-            parser.parse( url.toString() );
-            handleDescriptor( handler.getConfiguration() );
-        }
-    }
-
-    /**
-     * Configure RoleManager based on contents of single descriptor.
-     *
-     * @param descriptor the descriptor
-     * @exception ConfigurationException if an error occurs
-     */
-    private void handleDescriptor( final Configuration descriptor )
-        throws ConfigurationException
-    {
-        final Configuration[] types = descriptor.getChildren( "role" );
-        for( int i = 0; i < types.length; i++ )
-        {
-            final String name = types[ i ].getAttribute( "shorthand" );
-            final String role = types[ i ].getAttribute( "name" );
-            addNameRoleMapping( name, role );
-        }
-    }
-
-    /**
-     * Find Role name based on shorthand name.
-     *
-     * @param name the shorthand name
-     * @return the role
-     */
-    public String getRoleForName( final String name )
-    {
-        final String role = (String)m_names.get( name );
-
-        if( null == role && null != m_parent )
-        {
-            return m_parent.getRoleForName( name );
-        }
-
-        return role;
-    }
-
-    /**
-     * Find name based on role.
-     *
-     * @param role the role
-     * @return the name
-     */
-    public String getNameForRole( final String role )
-    {
-        final String name = (String)m_roles.get( role );
-
-        if( null == name && null != m_parent )
-        {
-            return m_parent.getNameForRole( name );
-        }
-
-        return name;
-    }
-
-    /**
-     * Add a mapping between name and role
-     *
-     * @param name the shorthand name
-     * @param role the role
-     * @exception IllegalArgumentException if an name is already mapped to a different role
-     */
-    public void addNameRoleMapping( final String name, final String role )
-        throws IllegalArgumentException
-    {
-        final String oldRole = (String)m_names.get( name );
-        if( null != oldRole && oldRole.equals( role ) )
-        {
-            throw new IllegalArgumentException( "Name already mapped to another role (" +
-                                                oldRole + ")" );
-        }
-
-        final String oldName = (String)m_roles.get( role );
-        if( null != oldName && oldName.equals( name ) )
-        {
-            throw new IllegalArgumentException( "Role already mapped to another name (" +
-                                                oldName + ")" );
-        }
-
-        m_names.put( name, role );
-        m_roles.put( role, name );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/role/RoleManager.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/role/RoleManager.java
deleted file mode 100644
index afc1a5d..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/role/RoleManager.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.myrmidon.components.role;
-
-import org.apache.avalon.framework.component.Component;
-
-/**
- * Interface to manage roles and mapping to shorthand names.
- *
- * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @author <a href="mailto:ricardo@apache,org">Ricardo Rocha</a>
- * @author <a href="mailto:giacomo@apache,org">Giacomo Pati</a>
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- * @version CVS $Revision$ $Date$
- */
-public interface RoleManager
-    extends Component
-{
-    String ROLE = "org.apache.myrmidon.components.deployer.RoleManager";
-
-    /**
-     * Find Role name based on shorthand name.
-     *
-     * @param shorthandName the shorthand name
-     * @return the role
-     */
-    String getRoleForName( String name );
-
-    /**
-     * Find name based on role.
-     *
-     * @param role the role
-     * @return the name
-     */
-    String getNameForRole( String role );
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/DefaultTypeFactory.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/DefaultTypeFactory.java
deleted file mode 100644
index 5293c8a..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/DefaultTypeFactory.java
+++ /dev/null
@@ -1,107 +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.myrmidon.components.type;
-
-import java.net.URL;
-import java.util.HashMap;
-import java.net.URLClassLoader;
-
-/**
- * Create a type instance based on name.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- * @version CVS $Revision$ $Date$
- */
-public class DefaultTypeFactory
-    implements TypeFactory
-{
-    ///A Map of shortnames to classnames
-    private final HashMap        m_classNames = new HashMap();
-
-    ///A list of URLs from which classLoader is constructed
-    private final URL[]          m_urls;
-
-    ///The parent classLoader (if any)
-    private final ClassLoader    m_parent;
-
-    ///The parent classLoader (if any)
-    private ClassLoader          m_classLoader;
-
-    public DefaultTypeFactory( final URL url )
-    {
-        this( new URL[] { url } );
-    }
-
-    public DefaultTypeFactory( final URL[] urls )
-    {
-        this( urls, Thread.currentThread().getContextClassLoader() );
-    }
-
-    public DefaultTypeFactory( final URL[] urls, final ClassLoader parent )
-    {
-        m_urls = urls;
-        m_parent = parent;
-    }
-
-    public DefaultTypeFactory( final ClassLoader classLoader )
-    {
-        this( null, null );
-        m_classLoader = classLoader;
-    }
-
-    public void addNameClassMapping( final String name, final String className )
-    {
-        m_classNames.put( name, className );
-    }
-
-    /**
-     * Create a type instance with appropriate name.
-     *
-     * @param name the name
-     * @return the created instance
-     * @exception TypeException if an error occurs
-     */
-    public Object create( final String name )
-        throws TypeException
-    {
-        final String className = getClassName( name );
-
-        try
-        {
-            return getClassLoader().loadClass( className ).newInstance();
-        }
-        catch( final Exception e )
-        {
-            throw new TypeException( "Unable to instantiate '" + name + "'", e );
-        }
-    }
-
-    private String getClassName( final String name )
-        throws TypeException
-    {
-        final String className = (String)m_classNames.get( name );
-
-        if( null == className )
-        {
-            throw new TypeException( "Malconfigured factory, no clasname for '" + 
-                                     name + "'" );
-        }
-        
-        return className;
-    }
-
-    private ClassLoader getClassLoader()
-    {
-        if( null == m_classLoader )
-        {
-            m_classLoader = new URLClassLoader( m_urls, m_parent );
-        }
-        
-        return m_classLoader;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/DefaultTypeManager.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/DefaultTypeManager.java
deleted file mode 100644
index 37a30f9..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/DefaultTypeManager.java
+++ /dev/null
@@ -1,116 +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.myrmidon.components.type;
-
-import java.util.HashMap;
-
-/**
- * The interface that is used to manage types.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultTypeManager
-    implements TypeManager
-{
-    ///Parent type manager to inherit values from.
-    private final DefaultTypeManager  m_parent;
-
-    ///Maps role to MultiSourceTypeFactory.
-    private final HashMap             m_roleMap      = new HashMap();
-
-    public DefaultTypeManager()
-    {
-        this( null );
-    }
-
-    public DefaultTypeManager( final DefaultTypeManager parent )
-    {
-        m_parent = parent;
-    }
-
-    public void registerType( final String role, 
-                              final String shorthandName, 
-                              final TypeFactory factory ) 
-        throws TypeException
-    {
-        final MultiSourceTypeFactory msFactory = createFactory( role );
-        msFactory.register( shorthandName, factory );
-    }
-
-    public TypeFactory getFactory( final String role )
-        throws TypeException
-    {
-        return createFactory( role );
-    }
-
-    public TypeManager createChildTypeManager()
-    {
-        return new DefaultTypeManager( this );
-    }
-
-    protected final MultiSourceTypeFactory lookupFactory( final String role )
-    {
-        return (MultiSourceTypeFactory)m_roleMap.get( role );
-    }
-
-    /**
-     * Get a factory of appropriate role.
-     * Create a Factory if none exists with same name.
-     *
-     * @param role the role name(must be name of work interface)
-     * @return the Factory for interface
-     * @exception TypeException role does not specify accessible work interface 
-     */
-    private MultiSourceTypeFactory createFactory( final String role )
-        throws TypeException
-    {
-        MultiSourceTypeFactory factory = (MultiSourceTypeFactory)m_roleMap.get( role );
-        if( null != factory ) 
-        {
-            return factory;
-        }
-
-        final MultiSourceTypeFactory parentFactory = getParentTypedFactory( role );       
-        if( null != parentFactory )
-        {
-            factory = new MultiSourceTypeFactory( parentFactory );
-        }
-
-        ///If we haven't got factory try to create a new one
-        if( null == factory )
-        {
-            try
-            {
-                //TODO: Should we use ContextClassLoader here ??? Or perhaps try that on failure??
-                final Class clazz = Class.forName( role );
-                factory = new MultiSourceTypeFactory( clazz );
-            }
-            catch( final Exception e )
-            {
-                throw new TypeException( "Role '" + role + "' does not specify " +
-                                         "accessible work interface" );
-            }
-        }        
-
-        m_roleMap.put( role, factory );
-
-        return factory;
-    }
-
-    private MultiSourceTypeFactory getParentTypedFactory( final String role )
-    {
-        if( null != m_parent )
-        {
-            return m_parent.lookupFactory( role );
-        }
-        else
-        {       
-            return null;
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/MultiSourceTypeFactory.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/MultiSourceTypeFactory.java
deleted file mode 100644
index 887c127..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/MultiSourceTypeFactory.java
+++ /dev/null
@@ -1,99 +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.myrmidon.components.type;
-
-import java.util.HashMap;
-
-/**
- * This factory acts as a proxy to set of object factorys.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class MultiSourceTypeFactory
-    implements TypeFactory               
-{
-    ///Parent Selector
-    private final MultiSourceTypeFactory  m_parent;
-
-    ///Map of name->factory list
-    private final HashMap                 m_factorys = new HashMap();
-
-    ///Type expected to be created from factorys
-    private final Class                   m_type;
-
-    public MultiSourceTypeFactory( final Class type )
-    {
-        m_type = type;
-        m_parent = null;
-    }
-
-    public MultiSourceTypeFactory( final MultiSourceTypeFactory parent )
-    {
-        m_type = parent.getType();
-        m_parent = parent;
-    }
-
-    /**
-     * Populate the ComponentSelector.
-     */
-    public void register( final String name, final TypeFactory factory )
-    {
-        m_factorys.put( name, factory );
-    }
-
-    /**
-     * Create a type instance based on name.
-     *
-     * @param name the name
-     * @return the type instance
-     * @exception TypeException if an error occurs
-     */
-    public Object create( final String name )
-        throws TypeException
-    {
-        TypeFactory factory = getTypeFactory( name );
-
-        if( null == factory && null != m_parent ) 
-        {
-            factory = m_parent.getTypeFactory( name );
-        }
-
-        if( null == factory ) 
-        {
-            throw new TypeException( "Failed to locate factory for '" + name + "'" );
-        }
-        else
-        {
-            final Object object = factory.create( name );
-
-            if( !m_type.isInstance( object ) )
-            {
-                throw new TypeException( "Object '" + name + "' is not of " +
-                                         "correct Type (" + m_type.getName() + ")" );
-            }
-
-            return object;
-        }
-    }
-
-    /**
-     * Retrieve type managed by selector.
-     * Used by other instances of TypedComponentSelector.
-     *
-     * @return the type class
-     */
-    protected final Class getType()
-    {
-        return m_type;
-    }
-
-    protected final TypeFactory getTypeFactory( final String name )
-    {
-        return (TypeFactory)m_factorys.get( name );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/TypeException.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/TypeException.java
deleted file mode 100644
index a510be9..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/TypeException.java
+++ /dev/null
@@ -1,40 +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.myrmidon.components.type;
-
-import org.apache.avalon.framework.CascadingException;
-
-/**
- * Exception to indicate problem with type instantiating.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public final class TypeException
-    extends CascadingException
-{
-    /**
-     * Construct a new <code>TypeException</code> instance.
-     *
-     * @param message The detail message for this exception.
-     */
-    public TypeException( final String message )
-    {
-        this( message, null );
-    }
-
-    /**
-     * Construct a new <code>TypeException</code> instance.
-     *
-     * @param message The detail message for this exception.
-     * @param throwable the root cause of the exception
-     */
-    public TypeException( final String message, final Throwable throwable )
-    {
-        super( message, throwable );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/TypeFactory.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/TypeFactory.java
deleted file mode 100644
index 7b88ab1..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/TypeFactory.java
+++ /dev/null
@@ -1,27 +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.myrmidon.components.type;
-
-/**
- * Create an instance on name.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- * @version CVS $Revision$ $Date$
- */
-public interface TypeFactory
-{
-    /**
-     * Create a type instance based on name.
-     *
-     * @param name the name
-     * @return the type instance
-     * @exception TypeException if an error occurs
-     */
-    Object create( String name )
-        throws TypeException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/TypeManager.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/TypeManager.java
deleted file mode 100644
index 7cba6eb..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/type/TypeManager.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.myrmidon.components.type;
-
-import org.apache.avalon.framework.component.Component;
-
-/**
- * The interface that is used to manage types.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface TypeManager
-    extends Component
-{
-    String ROLE = "org.apache.myrmidon.components.type.TypeManager";
-
-    void registerType( String role, String shorthandName, TypeFactory factory )
-        throws TypeException;
-
-    TypeFactory getFactory( String role )
-        throws TypeException;
-
-    TypeManager createChildTypeManager();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java
deleted file mode 100644
index 0445901..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java
+++ /dev/null
@@ -1,456 +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.myrmidon.components.workspace;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.DefaultComponentManager;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.logger.AbstractLoggable;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.log.Hierarchy;
-import org.apache.log.Logger;
-import org.apache.log.LogTarget;
-import org.apache.myrmidon.api.DefaultTaskContext;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.deployer.DefaultDeployer;
-import org.apache.myrmidon.components.deployer.Deployer;
-import org.apache.myrmidon.components.deployer.DeploymentException;
-import org.apache.myrmidon.components.executor.DefaultExecutionFrame;
-import org.apache.myrmidon.components.executor.ExecutionFrame;
-import org.apache.myrmidon.components.executor.Executor;
-import org.apache.myrmidon.components.model.Project;
-import org.apache.myrmidon.components.model.Target;
-import org.apache.myrmidon.components.model.TypeLib;
-import org.apache.myrmidon.components.type.TypeManager;
-import org.apache.myrmidon.framework.Condition;
-import org.apache.myrmidon.listeners.ProjectListener;
-
-/**
- * This is the default implementation of Workspace.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultWorkspace
-    extends AbstractLoggable
-    implements Workspace, Composable, Parameterizable, Initializable
-{
-    private Executor                 m_executor;
-    private ProjectListenerSupport   m_listenerSupport   = new ProjectListenerSupport();
-    private ComponentManager         m_componentManager;
-    private Parameters               m_parameters;
-    private TaskContext              m_baseContext;
-    private HashMap                  m_entrys            = new HashMap();
-    private TypeManager              m_typeManager;
-    private Hierarchy                m_hierarchy;
-    private int                      m_projectID;
-
-    /**
-     * 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 ComponentException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_componentManager = componentManager;
-        m_typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
-        m_executor = (Executor)componentManager.lookup( Executor.ROLE );
-    }
-
-    public void parameterize( final Parameters parameters )
-        throws ParameterException
-    {
-        m_parameters = parameters;
-    }
-
-    public void initialize()
-        throws Exception
-    {
-        m_baseContext = createBaseContext();
-
-        m_hierarchy = new Hierarchy();
-
-        final LogTarget target = new LogTargetToListenerAdapter( m_listenerSupport );
-        m_hierarchy.setDefaultLogTarget( target );
-    }
-
-    /**
-     * Execute a target in a particular project.
-     * Execute in the project context.
-     *
-     * @param project the Project
-     * @param target the name of the target
-     * @exception TaskException if an error occurs
-     */
-    public void executeProject( final Project project, final String target )
-        throws TaskException
-    {
-        final ProjectEntry entry = getProjectEntry( project );
-
-        m_listenerSupport.projectStarted();
-
-        executeTarget( "<init>", project.getImplicitTarget(), entry.getFrame() );
-
-        execute( project, target, entry );
-
-        m_listenerSupport.projectFinished();
-    }
-
-
-    private TaskContext createBaseContext()
-        throws TaskException
-    {
-        final TaskContext context = new DefaultTaskContext();
-
-        final String[] names = m_parameters.getNames();
-        for( int i = 0; i < names.length; i++ )
-        {
-            final String value = m_parameters.getParameter( names[ i ], null );
-            context.setProperty( names[ i ], value );
-        }
-
-        //Add system properties so that they overide user-defined properties
-        addToContext( context, System.getProperties() );
-
-        return context;
-    }
-
-    private File findTypeLib( final String libraryName )
-        throws TaskException
-    {
-        //TODO: In future this will be expanded to allow
-        //users to specify search path or automagically 
-        //add entries to lib path (like user specific or 
-        //workspace specific)
-        final String name = libraryName.replace( '/', File.separatorChar ) + ".atl";
-
-        final String home = System.getProperty( "myrmidon.home" );
-        final File homeDir = new File( home + File.separatorChar + "ext" );
-        
-        final File library = new File( homeDir, name );
-
-        if( library.exists() )
-        {
-            if( !library.canRead() )
-            {
-                throw new TaskException( "Unable to read library at " + library );
-            }
-            else
-            {
-                return library;
-            }
-        }
-
-        throw new TaskException( "Unable to locate Type Library " + libraryName );
-    }
-
-    private void deployTypeLib( final Deployer deployer, final Project project )
-        throws TaskException
-    {
-        final TypeLib[] typeLibs = project.getTypeLibs();
-
-        for( int i = 0; i < typeLibs.length; i++ )
-        {
-            final TypeLib typeLib = typeLibs[ i ];
-            final File file = findTypeLib( typeLib.getLibrary() );
-
-            try
-            {
-                if( null == typeLib.getRole() )
-                {
-                    deployer.deploy( file );
-                }
-                else
-                {
-                    deployer.deployType( typeLib.getRole(), typeLib.getName(), file );
-                }
-            }
-            catch( final DeploymentException de )
-            {
-                throw new TaskException( "Error deploying type library " +
-                                         typeLib + " at " + file, de );
-            }
-        }
-    }
-
-    private ExecutionFrame createExecutionFrame( final Project project )
-        throws TaskException
-    {
-        final TaskContext context = new DefaultTaskContext( m_baseContext );
-        context.setProperty( TaskContext.BASE_DIRECTORY, project.getBaseDirectory() );
-
-        //Create per frame ComponentManager
-        final DefaultComponentManager componentManager =
-            new DefaultComponentManager( m_componentManager );
-
-        //Add in child type manager so each frame can register different
-        //sets of tasks etc
-        final TypeManager typeManager = m_typeManager.createChildTypeManager();
-        componentManager.put( TypeManager.ROLE, typeManager );
-
-        //We need to create a new deployer so that it deploys
-        //to project specific TypeManager
-        final DefaultDeployer deployer = new DefaultDeployer();
-        deployer.setLogger( getLogger() );
-
-        try { deployer.compose( componentManager ); }
-        catch( final ComponentException ce )
-        {
-            throw new TaskException( "Error configuring deployer", ce );
-        }
-
-        //HACK: Didn't call initialize because Deployer contained in Embeddor
-        // Already initialized and this would be reduendent
-        //deployer.initialize();
-
-        componentManager.put( Deployer.ROLE, deployer );
-
-        deployTypeLib( deployer, project );
-
-        //We need to place projects and ProjectManager
-        //in ComponentManager so as to support project-local call()
-        componentManager.put( Workspace.ROLE, this );
-        componentManager.put( Project.ROLE, project );
-
-        final String[] names = project.getProjectNames();
-        for( int i = 0; i < names.length; i++ )
-        {
-            final String name = names[ i ];
-            final Project other = project.getProject( name );
-            componentManager.put( Project.ROLE + "/" + name, other );
-        }
-
-        final DefaultExecutionFrame frame = new DefaultExecutionFrame();
-
-        try
-        {
-            final Logger logger = m_hierarchy.getLoggerFor( "project" + m_projectID );
-            m_projectID++;
-
-            frame.setLogger( logger );
-            frame.contextualize( context );
-            frame.compose( componentManager );
-        }
-        catch( final Exception e )
-        {
-            throw new TaskException( "Error setting up ExecutionFrame", e );
-        }
-
-        return frame;
-    }
-
-    private ProjectEntry getProjectEntry( final Project project )
-        throws TaskException
-    {
-        ProjectEntry entry = (ProjectEntry)m_entrys.get( project );
-
-        if( null == entry )
-        {
-            final ExecutionFrame frame = createExecutionFrame( project );
-            entry = new ProjectEntry( project, frame );
-            m_entrys.put( project, entry );
-        }
-
-        return entry;
-    }
-
-    private Project getProject( final String name, final Project project )
-        throws TaskException
-    {
-        final Project other = project.getProject( name );
-
-        if( null == other )
-        {
-            //TODO: Fix this so location information included in description
-            throw new TaskException( "Project '" + name + "' not found." );
-        }
-
-        return other;
-    }
-
-    /**
-     * 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 TaskException if an error occurs
-     */
-    private void execute( final Project project,
-                          final String targetName,
-                          final ProjectEntry entry )
-        throws TaskException
-    {
-        final int index = targetName.indexOf( "->" );
-        if( -1 != index )
-        {
-            final String name = targetName.substring( 0, index );
-            final String otherTargetName = targetName.substring( index + 2 );
-
-            final Project otherProject = getProject( name, project );
-            final ProjectEntry otherEntry = getProjectEntry( otherProject );
-
-            //Execute target in referenced project
-            execute( otherProject, otherTargetName, otherEntry );
-            return;
-        }
-
-        final Target target = project.getTarget( targetName );
-        if( null == target )
-        {
-            throw new TaskException( "Unable to find target " + targetName );
-        }
-
-        //add target to list of targets executed
-        entry.completeTarget( targetName );
-
-        //execute all dependencies
-        final String[] dependencies = target.getDependencies();
-        for( int i = 0; i < dependencies.length; i++ )
-        {
-            if( !entry.isTargetCompleted( dependencies[ i ] ) )
-            {
-                execute( project, dependencies[ i ], entry );
-            }
-        }
-
-        //notify listeners
-        m_listenerSupport.targetStarted( targetName );
-
-        executeTarget( targetName, target, entry.getFrame() );
-
-        //notify listeners
-        m_listenerSupport.targetFinished();
-    }
-
-    /**
-     * 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 TaskException if an error occurs
-     */
-    private void executeTarget( final String name,
-                                final Target target,
-                                final ExecutionFrame frame )
-        throws TaskException
-    {
-        //check the condition associated with target.
-        //if it is not satisfied then skip target
-        final Condition condition = target.getCondition();
-        if( null != condition )
-        {
-            try
-            {
-                if( false == condition.evaluate( frame.getContext() ) )
-                {
-                    getLogger().debug( "Skipping target " + name +
-                                       " as it does not satisfy condition" );
-                    return;
-                }
-            }
-            catch( final ContextException ce )
-            {
-                throw new TaskException( "Error evaluating Condition for target " + 
-                                         name, ce );
-            }
-        }
-
-        getLogger().debug( "Executing target " + name );
-
-        //frame.getContext().setProperty( Project.TARGET, target );
-
-        //execute all tasks assciated with target
-        final Configuration[] tasks = target.getTasks();
-        for( int i = 0; i < tasks.length; i++ )
-        {
-            executeTask( tasks[ i ], frame );
-        }
-    }
-
-    /**
-     * Execute a task.
-     *
-     * @param task the task definition
-     * @param context the context
-     * @exception TaskException if an error occurs
-     */
-    private void executeTask( final Configuration task, final ExecutionFrame frame )
-        throws TaskException
-    {
-        final String name = task.getName();
-        getLogger().debug( "Executing task " + name );
-
-        //is setting name even necessary ???
-        frame.getContext().setProperty( TaskContext.NAME, name );
-
-        //notify listeners
-        m_listenerSupport.taskStarted( name );
-
-        //run task
-        m_executor.execute( task, frame );
-
-        //notify listeners task has ended
-        m_listenerSupport.taskFinished();
-    }
-
-    /**
-     * Helper method to add values to a context
-     *
-     * @param context the context
-     * @param map the map of names->values
-     */
-    private void addToContext( final TaskContext context, final Map map )
-        throws TaskException
-    {
-        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/myrmidon/components/workspace/LogTargetToListenerAdapter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/LogTargetToListenerAdapter.java
deleted file mode 100644
index 19eaf1f..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/LogTargetToListenerAdapter.java
+++ /dev/null
@@ -1,50 +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.myrmidon.components.workspace;
-
-import org.apache.log.LogEvent;
-import org.apache.log.LogTarget;
-import org.apache.myrmidon.listeners.ProjectListener;
-
-/**
- * Adapter between Avalon LogKit and Project listener interfaces.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class LogTargetToListenerAdapter
-    implements LogTarget
-{
-    private 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 event.
-     *
-     * @param event the event
-     */
-    public void processEvent( final LogEvent event )
-    {
-        if( null == event.getThrowable() )
-        {
-            m_listener.log( event.getMessage() );
-        }
-        else
-        {
-            m_listener.log( event.getMessage(), event.getThrowable() );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/ProjectEntry.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/ProjectEntry.java
deleted file mode 100644
index 245c71f..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/ProjectEntry.java
+++ /dev/null
@@ -1,51 +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.myrmidon.components.workspace;
-
-import java.util.ArrayList;
-import org.apache.myrmidon.components.executor.ExecutionFrame;
-import org.apache.myrmidon.components.model.Project;
-
-/**
- * This contains detaisl for each project that is managed by ProjectManager.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public final class ProjectEntry
-{
-    private final Project         m_project;
-    private final ExecutionFrame  m_frame;
-    private final ArrayList       m_targetsCompleted   = new ArrayList();
-
-    public ProjectEntry( final Project project,
-                         final ExecutionFrame frame )
-    {
-        m_project = project;
-        m_frame = frame;
-    }
-
-    public Project getProject()
-    {
-        return m_project;
-    }
-
-    public ExecutionFrame getFrame()
-    {
-        return m_frame;
-    }
-
-    public boolean isTargetCompleted( final String target )
-    {
-        return m_targetsCompleted.contains( target );
-    }
-
-    public void completeTarget( final String target )
-    {
-        m_targetsCompleted.add( target );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/ProjectListenerSupport.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/ProjectListenerSupport.java
deleted file mode 100644
index 6884164..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/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.myrmidon.components.workspace;
-
-import org.apache.myrmidon.listeners.ProjectListener;
-
-/**
- * Support for the project listener event dispatching.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ProjectListenerSupport
-    implements ProjectListener
-{
-    private 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.
-     */
-    public void projectStarted()
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].projectStarted();
-        }
-    }
-
-    /**
-     * 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 taskStarted( String taskName )
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].taskStarted( taskName );
-        }
-    }
-
-    /**
-     * Fire a taskFinished event.
-     */
-    public void taskFinished()
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].taskFinished();
-        }
-    }
-
-    /**
-     * 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/myrmidon/components/workspace/Workspace.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/Workspace.java
deleted file mode 100644
index 57ae604..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/Workspace.java
+++ /dev/null
@@ -1,50 +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.myrmidon.components.workspace;
-
-import java.util.Map;
-import org.apache.avalon.framework.component.Component;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.model.Project;
-import org.apache.myrmidon.listeners.ProjectListener;
-
-/**
- * This is the abstraction through which Projects are managed and executed.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Workspace
-    extends Component
-{
-    String ROLE = "org.apache.myrmidon.components.workspace.Workspace";
-
-    /**
-     * 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.
-     *
-     * @param project the Project
-     * @param target the name of the target
-     * @param defines the defines
-     * @exception TaskException if an error occurs
-     */
-    void executeProject( Project project, String target )
-        throws TaskException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/converter/AbstractConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/converter/AbstractConverter.java
deleted file mode 100644
index 595e847..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/converter/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.myrmidon.converter;
-
-import org.apache.avalon.framework.context.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
-{
-    private final Class         m_source;
-    private 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 ConverterException
-    {
-        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 ConverterException;
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/converter/Converter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/converter/Converter.java
deleted file mode 100644
index fab5fd2..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/converter/Converter.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.myrmidon.converter;
-
-import org.apache.avalon.framework.context.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
-{
-    String ROLE = "org.apache.myrmidon.converter.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;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/converter/ConverterException.java b/proposal/myrmidon/src/java/org/apache/myrmidon/converter/ConverterException.java
deleted file mode 100644
index 6025198..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/converter/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.myrmidon.converter;
-
-import org.apache.avalon.framework.CascadingException;
-
-/**
- * ConverterException thrown when a problem occurs during convertion etc.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ConverterException
-    extends CascadingException
-{
-    /**
-     * 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/myrmidon/framework/AbstractContainerTask.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractContainerTask.java
deleted file mode 100644
index 1120e48..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractContainerTask.java
+++ /dev/null
@@ -1,158 +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.myrmidon.framework;
-
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.converter.Converter;
-import org.apache.myrmidon.converter.ConverterException;
-import org.apache.myrmidon.components.configurer.Configurer;
-import org.apache.myrmidon.components.converter.MasterConverter;
-import org.apache.myrmidon.components.executor.Executor;
-import org.apache.avalon.excalibur.property.PropertyException;
-import org.apache.avalon.excalibur.property.PropertyUtil;
-
-/**
- * This is the class that Task writers should extend to provide custom tasks.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public abstract class AbstractContainerTask
-    extends AbstractTask
-    implements Composable
-{
-    ///For converting own attributes
-    private MasterConverter     m_converter;
-
-    ///For configuring own sub-elements
-    private Configurer          m_configurer;
-
-    ///For executing sub-elements as tasks
-    private Executor            m_executor;
-
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_configurer = (Configurer)componentManager.lookup( Configurer.ROLE );
-        m_converter = (MasterConverter)componentManager.lookup( MasterConverter.ROLE );
-        m_executor = (Executor)componentManager.lookup( Executor.ROLE );
-    }
-
-    /**
-     * Helper method to resolve a string.
-     *
-     * @param value the value to resolve
-     * @return the resolved value
-     * @exception ConfigurationException if an error occurs
-     */
-    protected final Object resolve( final String value )
-        throws ConfigurationException
-    {
-        try
-        {
-            final Object object = 
-                PropertyUtil.resolveProperty( value, getContext(), false );
-
-            if( null == object )
-            {
-                throw new ConfigurationException( "Value (" + value +
-                                                  ") resolved to null" );
-            }
-
-            return object;
-        }
-        catch( final PropertyException pe )
-        {
-            throw new ConfigurationException( "Error resolving value: " + value, pe );
-        }
-    }
-
-    /**
-     * Helper method to convert an object to a specific type.
-     *
-     * @param to type to convert object to
-     * @param object the object to convert
-     * @return the converted object
-     * @exception ConfigurationException if an error occurs
-     */
-    protected final Object convert( final Class to, final Object object )
-        throws ConfigurationException
-    {
-        try
-        {
-            return getConverter().convert( to, object, getContext() );
-        }
-        catch( final ConverterException ce )
-        {
-            throw new ConfigurationException( "Error converting value", ce );
-        }
-    }
-
-    /**
-     * Configure an object using specific configuration element.
-     *
-     * @param object the object
-     * @param element the configuration element
-     * @exception ConfigurationException if an error occurs
-     */
-    protected final void configure( final Object object, final Configuration element )
-        throws ConfigurationException
-    {
-        getConfigurer().configure( object, element, getContext() );
-    }
-
-
-    /**
-     * Configure an objects attribute using parameters.
-     *
-     * @param object the object
-     * @param name the attibute name
-     * @param value the attibute value
-     * @exception ConfigurationException if an error occurs
-     */
-    protected final void configure( final Object object, final String name, final String value )
-        throws ConfigurationException
-    {
-        getConfigurer().configure( object, name, value, getContext() );
-    }
-
-    /**
-     * Convenience method for sub-class to retrieve Configurer.
-     *
-     * @return the configurer
-     */
-    protected final Configurer getConfigurer()
-    {
-        return m_configurer;
-    }
-
-    /**
-     * Convenience method for sub-class to retrieve Converter.
-     *
-     * @return the converter
-     */
-    protected final Converter getConverter()
-    {
-        return m_converter;
-    }
-
-    /**
-     * Convenience method for sub-class to retrieve Executor.
-     *
-     * @return the executor
-     */
-    protected final Executor getExecutor()
-    {
-        return m_executor;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractTypeDef.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractTypeDef.java
deleted file mode 100644
index 9885861..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractTypeDef.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.myrmidon.framework;
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.role.RoleManager;
-import org.apache.myrmidon.components.type.DefaultTypeFactory;
-import org.apache.myrmidon.components.type.TypeException;
-import org.apache.myrmidon.components.type.TypeManager;
-
-/**
- * Abstract task to extend to define a type.
- *
- * TODO: Make this support classpath sub-element in future
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public abstract class AbstractTypeDef
-    extends AbstractTask
-    implements Composable
-{
-    private File                m_lib;
-    private String              m_name;
-    private String              m_className;
-    private TypeManager         m_typeManager;
-    private RoleManager         m_roleManager;
-
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
-        m_roleManager = (RoleManager)componentManager.lookup( RoleManager.ROLE );
-    }
-
-    public void setLib( final File lib )
-    {
-        //In the future this would be replaced by ClassPath sub-element
-        m_lib = lib;
-    }
-
-    public void setName( final String name )
-    {
-        m_name = name;
-    }
-
-    public void setClassname( final String className )
-    {
-        m_className = className;
-    }
-
-    public void execute()
-        throws TaskException
-    {
-        if( null == m_name )
-        {
-            throw new TaskException( "Must specify name parameter" );
-        }
-        else if( null == m_className )
-        {
-            throw new TaskException( "Must specify classname parameter" );
-        }
-
-        final String typeName = getTypeName();
-        final String role = m_roleManager.getRoleForName( typeName );
-
-        final ClassLoader classLoader = createClassLoader();
-        final DefaultTypeFactory factory = new DefaultTypeFactory( classLoader );
-        factory.addNameClassMapping( m_name, m_className );
-
-        try { m_typeManager.registerType( role, m_name, factory ); }
-        catch( final TypeException te )
-        {
-            throw new TaskException( "Failed to register type", te );
-        }
-    }
-
-    protected ClassLoader createClassLoader()
-        throws TaskException
-    {
-        //TODO: Make this support classpath sub-element in future
-        try
-        {
-            final URL url = m_lib.toURL();
-            final ClassLoader classLoader =
-                Thread.currentThread().getContextClassLoader();
-
-            return new URLClassLoader( new URL[] { url }, classLoader );
-        }
-        catch( final Exception e )
-        {
-            throw new TaskException( "Failed to build classLoader due to: " + e, e );
-        }
-    }
-
-    protected final TypeManager getTypeManager()
-    {
-        return m_typeManager;
-    }
-
-    protected abstract String getTypeName();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Condition.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Condition.java
deleted file mode 100644
index 4df1cdc..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Condition.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.myrmidon.framework;
-
-import org.apache.avalon.excalibur.property.PropertyException;
-import org.apache.avalon.excalibur.property.PropertyUtil;
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * Class representing a condition.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Condition
-    implements Component
-{
-    private String            m_condition;
-    private 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 )
-        throws ContextException
-    {
-        boolean result = false;
-
-        try
-        {
-            final Object resolved =
-                PropertyUtil.resolveProperty( getCondition(), context, false );
-
-            if( null != resolved )
-            {
-                final Object object = context.get( resolved );
-                //TODO: Do more than just check for presence????????????
-
-                //true as object present
-                result = true;
-            }
-        }
-        catch( final ContextException ce )
-        {
-            result = false;
-        }
-        catch( final PropertyException pe )
-        {
-            throw new ContextException( "Error resolving " + m_condition, pe );
-        }
-
-        if( !m_isIfCondition )
-        {
-            result = !result;
-        }
-
-        return result;
-    }
-
-    public String toString()
-    {
-        if( isIfCondition() )
-        {
-            return "if='" + getCondition() + "'";
-        }
-        else
-        {
-            return "unless='" + getCondition() + "'";
-        }
-    }
-}
-
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/DataType.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/DataType.java
deleted file mode 100644
index e6a9b55..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/DataType.java
+++ /dev/null
@@ -1,19 +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.myrmidon.framework;
-
-/**
- * Base class for those classes that can appear inside the build file
- * as stand alone data types.  
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface DataType
-{
-    String ROLE = "org.apache.myrmidon.framework.DataType";
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Pattern.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Pattern.java
deleted file mode 100644
index a8accd4..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Pattern.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.myrmidon.framework;
-
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * Basic data type for holding patterns.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Pattern
-    implements DataType
-{
-    private String         m_value;
-    private Condition      m_condition;
-
-    /**
-     * Retrieve value of pattern.
-     *
-     * @return the value of pattern
-     */
-    public String getValue()
-    {
-        return m_value;
-    }
-
-    /**
-     * Get condition associated with pattern if any.
-     *
-     * @return the Condition
-     */
-    public Condition getCondition()
-    {
-        return m_condition;
-    }
-
-    /**
-     * Setter method for value of pattern.
-     * Conforms to setter patterns
-     *
-     * @param value the value
-     */
-    public void setValue( final String value )
-    {
-        m_value = value;
-    }
-
-    /**
-     * Set if clause on pattern.
-     *
-     * @param condition the condition
-     * @exception TaskException if an error occurs
-     */
-    public void setIf( final String condition )
-        throws TaskException
-    {
-        verifyConditionNull();
-        m_condition = new Condition( true, condition );
-    }
-
-    /**
-     * Set unless clause of pattern.
-     *
-     * @param condition the unless clause
-     * @exception TaskException if an error occurs
-     */
-    public void setUnless( final String condition )
-        throws TaskException
-    {
-        verifyConditionNull();
-        m_condition = new Condition( false, condition );
-    }
-
-    public String toString()
-    {
-        String result = "Pattern['" + m_value + "',";
-        if( null != m_condition ) result = result + m_condition;
-        return result + "]";
-    }
-
-    /**
-     * Utility method to make sure condition unset.
-     * Made so that it is not possible for both if and unless to be set.
-     *
-     * @exception TaskException if an error occurs
-     */
-    private void verifyConditionNull()
-        throws TaskException
-    {
-        if( null != m_condition )
-        {
-            throw new TaskException( "Can only set one of if/else for pattern data type" );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/TypeInstanceTask.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/TypeInstanceTask.java
deleted file mode 100644
index 5aa025f..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/TypeInstanceTask.java
+++ /dev/null
@@ -1,117 +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.myrmidon.framework;
-
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.type.TypeException;
-import org.apache.myrmidon.components.type.TypeFactory;
-import org.apache.myrmidon.components.type.TypeManager;
-
-/**
- * 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 TypeInstanceTask
-    extends AbstractContainerTask
-    implements Configurable
-{
-    private String              m_id;
-    private Object              m_value;
-    private boolean             m_localScope     = true;
-    private TypeFactory         m_factory;
-
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        super.compose( componentManager );
-
-        final TypeManager typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
-        try { m_factory = typeManager.getFactory( DataType.ROLE ); }
-        catch( final TypeException te )
-        {
-            throw new ComponentException( "Unable to retrieve factory from TypeManager", te );
-        }
-    }
-
-    public void configure( final Configuration configuration )
-        throws ConfigurationException
-    {
-        final DefaultConfiguration newConfiguration =
-            new DefaultConfiguration( configuration.getName(), configuration.getLocation() );
-
-        final String[] attributes = configuration.getAttributeNames();
-        for( int i = 0; i < attributes.length; i++ )
-        {
-            final String name = attributes[ i ];
-            final String value = configuration.getAttribute( name );
-
-            if( name.equals( "id" ) || name.equals( "local-scope" ) )
-            {
-                configure( this, name, value );
-            }
-            else
-            {
-                newConfiguration.setAttribute( name, value );
-            }
-        }
-
-        final Configuration[] children = configuration.getChildren();
-        for( int i = 0; i < children.length; i++ )
-        {
-            newConfiguration.addChild( children[ i ] );
-        }
-
-        try
-        {
-            m_value = m_factory.create( configuration.getName() );
-        }
-        catch( final Exception e )
-        {
-            throw new ConfigurationException( "Unable to create datatype", e );
-        }
-
-        configure( m_value, newConfiguration );
-    }
-
-    public void setId( final String id )
-    {
-        m_id = id;
-    }
-
-    public void setLocalScope( final boolean localScope )
-    {
-        m_localScope = localScope;
-    }
-
-    public void execute()
-        throws TaskException
-    {
-        if( null == m_id )
-        {
-            throw new TaskException( "Id must be specified" );
-        }
-
-        if( m_localScope )
-        {
-            getContext().setProperty( m_id, m_value );
-        }
-        else
-        {
-            getContext().setProperty( m_id, m_value, TaskContext.PARENT );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java b/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java
deleted file mode 100644
index 662e555..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java
+++ /dev/null
@@ -1,476 +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.myrmidon.frontends;
-
-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 org.apache.avalon.excalibur.cli.CLArgsParser;
-import org.apache.avalon.excalibur.cli.CLOption;
-import org.apache.avalon.excalibur.cli.CLOptionDescriptor;
-import org.apache.avalon.excalibur.cli.CLUtil;
-import org.apache.avalon.excalibur.io.ExtensionFileFilter;
-import org.apache.avalon.framework.ExceptionUtil;
-import org.apache.avalon.framework.logger.AbstractLoggable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.log.Hierarchy;
-import org.apache.log.LogTarget;
-import org.apache.log.Logger;
-import org.apache.log.Priority;
-import org.apache.log.output.DefaultOutputLogTarget;
-import org.apache.myrmidon.Constants;
-import org.apache.myrmidon.api.DefaultTaskContext;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.builder.ProjectBuilder;
-import org.apache.myrmidon.components.executor.Executor;
-import org.apache.myrmidon.components.embeddor.Embeddor;
-import org.apache.myrmidon.components.embeddor.DefaultEmbeddor;
-import org.apache.myrmidon.components.workspace.Workspace;
-import org.apache.myrmidon.components.model.Project;
-import org.apache.myrmidon.listeners.ProjectListener;
-
-/**
- * The class to kick the tires and light the fires.
- * Starts myrmidon, loads ProjectBuilder, builds project then uses ProjectManager
- * to run project.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class CLIMain
-    extends AbstractLoggable
-{
-    //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       BUILDER_PARAM_OPT         = 'B';
-    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;
-    private static final int       DRY_RUN_OPT               = 8;
-
-    //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, DRY_RUN_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
-    };
-
-    private ProjectListener      m_listener;
-
-    ///Parameters for run of myrmidon
-    private Parameters           m_parameters  = new Parameters();
-
-    ///List of targets supplied on command line to execute
-    private ArrayList            m_targets     = new ArrayList();
-
-    ///List of user supplied defines
-    private Parameters           m_defines     = new Parameters();
-
-    ///List of user supplied parameters for builder
-    private Parameters           m_builderParameters = new Parameters();
-
-    ///Determine whether tasks are actually executed
-    private boolean              m_dryRun      = false;
-
-    /**
-     * Main entry point called to run standard Myrmidon.
-     *
-     * @param args the args
-     */
-    public static void main( final String[] args )
-    {
-        final CLIMain main = new CLIMain();
-
-        try { main.execute( args ); }
-        catch( final Throwable throwable )
-        {
-            System.err.println( "Error: " + ExceptionUtil.printStackTrace( throwable ) );
-            System.exit( -1 );
-        }
-
-        System.exit( 0 );
-    }
-
-    /**
-     * Display usage report.
-     *
-     */
-    private void usage( final CLOptionDescriptor[] options )
-    {
-        System.out.println( "java " + getClass().getName() + " [options]" );
-        System.out.println( "\tAvailable options:");
-        System.out.println( CLUtil.describeOptions( options ) );
-    }
-
-    /**
-     * Initialise the options for command line parser.
-     */
-    private CLOptionDescriptor[] createCLOptions()
-    {
-        //TODO: localise
-        final CLOptionDescriptor[] options = new CLOptionDescriptor[ 13 ];
-
-        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( "myrmidon-home",
-                                    CLOptionDescriptor.ARGUMENT_REQUIRED,
-                                    HOME_DIR_OPT,
-                                    "Specify myrmidon home directory" );
-        options[10] =
-            new CLOptionDescriptor( "define",
-                                    CLOptionDescriptor.ARGUMENTS_REQUIRED_2,
-                                    DEFINE_OPT,
-                                    "Define a variable (ie -Dfoo=var)",
-                                    new int[ 0 ] );
-
-        options[11] =
-            new CLOptionDescriptor( "builder-parameter",
-                                    CLOptionDescriptor.ARGUMENTS_REQUIRED_2,
-                                    BUILDER_PARAM_OPT,
-                                    "Define a builder parameter (ie -Bfoo=var)" );
-
-        options[12] =
-            new CLOptionDescriptor( "dry-run",
-                                    CLOptionDescriptor.ARGUMENT_DISALLOWED,
-                                    DRY_RUN_OPT,
-                                    "Do not execute tasks - just print them out" );
-
-        return options;
-    }
-
-    private boolean parseCommandLineOptions( final String[] args )
-    {
-        final CLOptionDescriptor[] options = createCLOptions();
-        final CLArgsParser parser = new CLArgsParser( args, options );
-
-        if( null != parser.getErrorString() )
-        {
-            System.err.println( "Error: " + parser.getErrorString() );
-            return false;
-        }
-
-        final List clOptions = parser.getArguments();
-        final int size = clOptions.size();
-
-        for( int i = 0; i < size; i++ )
-        {
-            final CLOption option = (CLOption)clOptions.get( i );
-
-            switch( option.getId() )
-            {
-            case HELP_OPT: usage( options ); return false;
-            case VERSION_OPT: System.out.println( Constants.BUILD_DESCRIPTION ); return false;
-
-            case HOME_DIR_OPT: m_parameters.setParameter( "myrmidon.home", option.getArgument() ); break;
-            case TASKLIB_DIR_OPT:
-                m_parameters.setParameter( "myrmidon.lib.path", option.getArgument() );
-                break;
-
-            case LOG_LEVEL_OPT: m_parameters.setParameter( "log.level", option.getArgument() ); break;
-            case VERBOSE_OPT: m_parameters.setParameter( "log.level", "INFO" ); break;
-            case QUIET_OPT: m_parameters.setParameter( "log.level", "ERROR" ); break;
-
-            case INCREMENTAL_OPT: m_parameters.setParameter( "incremental", "true" ); break;
-
-            case FILE_OPT: m_parameters.setParameter( "filename", option.getArgument() ); break;
-            case LISTENER_OPT: m_parameters.setParameter( "listener", option.getArgument() ); break;
-
-            case DEFINE_OPT:
-                m_defines.setParameter( option.getArgument( 0 ), option.getArgument( 1 ) );
-                break;
-
-            case BUILDER_PARAM_OPT:
-                m_builderParameters.setParameter( option.getArgument( 0 ), option.getArgument( 1 ) );
-                break;
-
-            case DRY_RUN_OPT: m_dryRun = true; break;
-
-            case 0: m_targets.add( option.getArgument() ); break;
-            }
-        }
-
-        return true;
-    }
-
-    private void setupDefaultParameters()
-    {
-        //System property set up by launcher
-        m_parameters.setParameter( "myrmidon.home", System.getProperty( "myrmidon.home", "." ) );
-
-        m_parameters.setParameter( "filename", "build.ant" );
-        m_parameters.setParameter( "log.level", "WARN" );
-        m_parameters.setParameter( "listener", "org.apache.myrmidon.listeners.DefaultProjectListener" );
-        m_parameters.setParameter( "incremental", "false" );
-    }
-
-    private void execute( final String[] args )
-        throws Exception
-    {
-        setupDefaultParameters();
-
-        if( !parseCommandLineOptions( args ) )
-        {
-            return;
-        }
-
-        //handle logging...
-        final String logLevel = m_parameters.getParameter( "log.level", null );
-        setLogger( createLogger( logLevel ) );
-
-        final String home = m_parameters.getParameter( "myrmidon.home", null );
-        final File homeDir = (new File( home )).getAbsoluteFile();
-        if( !homeDir.isDirectory() )
-        {
-            throw new Exception( "myrmidon-home (" + homeDir + ") is not a directory" );
-        }
-
-        final String filename = m_parameters.getParameter( "filename", null );
-        final File buildFile = (new File( filename )).getCanonicalFile();
-        if( !buildFile.isFile() )
-        {
-            throw new Exception( "File " + buildFile + " is not a file or doesn't exist" );
-        }
-
-        //handle listener..
-        final String listenerName = m_parameters.getParameter( "listener", null );
-        final ProjectListener listener = createListener( listenerName );
-
-        getLogger().warn( "Ant Build File: " + buildFile );
-        getLogger().info( "Ant Home Directory: " + homeDir );
-        //getLogger().info( "Ant Bin Directory: " + m_binDir );
-        //getLogger().debug( "Ant Lib Directory: " + m_libDir );
-        //getLogger().debug( "Ant Task Lib Directory: " + m_taskLibDir );
-
-        if( m_dryRun )
-        {
-            m_parameters.setParameter( Executor.ROLE, 
-                                       "org.apache.myrmidon.components.executor.PrintingExecutor" );
-        }
-
-        final Embeddor embeddor = new DefaultEmbeddor();
-        setupLogger( embeddor );
-        embeddor.parameterize( m_parameters );
-        embeddor.initialize();
-        embeddor.start();
-
-        //create the project
-        final Project project = 
-            embeddor.createProject( buildFile.toString(), null, m_builderParameters );
-
-        BufferedReader reader = null;
-
-        //loop over build if we are in incremental mode..
-        final boolean incremental = m_parameters.getParameterAsBoolean( "incremental", false );
-        while( true )
-        {
-            //actually do the build ...
-            final Workspace workspace = embeddor.createWorkspace( m_defines );
-            workspace.addProjectListener( listener );
-
-            doBuild( workspace, project, m_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;
-
-        }
-
-        embeddor.stop();
-        embeddor.dispose();
-    }
-
-    /**
-     * Actually do the build.
-     *
-     * @param manager the manager
-     * @param project the project
-     * @param targets the targets to build as passed by CLI
-     */
-    private void doBuild( final Workspace workspace,
-                          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 )
-            {
-                workspace.executeProject( project, project.getDefaultTargetName() );
-            }
-            else
-            {
-                for( int i = 0; i < targetCount; i++ )
-                {
-                    workspace.executeProject( project, (String)targets.get( i ) );
-                }
-            }
-        }
-        catch( final TaskException ae )
-        {
-            getLogger().error( "BUILD FAILED" );
-            getLogger().error( "Reason:\n" + ExceptionUtil.printStackTrace( ae, 5, true ) );
-        }
-    }
-
-    /**
-     * Create Logger of appropriate log-level.
-     *
-     * @param logLevel the log-level
-     * @return the logger
-     * @exception Exception if an error occurs
-     */
-    private Logger createLogger( final String logLevel )
-        throws Exception
-    {
-        final String logLevelCapitalized = logLevel.toUpperCase();
-        final Priority priority = Priority.getPriorityForName( logLevelCapitalized );
-
-        if( !priority.getName().equals( logLevelCapitalized ) )
-        {
-            throw new Exception( "Unknown log level - " + logLevel );
-        }
-
-        final Logger logger = Hierarchy.getDefaultHierarchy().getLoggerFor( "myrmidon" );
-
-        final DefaultOutputLogTarget target = new DefaultOutputLogTarget();
-        target.setFormat( "[%8.8{category}] %{message}\\n%{throwable}" );
-        logger.setLogTargets( new LogTarget[] { target } );
-
-        logger.setPriority( priority );
-
-        return logger;
-    }
-
-    /**
-     * Setup project listener.
-     *
-     * @param listener the classname of project listener
-     */
-    private ProjectListener createListener( final String listener )
-        throws Exception
-    {
-        try { return (ProjectListener)Class.forName( listener ).newInstance(); }
-        catch( final Throwable t )
-        {
-            throw new Exception( "Error creating the listener " + listener +
-                                 " due to " + ExceptionUtil.printStackTrace( t, 5, true ) );
-        }
-    }
-
-    /**
-     * Helper method to add values to a context
-     *
-     * @param context the context
-     * @param map the map of names->values
-     */
-    private void addToContext( final TaskContext context, final Map map )
-        throws Exception
-    {
-        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/myrmidon/launcher/Main.java b/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java
deleted file mode 100644
index f7b58ab..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java
+++ /dev/null
@@ -1,135 +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.myrmidon.launcher;
-
-import java.io.File;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-/**
- * Basic Loader that is responsible for all the hackery to get classloader to work.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public final class Main
-{
-    /**
-     * Magic entry point.
-     *
-     * @param args the 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 myrmidon.jar is
-            final File installDirectory = findInstallDir();
-            System.setProperty( "myrmidon.home", installDirectory.toString() );
-
-            //setup classloader appropriately for myrmidon jar
-            final File libDir = new File( installDirectory, "lib" );
-            final URL[] urls = buildURLList( libDir );
-
-            final URLClassLoader classLoader = new URLClassLoader( urls );
-
-            //load class and retrieve appropriate main method.
-            final Class clazz = classLoader.loadClass( "org.apache.myrmidon.frontends.CLIMain" );
-            final Method method = clazz.getMethod( "main", new Class[] { args.getClass() } );
-
-            Thread.currentThread().setContextClassLoader( classLoader );
-
-            //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();
-        }
-    }
-
-    private final static URL[] buildURLList( final File dir )
-        throws Exception
-    {
-        final ArrayList urlList = new ArrayList();
-
-        final File[] contents = dir.listFiles();
-
-        if( null == contents )
-        {
-            return new URL[ 0 ];
-        }
-
-        for( int i = 0; i < contents.length; i++ )
-        {
-            File file = contents[ i ];
-
-            if( !file.isFile() || !file.canRead() )
-            {
-                //ignore non-files or unreadable files
-                continue;
-            }
-
-            final String name = file.getName();
-            if( !name.endsWith( ".jar" ) && !name.endsWith( ".zip" ) )
-            {
-                //Ifnore files in lib dir that are not jars or zips
-                continue;
-            }
-
-            file = file.getCanonicalFile();
-            
-            urlList.add( file.toURL() );
-        }
-
-        return (URL[])urlList.toArray( new URL[ 0 ] );
-    }
-
-    /**
-     *  Finds the myrmidon.jar file in the classpath.
-     */
-    private 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/myrmidon/libs/ant1/Ant1Project.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1Project.java
deleted file mode 100644
index bfb9e01..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1Project.java
+++ /dev/null
@@ -1,153 +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.myrmidon.libs.ant1;
-
-import java.io.File;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.Loggable;
-import org.apache.log.Logger;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.Project;
-
-public class Ant1Project
-    extends Project
-    implements Loggable, Contextualizable
-{
-    private Logger   m_logger;
-
-    ///Variable to hold context for use by sub-classes
-    private TaskContext            m_context;
-
-    public void setLogger( final Logger logger )
-    {
-        m_logger = logger;
-    }
-
-    protected final Logger getLogger()
-    {
-        return m_logger;
-    }
-
-    /**
-     * Retrieve context from container.
-     *
-     * @param context the context
-     */
-    public void contextualize( final Context context )
-    {
-        m_context = (TaskContext)context;
-    }
-
-    protected final TaskContext getContext()
-    {
-        return m_context;
-    }
-
-    /**
-     * Initialise the project.
-     */
-    public void init()
-        throws BuildException
-    {
-        setJavaVersionProperty();
-    }
-
-    public void setProperty( final String name, final String value )
-    {
-        try { getContext().setProperty( name, value ); }
-        catch( final Exception e )
-        {
-            getLogger().warn( "Failed to set property " + name + " to " + value, e );
-        }
-    }
-
-    public void setUserProperty( final String name, final String value )
-    {
-        setProperty( name, value );
-    }
-
-    public String getProperty( final String name )
-    {
-        return "" + getContext().getProperty( name );
-    }
-
-    public String getUserProperty( final String name )
-    {
-        return getProperty( name );
-    }
-
-    public String getName()
-    {
-        return "Ant1 Project";
-    }
-
-    public Task createTask( final String taskType )
-        throws BuildException
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object createDataType( final String typeName )
-        throws BuildException
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    public File resolveFile( final String fileName )
-    {
-        try { return getContext().resolveFile( fileName ); }
-        catch( final Exception e )
-        {
-            return null;
-        }
-    }
-
-    protected void fireBuildStarted() {}
-    protected void fireBuildFinished(Throwable exception) {}
-    protected void fireTargetStarted(Target target) {}
-    protected void fireTargetFinished(Target target, Throwable exception) {}
-    protected void fireTaskStarted(Task task) {}
-    protected void fireTaskFinished(Task task, Throwable exception) {}
-
-    private void fireMessageLoggedEvent(BuildEvent event, String message, int priority)
-    {
-        messageLogged( message, priority );
-    }
-
-    protected void fireMessageLogged(Project project, String message, int priority)
-    {
-        messageLogged( message, priority );
-    }
-
-    protected void fireMessageLogged(Target target, String message, int priority)
-    {
-        messageLogged( message, priority );
-    }
-
-    protected void fireMessageLogged(Task task, String message, int priority)
-    {
-        messageLogged( message, priority );
-    }
-
-    private void messageLogged( String message, int priority )
-    {
-        switch( priority )
-        {
-        case MSG_ERR: getLogger().error( message ); break;
-        case MSG_WARN: getLogger().warn( message ); break;
-        case MSG_INFO: getLogger().info( message ); break;
-        case MSG_VERBOSE: getLogger().debug( message ); break;
-        case MSG_DEBUG: getLogger().debug( message ); break;
-
-        default:
-            getLogger().debug( message );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1Tasklib.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1Tasklib.java
deleted file mode 100644
index 18b2dbe..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1Tasklib.java
+++ /dev/null
@@ -1,92 +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.myrmidon.libs.ant1;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.Properties;
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.api.Task;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.myrmidon.components.type.TypeManager;
-
-/**
- * Method to register a tasklib.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Ant1Tasklib
-    extends AbstractTask
-    implements Composable
-{
-    private String       m_prefix  = "";
-    private File         m_lib;
-    private TypeManager  m_typeManager;
-
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
-    }
-
-    public void setLib( final File lib )
-    {
-        m_lib = lib;
-    }
-
-    public void setPrefix( final String prefix )
-    {
-        m_prefix = prefix;
-    }
-
-    public void execute()
-        throws TaskException
-    {
-        if( null == m_lib )
-        {
-            throw new TaskException( "Must specify lib parameter" );
-        }
-
-
-        try
-        {            
-            final String location =  "jar:" + m_lib.toURL() + 
-                "!/org/apache/tools/ant/taskdefs/defaults.properties";
-            final URL url = new URL( location );
-            final InputStream input = url.openStream();
-
-            final Properties tasks = new Properties();
-            tasks.load( input );
-            
-            input.close();
-
-            final Ant1TypeFactory factory = new Ant1TypeFactory( m_lib.toURL() );
-
-            final Enumeration enum = tasks.propertyNames();
-            while( enum.hasMoreElements() )
-            {
-                final String rawName = (String)enum.nextElement();
-                final String className = tasks.getProperty( rawName );    
-                final String name = m_prefix + rawName;
-
-                factory.addNameClassMapping( name, className );
-                m_typeManager.registerType( Task.ROLE, name, factory );        
-            }
-        }
-        catch( final Exception e )
-        {
-            throw new TaskException( "Failed to load task definitions", e );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1TypeFactory.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1TypeFactory.java
deleted file mode 100644
index c8537ae..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1TypeFactory.java
+++ /dev/null
@@ -1,57 +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.myrmidon.libs.ant1;
-
-import java.net.URL;
-import org.apache.myrmidon.components.type.DefaultTypeFactory;
-import org.apache.myrmidon.components.type.TypeException;
-import org.apache.tools.ant.Task;
-
-/**
- * Factory used to create adaptors for Ant1 tasks.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Ant1TypeFactory
-    extends DefaultTypeFactory
-{
-    public Ant1TypeFactory( final URL url )
-    {
-        super( url );
-    }
-
-    public Ant1TypeFactory( final URL[] urls )
-    {
-        super( urls );
-    }
-
-    public Ant1TypeFactory( final URL[] urls, final ClassLoader parent )
-    {
-        super( urls, parent );
-    }
-
-    public Ant1TypeFactory( final ClassLoader classLoader )
-    {
-        super( classLoader );
-    }
-
-    public Object create( final String name )
-        throws TypeException
-    {
-        final Object object = super.create( name );
-
-        if( !(object instanceof Task) )
-        {
-            throw new TypeException( "Expected an Ant1 task but received an " +
-                                     "object of type : " + object.getClass().getName() );
-        }
-
-        return new TaskAdapter( (Task)object );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/TaskAdapter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/TaskAdapter.java
deleted file mode 100644
index db1da69..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/TaskAdapter.java
+++ /dev/null
@@ -1,75 +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.myrmidon.libs.ant1;
-
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.type.TypeException;
-import org.apache.myrmidon.components.type.TypeFactory;
-import org.apache.myrmidon.components.type.TypeManager;
-import org.apache.myrmidon.framework.AbstractContainerTask;
-import org.apache.tools.ant.Task;
-
-/**
- * Adapter of Ant1 tasks to myrmidon.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class TaskAdapter
-    extends AbstractContainerTask
-    implements Configurable
-{
-    private Task         m_task;
-    private Ant1Project  m_project = new Ant1Project();
-
-    public TaskAdapter( final Task task )
-    {
-        m_task = task;
-    }
-
-    protected final Task getTask()
-    {
-        return m_task;
-    }
-
-    protected final Ant1Project getProject()
-    {
-        return m_project;
-    }
-
-    public void configure( final Configuration configuration )
-        throws ConfigurationException
-    {
-        getTask().setTaskName( configuration.getName() );
-
-        //do configuration
-        configure( getTask(), configuration );
-    }
-
-    public void execute()
-        throws TaskException
-    {
-        try
-        {
-            getProject().setLogger( getLogger() );
-            getProject().contextualize( getContext() );
-            getProject().init();
-
-            getTask().setProject( getProject() );
-            getTask().init();
-            getTask().execute();
-        }
-        catch( final Exception e )
-        {
-            throw new TaskException( e.getMessage(), e );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/Echo.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/Echo.java
deleted file mode 100644
index 66f138f..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/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.myrmidon.libs.core;
-
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * This is the echo task to display a message.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Echo 
-    extends AbstractTask
-{
-    private String      m_message;
-
-    public void setMessage( final String message )
-    {
-        m_message = message;
-    }
-
-    public void execute()
-        throws TaskException
-    {
-        getLogger().warn( m_message );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/Property.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/Property.java
deleted file mode 100644
index 94364c4..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/Property.java
+++ /dev/null
@@ -1,123 +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.myrmidon.libs.core;
-
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.type.TypeException;
-import org.apache.myrmidon.components.type.TypeFactory;
-import org.apache.myrmidon.components.type.TypeManager;
-import org.apache.myrmidon.framework.AbstractContainerTask;
-import org.apache.myrmidon.framework.DataType;
-
-/**
- * This is the property "task" to declare a binding of a datatype to a name.
- *
- * TODO: Determine final format of property task.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Property
-    extends AbstractContainerTask
-    implements Configurable
-{
-    private String              m_name;
-    private Object              m_value;
-    private boolean             m_localScope     = true;
-    private TypeFactory         m_factory;
-
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        super.compose( componentManager );
-
-        final TypeManager typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
-        try { m_factory = typeManager.getFactory( DataType.ROLE ); }
-        catch( final TypeException te )
-        {
-            throw new ComponentException( "Unable to retrieve factory from TypeManager", te );
-        }
-    }
-
-    public void configure( final Configuration configuration )
-        throws ConfigurationException
-    {
-        final String[] attributes = configuration.getAttributeNames();
-        for( int i = 0; i < attributes.length; i++ )
-        {
-            final String name = attributes[ i ];
-            final String value = configuration.getAttribute( name );
-            configure( this, name, value );
-        }
-
-        final Configuration[] children = configuration.getChildren();
-        for( int i = 0; i < children.length; i++ )
-        {
-            try
-            {
-                final DataType value = (DataType)m_factory.create( children[ i ].getName() );
-                configure( value, children[ i ] );
-                setValue( value );
-            }
-            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 TaskException
-    {
-        if( null != m_value )
-        {
-            throw new TaskException( "Value can not be set multiple times" );
-        }
-
-        m_value = value;
-    }
-
-    public void setLocalScope( final boolean localScope )
-    {
-        m_localScope = localScope;
-    }
-
-    public void execute()
-        throws TaskException
-    {
-        if( null == m_name )
-        {
-            throw new TaskException( "Name must be specified" );
-        }
-
-        if( null == m_value )
-        {
-            throw new TaskException( "Value must be specified" );
-        }
-
-        if( m_localScope )
-        {
-            getContext().setProperty( m_name, m_value );
-        }
-        else
-        {
-            getContext().setProperty( m_name, m_value, TaskContext.PARENT );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToByteConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToByteConverter.java
deleted file mode 100644
index 23724ca..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToByteConverter.java
+++ /dev/null
@@ -1,38 +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.myrmidon.libs.core;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.myrmidon.converter.AbstractConverter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * 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 ConverterException
-    {
-        try { return new Byte( (String)original ); }
-        catch( final NumberFormatException nfe )
-        {
-            throw new ConverterException( "Error formatting object", nfe );
-        }
-
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToClassConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToClassConverter.java
deleted file mode 100644
index 9db44f1..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToClassConverter.java
+++ /dev/null
@@ -1,38 +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.myrmidon.libs.core;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.myrmidon.converter.AbstractConverter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * 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 ConverterException
-    {
-        //TODO: Should we use ContextClassLoader here???
-        try { return Class.forName( (String)original ); }
-        catch( final Exception e )
-        {
-            throw new ConverterException( "Error converting to class type", e );
-        }
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToDoubleConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToDoubleConverter.java
deleted file mode 100644
index ce392e1..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToDoubleConverter.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.myrmidon.libs.core;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.myrmidon.converter.AbstractConverter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * 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 ConverterException
-    {
-        try { return new Double( (String)original ); }
-        catch( final NumberFormatException nfe )
-        {
-            throw new ConverterException( "Error formatting object", nfe );
-        }
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToFileConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToFileConverter.java
deleted file mode 100644
index ddcb3d7..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToFileConverter.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.myrmidon.libs.core;
-
-import java.io.File;
-import org.apache.avalon.framework.context.Context;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.converter.AbstractConverter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * 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 ConverterException
-    {
-        try
-        {
-            final TaskContext taskContext = (TaskContext)context;
-            return taskContext.resolveFile( (String)original );
-        }
-        catch( final TaskException te )
-        {
-            throw new ConverterException( "Error resolving file during conversion", te );
-        }
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToFloatConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToFloatConverter.java
deleted file mode 100644
index 90f68e8..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToFloatConverter.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.myrmidon.libs.core;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.myrmidon.converter.AbstractConverter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * 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 ConverterException
-    {
-        try { return new Float( (String)original ); }
-        catch( final NumberFormatException nfe )
-        {
-            throw new ConverterException( "Error formatting object", nfe );
-        }
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToIntegerConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToIntegerConverter.java
deleted file mode 100644
index a840270..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToIntegerConverter.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.myrmidon.libs.core;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.myrmidon.converter.AbstractConverter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * 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 ConverterException
-    {
-        try { return new Integer( (String)original ); }
-        catch( final NumberFormatException nfe )
-        {
-            throw new ConverterException( "Error formatting object", nfe );
-        }
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToLongConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToLongConverter.java
deleted file mode 100644
index 5d24994..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToLongConverter.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.myrmidon.libs.core;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.myrmidon.converter.AbstractConverter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * 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 ConverterException
-    {
-        try { return new Long( (String)original ); }
-        catch( final NumberFormatException nfe )
-        {
-            throw new ConverterException( "Error formatting object", nfe );
-        }
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToShortConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToShortConverter.java
deleted file mode 100644
index 17b7061..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToShortConverter.java
+++ /dev/null
@@ -1,38 +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.myrmidon.libs.core;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.myrmidon.converter.AbstractConverter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * 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 ConverterException
-    {
-        try { return new Short( (String)original ); }
-        catch( final NumberFormatException nfe )
-        {
-            throw new ConverterException( "Error formatting object", nfe );
-        }
-
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToURLConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToURLConverter.java
deleted file mode 100644
index 9325cab..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/core/StringToURLConverter.java
+++ /dev/null
@@ -1,40 +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.myrmidon.libs.core;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.apache.avalon.framework.context.Context;
-import org.apache.myrmidon.converter.AbstractConverter;
-import org.apache.myrmidon.converter.ConverterException;
-
-/**
- * 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 ConverterException
-    {
-        try { return new URL( (String)original ); }
-        catch( final MalformedURLException mue )
-        {
-            throw new ConverterException( "Error formatting object", mue );
-        }
-
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/ConverterDef.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/ConverterDef.java
deleted file mode 100644
index feb2ee9..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/ConverterDef.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.myrmidon.libs.runtime;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.converter.ConverterRegistry;
-import org.apache.myrmidon.components.type.DefaultTypeFactory;
-import org.apache.myrmidon.components.type.TypeManager;
-import org.apache.myrmidon.converter.Converter;
-
-/**
- * Task to define a converter.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ConverterDef
-    extends AbstractTask
-    implements Composable
-{
-    private String              m_sourceType;
-    private String              m_destinationType;
-    private File                m_lib;
-    private String              m_classname;
-    private ConverterRegistry   m_converterRegistry;
-    private TypeManager         m_typeManager;
-
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_converterRegistry = (ConverterRegistry)componentManager.lookup( ConverterRegistry.ROLE );
-        m_typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
-    }
-
-    public void setLib( final File 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 execute()
-        throws TaskException
-    {
-        if( null == m_classname )
-        {
-            throw new TaskException( "Must specify classname parameter" );
-        }
-        else if( null == m_sourceType )
-        {
-            throw new TaskException( "Must specify the source-type parameter" );
-        }
-        else if( null == m_destinationType )
-        {
-            throw new TaskException( "Must specify the destination-type parameter" );
-        }
-        else if( null == m_lib )
-        {
-            throw new TaskException( "Must specify the lib parameter" );
-        }
-
-        try
-        {
-            m_converterRegistry.registerConverter( m_classname, m_sourceType, m_destinationType );
-
-            final URL url = m_lib.toURL();
-            final DefaultTypeFactory factory = new DefaultTypeFactory( new URL[] { url } );
-            factory.addNameClassMapping( m_classname, m_classname );
-
-            m_typeManager.registerType( Converter.ROLE, m_classname, factory );
-        }
-        catch( final Exception e )
-        {
-            throw new TaskException( "Failed to register converter " + m_classname, e );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/Facility.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/Facility.java
deleted file mode 100644
index 85cee6d..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/Facility.java
+++ /dev/null
@@ -1,107 +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.myrmidon.libs.runtime;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.aspect.AspectManager;
-import org.apache.myrmidon.components.type.TypeFactory;
-import org.apache.myrmidon.components.type.TypeException;
-import org.apache.myrmidon.components.type.TypeManager;
-import org.apache.myrmidon.aspects.AspectHandler;
-import org.apache.myrmidon.framework.AbstractContainerTask;
-
-/**
- * Task that definesMethod to register a single converter.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Facility
-    extends AbstractContainerTask
-    implements Composable, Configurable 
-{
-    private String              m_namespace;
-    private AspectHandler       m_aspectHandler;
-
-    private AspectManager       m_aspectManager;
-    private TypeFactory         m_factory;
-    
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        super.compose( componentManager );
-
-        m_aspectManager = (AspectManager)componentManager.lookup( AspectManager.ROLE );
-        
-        final TypeManager typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
-        try { m_factory = typeManager.getFactory( AspectHandler.ROLE ); }
-        catch( final TypeException te )
-        {
-            throw new ComponentException( "Unable to retrieve factory from TypeManager", te );
-        }
-    }
-
-    public void configure( final Configuration configuration )
-        throws ConfigurationException
-    {
-        final String[] attributes = configuration.getAttributeNames();
-        for( int i = 0; i < attributes.length; i++ )
-        {
-            final String name = attributes[ i ];
-            final String value = configuration.getAttribute( name );
-            configure( this, name, value );
-        }
-
-        final Configuration[] children = configuration.getChildren();
-
-        if( 1 == children.length ) 
-        {
-            try
-            {
-                m_aspectHandler = (AspectHandler)m_factory.create( children[ 0 ].getName() );
-            }
-            catch( final Exception e )
-            {
-                throw new ConfigurationException( "Failed to create aspect handler of type '" + 
-                                                  children[ 0 ].getName() + "'", e );
-            }
-            
-            configure( m_aspectHandler, children[ 0 ] );
-        }
-        else
-        {
-            throw new ConfigurationException( "Expected one sub-element to " + 
-                                              "configure facility" );
-        }
-    }
-
-    public void setNamespace( final String namespace )
-    {
-        m_namespace = namespace;
-    }
-
-    public void execute()
-        throws TaskException
-    {
-        if( null == m_namespace )
-        {
-            throw new TaskException( "Must specify namespace parameter" );
-        }
-
-        m_aspectManager.addAspectHandler( m_namespace, m_aspectHandler );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/Import.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/Import.java
deleted file mode 100644
index 0709c34..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/Import.java
+++ /dev/null
@@ -1,61 +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.myrmidon.libs.runtime;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.components.deployer.Deployer;
-import org.apache.myrmidon.components.deployer.DeploymentException;
-
-/**
- * Task to import a tasklib.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Import
-    extends AbstractTask
-    implements Composable
-{
-    private File        m_lib;
-    private Deployer    m_deployer;
-
-    public void compose( final ComponentManager componentManager )
-        throws ComponentException
-    {
-        m_deployer = (Deployer)componentManager.lookup( Deployer.ROLE );
-    }
-
-    public void setLib( final File lib )
-    {
-        m_lib = lib;
-    }
-
-    public void execute()
-        throws TaskException
-    {
-        if( null == m_lib )
-        {
-            throw new TaskException( "Must specify lib parameter" );
-        }
-
-        try
-        {
-            m_deployer.deploy( m_lib );
-        }
-        catch( final DeploymentException de )
-        {
-            throw new TaskException( "Error importing tasklib", de );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/TypeDef.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/TypeDef.java
deleted file mode 100644
index 99b744a..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/runtime/TypeDef.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.myrmidon.libs.runtime;
-
-import org.apache.myrmidon.api.Task;
-import org.apache.myrmidon.framework.AbstractTypeDef;
-
-/**
- * Task to define a type.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class TypeDef
-    extends AbstractTypeDef
-{
-    private String     m_type;
-
-    public void setType( final String type )
-    {
-        m_type = type;
-    }
-
-    protected String getTypeName()
-    {
-        return m_type;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/ConfigurationTest.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/ConfigurationTest.java
deleted file mode 100644
index bae0d0e..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/ConfigurationTest.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.myrmidon.libs.selftest;
-
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.framework.AbstractContainerTask;
-
-/**
- * This is to test self interpretation of configuration.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ConfigurationTest
-    extends AbstractContainerTask
-    implements Configurable
-{
-    private String              m_message;
-
-    public void configure( final Configuration configuration )
-        throws ConfigurationException
-    {
-        final String message = configuration.getAttribute( "message" );
-        final Object object = resolve( message );
-
-        if( object instanceof String )
-        {
-            m_message = (String)object;
-        }
-        else
-        {
-            m_message = object.toString();
-        }
-    }
-
-    public void execute()
-        throws TaskException
-    {
-        getLogger().warn( m_message );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/ContentTest.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/ContentTest.java
deleted file mode 100644
index 6daf69a..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/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.myrmidon.libs.selftest;
-
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * This is to test whether content is added.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ContentTest
-    extends AbstractTask
-{
-    public void addContent( final Integer value )
-    {
-        getLogger().warn( "Integer content: " + value );
-    }
-
-    /*
-      public void addContent( final String blah )
-      {
-      System.out.println( "String content: " + blah );
-      }
-    */
-
-    public void execute()
-        throws TaskException
-    {
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/PrimitiveTypesTest.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/PrimitiveTypesTest.java
deleted file mode 100644
index 576e5e2..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/PrimitiveTypesTest.java
+++ /dev/null
@@ -1,90 +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.myrmidon.libs.selftest;
-
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * Test conversion of all the primitive types.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class PrimitiveTypesTest
-    extends AbstractTask
-{
-    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 execute()
-        throws TaskException
-    {
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/SubElementTest.java b/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/SubElementTest.java
deleted file mode 100644
index c42c155..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/libs/selftest/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.myrmidon.libs.selftest;
-
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * Test sub-elements addition.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class SubElementTest
-    extends AbstractTask
-{
-    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 execute()
-        throws TaskException
-    {
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/listeners/DefaultProjectListener.java b/proposal/myrmidon/src/java/org/apache/myrmidon/listeners/DefaultProjectListener.java
deleted file mode 100644
index c2ddc5f..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/listeners/DefaultProjectListener.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.myrmidon.listeners;
-
-import org.apache.avalon.framework.ExceptionUtil;
-
-/**
- * Default listener that emulates the old ant listener notifications.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultProjectListener
-    implements ProjectListener
-{
-    private String        m_prefix;
-
-    /**
-     * Notify listener of projectStarted event.
-     */
-    public void projectStarted()
-    {
-    }
-
-    /**
-     * 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 taskStarted event.
-     *
-     * @param taskName the name of task
-     */
-    public void taskStarted( final String taskName )
-    {
-        setPrefix( taskName );
-    }
-
-    /**
-     * Notify listener of taskFinished event.
-     */
-    public void taskFinished()
-    {
-        setPrefix( 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" + ExceptionUtil.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 != getPrefix() ) System.out.println( "\t[" + getPrefix() + "] " + data );
-        else System.out.println( data );
-    }
-
-    protected final String getPrefix()
-    {
-        return m_prefix;
-    }
-
-    protected final void setPrefix( final String prefix )
-    {
-        m_prefix = prefix;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/listeners/ProjectListener.java b/proposal/myrmidon/src/java/org/apache/myrmidon/listeners/ProjectListener.java
deleted file mode 100644
index f721f50..0000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/listeners/ProjectListener.java
+++ /dev/null
@@ -1,66 +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.myrmidon.listeners;
-
-/**
- * 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.
-     */
-    void projectStarted();
-
-    /**
-     * 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 taskStarted event.
-     *
-     * @param taskName the name of task
-     */
-    void taskStarted( String taskName );
-
-    /**
-     * Notify listener of taskFinished event.
-     */
-    void taskFinished();
-
-    /**
-     * 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/make/primitive-tests.ant b/proposal/myrmidon/src/make/primitive-tests.ant
deleted file mode 100644
index 7dd3486..0000000
--- a/proposal/myrmidon/src/make/primitive-tests.ant
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-==============================================================================
-
- Basic tests 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=".">
-
-  <import library="selftest" />
-
-  <property name="year" value="2000"/>
-
-  <target name="main" depends="test-target" />
-
-  <target name="file-manip">
-    <file-manip-test base-directory=".">
-      <source>
-        <include value="**/*.java" />       
-      </source>
-    </file-manip-test>
-  </target>
-
-  <target name="undefined-task">
-    <echo message="About to execute task that hasn't been defined"/>
-    <echo2 message="This should have failed"/>
-  </target>
-
-  <target name="no-test-target" if="no-do-tests">
-    <echo message="No tests done here"/>
-  </target>
-
-  <target name="test-target" depends="no-test-target" unless="no-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="A string" />
-      <add-beep message="Another String" />
-    </sub-elements-test>
-
-    <conf-test message="..." />
-    
-    <content-test>123</content-test>
-    
-  </target>
-
-</project>
\ No newline at end of file
diff --git a/proposal/myrmidon/src/make/sample.ant b/proposal/myrmidon/src/make/sample.ant
deleted file mode 100644
index c4220fe..0000000
--- a/proposal/myrmidon/src/make/sample.ant
+++ /dev/null
@@ -1,112 +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=".">
-
-  <projectref name="prim" location="primitive-tests.ant" />
-
-  <property name="year" value="2000"/>
-
-  <target name="main" depends="typedef-test, converterdef-test, datatype-test, namespace-test, ant1-tasklib-test, prim->file-manip" />
-
-  <target name="xp-deployer-test" depends="typedef-test, prim->undefined-task" />
-
-  <target name="all" depends="property-test, typedef-test, converterdef-test, ant-call-test, datatype-test, namespace-test, ant1-tasklib-test, prim->main" />
-
-<!--    
-    <register-tasklib lib="../../dist/lib/core.atl" />
--->
-
-  <target name="property-test">
-    <property name="blah" value="fred" />
-    <property name="${blah}" value="barney" />
-
-    <echo message="Doing the funky Echo with ${blah} ${fred} Year=${year}!"/>
-  </target>
-
-  <target name="typedef-test">
-    <typedef name="echo2" 
-             type="task" 
-             classname="org.apache.myrmidon.libs.core.Echo" 
-             lib="../../dist/lib/core.atl" />
-
-    <echo2 message="Luke to Echo base. Can you hear me?"/>
-  </target>
-
-  <target name="converterdef-test">
-    <converterdef classname="org.apache.myrmidon.libs.core.StringToClassConverter"
-                  source-type="java.lang.String"
-                  destination-type="java.lang.Class"
-                  lib="../../dist/lib/core.atl" />
-  </target> 
-
-  <target name="ant-call-test">
-    <!-- test elided until we decide scope and necessity of ant-call -->
-    <echo message="AntCall test elided until we decide scope and necessity of ant-call"/>
-<!--
-    <ant-call target="ant-call-test-target">
-      <param name="blah" value="blah-value" />
-    </ant-call>
--->
-  </target>
-
-  <target name="ant-call-test-target">
-    <echo message="This should fail ...."/>
-    <echo message="${blah}"/>
-    <echo message="Whoa - it no fail. You used ant-call to call me and set param blah!"/>
-  </target>
-
-  <target name="datatype-test">
-    <property name="foo">
-      <pattern value="*.java"/>
-    </property>
-
-    <pattern id="foo2" value="*.java" if="..." />
-
-    <echo message="foo=${foo}" />
-    <echo message="foo2=${foo2}" />
-  </target>
-
-  <target name="namespace-test">
-
-    <!-- ant and doc are built in namespaces -->
-    <echo ant:fail-on-error="true" message="Some random message">
-      <doc:description>
-        Test case for aspects
-      </doc:description>
-      <ant:some-element some-attribute="blah"/>
-    </echo>
-
-    <!-- load facility for blee: namespace -->
-    <facility namespace="blee">
-      <noop/>
-    </facility>
-
-    <echo blee:some-param="blah" message="Blee namespace test successful!"/>
-
-  </target>
-
-  <target name="ant1-tasklib-test">
-
-    <ant1-tasklib prefix="a1-" lib="../../dist/lib/ant1-compat.jar"/>
-
-    <a1-echo message="Boo!" />
-    <a1-mkdir dir="../../dist/test"/>
-    <a1-copy file="../../tools/lib/ant.jar" tofile="../../dist/test/ant1-compat.jar" />
-
-  </target>
-
-</project>
\ No newline at end of file
diff --git a/proposal/myrmidon/src/make/template-simple.ati b/proposal/myrmidon/src/make/template-simple.ati
deleted file mode 100644
index ba52461..0000000
--- a/proposal/myrmidon/src/make/template-simple.ati
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-
-<?xsl-params location="template-simple.properties"?>
-<?xsl-param name="bar" value="baz"?>
-<?xsl-stylesheet href="template-simple.xsl"?>
-
-<project default="main" basedir=".">
-
-  <target name="main">
-    <property name="year" value="2000"/>
-
-    <echo message="Before template"/>
-    <echo-template msg="Template echo 1!" />
-    <echo-template msg="Template echo 2!" />
-    <echo-template msg="Template echo 3!" />
-    <echo message="After template"/>
-  </target>
-
-</project>
\ No newline at end of file
diff --git a/proposal/myrmidon/src/make/template-simple.properties b/proposal/myrmidon/src/make/template-simple.properties
deleted file mode 100644
index 1d401e8..0000000
--- a/proposal/myrmidon/src/make/template-simple.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-# Here is sample property file
-foo=bar
diff --git a/proposal/myrmidon/src/make/template-simple.xsl b/proposal/myrmidon/src/make/template-simple.xsl
deleted file mode 100644
index 4c1e879..0000000
--- a/proposal/myrmidon/src/make/template-simple.xsl
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-  <xsl:template match="echo-template">
-    <echo message="This is an example of how to use a template to expand" />
-    <echo message="a single element into a list of tasks to do. In this" />
-    <echo message="example it is largely a case of echoing an attribute" />
-    <echo message="ie. msg='{@msg}' and embeddding an ant variable ${{year}}" />
-  </xsl:template>
-
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*"/>
-      <xsl:apply-templates/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
\ 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 2e9ea8b..0000000
--- a/proposal/myrmidon/src/manifest/ant-manifest.mf
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: org.apache.myrmidon.launcher.Main
-Created-By: Apache Ant Project
\ No newline at end of file
diff --git a/proposal/myrmidon/src/manifest/ant1-ant-descriptor.xml b/proposal/myrmidon/src/manifest/ant1-ant-descriptor.xml
deleted file mode 100644
index bddae2c..0000000
--- a/proposal/myrmidon/src/manifest/ant1-ant-descriptor.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<ant-lib>
-  <types>
-    <task name="ant1-tasklib" classname="org.apache.myrmidon.libs.ant1.Ant1Tasklib" />
-  </types>
-</ant-lib>
\ No newline at end of file
diff --git a/proposal/myrmidon/src/manifest/builtin-ant-descriptor.xml b/proposal/myrmidon/src/manifest/builtin-ant-descriptor.xml
deleted file mode 100644
index 8674d02..0000000
--- a/proposal/myrmidon/src/manifest/builtin-ant-descriptor.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<ant-lib>
-
-  <types>
-
-    <listener name="default" classname="org.apache.myrmidon.listeners.DefaultProjectListener"/>
-    <aspect name="noop" classname="org.apache.myrmidon.aspects.NoopAspectHandler"/>
-    <project-builder name="ant" classname="org.apache.myrmidon.components.builder.DefaultProjectBuilder"/>
-    <project-builder name="ati" classname="org.apache.myrmidon.components.builder.ATIProjectBuilder"/>
-
-    <!-- basic tasks/datatypes/coverters required in most environments -->
-    <task name="pattern" classname="org.apache.myrmidon.framework.TypeInstanceTask" />
-    <data-type name="pattern" classname="org.apache.myrmidon.framework.Pattern" />
-
-  </types>
-
-</ant-lib>
\ No newline at end of file
diff --git a/proposal/myrmidon/src/manifest/builtin-ant-roles.xml b/proposal/myrmidon/src/manifest/builtin-ant-roles.xml
deleted file mode 100644
index d16b547..0000000
--- a/proposal/myrmidon/src/manifest/builtin-ant-roles.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<roles>
-  <role shorthand="task"             name="org.apache.myrmidon.api.Task"/>
-  <role shorthand="data-type"        name="org.apache.myrmidon.framework.DataType"/>
-  <role shorthand="listener"         name="org.apache.myrmidon.listeners.ProjectListener"/>
-  <role shorthand="aspect"           name="org.apache.myrmidon.aspects.AspectHandler"/>
-  <role shorthand="project-builder"  name="org.apache.myrmidon.components.builder.ProjectBuilder"/>
-</roles>
\ No newline at end of file
diff --git a/proposal/myrmidon/src/manifest/core-ant-descriptor.xml b/proposal/myrmidon/src/manifest/core-ant-descriptor.xml
deleted file mode 100644
index 4f34ebe..0000000
--- a/proposal/myrmidon/src/manifest/core-ant-descriptor.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<ant-lib>
-  
-  <types>
-
-    <!-- basic tasks/datatypes/coverters required in most environments -->
-    <task name="echo" classname="org.apache.myrmidon.libs.core.Echo" />
-    <task name="property" classname="org.apache.myrmidon.libs.core.Property" />
-
-  </types>
-  
-  <converters>
-
-    <converter classname="org.apache.myrmidon.libs.core.StringToFileConverter" 
-               source="java.lang.String" 
-               destination="java.io.File" />
-    <converter classname="org.apache.myrmidon.libs.core.StringToLongConverter" 
-               source="java.lang.String" 
-               destination="java.lang.Long" />
-    <converter classname="org.apache.myrmidon.libs.core.StringToIntegerConverter" 
-               source="java.lang.String" 
-               destination="java.lang.Integer" />
-    <converter classname="org.apache.myrmidon.libs.core.StringToShortConverter" 
-               source="java.lang.String" 
-               destination="java.lang.Short" />
-    <converter classname="org.apache.myrmidon.libs.core.StringToByteConverter" 
-               source="java.lang.String" 
-               destination="java.lang.Byte" />
-    <converter classname="org.apache.myrmidon.libs.core.StringToDoubleConverter" 
-               source="java.lang.String" 
-               destination="java.lang.Double" />
-    <converter classname="org.apache.myrmidon.libs.core.StringToFloatConverter" 
-               source="java.lang.String" 
-               destination="java.lang.Float" />
-    <converter classname="org.apache.myrmidon.libs.core.StringToClassConverter" 
-               source="java.lang.String" 
-               destination="java.lang.Class" />
-    <converter classname="org.apache.myrmidon.libs.core.StringToURLConverter" 
-               source="java.lang.String" 
-               destination="java.net.URL" />
-
-  </converters>
-
-</ant-lib>
\ 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 82a5fbf..0000000
--- a/proposal/myrmidon/src/manifest/myrmidon-manifest.mf
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: org.apache.myrmidon.frontends.CLIMain
-Created-By: Apache Ant Project
diff --git a/proposal/myrmidon/src/manifest/runtime-ant-descriptor.xml b/proposal/myrmidon/src/manifest/runtime-ant-descriptor.xml
deleted file mode 100644
index 3d9f5d4..0000000
--- a/proposal/myrmidon/src/manifest/runtime-ant-descriptor.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<ant-lib>
-  
-  <types>
-    <!-- core tasks for operation -->
-    <task name="facility" classname="org.apache.myrmidon.libs.runtime.Facility" />
-    <task name="typedef" classname="org.apache.myrmidon.libs.runtime.TypeDef" />
-    <task name="converterdef" classname="org.apache.myrmidon.libs.runtime.ConverterDef" />
-    <task name="import" classname="org.apache.myrmidon.libs.runtime.Import" />
-    <!--<task name="ant-call" classname="org.apache.myrmidon.libs.runtime.AntCall" />-->
-  </types>
-
-</ant-lib>
\ No newline at end of file
diff --git a/proposal/myrmidon/src/manifest/selftest-ant-descriptor.xml b/proposal/myrmidon/src/manifest/selftest-ant-descriptor.xml
deleted file mode 100644
index c6ce854..0000000
--- a/proposal/myrmidon/src/manifest/selftest-ant-descriptor.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<ant-lib> 
-  <types>
-    <!-- tasks to test operation of engine -->
-    <task name="prim-test" classname="org.apache.myrmidon.libs.selftest.PrimitiveTypesTest" />
-    <task name="sub-elements-test" classname="org.apache.myrmidon.libs.selftest.SubElementTest" />
-    <task name="conf-test" classname="org.apache.myrmidon.libs.selftest.ConfigurationTest" />
-    <task name="content-test" classname="org.apache.myrmidon.libs.selftest.ContentTest" />
-    <task name="file-manip-test" classname="org.apache.myrmidon.libs.selftest.FileManipulationTest" />
-  </types>
-</ant-lib>
\ 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 4347717..0000000
--- a/proposal/myrmidon/tools/lib/ant.jar
+++ /dev/null
Binary files differ
diff --git a/src/antidote/WHAT-IS-THIS-P b/src/antidote/WHAT-IS-THIS-P
deleted file mode 100644
index b63f1aa..0000000
--- a/src/antidote/WHAT-IS-THIS-P
+++ /dev/null
@@ -1,6 +0,0 @@
-This /used/ to be the home of Antidote, the GUI for Ant. It has moved
-(or rather, graduate) to the cvs module jakarta-ant-antidote, and must
-be retrieved separately from Ant, but can be found in the same place you found
-source version of Ant.
-
--- The Antidote Team --
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/coverage-frames.xsl b/src/etc/coverage-frames.xsl
deleted file mode 100644
index 4e5c6b4..0000000
--- a/src/etc/coverage-frames.xsl
+++ /dev/null
@@ -1,440 +0,0 @@
-<!--
- 
- Sample stylesheet to be used with JProbe 3.0 XML output.
- 
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
- 
- It is best used with JProbe Coverage Ant task that gives you the benefit
- of a reference classpath so that you have the list of classes/methods
- that are not used at all in a given classpath.
- 
- @author Stephane Bailliez <a href="sbailliez@imediation.com"/>
- 
--->
-<xsl:stylesheet	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-	xmlns:lxslt="http://xml.apache.org/xslt"
-	xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
-	extension-element-prefixes="redirect">
-
-<xsl:output	method="html" indent="yes"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-
-<!-- default output directory is current directory -->
-<xsl:param name="output.dir" select="'.'"/>
-
-<!-- ======================================================================
-	Root element
-    ======================================================================= -->
-<xsl:template match="/snapshot">
-	<!-- create the index.html -->
-	<redirect:write file="{$output.dir}/index.html">
-		<xsl:call-template name="index.html"/>
-	</redirect:write>
-
-	<!-- create the stylesheet.css -->
-	<redirect:write file="{$output.dir}/stylesheet.css">
-		<xsl:call-template name="stylesheet.css"/>
-	</redirect:write>
-
-	<!-- create the overview-packages.html at the root -->
-	<redirect:write file="{$output.dir}/overview-summary.html">
-		<xsl:apply-templates select="." mode="overview.packages"/>
-	</redirect:write>
-
-	<!-- create the all-packages.html at the root -->
-	<redirect:write file="{$output.dir}/overview-frame.html">
-		<xsl:apply-templates select="." mode="all.packages"/>
-	</redirect:write>
-	
-	<!-- create the all-classes.html at the root -->
-	<redirect:write file="{$output.dir}/allclasses-frame.html">
-		<xsl:apply-templates select="." mode="all.classes"/>
-	</redirect:write>
-	
-	<!-- process all packages -->
-	<xsl:apply-templates select="./package" mode="write"/>
-</xsl:template>
-
-<!-- =======================================================================
-	Frameset definition. Entry point for the report.
-	3 frames: packageListFrame, classListFrame, classFrame
-    ======================================================================= -->
-<xsl:template name="index.html">
-<html>
-	<head><title>Coverage Results.</title></head>
-	<frameset cols="20%,80%">
-		<frameset rows="30%,70%">
-			<frame src="overview-frame.html" name="packageListFrame"/>
-			<frame src="allclasses-frame.html" name="classListFrame"/>
-		</frameset>
-		<frame src="overview-summary.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>
-	</noframes>
-</html>
-</xsl:template>
-
-<!-- =======================================================================
-	Stylesheet CSS used
-    ======================================================================= -->
-<xsl:template name="stylesheet.css">
-	BODY {
-		font:normal 68% verdana,arial,helvetica;
-		color:#000000;
-	}
-	TD {
-		FONT-SIZE: 68%
-	}
-	TH {
-		FONT-SIZE: 68%;font-weight:bold;
-	}
-	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
-	}
-</xsl:template>
-
-<!-- =======================================================================
-	List of all classes in all packages
-	This will be the first page in the classListFrame
-    ======================================================================= -->
-<xsl:template match="snapshot" mode="all.classes">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link"/>
-		</head>
-		<body>
-			<h2>Classes</h2>
-			<p>
-			<table width="100%">
-				<xsl:for-each select="package/class">
-					<xsl:sort select="@name"/>
-				    <xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
-				    <xsl:variable name="link">
-						<xsl:if test="not($package.name='')">
-							<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
-						</xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
-				    </xsl:variable>
-					<tr>
-						<td nowrap="nowrap">
-							<a target="classFrame" href="{$link}"><xsl:value-of select="@name"/></a>
-						</td>
-					</tr>
-				</xsl:for-each>
-			</table>
-			</p>
-		</body>
-	</html>
-</xsl:template>
-
-<!-- list of all packages -->
-<xsl:template match="snapshot" mode="all.packages">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link"/>
-		</head>
-		<body>
-			<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
-			<h2>Packages</h2>
-			<p>
-			<table width="100%">
-				<xsl:for-each select="package">
-					<xsl:sort select="@name" order="ascending"/>
-					<tr>
-						<td nowrap="nowrap">
-							<a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame">
-								<xsl:value-of select="@name"/>
-							</a>
-						</td>
-					</tr>
-				</xsl:for-each>
-			</table>
-			</p>
-		</body>
-	</html>
-</xsl:template>
-
-<!-- overview of statistics in packages -->
-<xsl:template match="snapshot" mode="overview.packages">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link"/>
-		</head>
-		<body onload="open('allclasses-frame.html','classListFrame')">
-		<xsl:call-template name="pageHeader"/>
-		<h2>Summary</h2>
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-			<tr bgcolor="#A6CAF0" valign="top">
-				<th width="10%" nowrap="nowrap">Date</th>
-				<th width="10%" nowrap="nowrap">Elapsed time</th>
-				<th width="10%" nowrap="nowrap">Reported Classes</th>
-				<th width="10%" nowrap="nowrap">Methods Hit</th>
-				<th width="10%" nowrap="nowrap">Lines Hit</th>
-			</tr>
-			<tr bgcolor="#EEEEE" valign="top">
-				<td nowrap="nowrap"><xsl:value-of select="execution_log/@program_start"/></td>
-				<td><xsl:value-of select="format-number(execution_log/@elapsed_time div 1000,'0.0')"/>secs</td>
-				<td><xsl:value-of select="count(package/class)"/></td>
-				<td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
-				<td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
-			</tr>
-		</table>
-		<table border="0" width="95%">
-		<tr>
-		<td	style="text-align: justify;">
-		To ensure accurate test runs on Java applications, developers need to know how much of
-		the code has been tested, and where to find any untested code. Coverage helps you
-		locate untested code, and measure precisely how much code has been exercised.
-		The result is a higher quality application in a shorter period of time.
-		<p/>
-		</td>
-		</tr>
-		</table>
-
-		<h2>Packages</h2>
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-			<xsl:apply-templates select="package[1]" mode="stats.header"/>
-			<!-- display packages and sort them via their coverage rate -->
-			<xsl:for-each select="package">
-				<xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
-				<tr bgcolor="#EEEEE" valign="top">
-					<td><a href="{translate(@name,'.','/')}/package-summary.html"><xsl:value-of select="@name"/></a></td>
-					<td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
-					<td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
-				</tr>
-			</xsl:for-each>
-		</table>
-		</body>
-		</html>
-</xsl:template>
-
-<!--
- detailed info for a package. It will output the list of classes
-, the summary page, and the info for each class
--->
-<xsl:template match="package" mode="write">
-	<xsl:variable name="package.dir">
-		<xsl:if test="not(@name = '')"><xsl:value-of select="translate(@name,'.','/')"/></xsl:if>
-		<xsl:if test="@name = ''">.</xsl:if>
-	</xsl:variable>
-
-	<!-- create a classes-list.html in the package directory -->
-	<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
-		<xsl:apply-templates select="." mode="classes.list"/>
-	</redirect:write>
-	
-	<!-- create a package-summary.html in the package directory -->
-	<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
-		<xsl:apply-templates select="." mode="package.summary"/>
-	</redirect:write>
-	
-	<!-- for each class, creates a @name.html -->
-	<xsl:for-each select="class">
-		<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
-			<xsl:apply-templates select="." mode="class.details"/>
-		</redirect:write>
-	</xsl:for-each>
-</xsl:template>
-
-<!-- list of classes in a package -->
-<xsl:template match="package" mode="classes.list">
-	<html>
-		<HEAD>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="@name"/>
-			</xsl:call-template>
-		</HEAD>
-		<BODY>
-			<table width="100%">
-				<tr>
-					<td nowrap="nowrap">
-						<H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="@name"/></a></H2>
-					</td>
-				</tr>
-			</table>
-	
-			<H2>Classes</H2>
-			<p>
-			<TABLE WIDTH="100%">
-				<xsl:for-each select="class">
-					<xsl:sort select="@name"/>
-					<tr>
-						<td nowrap="nowrap">
-							<a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
-						</td>
-					</tr>
-				</xsl:for-each>
-			</TABLE>
-			</p>
-		</BODY>
-	</html>
-</xsl:template>
-
-<!-- summary of a package -->
-<xsl:template match="package" mode="package.summary">
-	<HTML>
-		<HEAD>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="@name"/>
-			</xsl:call-template>
-		</HEAD>
-		<!-- when loading this package, it will open the classes into the frame -->
-		<BODY onload="open('package-frame.html','classListFrame')">
-			<xsl:call-template name="pageHeader"/>
-			<h3>Package <xsl:value-of select="@name"/></h3>
-			
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:apply-templates select="." mode="stats.header"/>
-				<xsl:apply-templates select="." mode="stats"/>
-			</table>
-					
-			<xsl:if test="count(class) &gt; 0">
-				<H2>Classes</H2>
-				<p>
-				<table border="0" cellpadding="5" cellspacing="2" width="95%">
-					<xsl:apply-templates select="." mode="stats.header"/>
-					<xsl:apply-templates select="class" mode="stats">
-						<xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
-					</xsl:apply-templates>
-				</table>
-				</p>
-			</xsl:if>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-<!-- details of a class -->
-<xsl:template match="class" mode="class.details">
-	<xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
-	<HTML>
-		<HEAD>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="$package.name"/>
-			</xsl:call-template>
-		</HEAD>
-		<BODY>
-			<xsl:call-template name="pageHeader"/>
-			<H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
-
-			<!-- class summary -->
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:apply-templates select="." mode="stats.header"/>
-				<xsl:apply-templates select="." mode="stats"/>
-			</table>
-	
-			<!-- details of methods -->
-			<H2>Methods</H2>
-			<p>
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:apply-templates select="method[1]" mode="stats.header"/>
-				<xsl:apply-templates select="method" mode="stats">
-					<xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
-				</xsl:apply-templates>
-			</table>
-			
-			</p>
-		</BODY>
-	</HTML>
-
-</xsl:template>
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-	<h1>Coverage Results</h1>
-	<table width="100%">
-	<tr>
-		<td align="left"></td>
-		<td align="right">Designed for use with <a href='http://www.sitraka.com/jprobe'>Sitraka JProbe</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
-	</tr>
-	</table>
-	<hr size="1"/>
-</xsl:template>
-
-<xsl:template name="table.header">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<th width="80%">Name</th>
-		<th width="10%" nowrap="nowrap">Methods Hit</th>
-		<th width="10%" nowrap="nowrap">Lines Hit</th>
-	</tr>
-</xsl:template>
-
-<xsl:template match="method" mode="stats.header">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<th width="90%">Name</th>
-		<th width="10%" nowrap="nowrap">Lines Hit</th>
-	</tr>
-</xsl:template>
-<xsl:template match="method" mode="stats">
-	<tr bgcolor="#EEEEE" valign="top">
-		<td><xsl:value-of select="@name"/></td>
-		<td>
-		<xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/>
-		</td>
-	</tr>
-</xsl:template>
-
-<xsl:template match="package|class" mode="stats.header">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<th width="80%">Name</th>
-		<th width="10%" nowrap="nowrap">Methods Hit</th>
-		<th width="10%" nowrap="nowrap">Lines Hit</th>
-	</tr>
-</xsl:template>
-<xsl:template match="package|class" mode="stats">
-	<tr bgcolor="#EEEEE" valign="top">
-		<td><xsl:value-of select="@name"/></td>
-		<td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
-		<td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
-	</tr>
-</xsl:template>
-
-<!--
-    transform string like a.b.c to ../../../
-    @param path the path to transform into a descending directory path
--->
-<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>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
-	<xsl:param name="package.name"/>
-	<LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
-</xsl:template>
-
-</xsl:stylesheet>
-
-
diff --git a/src/etc/junit-frames.xsl b/src/etc/junit-frames.xsl
deleted file mode 100644
index b0a4ead..0000000
--- a/src/etc/junit-frames.xsl
+++ /dev/null
@@ -1,623 +0,0 @@
-<xsl:stylesheet	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-	xmlns:lxslt="http://xml.apache.org/xslt"
-	xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
-	extension-element-prefixes="redirect">
-
-
-<!-- ======================================================================
-
-    Stylesheet to transform an XML file generated by the Ant JUnit task into
-    a set of JavaDoc-like HTML page to make pages more convenient to be browsed.
-    
-    It use the Xalan redirect extension to write to multiple output files.
-    
-    Note: HTML output can be made much more clean by removing non css attributes
-
-    ====================================================================== -->
-<xsl:output method="html" indent="yes"/>
-<xsl:decimal-format decimal-separator="." grouping-separator=","/>
-
-<!--
-    Xalan redirect extension writes relative file based on the parent directory
-    from the main output file, unfortunately, this is never set and you have
-    to do it yourself on the API. The code that does it in command line was
-    commented out in Xalan 1.2.2 :-(
-    
-    Therefore I will use a stylesheet param for the output directory.
-    
-    This has to be invoked as follows from the command line:
-    
-    java -classpath bsf.jar;xalan.jar;xerces.jar org.apache.xalan.xslt.Process -IN testsuites.xml -XSL junit-frames.xsl -PARAM output.dir './report'
--->
-<xsl:param name="output.dir" select="'.'"/>
-
-
-<xsl:template match="testsuites">
-	<!-- create the index.html -->
-	<redirect:write file="{$output.dir}/index.html">
-		<xsl:call-template name="index.html"/>
-	</redirect:write>
-
-	<!-- create the stylesheet.css -->
-	<redirect:write file="{$output.dir}/stylesheet.css">
-		<xsl:call-template name="stylesheet.css"/>
-	</redirect:write>
-
-	<!-- create the overview-packages.html at the root -->
-	<redirect:write file="{$output.dir}/overview-summary.html">
-		<xsl:apply-templates select="." mode="overview.packages"/>
-	</redirect:write>
-
-	<!-- create the all-packages.html at the root -->
-	<redirect:write file="{$output.dir}/overview-frame.html">
-		<xsl:apply-templates select="." mode="all.packages"/>
-	</redirect:write>
-	
-	<!-- create the all-classes.html at the root -->
-	<redirect:write file="{$output.dir}/allclasses-frame.html">
-		<xsl:apply-templates select="." mode="all.classes"/>
-	</redirect:write>
-	
-	<!-- process all packages -->
-	<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-		<xsl:call-template name="package">
-			<xsl:with-param name="name" select="@package"/>
-		</xsl:call-template>
-	</xsl:for-each>
-</xsl:template>
-
-
-<xsl:template name="package">
-	<xsl:param name="name"/>
-	<xsl:variable name="package.dir">
-		<xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
-		<xsl:if test="$name = ''">.</xsl:if>
-	</xsl:variable>	
-	<!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
-	<!-- create a classes-list.html in the package directory -->
-	<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
-		<xsl:call-template name="classes.list">
-			<xsl:with-param name="name" select="$name"/>
-		</xsl:call-template>
-	</redirect:write>
-	
-	<!-- create a package-summary.html in the package directory -->
-	<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
-		<xsl:call-template name="package.summary">
-			<xsl:with-param name="name" select="$name"/>
-		</xsl:call-template>
-	</redirect:write>
-	
-	<!-- for each class, creates a @name.html -->
-	<!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
-	<xsl:for-each select="/testsuites/testsuite[@package = $name]">
-		<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
-			<xsl:apply-templates select="." mode="class.details"/>
-		</redirect:write>
-	</xsl:for-each>
-</xsl:template>
-
-<xsl:template name="index.html">
-<html>
-	<head>
-		<title>Unit Test Results.</title>
-	</head>
-	<frameset cols="20%,80%">
-		<frameset rows="30%,70%">
-			<frame src="overview-frame.html" name="packageListFrame"/>
-			<frame src="allclasses-frame.html" name="classListFrame"/>
-		</frameset>
-		<frame src="overview-summary.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>
-	</noframes>
-</html>
-</xsl:template>
-
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.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;
-}
-
-</xsl:template>
-
-
-<!-- ======================================================================
-    This page is created for every testsuite class.
-    It prints a summary of the testsuite and detailed information about
-    testcase methods.
-     ====================================================================== -->
-<xsl:template match="testsuite" mode="class.details">
-	<xsl:variable name="package.name" select="@package"/>
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="$package.name"/>
-			</xsl:call-template>
-		</head>
-		<body>
-			<xsl:call-template name="pageHeader"/>	
-			<h3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></h3>
-
-			
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:call-template name="testsuite.test.header"/>
-				<xsl:apply-templates select="." mode="print.test"/>
-			</table>
-	
-			<h2>Tests</h2>
-			<p>
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:call-template name="testcase.test.header"/>
-				<xsl:apply-templates select="./testcase" mode="print.test"/>
-			</table>
-			
-			</p>
-		</body>
-	</html>
-</xsl:template>
-
-
-<!-- ======================================================================
-    This page is created for every package.
-    It prints the name of all classes that belongs to this package.
-    @param name the package name to print classes.
-     ====================================================================== -->
-<!-- list of classes in a package -->
-<xsl:template name="classes.list">
-	<xsl:param name="name"/>
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="$name"/>
-			</xsl:call-template>
-		</head>
-		<body>
-			<table width="100%">
-				<tr>
-					<td nowrap="nowrap">
-						<h2><a href="package-summary.html" target="classFrame"><xsl:value-of select="$name"/></a></h2>
-					</td>
-				</tr>
-			</table>
-	
-			<h2>Classes</h2>
-			<p>
-			<table width="100%">
-				<xsl:for-each select="/testsuites/testsuite[./@package = $name]">
-					<xsl:sort select="@name"/>
-					<tr>
-						<td nowrap="nowrap">
-							<a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
-						</td>
-					</tr>
-				</xsl:for-each>
-			</table>
-			</p>
-		</body>
-	</html>
-</xsl:template>
-
-
-<!--
-	Creates an all-classes.html file that contains a link to all package-summary.html
-	on each class.
--->
-<xsl:template match="testsuites" mode="all.classes">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name"/>
-			</xsl:call-template>
-		</head>
-		<body>
-			<h2>Classes</h2>
-			<p>
-			<table width="100%">
-				<xsl:apply-templates select="testsuite" mode="all.classes">
-					<xsl:sort select="@name"/>
-				</xsl:apply-templates>
-			</table>
-			</p>
-		</body>
-	</html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.classes">
-	<!-- (ancestor::package)[last()] is buggy in MSXML3, fixed in SP1? -->
-	<xsl:variable name="package.name" select="@package"/>
-	<tr>
-		<td nowrap="nowrap">
-			<a target="classFrame">
-				<xsl:attribute name="href">
-					<xsl:if test="not($package.name='')">
-						<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
-					</xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
-				</xsl:attribute>
-				<xsl:value-of select="@name"/>
-			</a>
-		</td>
-	</tr>
-</xsl:template>
-
-
-<!--
-	Creates an html file that contains a link to all package-summary.html files on
-	each package existing on testsuites.
-	@bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="testsuites" mode="all.packages">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name"/>
-			</xsl:call-template>
-		</head>
-		<body>
-			<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
-			<h2>Packages</h2>
-			<p>
-				<table width="100%">
-					<xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
-						<xsl:sort select="@package"/>
-					</xsl:apply-templates>
-				</table>
-			</p>
-		</body>
-	</html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.packages">
-	<tr>
-		<td nowrap="nowrap">
-			<a href="{translate(@package,'.','/')}/package-summary.html" target="classFrame">
-				<xsl:value-of select="@package"/>
-			</a>
-		</td>
-	</tr>
-</xsl:template>
-
-
-<xsl:template match="testsuites" mode="overview.packages">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name"/>
-			</xsl:call-template>
-		</head>
-		<body>
-		<xsl:call-template name="pageHeader"/>
-		<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%">
-		<tr bgcolor="#A6CAF0" valign="top">
-			<td><strong>Tests</strong></td>
-			<td><strong>Failures</strong></td>
-			<td><strong>Errors</strong></td>
-			<td><strong>Success rate</strong></td>
-			<td><strong>Time</strong></td>
-		</tr>
-		<tr bgcolor="#EEEEE" valign="top">
-			<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:otherwise>Pass</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:call-template name="display-percent">
-					<xsl:with-param name="value" select="$successRate"/>
-				</xsl:call-template>
-			</td>
-			<td>
-				<xsl:call-template name="display-time">
-					<xsl:with-param name="value" select="$timeCount"/>
-				</xsl:call-template>
-			</td>
-
-		</tr>
-		</table>
-		<table border="0" width="95%">
-		<tr>
-		<td	style="text-align: justify;">
-		Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
-		</td>
-		</tr>
-		</table>
-		
-		<h2>Packages</h2>
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-			<xsl:call-template name="testsuite.test.header"/>
-			<xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-				<xsl:sort select="@package" order="ascending"/>
-				<!-- get the node set containing all testsuites that have the same package -->
-				<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
-				<tr bgcolor="#EEEEE" valign="top">
-					<!-- display a failure if there is any failure/error in the package -->
-					<xsl:attribute name="class">
-						<xsl:choose>
-							<xsl:when test="sum($insamepackage/@errors) &gt; 0">Error</xsl:when>
-							<xsl:when test="sum($insamepackage/@failures) &gt; 0">Failure</xsl:when>
-							<xsl:otherwise>Pass</xsl:otherwise>
-						</xsl:choose>
-					</xsl:attribute>
-					<td><a href="{translate(@package,'.','/')}/package-summary.html"><xsl:value-of select="@package"/></a></td>
-					<td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
-					<td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
-					<td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
-					<td>
-					<xsl:call-template name="display-time">
-						<xsl:with-param name="value" select="sum($insamepackage/@time)"/>
-					</xsl:call-template>
-					</td>
-				</tr>
-			</xsl:for-each>
-		</table>
-		</body>
-		</html>
-</xsl:template>
-
-
-<xsl:template name="package.summary">
-	<xsl:param name="name"/>
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="$name"/>
-			</xsl:call-template>
-		</head>
-		<body>
-			<xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
-			<xsl:call-template name="pageHeader"/>
-			<h3>Package <xsl:value-of select="$name"/></h3>
-			
-			<!--table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:call-template name="class.metrics.header"/>
-				<xsl:apply-templates select="." mode="print.metrics"/>
-			</table-->
-			
-			<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
-			<xsl:if test="count($insamepackage) &gt; 0">
-				<h2>Classes</h2>
-				<p>
-				<table border="0" cellpadding="5" cellspacing="2" width="95%">
-					<xsl:call-template name="testsuite.test.header"/>
-					<xsl:apply-templates select="$insamepackage" mode="print.test">
-						<xsl:sort select="@name"/>
-					</xsl:apply-templates>
-				</table>
-				</p>
-			</xsl:if>
-		</body>
-	</html>
-</xsl:template>
-
-
-<!--
-    transform string like a.b.c to ../../../
-    @param path the path to transform into a descending directory path
--->
-<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>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
-	<xsl:param name="package.name"/>
-	<link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
-</xsl:template>
-
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-	<h1>Unit Test Results</h1>
-	<table width="100%">
-	<tr>
-		<td align="left"></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>
-
-<!-- class header -->
-<xsl:template name="testsuite.test.header">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<td width="80%"><strong>Name</strong></td>
-		<td><strong>Tests</strong></td>
-		<td><strong>Errors</strong></td>
-		<td><strong>Failures</strong></td>
-		<td nowrap="nowrap"><strong>Time(s)</strong></td>
-	</tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="testcase.test.header">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<td><strong>Name</strong></td>
-		<td><strong>Status</strong></td>
-		<td width="80%"><strong>Type</strong></td>
-		<td nowrap="nowrap"><strong>Time(s)</strong></td>
-	</tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="testsuite" mode="print.test">
-	<tr bgcolor="#EEEEE" valign="top">		
-		<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:otherwise>Pass</xsl:otherwise>
-			</xsl:choose>
-		</xsl:attribute>
-		<td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
-		<td><xsl:apply-templates select="@tests"/></td>
-		<td><xsl:apply-templates select="@errors"/></td>
-		<td><xsl:apply-templates select="@failures"/></td>
-		<td><xsl:call-template name="display-time">
-				<xsl:with-param name="value" select="@time"/>
-			</xsl:call-template>
-        </td>
-	</tr>
-</xsl:template>
-
-<xsl:template match="testcase" mode="print.test">
-	<tr bgcolor="#EEEEE" valign="top">
-	    <xsl:attribute name="class">
-			<xsl:choose>
-				<xsl:when test="error">Error</xsl:when>
-				<xsl:when test="failure">Failure</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:call-template name="display-time">
-                <xsl:with-param name="value" select="@time"/>
-		    </xsl:call-template>
-		</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 testcase 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 latter is better but might be problematic for non-21" monitors... -->
-	<!--pre><xsl:value-of select="."/></pre-->
-</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>
-
-<xsl:template name="display-time">
-	<xsl:param name="value"/>
-	<xsl:value-of select="format-number($value,'0.000')"/>
-</xsl:template>
-
-<xsl:template name="display-percent">
-	<xsl:param name="value"/>
-	<xsl:value-of select="format-number($value,'0.00%')"/>
-</xsl:template>
-</xsl:stylesheet>
-	
diff --git a/src/etc/junit-noframes.xsl b/src/etc/junit-noframes.xsl
deleted file mode 100644
index 06e41ca..0000000
--- a/src/etc/junit-noframes.xsl
+++ /dev/null
@@ -1,408 +0,0 @@
-<xsl:stylesheet	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-
-<!-- ======================================================================
-
-	Stylesheet to transform an XML file generated by the Ant MAudit task into
-	a set of JavaDoc-like HTML page to make pages more convenient to be browsed.
-	
-	It use the Xalan redirect extension to write to multiple output files.
-	
-	Note: HTML output can be made much more clean by removing non css attributes
-
-	====================================================================== -->
-<xsl:output method="html" indent="yes"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-
-<xsl:template match="testsuites">
-	<HTML>
-		<HEAD>
-		<style type="text/css">
-		BODY {
-			font:normal 68% verdana,arial,helvetica;
-			color:#000000;
-		}
-		TABLE TR TD, TABLE TR TH {
-		    font-size: 68%;
-		}
-		TABLE.details TR TH{
-			font-weight: bold;
-			text-align:left;
-			background:#A6CAF0;
-		}
-		TABLE.details TR TD{
-			background:#EEEEE0;
-		}
-		
-		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>
-			<a name="#top"></a>
-			<xsl:call-template name="pageHeader"/>	
-			
-			<!-- 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 class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-			<xsl:call-template name="testsuite.test.header"/>
-			<!-- list all packages recursively -->
-			<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-				<xsl:sort select="@package"/>
-				<xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
-				<xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
-				<xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
-				<xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
-				<xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
-				
-				<!-- write a summary for the package -->
-				<tr valign="top">
-					<!-- set a nice color depending if there is an error/failure -->
-					<xsl:attribute name="class">
-						<xsl:choose>
-							<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
-							<xsl:when test="$errorCount &gt; 0">Error</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:call-template name="display-time">
-						<xsl:with-param name="value" select="$timeCount"/>
-					</xsl:call-template>
-					</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="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-			<xsl:sort select="@package"/>
-				<a name="#{@package}"></a>
-				<h3>Package <xsl:value-of select="@package"/></h3>
-				
-				<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-					<xsl:call-template name="testsuite.test.header"/>
-			
-					<!-- match the testsuites of this package -->
-					<xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
-				</table>
-				<a href="#top">Back to top</a>
-				<p/>
-				<p/>
-		</xsl:for-each>
-	</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 class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-				<!-- Header -->
-				<xsl:call-template name="testcase.test.header"/>
-
-				<!-- match the testcases of this package -->
-				<xsl:apply-templates select="testcase" mode="print.test"/>
-			</table>
-			<p/>
-			<xsl:apply-templates select="properties"/>
-			
-			<a href="#top">Back to top</a>
-		</xsl:for-each>
-	</xsl:template>
-	
-	<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 class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-		<tr valign="top">
-			<th>Tests</th>
-			<th>Failures</th>
-			<th>Errors</th>
-			<th>Success rate</th>
-			<th>Time</th>
-		</tr>
-		<tr valign="top">
-			<xsl:attribute name="class">
-				<xsl:choose>
-					<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
-					<xsl:when test="$errorCount &gt; 0">Error</xsl:when>
-				</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:call-template name="display-percent">
-					<xsl:with-param name="value" select="$successRate"/>
-				</xsl:call-template>
-			</td>
-			<td>
-				<xsl:call-template name="display-time">
-					<xsl:with-param name="value" select="$timeCount"/>
-				</xsl:call-template>
-			</td>
-
-		</tr>
-		</table>
-		<table border="0" width="95%">
-		<tr>
-		<td	style="text-align: justify;">
-		Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
-		</td>
-		</tr>
-		</table>
-	</xsl:template>
-	
-	<xsl:template match="properties">
-	<!--
-	    I have NO idea how to display properties ! :-(
-	    It takes an incredible amount of space in the page and it's
-	    really unreadable.
-	    <xsl:variable name="count" select="count(property)"/>
-	    <h3>System Properties</h3>
-		<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-		<tr valign="top">
-			<th>Name</th>
-			<th>Value</th>
-		</tr>
-		<xsl:for-each select="property">
-			<tr valign="top">
-				<td><xsl:value-of select="@name"/></td>
-				<td><xsl:value-of select="@value"/></td>
-			</tr>
-		</xsl:for-each>
-		</table>
-	-->
-	</xsl:template>
-	
-	
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-	<h1>Unit Test Results</h1>
-	<table width="100%">
-	<tr>
-		<td align="left"></td>
-		<td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://jakarta.apache.org/ant'>Ant</a>.</td>
-	</tr>
-	</table>
-	<hr size="1"/>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="header">
-	<tr valign="top">
-		<th width="80%">Name</th>
-		<th>Tests</th>
-		<th>Errors</th>
-		<th>Failures</th>
-		<th nowrap="nowrap">Time(s)</th>
-	</tr>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="testsuite.test.header">
-	<tr valign="top">
-		<th width="80%">Name</th>
-		<th>Tests</th>
-		<th>Errors</th>
-		<th>Failures</th>
-		<th nowrap="nowrap">Time(s)</th>
-	</tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="testcase.test.header">
-	<tr valign="top">
-		<th>Name</th>
-		<th>Status</th>
-		<th width="80%">Type</th>
-		<th nowrap="nowrap">Time(s)</th>
-	</tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="testsuite" mode="print.test">
-	<tr valign="top">
-		<!-- set a nice color depending if there is an error/failure -->
-		<xsl:attribute name="class">
-			<xsl:choose>
-				<xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
-				<xsl:when test="@errors[.&gt; 0]">Error</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:call-template name="display-time">
-				<xsl:with-param name="value" select="@time"/>
-			</xsl:call-template>
-		</td>
-	</tr>
-</xsl:template>
-
-<xsl:template match="testcase" mode="print.test">
-	<tr valign="top">
-		<xsl:attribute name="class">
-			<xsl:choose>
-				<xsl:when test="failure | error">Error</xsl:when>
-			</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:call-template name="display-time">
-				<xsl:with-param name="value" select="@time"/>
-			</xsl:call-template>
-		</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>
-
-<!--
-	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>
-
-<xsl:template name="display-time">
-	<xsl:param name="value"/>
-	<xsl:value-of select="format-number($value,'0.000')"/>
-</xsl:template>
-
-<xsl:template name="display-percent">
-	<xsl:param name="value"/>
-	<xsl:value-of select="format-number($value,'0.00%')"/>
-</xsl:template>
-
-</xsl:stylesheet>
-
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 ef7be33..0000000
--- a/src/etc/manifest
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: org.apache.tools.ant.Main
-Class-Path: jaxp.jar parser.jar crimson.jar optional.jar xalan.jar
-
-
diff --git a/src/etc/maudit-frames.xsl b/src/etc/maudit-frames.xsl
deleted file mode 100644
index c2ed8e1..0000000
--- a/src/etc/maudit-frames.xsl
+++ /dev/null
@@ -1,465 +0,0 @@
-<xsl:stylesheet	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-	xmlns:lxslt="http://xml.apache.org/xslt"
-	xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
-	extension-element-prefixes="redirect">
-
-<!-- ======================================================================
-
-    Stylesheet to transform an XML file generated by the Ant MAudit task into
-    a set of JavaDoc-like HTML page to make pages more convenient to be browsed.
-    
-    It use the Xalan redirect extension to write to multiple output files.
-    
-    Note: HTML output can be made much more clean by removing non css attributes
-
-    ====================================================================== -->
-<xsl:output	method="html" indent="yes"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-
-<!--
-    Xalan redirect extension writes relative file based on the parent directory
-    from the main output file, unfortunately, this is never set and you have
-    to do it yourself on the API. The code that does it in command line was
-    commented out in Xalan 1.2.2 :-(
-    
-    Therefore I will use a stylesheet param for the output directory.
-    
-    This has to be invoked as follows from the command line:
-    
-    java -classpath bsf.jar;xalan.jar;xerces.jar org.apache.xalan.xslt.Process -IN maudit.xml -XSL maudit.xsl -PARAM output.dir './report'
--->
-<xsl:param name="output.dir" select="'.'"/>
-
-
-<xsl:template match="classes">
-	<!-- create the index.html -->
-	<redirect:write file="{$output.dir}/index.html">
-		<xsl:call-template name="index.html"/>
-	</redirect:write>
-
-	<!-- create the stylesheet.css -->
-	<redirect:write file="{$output.dir}/stylesheet.css">
-		<xsl:call-template name="stylesheet.css"/>
-	</redirect:write>
-
-	<!-- create the overview-packages.html at the root -->
-	<redirect:write file="{$output.dir}/overview-summary.html">
-		<xsl:apply-templates select="." mode="overview.packages"/>
-	</redirect:write>
-
-	<!-- create the all-packages.html at the root -->
-	<redirect:write file="{$output.dir}/overview-frame.html">
-		<xsl:apply-templates select="." mode="all.packages"/>
-	</redirect:write>
-	
-	<!-- create the all-classes.html at the root -->
-	<redirect:write file="{$output.dir}/allclasses-frame.html">
-		<xsl:apply-templates select="." mode="all.classes"/>
-	</redirect:write>
-	
-	<!-- process all packages -->
-	<xsl:for-each select="./class[not(./@package = preceding-sibling::class/@package)]">
-		<xsl:call-template name="package">
-			<xsl:with-param name="name" select="@package"/>
-		</xsl:call-template>
-	</xsl:for-each>
-</xsl:template>
-
-
-<xsl:template name="package">
-	<xsl:param name="name"/>
-	<xsl:variable name="package.dir">
-		<xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
-		<xsl:if test="$name = ''">.</xsl:if>
-	</xsl:variable>	
-	<!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
-	<!-- create a classes-list.html in the package directory -->
-	<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
-		<xsl:call-template name="classes.list">
-			<xsl:with-param name="name" select="$name"/>
-		</xsl:call-template>
-	</redirect:write>
-	
-	<!-- create a package-summary.html in the package directory -->
-	<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
-		<xsl:call-template name="package.summary">
-			<xsl:with-param name="name" select="$name"/>
-		</xsl:call-template>
-	</redirect:write>
-	
-	<!-- for each class, creates a @name.html -->
-	<!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
-	<xsl:for-each select="/classes/class[@package = $name]">
-		<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
-			<xsl:apply-templates select="." mode="class.details"/>
-		</redirect:write>
-	</xsl:for-each>
-</xsl:template>
-
-<xsl:template name="index.html">
-<HTML>
-	<HEAD><TITLE>Audit Results.</TITLE></HEAD>
-	<FRAMESET cols="20%,80%">
-		<FRAMESET rows="30%,70%">
-			<FRAME src="overview-frame.html" name="packageListFrame"/>
-			<FRAME src="allclasses-frame.html" name="classListFrame"/>
-		</FRAMESET>
-		<FRAME src="overview-summary.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>
-	</noframes>
-</HTML>
-</xsl:template>
-
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.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
-}
-</xsl:template>
-
-
-<!-- print the violations of the class -->
-<xsl:template match="class" mode="class.details">
-	<xsl:variable name="package.name" select="@package"/>
-	<HTML>
-		<HEAD>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="$package.name"/>
-			</xsl:call-template>
-		</HEAD>
-		<BODY>
-			<xsl:call-template name="pageHeader"/>	
-			<H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
-
-			
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:call-template name="class.audit.header"/>
-				<xsl:apply-templates select="." mode="print.audit"/>
-			</table>
-	
-			<H2>Violations</H2>
-			<p>
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:call-template name="violation.audit.header"/>
-				<xsl:apply-templates select="./violation" mode="print.audit">
-					<xsl:sort data-type="number" select="@line"/>
-				</xsl:apply-templates>
-			</table>
-			
-			</p>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-
-<!-- list of classes in a package -->
-<xsl:template name="classes.list">
-	<xsl:param name="name"/>
-	<HTML>
-		<HEAD>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="$name"/>
-			</xsl:call-template>
-		</HEAD>
-		<BODY>
-			<table width="100%">
-				<tr>
-					<td nowrap="nowrap">
-						<H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="$name"/></a></H2>
-					</td>
-				</tr>
-			</table>
-	
-			<H2>Classes</H2>
-			<p>
-			<TABLE WIDTH="100%">
-				<xsl:apply-templates select="/classes/class[./@package = $name]" mode="classes.list">
-					<xsl:sort select="@name"/>
-				</xsl:apply-templates>
-			</TABLE>
-			</p>
-		</BODY>
-	</HTML>
-</xsl:template>
-<!-- the class to list -->
-<xsl:template match="class" mode="classes.list">
-	<tr>
-		<td nowrap="nowrap">
-			<!-- @bug naming to fix for inner classes -->
-			<a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
-		</td>
-	</tr>
-</xsl:template>
-
-
-<!--
-	Creates an all-classes.html file that contains a link to all package-summary.html
-	on each class.
--->
-<xsl:template match="classes" mode="all.classes">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name"/>
-			</xsl:call-template>
-		</head>
-		<body>
-			<h2>Classes</h2>
-			<p>
-			<table width="100%">
-				<xsl:apply-templates select=".//class" mode="all.classes">
-					<xsl:sort select="@name"/>
-				</xsl:apply-templates>
-			</table>
-			</p>
-		</body>
-	</html>
-</xsl:template>
-
-<xsl:template match="class" mode="all.classes">
-    <!-- (ancestor::package)[last()] is buggy in MSXML3 ? -->
-    <xsl:variable name="package.name" select="@package"/>
-	<tr>
-		<td nowrap="nowrap">
-			<a target="classFrame">
-				<xsl:attribute name="href">
-					<xsl:if test="not($package.name='')">
-						<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
-					</xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
-				</xsl:attribute>
-				<xsl:value-of select="@name"/>
-			</a>
-		</td>
-	</tr>
-</xsl:template>
-
-
-<!--
-	Creates an html file that contains a link to all package-summary.html files on
-	each package existing on testsuites.
-	@bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="classes" mode="all.packages">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name"/>
-			</xsl:call-template>
-		</head>
-		<body>
-			<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
-			<h2>Packages</h2>
-			<p>
-				<table width="100%">
-					<xsl:apply-templates select="class[not(./@package = preceding-sibling::class/@package)]" mode="all.packages">
-						<xsl:sort select="@package" order="ascending"/>
-					</xsl:apply-templates>
-				</table>
-			</p>
-		</body>
-	</html>
-</xsl:template>
-
-<xsl:template match="class" mode="all.packages">
-	<tr>
-		<td nowrap="nowrap">
-			<a href="{translate(@package,'.','/')}/package-summary.html" target="classFrame">
-				<xsl:value-of select="@package"/>
-			</a>
-		</td>
-	</tr>
-</xsl:template>
-
-
-<xsl:template match="classes" mode="overview.packages">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name"/>
-			</xsl:call-template>
-		</head>
-		<body onload="open('allclasses-frame.html','classListFrame')">
-		<xsl:call-template name="pageHeader"/>
-		<h2>Summary</h2>
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-		<tr bgcolor="#A6CAF0" valign="top">
-			<td><b>Audited classes</b></td>
-			<td><b>Reported classes</b></td>
-			<td><b>Violations</b></td>
-		</tr>
-		<tr bgcolor="#EEEEE" valign="top">
-			<td><xsl:value-of select="@audited"/></td>
-			<td><xsl:value-of select="@reported"/></td>
-			<td><xsl:value-of select="@violations"/></td>
-		</tr>
-		</table>
-		<table border="0" width="95%">
-		<tr>
-		<td	style="text-align: justify;">
-		Note: Rules checked have originated from style guidelines suggested by the language designers,
-		experience from the Java development community and insite experience. Violations are generally
-		reported with a reference to the <a href="http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html">Java Language Specifications</a> (JLS x.x.x)
-		and Metamata Audit rules (x.x).
-		Please consult these documents for additional information about violations.
-		<p/>
-		One should note that these violations do not necessary underline errors but should be used
-		as an indication for <i>possible</i> errors. As always, use your best judgment and review
-		them carefully, it might save you hours of debugging.
-		</td>
-		</tr>
-		</table>
-
-		<h2>Packages</h2>
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-			<xsl:call-template name="class.audit.header"/>
-			<xsl:for-each select="class[not(./@package = preceding-sibling::class/@package)]">
-				<xsl:sort select="@package" order="ascending"/>
-				<tr bgcolor="#EEEEE" valign="top">
-					<td><a href="{translate(@package,'.','/')}/package-summary.html"><xsl:value-of select="@package"/></a></td>
-					<td><xsl:value-of select="sum(/classes/class[./@package = current()/@package]/@violations)"/></td>
-				</tr>
-			</xsl:for-each>
-		</table>
-		</body>
-		</html>
-</xsl:template>
-
-
-<xsl:template name="package.summary">
-	<xsl:param name="name"/>
-	<HTML>
-		<HEAD>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="$name"/>
-			</xsl:call-template>
-		</HEAD>
-		<BODY>
-			<xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
-			<xsl:call-template name="pageHeader"/>
-			<h3>Package <xsl:value-of select="$name"/></h3>
-			
-			<!--table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:call-template name="class.metrics.header"/>
-				<xsl:apply-templates select="." mode="print.metrics"/>
-			</table-->
-			
-			<xsl:if test="count(/classes/class[./@package = $name]) &gt; 0">
-				<H2>Classes</H2>
-				<p>
-				<table border="0" cellpadding="5" cellspacing="2" width="95%">
-					<xsl:call-template name="class.audit.header"/>
-					<xsl:apply-templates select="/classes/class[./@package = $name]" mode="print.audit">
-						<xsl:sort select="@name"/>
-					</xsl:apply-templates>
-				</table>
-				</p>
-			</xsl:if>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-
-<!--
-    transform string like a.b.c to ../../../
-    @param path the path to transform into a descending directory path
--->
-<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>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
-	<xsl:param name="package.name"/>
-	<LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
-</xsl:template>
-
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-	<h1>Audit Results</h1>
-	<table width="100%">
-	<tr>
-		<td align="left"></td>
-		<td align="right">Designed for use with <a href='http://www.webgain.com/products/quality_analyzer/'>Webgain QA/Metamata Audit</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
-	</tr>
-	</table>
-	<hr size="1"/>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="class.audit.header">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<td width="80%"><b>Name</b></td>
-		<td><b>Violations</b></td>
-	</tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="violation.audit.header">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<td><b>Line</b></td>
-		<td><b>Message</b></td>
-	</tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="class" mode="print.audit">
-	<tr bgcolor="#EEEEE" valign="top">		
-		<td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
-		<td><xsl:apply-templates select="@violations"/></td>
-	</tr>
-</xsl:template>
-
-<xsl:template match="violation" mode="print.audit">
-	<tr bgcolor="#EEEEE" valign="top">		
-		<td><xsl:value-of select="@line"/></td>
-		<td><xsl:apply-templates select="@message"/></td>
-	</tr>
-</xsl:template>
-
-
-</xsl:stylesheet>
-	
diff --git a/src/etc/mmetrics-frames.xsl b/src/etc/mmetrics-frames.xsl
deleted file mode 100644
index fa2a633..0000000
--- a/src/etc/mmetrics-frames.xsl
+++ /dev/null
@@ -1,689 +0,0 @@
-<xsl:stylesheet	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-	xmlns:lxslt="http://xml.apache.org/xslt"
-	xmlns:xalan="http://xml.apache.org/xalan"
-	xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
-	exclude-result-prefixes="xalan"
-	extension-element-prefixes="redirect">
-
-<!--
-	For xalan 1.2.2
-	xmlns:xalan-nodeset="org.apache.xalan.xslt.extensions.Nodeset"
--->
-<xsl:output	method="html" indent="yes"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-
-<!--
-    Xalan redirect extension writes relative file based on the parent directory
-    from the main output file, unfortunately, this is never set and you have
-    to do it yourself on the API. The code that does it in command line was
-    commented out in Xalan 1.2.2 :-(
-    
-    Therefore I will use a stylesheet param for the output directory.
-    
-    This has to be invoked as follows from the command line:
-    
-    java -classpath bsf.jar;xalan.jar;xerces.jar org.apache.xalan.xslt.Process -IN metrics.xml -XSL metrics.xsl -PARAM output.dir './report'
--->
-<xsl:param name="output.dir" select="'.'"/>
-
-<!-- default max value for the metrics -->
-<xsl:param name="vg.max" select="10"/>
-<xsl:param name="loc.max" select="1000"/>
-<xsl:param name="dit.max" select="10"/>
-<xsl:param name="noa.max" select="250"/>
-<xsl:param name="nrm.max" select="50"/>
-<xsl:param name="nlm.max" select="250"/>
-<xsl:param name="wmc.max" select="250"/>
-<xsl:param name="rfc.max" select="50"/>
-<xsl:param name="dac.max" select="10"/>
-<xsl:param name="fanout.max" select="10"/>
-<xsl:param name="cbo.max" select="15"/>
-<xsl:param name="lcom.max" select="10"/>
-<xsl:param name="nocl.max" select="10"/>
-
-
-<!-- create a tree fragment -->
-<xsl:variable name="doctree.var">
-    <xsl:element name="classes">
-        <xsl:for-each select=".//class">
-            <xsl:element name="class">
-                <xsl:attribute name="package">
-                    <xsl:value-of select="(ancestor::package)[last()]/@name"/>
-                </xsl:attribute>
-                <xsl:copy-of select="@*"/>
-                <xsl:attribute name="name">
-					<xsl:apply-templates select="." mode="class.name"/>                
-                </xsl:attribute>
-                <xsl:copy-of select="method"/>
-            </xsl:element>
-        </xsl:for-each>
-    </xsl:element>
-</xsl:variable>
-
-<xsl:variable name="doctree" select="xalan:nodeset($doctree.var)"/>
-
-<xsl:template match="metrics">
-
-	<!-- create the index.html -->
-	<redirect:write file="{$output.dir}/index.html">
-		<xsl:call-template name="index.html"/>
-	</redirect:write>
-
-	<!-- create the stylesheet.css -->
-	<redirect:write file="{$output.dir}/stylesheet.css">
-		<xsl:call-template name="stylesheet.css"/>
-	</redirect:write>
-
-	<!-- create the overview-packages.html at the root -->
-	<redirect:write file="{$output.dir}/overview-summary.html">
-		<xsl:apply-templates select="." mode="overview.packages"/>
-	</redirect:write>
-
-	<!-- create the all-packages.html at the root -->
-	<redirect:write file="{$output.dir}/overview-frame.html">
-		<xsl:apply-templates select="." mode="all.packages"/>
-	</redirect:write>
-	
-	<!-- create the all-classes.html at the root -->
-	<redirect:write file="{$output.dir}/allclasses-frame.html">
-		<xsl:apply-templates select="." mode="all.classes"/>
-	</redirect:write>
-	
-	<!-- process all packages -->
-	<xsl:apply-templates select=".//package"/>
-</xsl:template>
-
-
-<xsl:template match="package">
-	<xsl:variable name="package.name" select="@name"/>
-	<xsl:variable name="package.dir">
-		<xsl:if test="not($package.name = 'unnamed package')"><xsl:value-of select="translate($package.name,'.','/')"/></xsl:if>
-		<xsl:if test="$package.name = 'unnamed package'">.</xsl:if>
-	</xsl:variable>	
-	<xsl:message>Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/>
-	</xsl:message>
-	<!-- create a classes-list.html in the package directory -->
-	<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
-		<xsl:apply-templates select="." mode="classes.list"/>
-	</redirect:write>
-	
-	<!-- create a package-summary.html in the package directory -->
-	<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
-		<xsl:apply-templates select="." mode="package.summary"/>
-	</redirect:write>
-	
-	<!-- for each class, creates a @name.html -->
-	<!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
-	<xsl:for-each select="$doctree/classes/class[@package = current()/@name]">
-	    <!--Processing <xsl:value-of select="$class.name"/><xsl:text>&#10;</xsl:text> -->
-		<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
-			<xsl:apply-templates select="." mode="class.details"/>
-		</redirect:write>
-	</xsl:for-each>
-</xsl:template>
-
-<!-- little trick to compute the classname for inner and non inner classes -->
-<!-- this is all in one line to avoid CRLF in the name -->
-<xsl:template match="class" mode="class.name">
-    <xsl:if test="parent::class"><xsl:apply-templates select="parent::class" mode="class.name"/>.<xsl:value-of select="@name"/></xsl:if><xsl:if test="not(parent::class)"><xsl:value-of select="@name"/></xsl:if>
-</xsl:template>
-
-
-<xsl:template name="index.html">
-<HTML>
-	<HEAD><TITLE>Metrics Results.</TITLE></HEAD>
-	<FRAMESET cols="20%,80%">
-		<FRAMESET rows="30%,70%">
-			<FRAME src="overview-frame.html" name="packageListFrame"/>
-			<FRAME src="allclasses-frame.html" name="classListFrame"/>
-		</FRAMESET>
-		<FRAME src="overview-summary.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>
-	</noframes>
-</HTML>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.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;
-}
-
-</xsl:template>
-
-<!-- print the metrics of the class -->
-<xsl:template match="class" mode="class.details">
-	<!--xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/-->
-	<xsl:variable name="package.name" select="@package"/>
-	<HTML>
-		<HEAD>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="$package.name"/>
-			</xsl:call-template>
-		</HEAD>
-		<BODY>
-			<xsl:call-template name="pageHeader"/>	
-			<H3>Class <xsl:if test="not($package.name = 'unnamed package')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
-
-			
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:call-template name="all.metrics.header"/>				
-				<xsl:apply-templates select="." mode="print.metrics"/>
-			</table>
-	
-			<H2>Methods</H2>
-			<p>
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:call-template name="method.metrics.header"/>
-				<xsl:apply-templates select="method" mode="print.metrics"/>
-			</table>			
-			
-			</p>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-
-<!-- list of classes in a package -->
-<xsl:template match="package" mode="classes.list">
-	<HTML>
-		<HEAD>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="@name"/>
-			</xsl:call-template>
-		</HEAD>
-		<BODY>
-			<table width="100%">
-				<tr>
-					<td nowrap="nowrap">
-						<H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="@name"/></a></H2>
-					</td>
-				</tr>
-			</table>
-	
-			<H2>Classes</H2>
-			<p>
-			<TABLE WIDTH="100%">
-				<!-- xalan-nodeset:nodeset for Xalan 1.2.2 -->
-    		    <xsl:for-each select="$doctree/classes/class[@package = current()/@name]">
-    		        <xsl:sort select="@name"/>
-					<tr>
-						<td nowrap="nowrap">
-							<a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
-						</td>
-					</tr>    		        
-    		    </xsl:for-each>
-			</TABLE>
-			</p>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-
-<!--
-	Creates an all-classes.html file that contains a link to all package-summary.html
-	on each class.
--->
-<xsl:template match="metrics" mode="all.classes">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="''"/>
-			</xsl:call-template>
-		</head>
-		<body>
-			<h2>Classes</h2>
-			<p>
-			<table width="100%">
-			    <xsl:for-each select="$doctree/classes/class">
-			        <xsl:sort select="@name"/>
-			        <xsl:apply-templates select="." mode="all.classes"/>
-			    </xsl:for-each>
-			</table>
-			</p>
-		</body>
-	</html>
-</xsl:template>
-
-<xsl:template match="class" mode="all.classes">
-    <xsl:variable name="package.name" select="@package"/>
-    <xsl:variable name="class.name" select="@name"/>
-	<tr>
-		<td nowrap="nowrap">
-			<a target="classFrame">
-				<xsl:attribute name="href">
-					<xsl:if test="not($package.name='unnamed package')">
-						<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
-					</xsl:if>
-					<xsl:value-of select="$class.name"/><xsl:text>.html</xsl:text>
-				</xsl:attribute>
-				<xsl:value-of select="$class.name"/>
-			</a>
-		</td>
-	</tr>
-</xsl:template>
-
-<!--
-	Creates an html file that contains a link to all package-summary.html files on
-	each package existing on testsuites.
-	@bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="metrics" mode="all.packages">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="./package/@name"/>
-			</xsl:call-template>
-		</head>
-		<body>
-			<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
-			<h2>Packages</h2>
-			<p>
-				<table width="100%">
-					<xsl:apply-templates select=".//package[not(./@name = 'unnamed package')]" mode="all.packages">
-						<xsl:sort select="@name"/>
-					</xsl:apply-templates>
-				</table>
-			</p>
-		</body>
-	</html>
-</xsl:template>
-
-<xsl:template match="package" mode="all.packages">
-	<tr>
-		<td nowrap="nowrap">
-			<a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame">
-				<xsl:value-of select="@name"/>
-			</a>
-		</td>
-	</tr>
-</xsl:template>
-
-
-<xsl:template match="metrics" mode="overview.packages">
-	<html>
-		<head>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="''"/>
-			</xsl:call-template>
-		</head>
-		<body onload="open('allclasses-frame.html','classListFrame')">
-		<xsl:call-template name="pageHeader"/>
-		<h2>Summary</h2>
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-		<tr bgcolor="#A6CAF0" valign="top">
-			<td><b>V(G)</b></td>
-			<td><b>LOC</b></td>
-			<td><b>DIT</b></td>
-			<td><b>NOA</b></td>
-			<td><b>NRM</b></td>
-			<td><b>NLM</b></td>
-			<td><b>WMC</b></td>
-			<td><b>RFC</b></td>
-			<td><b>DAC</b></td>
-			<td><b>FANOUT</b></td>
-			<td><b>CBO</b></td>
-			<td><b>LCOM</b></td>
-			<td><b>NOCL</b></td>
-		</tr>
-		<xsl:apply-templates select="." mode="print.metrics"/>
-		</table>
-		<table border="0" width="95%">
-		<tr>
-		<td	style="text-align: justify;">
-		Note: Metrics evaluate the quality of software by analyzing	the	program	source and quantifying
-		various	kind of	complexity.	Complexity is a	common source of problems and defects in software.
-		High complexity	makes it more difficult	to develop,	understand,	maintain, extend, test and debug
-		a program.
-		<p/>
-		The primary use of metrics is to focus your	attention on those parts of code that potentially are
-		complexity hot spots. Once the complex areas your program have been uncovered, you can take remedial
-		actions.
-		For additional information about metrics and their meaning, please consult
-		Metamata Metrics manual.
-		</td>
-		</tr>
-		</table>
-
-		<h2>Packages</h2>
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-			<xsl:call-template name="all.metrics.header"/>
-			<xsl:for-each select=".//package[not(@name = 'unnamed package')]">
-				<xsl:sort select="@name" order="ascending"/>				
-				<xsl:apply-templates select="." mode="print.metrics"/>
-			</xsl:for-each>
-		</table>
-		<!-- @bug there could some classes at this level (classes in unnamed package) -->
-		</body>
-		</html>
-</xsl:template>
-
-<xsl:template match="package" mode="package.summary">
-	<HTML>
-		<HEAD>
-			<xsl:call-template name="create.stylesheet.link">
-				<xsl:with-param name="package.name" select="@name"/>
-			</xsl:call-template>
-		</HEAD>
-		<body onload="open('package-frame.html','classListFrame')">
-			<xsl:call-template name="pageHeader"/>
-			<!-- create an anchor to this package name -->
-			<h3>Package <xsl:value-of select="@name"/></h3>
-			
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<xsl:call-template name="all.metrics.header"/>
-				<xsl:apply-templates select="." mode="print.metrics"/>
-			</table>
-			
-			<table border="0" width="95%">
-			<tr>
-			<td	style="text-align: justify;">
-			Note: Metrics evaluate the quality of software by analyzing	the	program	source and quantifying
-			various	kind of	complexity.	Complexity is a	common source of problems and defects in software.
-			High complexity	makes it more difficult	to develop,	understand,	maintain, extend, test and debug
-			a program.
-			<p/>
-			The primary use of metrics is to focus your	attention on those parts of code that potentially are
-			complexity hot spots. Once the complex areas your program have been uncovered, you can take remedial
-			actions.
-			For additional information about metrics and their meaning, please consult
-			Metamata Metrics manual.
-			</td>
-			</tr>
-			</table>
-			
-			
-			<xsl:if test="count($doctree/classes/class[@package = current()/@name]) &gt; 0">
-				<H2>Classes</H2>
-				<p>
-				<table border="0" cellpadding="5" cellspacing="2" width="95%">
-					<xsl:call-template name="all.metrics.header"/>
-					<xsl:for-each select="$doctree/classes/class[@package = current()/@name]">
-			        	<xsl:sort select="@name"/>
-			        	<xsl:apply-templates select="." mode="print.metrics"/>
-			    </xsl:for-each>
-				</table>
-				</p>
-			</xsl:if>
-		</body>
-	</HTML>
-</xsl:template>
-
-
-<!--
-    transform string like a.b.c to ../../../
-    @param path the path to transform into a descending directory path
--->
-<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>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
-	<xsl:param name="package.name"/>
-	<LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
-</xsl:template>
-
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-	<h1>Metrics Results</h1>
-	<table width="100%">
-	<tr>
-		<td align="left"></td>
-		<td align="right">Designed for use with <a href='http://www.webgain.com/products/quality_analyzer/'>Webgain QA/Metamata Metrics</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
-	</tr>
-	</table>
-	<hr size="1"/>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="all.metrics.header">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<td width="80%"><b>Name</b></td>
-		<td nowrap="nowrap"><b>V(G)</b></td>
-		<td><b>LOC</b></td>
-		<td><b>DIT</b></td>
-		<td><b>NOA</b></td>
-		<td><b>NRM</b></td>
-		<td><b>NLM</b></td>
-		<td><b>WMC</b></td>
-		<td><b>RFC</b></td>
-		<td><b>DAC</b></td>
-		<td><b>FANOUT</b></td>
-		<td><b>CBO</b></td>
-		<td><b>LCOM</b></td>
-		<td><b>NOCL</b></td>
-	</tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="method.metrics.header">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<td width="80%"><b>Name</b></td>
-		<td nowrap="nowrap"><b>V(G)</b></td>
-		<td><b>LOC</b></td>
-		<td><b>FANOUT</b></td>
-		<td><b>CBO</b></td>
-	</tr>
-</xsl:template>
-
-<!-- method information -->
-<xsl:template match="method" mode="print.metrics">
-	<tr bgcolor="#EEEEE" valign="top">
-		<td><xsl:apply-templates select="@name"/></td>
-		<td><xsl:apply-templates select="@vg"/></td>
-		<td><xsl:apply-templates select="@loc"/></td>
-		<td><xsl:apply-templates select="@fanout"/></td>
-		<td><xsl:apply-templates select="@cbo"/></td>
-	</tr>
-</xsl:template>
-
-<!-- class information -->
-<xsl:template match="class" mode="print.metrics">
-	<tr bgcolor="#EEEEE" valign="top">		
-		<td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
-		<td><xsl:apply-templates select="@vg"/></td>
-		<td><xsl:apply-templates select="@loc"/></td>
-		<td><xsl:apply-templates select="@dit"/></td>
-		<td><xsl:apply-templates select="@noa"/></td>
-		<td><xsl:apply-templates select="@nrm"/></td>
-		<td><xsl:apply-templates select="@nlm"/></td>
-		<td><xsl:apply-templates select="@wmc"/></td>
-		<td><xsl:apply-templates select="@rfc"/></td>
-		<td><xsl:apply-templates select="@dac"/></td>
-		<td><xsl:apply-templates select="@fanout"/></td>
-		<td><xsl:apply-templates select="@cbo"/></td>
-		<td><xsl:apply-templates select="@lcom"/></td>
-		<td><xsl:apply-templates select="@nocl"/></td>
-	</tr>
-</xsl:template>
-
-<xsl:template match="file|package" mode="print.metrics">
-	<tr bgcolor="#EEEEE" valign="top">		
-		<td><xsl:value-of select="@name"/></td>
-		<td><xsl:apply-templates select="@vg"/></td>
-		<td><xsl:apply-templates select="@loc"/></td>
-		<td><xsl:apply-templates select="@dit"/></td>
-		<td><xsl:apply-templates select="@noa"/></td>
-		<td><xsl:apply-templates select="@nrm"/></td>
-		<td><xsl:apply-templates select="@nlm"/></td>
-		<td><xsl:apply-templates select="@wmc"/></td>
-		<td><xsl:apply-templates select="@rfc"/></td>
-		<td><xsl:apply-templates select="@dac"/></td>
-		<td><xsl:apply-templates select="@fanout"/></td>
-		<td><xsl:apply-templates select="@cbo"/></td>
-		<td><xsl:apply-templates select="@lcom"/></td>
-		<td><xsl:apply-templates select="@nocl"/></td>
-	</tr>
-</xsl:template>
-
-<xsl:template match="metrics" mode="print.metrics">
-	<tr bgcolor="#EEEEE" valign="top">
-	    <!-- the global metrics is the top package metrics -->
-		<td><xsl:apply-templates select="./package/@vg"/></td>
-		<td><xsl:apply-templates select="./package/@loc"/></td>
-		<td><xsl:apply-templates select="./package/@dit"/></td>
-		<td><xsl:apply-templates select="./package/@noa"/></td>
-		<td><xsl:apply-templates select="./package/@nrm"/></td>
-		<td><xsl:apply-templates select="./package/@nlm"/></td>
-		<td><xsl:apply-templates select="./package/@wmc"/></td>
-		<td><xsl:apply-templates select="./package/@rfc"/></td>
-		<td><xsl:apply-templates select="./package/@dac"/></td>
-		<td><xsl:apply-templates select="./package/@fanout"/></td>
-		<td><xsl:apply-templates select="./package/@cbo"/></td>
-		<td><xsl:apply-templates select="./package/@lcom"/></td>
-		<td><xsl:apply-templates select="./package/@nocl"/></td>
-	</tr>
-</xsl:template>
-
-
-<!-- how to display the metrics with their max value -->
-<!-- @todo the max values must be external to the xsl -->
-
-	<xsl:template match="@vg">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$vg.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@loc">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$loc.max"/>
-		</xsl:call-template>
-	</xsl:template>
-	
-	<xsl:template match="@dit">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$dit.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@noa">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$noa.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@nrm">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$nrm.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@nlm">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$nlm.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@wmc">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$wmc.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@rfc">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$rfc.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@dac">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$dac.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@fanout">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$fanout.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@cbo">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$cbo.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@lcom">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$lcom.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template match="@nocl">
-		<xsl:call-template name="display-value">
-			<xsl:with-param	name="value" select="current()"/>
-			<xsl:with-param	name="max" select="$nocl.max"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<xsl:template name="display-value">
-		<xsl:param name="value"/>
-		<xsl:param name="max"/>
-		<xsl:if	test="$value > $max">
-			<xsl:attribute name="class">Error</xsl:attribute>
-		</xsl:if>
-		<xsl:value-of select="$value"/>
-	</xsl:template>
-
-</xsl:stylesheet>
-	
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/core/include/basic/include.inc b/src/etc/testcases/core/include/basic/include.inc
deleted file mode 100644
index 3332925..0000000
--- a/src/etc/testcases/core/include/basic/include.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-<target name="test1">
-    <echo message="from included entity"/>
-</target>
diff --git a/src/etc/testcases/core/include/basic/include.xml b/src/etc/testcases/core/include/basic/include.xml
deleted file mode 100644
index f5879f2..0000000
--- a/src/etc/testcases/core/include/basic/include.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE project [
-  <!ENTITY include SYSTEM "file:./include.inc">
-]>
-
-<project name="include-test" basedir="." default="test1">
-    &include;
-</project>
diff --git a/src/etc/testcases/core/include/basic/relative.xml b/src/etc/testcases/core/include/basic/relative.xml
deleted file mode 100644
index bcdf7ee..0000000
--- a/src/etc/testcases/core/include/basic/relative.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE project [
-  <!ENTITY include SYSTEM "./include.inc">
-]>
-
-<project name="include-test" basedir="." default="test1">
-    &include;
-</project>
diff --git "a/src/etc/testcases/core/include/frag\043ment/include.inc" "b/src/etc/testcases/core/include/frag\043ment/include.inc"
deleted file mode 100644
index 3332925..0000000
--- "a/src/etc/testcases/core/include/frag\043ment/include.inc"
+++ /dev/null
@@ -1,3 +0,0 @@
-<target name="test1">
-    <echo message="from included entity"/>
-</target>
diff --git "a/src/etc/testcases/core/include/frag\043ment/include.xml" "b/src/etc/testcases/core/include/frag\043ment/include.xml"
deleted file mode 100644
index 5dbeff6..0000000
--- "a/src/etc/testcases/core/include/frag\043ment/include.xml"
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE project [
-  <!ENTITY include SYSTEM "file:include.inc">
-]>
-
-<project name="include-test" basedir="." default="test1">
-    &include;
-</project>
diff --git "a/src/etc/testcases/core/include/frag\043ment/relative.xml" "b/src/etc/testcases/core/include/frag\043ment/relative.xml"
deleted file mode 100644
index f71ed40..0000000
--- "a/src/etc/testcases/core/include/frag\043ment/relative.xml"
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE project [
-  <!ENTITY include SYSTEM "include.inc">
-]>
-
-<project name="include-test" basedir="." default="test1">
-    &include;
-</project>
diff --git "a/src/etc/testcases/core/include/frag\043ment/simple.xml" "b/src/etc/testcases/core/include/frag\043ment/simple.xml"
deleted file mode 100644
index acdff54..0000000
--- "a/src/etc/testcases/core/include/frag\043ment/simple.xml"
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<project name="include-test" basedir="." default="test1">
-<target name="test1">
-    <echo message="from simple buildfile"/>
-</target>
-</project>
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 cfcb5aa..0000000
--- a/src/etc/testcases/taskdefs/available.xml
+++ /dev/null
@@ -1,101 +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="" type="file" />
-  </target>
-
-  <target name="test13b">
-    <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>
-
-  <target name="test16">
-    <available property="test" 
-               file="" type="dir"/>
-  </target>
-
-  <target name="test17">
-    <available property="test" 
-               file="../taskdefs" type="dir"/>
-  </target>
-
-  <target name="test18">
-    <available property="test" 
-               file="../this_dir_should_never_exist" type="dir"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/copy.xml b/src/etc/testcases/taskdefs/copy.xml
deleted file mode 100644
index 648f803..0000000
--- a/src/etc/testcases/taskdefs/copy.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="copy-test" basedir="." default="test1">
-
-  <target name="test1">
-    <copy file="copy.xml" tofile="copytest1.tmp" />
-  </target>
- 
-  <target name="test2">
-    <copy file="copy.xml" todir="copytest1dir" overwrite="true"/>
-  </target>
- 
-  <target name="cleanup"> 
-    <delete file="copytest1.tmp"/>
-    <delete dir="copytest1dir"/>
-  </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 34d3cd4..0000000
--- a/src/etc/testcases/taskdefs/copyfile.xml
+++ /dev/null
@@ -1,38 +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">
-    <delete file="testdir"/>
-    <mkdir dir="testdir" />
-    <copyfile src="copyfile.xml" 
-              dest="testdir"
-              forceoverwrite="true" />
-  </target>
-
-  <target name="cleanup">
-    <delete dir="testdir" />
-  </target>
-</project>
diff --git a/src/etc/testcases/taskdefs/cvspass.xml b/src/etc/testcases/taskdefs/cvspass.xml
deleted file mode 100644
index fcc62ad..0000000
--- a/src/etc/testcases/taskdefs/cvspass.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="cvspass-test" basedir="." default="test1">
-
-  <taskdef name="cvspass" classname="org.apache.tools.ant.taskdefs.CVSPass"/>
-
-  <target name="test1">
-    <cvspass />
-  </target>
- 
-  <target name="test2">
-    <cvspass
-      cvsroot=":pserver:anoncvs@jakarta.apache.org:/home/cvspublic"
-      passfile="testpassfile.tmp"
-    />
-  </target>
- 
-  <!-- testPassFile -->
-  <target name="test3">
-    <cvspass
-      cvsroot=":pserver:anoncvs@jakarta.apache.org:/home/cvspublic"
-      password="anoncvs"
-      passfile="testpassfile.tmp"
-    />
-  </target>
-
-  <!-- testPassFileDuplicateEntry -->
-  <target name="test4">
-    <cvspass
-      cvsroot=":pserver:anoncvs@jakarta.apache.org:/home/cvspublic"
-      password="anoncvs"
-      passfile="testpassfile.tmp"
-    />
-    <cvspass
-      cvsroot=":pserver:anoncvs@jakarta.apache.org:/home/cvspublic"
-      password="anoncvs"
-      passfile="testpassfile.tmp"
-    />
-    <cvspass
-      cvsroot=":pserver:guest@cvs.tigris.org:/cvs"
-      password="guest"
-      passfile="testpassfile.tmp"
-    />
-  </target>
-
-  <!-- testPassFileMultipleEntry -->
-  <target name="test5">
-    <cvspass
-      cvsroot=":pserver:anoncvs@jakarta.apache.org:/home/cvspublic"
-      password="anoncvs"
-      passfile="testpassfile.tmp"
-    />
-    <cvspass
-      cvsroot=":pserver:anoncvs@xml.apache.org:/home/cvspublic"
-      password="anoncvs"
-      passfile="testpassfile.tmp"
-    />
-    <cvspass
-      cvsroot=":pserver:guest@cvs.tigris.org:/cvs"
-      password="guest"
-      passfile="testpassfile.tmp"
-    />
-  </target>
-
-  <target name="cleanup"> 
-    <delete file="testpassfile.tmp"/>
-  </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 77ae999..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="taskdefs.tmp"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/dependset.xml b/src/etc/testcases/taskdefs/dependset.xml
deleted file mode 100644
index a5bdc2d..0000000
--- a/src/etc/testcases/taskdefs/dependset.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="dependset-test" basedir="." default="test1">
-
-  <target name="test1">
-    <dependset/>
-  </target>
-
-  <target name="test2">
-    <dependset>
-      <srcfilelist dir="." includes="test2.tmp"/>
-    </dependset>
-  </target>
-
-  <target name="test3">
-    <dependset>
-      <targetfileset dir="." files="test3.tmp"/>
-    </dependset>
-  </target>
-
-  <target name="test4">
-    <touch file="test4.tmp"/>
-    <dependset>
-      <srcfilelist dir="." files="test4.tmp"/>
-      <targetfileset dir="." includes="i-do-not-exist"/>
-    </dependset>
-  </target>
-
-  <target name="test5">
-    <touch millis="0" file="older.tmp"/>
-    <touch file="newer.tmp"/>
-    <dependset>
-      <srcfilelist dir="." files="newer.tmp"/>
-      <targetfilelist dir="." files="older.tmp"/>
-    </dependset>
-  </target>
-  
-  <target name="cleanup"> 
-    <delete file="test4.tmp"/>
-    <delete file="older.tmp"/>
-    <delete file="newer.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/fixcrlf/build.xml b/src/etc/testcases/taskdefs/fixcrlf/build.xml
deleted file mode 100644
index 66a3369..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/build.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0"?>
-<project default="cleanup" basedir=".">
-  <target name="init">
-    <mkdir dir="result" />
-  </target>
-
-  <target name="cleanup">
-    <delete dir="result" />
-  </target>
-
-  <target name="test1" depends="init">
-    <fixcrlf srcdir="input" destdir="result"
-             includes="Junk1.java"
-             javafiles="true"
-             tab="add"
-             eol="crlf"
-             eof="asis"
-             />
-  </target>
-
-  <target name="test2" depends="init">
-    <fixcrlf srcdir="input" destdir="result"
-             includes="Junk2.java"
-             javafiles="true"
-             tab="add"
-	     cr="add"
-             eol="crlf"
-             eof="asis"
-             />
-  </target>
-
-  <target name="test3" depends="init">
-    <fixcrlf srcdir="input" destdir="result"
-             includes="Junk3.java"
-             javafiles="true"
-             tab="remove"
-             eol="lf"
-             eof="asis"
-             />
-  </target>
-
-  <target name="test4" depends="init">
-    <fixcrlf srcdir="input" destdir="result"
-             includes="Junk4.java"
-             javafiles="true"
-             tab="remove"
-             eol="lf"
-             eof="asis"
-             />
-  </target>
-
-  <target name="test5" depends="init">
-    <fixcrlf srcdir="input" destdir="result"
-             includes="Junk5.java"
-             tab="remove"
-             eol="lf"
-             eof="asis"
-             />
-  </target>
-
-  <target name="test6" depends="init">
-    <fixcrlf srcdir="input" destdir="result"
-             includes="Junk6.java"
-             tab="add"
-	     cr="remove"
-             eol="crlf"
-             eof="asis"
-             />
-  </target>
-
-  <target name="test7" depends="init">
-    <fixcrlf srcdir="input" destdir="result"
-             includes="Junk7.java"
-             tab="add"
-	     cr="add"
-             eof="asis"
-             />
-  </target>
-
-  <target name="test8" depends="init">
-    <fixcrlf srcdir="input" destdir="result"
-             includes="Junk8.java"
-	     javafiles="true"
-             tab="add"
-	     cr="add"
-             eof="add"
-             />
-  </target>
-
-  <target name="test9" depends="init">
-    <fixcrlf srcdir="input" destdir="result"
-             includes="Junk9.java"
-	     javafiles="true"
-             tab="remove"
-	     cr="remove"
-             eof="remove"
-             />
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk1.java b/src/etc/testcases/taskdefs/fixcrlf/expected/Junk1.java
deleted file mode 100644
index 7321b8d..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk1.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {

-    public boolean mybool;

-    public static void main (String[] args) {

-	System.out.println("I have	a tab");

-	//	Here is a comment with an embedded tab

-	if (mybool) {	/* Here is a multi-line

-			   (with embedded'	'tab)

-	    Comment */char mychar = '	';	//<-tab->	<-

-	} // end of if (mybool)

-	

-    } // end of main ()

-}

diff --git a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk2.java b/src/etc/testcases/taskdefs/fixcrlf/expected/Junk2.java
deleted file mode 100644
index 7321b8d..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk2.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {

-    public boolean mybool;

-    public static void main (String[] args) {

-	System.out.println("I have	a tab");

-	//	Here is a comment with an embedded tab

-	if (mybool) {	/* Here is a multi-line

-			   (with embedded'	'tab)

-	    Comment */char mychar = '	';	//<-tab->	<-

-	} // end of if (mybool)

-	

-    } // end of main ()

-}

diff --git a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk3.java b/src/etc/testcases/taskdefs/fixcrlf/expected/Junk3.java
deleted file mode 100644
index 3427166..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk3.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-        System.out.println("I have	a tab");
-        //      Here is a comment with an embedded tab
-        if (mybool) {   /* Here is a multi-line
-                           (with embedded'      'tab)
-            Comment */char mychar = '	';      //<-tab->       <-
-        } // end of if (mybool)
-        
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk4.java b/src/etc/testcases/taskdefs/fixcrlf/expected/Junk4.java
deleted file mode 100644
index 3427166..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk4.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-        System.out.println("I have	a tab");
-        //      Here is a comment with an embedded tab
-        if (mybool) {   /* Here is a multi-line
-                           (with embedded'      'tab)
-            Comment */char mychar = '	';      //<-tab->       <-
-        } // end of if (mybool)
-        
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk5.java b/src/etc/testcases/taskdefs/fixcrlf/expected/Junk5.java
deleted file mode 100644
index bba01a5..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk5.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-        System.out.println("I have      a tab");
-        //      Here is a comment with an embedded tab
-        if (mybool) {   /* Here is a multi-line
-                           (with embedded'      'tab)
-            Comment */char mychar = '   ';      //<-tab->       <-
-        } // end of if (mybool)
-        
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk6.java b/src/etc/testcases/taskdefs/fixcrlf/expected/Junk6.java
deleted file mode 100644
index 7321b8d..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk6.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {

-    public boolean mybool;

-    public static void main (String[] args) {

-	System.out.println("I have	a tab");

-	//	Here is a comment with an embedded tab

-	if (mybool) {	/* Here is a multi-line

-			   (with embedded'	'tab)

-	    Comment */char mychar = '	';	//<-tab->	<-

-	} // end of if (mybool)

-	

-    } // end of main ()

-}

diff --git a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk7.java b/src/etc/testcases/taskdefs/fixcrlf/expected/Junk7.java
deleted file mode 100644
index 7321b8d..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk7.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {

-    public boolean mybool;

-    public static void main (String[] args) {

-	System.out.println("I have	a tab");

-	//	Here is a comment with an embedded tab

-	if (mybool) {	/* Here is a multi-line

-			   (with embedded'	'tab)

-	    Comment */char mychar = '	';	//<-tab->	<-

-	} // end of if (mybool)

-	

-    } // end of main ()

-}

diff --git a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk8.java b/src/etc/testcases/taskdefs/fixcrlf/expected/Junk8.java
deleted file mode 100644
index 82a8e84..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk8.java
+++ /dev/null
@@ -1,13 +0,0 @@
-public class Junk1 {

-    public boolean mybool;

-    public static void main (String[] args) {

-	System.out.println("I have	a tab");

-	//	Here is a comment with an embedded tab

-	if (mybool) {	/* Here is a multi-line

-			   (with embedded'	'tab)

-	    Comment */char mychar = '	';	//<-tab->	<-

-	} // end of if (mybool)

-	

-    } // end of main ()

-}

-
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk9.java b/src/etc/testcases/taskdefs/fixcrlf/expected/Junk9.java
deleted file mode 100644
index 3427166..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/expected/Junk9.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-        System.out.println("I have	a tab");
-        //      Here is a comment with an embedded tab
-        if (mybool) {   /* Here is a multi-line
-                           (with embedded'      'tab)
-            Comment */char mychar = '	';      //<-tab->       <-
-        } // end of if (mybool)
-        
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/input/Junk1.java b/src/etc/testcases/taskdefs/fixcrlf/input/Junk1.java
deleted file mode 100644
index ad69747..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/input/Junk1.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-	System.out.println("I have	a tab");
-	//	Here is a comment with an embedded tab
-	if (mybool) {	/* Here is a multi-line
-			   (with embedded'	'tab)
-	    Comment */char mychar = '	';	//<-tab->	<-
-	} // end of if (mybool)
-	
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/input/Junk2.java b/src/etc/testcases/taskdefs/fixcrlf/input/Junk2.java
deleted file mode 100644
index ad69747..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/input/Junk2.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-	System.out.println("I have	a tab");
-	//	Here is a comment with an embedded tab
-	if (mybool) {	/* Here is a multi-line
-			   (with embedded'	'tab)
-	    Comment */char mychar = '	';	//<-tab->	<-
-	} // end of if (mybool)
-	
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/input/Junk3.java b/src/etc/testcases/taskdefs/fixcrlf/input/Junk3.java
deleted file mode 100644
index ad69747..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/input/Junk3.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-	System.out.println("I have	a tab");
-	//	Here is a comment with an embedded tab
-	if (mybool) {	/* Here is a multi-line
-			   (with embedded'	'tab)
-	    Comment */char mychar = '	';	//<-tab->	<-
-	} // end of if (mybool)
-	
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/input/Junk4.java b/src/etc/testcases/taskdefs/fixcrlf/input/Junk4.java
deleted file mode 100644
index 3427166..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/input/Junk4.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-        System.out.println("I have	a tab");
-        //      Here is a comment with an embedded tab
-        if (mybool) {   /* Here is a multi-line
-                           (with embedded'      'tab)
-            Comment */char mychar = '	';      //<-tab->       <-
-        } // end of if (mybool)
-        
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/input/Junk5.java b/src/etc/testcases/taskdefs/fixcrlf/input/Junk5.java
deleted file mode 100644
index 3427166..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/input/Junk5.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-        System.out.println("I have	a tab");
-        //      Here is a comment with an embedded tab
-        if (mybool) {   /* Here is a multi-line
-                           (with embedded'      'tab)
-            Comment */char mychar = '	';      //<-tab->       <-
-        } // end of if (mybool)
-        
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/input/Junk6.java b/src/etc/testcases/taskdefs/fixcrlf/input/Junk6.java
deleted file mode 100644
index 3427166..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/input/Junk6.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-        System.out.println("I have	a tab");
-        //      Here is a comment with an embedded tab
-        if (mybool) {   /* Here is a multi-line
-                           (with embedded'      'tab)
-            Comment */char mychar = '	';      //<-tab->       <-
-        } // end of if (mybool)
-        
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/input/Junk7.java b/src/etc/testcases/taskdefs/fixcrlf/input/Junk7.java
deleted file mode 100644
index 3427166..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/input/Junk7.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-        System.out.println("I have	a tab");
-        //      Here is a comment with an embedded tab
-        if (mybool) {   /* Here is a multi-line
-                           (with embedded'      'tab)
-            Comment */char mychar = '	';      //<-tab->       <-
-        } // end of if (mybool)
-        
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/input/Junk8.java b/src/etc/testcases/taskdefs/fixcrlf/input/Junk8.java
deleted file mode 100644
index ad69747..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/input/Junk8.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class Junk1 {
-    public boolean mybool;
-    public static void main (String[] args) {
-	System.out.println("I have	a tab");
-	//	Here is a comment with an embedded tab
-	if (mybool) {	/* Here is a multi-line
-			   (with embedded'	'tab)
-	    Comment */char mychar = '	';	//<-tab->	<-
-	} // end of if (mybool)
-	
-    } // end of main ()
-}
diff --git a/src/etc/testcases/taskdefs/fixcrlf/input/Junk9.java b/src/etc/testcases/taskdefs/fixcrlf/input/Junk9.java
deleted file mode 100644
index 82a8e84..0000000
--- a/src/etc/testcases/taskdefs/fixcrlf/input/Junk9.java
+++ /dev/null
@@ -1,13 +0,0 @@
-public class Junk1 {

-    public boolean mybool;

-    public static void main (String[] args) {

-	System.out.println("I have	a tab");

-	//	Here is a comment with an embedded tab

-	if (mybool) {	/* Here is a multi-line

-			   (with embedded'	'tab)

-	    Comment */char mychar = '	';	//<-tab->	<-

-	} // end of if (mybool)

-	

-    } // end of main ()

-}

-
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/get.xml b/src/etc/testcases/taskdefs/get.xml
deleted file mode 100644
index 3c6c20c..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://www.apache.org/" dest=""/>
-  </target>
-
-  <target name="test6">
-    <get src="http://www.apache.org/" 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/optional/pvcs.xml b/src/etc/testcases/taskdefs/optional/pvcs.xml
deleted file mode 100644
index 3dce42e..0000000
--- a/src/etc/testcases/taskdefs/optional/pvcs.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="pvcs-test" basedir="." default="test1">
-
-  <taskdef name="pvcs" classname="org.apache.tools.ant.taskdefs.Pvcs"/>
-
-  <target name="test1">
-    <pvcs/>
-  </target>
-
-  <target name="test2">
-    <pvcs pvcsbin="/home/tc/projects/pvcsant/src/etc/testcases/taskdefs" repository="/mnt/pvcs"/>
-  </target>
-
-  <target name="test3">
-    <pvcs pvcsbin="\home\cvs\pvcsant\src\etc\testcases\taskdefs" repository="/mnt/pvcs" pvcsproject="/qviknet"/>
-  </target>
-
-  <target name="test4">
-    <pvcs pvcsbin="\home\cvs\pvcsant\src\etc\testcases\taskdefs" repository="/mnt/pvcs" pvcsproject="/qviknet" workspace="/@/Public/buildws"/>
-  </target>
-
-  <target name="test5" description="Get the latest from PVCS">
-    <pvcs pvcsbin="/home/cvs/pvcsant/src/etc/testcases/taskdefs" 
-			 repository="//ct4serv2/pvcs/monitor"/>
-  </target>
-
-  <target name="test6" description="No pcli to be found">
-    <pvcs pvcsbin="/never/heard/of/a/directory/structure/like/this" 
-			 repository="//ct4serv2/pvcs/monitor"/>
-  </target>
-
-
-</project>
diff --git a/src/etc/testcases/taskdefs/optional/xalan-redirect-in.xsl b/src/etc/testcases/taskdefs/optional/xalan-redirect-in.xsl
deleted file mode 100644
index 2271b81..0000000
--- a/src/etc/testcases/taskdefs/optional/xalan-redirect-in.xsl
+++ /dev/null
@@ -1,20 +0,0 @@
-<xsl:stylesheet	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-	xmlns:lxslt="http://xml.apache.org/xslt"
-	xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
-	extension-element-prefixes="redirect">
-<!--
-This is a test to ensure that systemid is set correctly
-for a xsl...the behavior might be dependent on Xalan1
-and Xalan2...this will be a problem to erase the files :(
-Can take as a systemid the base for the xsl document or
-the base or the JVM working dir just like: new File("xalan-redirect-out.tmp")
--->	
-<xsl:param name="xalan-version" select="'x'"/>
-
-<xsl:template match="/">
-<redirect:write file="./xalan{$xalan-version}-redirect-out.tmp">
-	<test>This should be written to the file</test>
-</redirect:write>
-</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/optional/xsltliaison-encoding-in.xml b/src/etc/testcases/taskdefs/optional/xsltliaison-encoding-in.xml
deleted file mode 100644
index e95cd64..0000000
--- a/src/etc/testcases/taskdefs/optional/xsltliaison-encoding-in.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<root>
-    <message>éàèïù</message>
-</root>
diff --git a/src/etc/testcases/taskdefs/optional/xsltliaison-encoding-in.xsl b/src/etc/testcases/taskdefs/optional/xsltliaison-encoding-in.xsl
deleted file mode 100644
index 0b4bc36..0000000
--- a/src/etc/testcases/taskdefs/optional/xsltliaison-encoding-in.xsl
+++ /dev/null
@@ -1,10 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:template match="/">
-    <root>
-    <xsl:for-each select="/root/message">
-        <message><xsl:value-of select="."/></message>
-    </xsl:for-each>
-    </root>
-</xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/optional/xsltliaison-in.xml b/src/etc/testcases/taskdefs/optional/xsltliaison-in.xml
deleted file mode 100644
index fbab456..0000000
--- a/src/etc/testcases/taskdefs/optional/xsltliaison-in.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE project [
-    <!ENTITY include SYSTEM "xsltliaison-include.xml">
-]>
-<project>
-    &include;
-</project>
diff --git a/src/etc/testcases/taskdefs/optional/xsltliaison-in.xsl b/src/etc/testcases/taskdefs/optional/xsltliaison-in.xsl
deleted file mode 100644
index 987de88..0000000
--- a/src/etc/testcases/taskdefs/optional/xsltliaison-in.xsl
+++ /dev/null
@@ -1,3 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-<xsl:include href="xsltliaison-include.xsl"/>
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/optional/xsltliaison-include.xml b/src/etc/testcases/taskdefs/optional/xsltliaison-include.xml
deleted file mode 100644
index b925522..0000000
--- a/src/etc/testcases/taskdefs/optional/xsltliaison-include.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!-- to be included by xsltliaison-include.xsl -->
-<task/>
diff --git a/src/etc/testcases/taskdefs/optional/xsltliaison-include.xsl b/src/etc/testcases/taskdefs/optional/xsltliaison-include.xsl
deleted file mode 100644
index 1008094..0000000
--- a/src/etc/testcases/taskdefs/optional/xsltliaison-include.xsl
+++ /dev/null
@@ -1,3 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-<!-- to be included by xsltliaison-in.xsl -->
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/property.xml b/src/etc/testcases/taskdefs/property.xml
deleted file mode 100644
index cc3fb77..0000000
--- a/src/etc/testcases/taskdefs/property.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="property-test" basedir="." default="test1">
-
-  <target name="test1">
-    <property environment="testenv"/>
-  </target>
-
-  <target name="test2">
-    <property name="testprop1" value="aa"/>
-    <property file="property1.properties"/>
-    <echo message="testprop1=${testprop1}, testprop3=${testprop3}, testprop4=${testprop4}"/>
-  </target>
-
-  <target name="test3">
-    <property file="property2.properties"/>
-  </target>
-
-  <target name="test4">
-    <property name="http.port" value="999" />
-    <property file="property3.properties"/>
-    <echo message="http.url is ${http.url}"/>
-  </target>
-</project>
diff --git a/src/etc/testcases/taskdefs/property1.properties b/src/etc/testcases/taskdefs/property1.properties
deleted file mode 100644
index ea3ecc4..0000000
--- a/src/etc/testcases/taskdefs/property1.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-testprop2=xx
-testprop3=${testprop2}yy
-testprop4=${testprop1}zz
diff --git a/src/etc/testcases/taskdefs/property2.properties b/src/etc/testcases/taskdefs/property2.properties
deleted file mode 100644
index 257899a..0000000
--- a/src/etc/testcases/taskdefs/property2.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-testprop1=aa${testprop2}bb
-testprop2=cc${testprop1}dd
-
diff --git a/src/etc/testcases/taskdefs/property3.properties b/src/etc/testcases/taskdefs/property3.properties
deleted file mode 100644
index efbf7ce..0000000
--- a/src/etc/testcases/taskdefs/property3.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-http.port = 80
-http.url = http://localhost:${http.port}
-
-
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/sleep.xml b/src/etc/testcases/taskdefs/sleep.xml
deleted file mode 100644
index 465b398..0000000
--- a/src/etc/testcases/taskdefs/sleep.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<project name="sleeptest" default="all" >
-
-    <target name="test1">
-        <sleep />
-    </target>
-
-    <target name="test2">
-        <sleep milliseconds="10"/>
-    </target>
-
-    <target name="test3">
-        <sleep seconds="2"/>
-    </target>
-
-    <target name="test4">
-        <sleep hours="1" minutes="-59" seconds="-58"/>
-    </target>
-
-    <target name="test5">
-        <sleep minutes="-59" seconds="-58"/>
-    </target>
-
-    <target name="test6">
-        <sleep minutes="-59" seconds="-58" failonerror="no"/>
-    </target>
-
-    <target name="all"
-        depends="test1,test2,test3,test4,test5" />
-
-</project>
diff --git a/src/etc/testcases/taskdefs/tar.xml b/src/etc/testcases/taskdefs/tar.xml
deleted file mode 100644
index 2804692..0000000
--- a/src/etc/testcases/taskdefs/tar.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="tar-test" basedir="." default="test1">
-
-  <target name="test1">
-    <tar/>
-  </target>
-
-  <target name="test2">
-    <tar tarfile=""/>
-  </target>
-
-  <target name="test3">
-    <tar basedir=""/>
-  </target>
-
-  <target name="test4">
-    <touch file="test4.tar"/>
-    <tar tarfile="test4.tar"
-         basedir="."/>
-  </target>
-
-  <target name="test5">
-    <mkdir dir="test5dir"/>
-    <tar tarfile="test5.tar"
-         basedir="."
-         includes="test5dir"/>
-  </target>
-  
-  <target name="cleanup"> 
-    <delete file="test4.tar"/>
-    <delete file="test5.tar"/>
-    <delete dir="test5dir"/>
-  </target>
-</project>
diff --git a/src/etc/testcases/taskdefs/taskdef.xml b/src/etc/testcases/taskdefs/taskdef.xml
deleted file mode 100644
index 4ec7fdb..0000000
--- a/src/etc/testcases/taskdefs/taskdef.xml
+++ /dev/null
@@ -1,42 +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>
-
-  <target name="test6">
-    <echo message="${build.test}" />
-    <taskdef name="test6"
-             classname="org.apache.tools.ant.taskdefs.TaskdefTestSimpleTask" />
-    <test6>
-      <echo message="worked" />
-    </test6>
-  </target>
-
-  <target name="test7">
-    <taskdef name="test7"
-             classname="org.apache.tools.ant.taskdefs.TaskdefTestContainerTask" />
-    <test7>
-      <echo message="worked" />
-    </test7>
-  </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 e1ed9a5..0000000
--- a/src/etc/testcases/taskdefs/zip.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="zip-test" basedir="." default="test1">
-
-  <target name="test1">
-    <zip/>
-  </target>
-
-  <target name="test2">
-    <zip zipfile="zip.tmp"/>
-  </target>
-
-  <!-- Test when the zip file includes itself
-  when target file exists before the zip task is run -->
-  <target name="test3">
-    <touch file="test3.zip"/>
-    <zip zipfile="test3.zip"
-         basedir="."/>
-  </target>
-
-  <!-- Test when the zip file includes itself
-  when target file does not exist before the zip task is run -->
-  <target name="test4">
-     <zip zipfile="test4.zip"
-         basedir="."/>
-  </target>
-
-  <target name="test5">
-    <zip zipfile="test5.zip" basedir="." >
-      <exclude name="test5.zip" />
-    </zip>
-  </target>
-
-  <target name="test6">
-    <zip zipfile="test6.zip" basedir=".">
-      <include name="*.xml" />
-      <exclude name="zip.*" />
-    </zip>
-  </target>
-
-  <target name="test7">
-    <zip zipfile="inner7.zip" basedir="." >
-      <exclude name="inner7.zip" />
-    </zip>
-    <zip zipfile="test7.zip" basedir=".">
-      <exclude name="**/*.*" />
-      <zipfileset src="inner7.zip" />
-    </zip>
-  </target>
-
-
-
-  <target name="cleanup">
-    <delete file="test3.zip"/>
-    <delete file="test4.zip"/>
-    <delete file="test5.zip"/>
-    <delete file="test6.zip"/>
-    <delete file="inner7.zip"/>
-    <delete file="test7.zip"/>
-  </target>
-</project>
diff --git a/src/etc/testcases/types/filterset.xml b/src/etc/testcases/types/filterset.xml
deleted file mode 100644
index 77c3ecf..0000000
--- a/src/etc/testcases/types/filterset.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<project name="test" default="new" basedir=".">
-  <filterset id="testset.one">
-    <filter token="aaaa" value="1111"/>
-    <filter token="bbbb" value="2222"/>
-  </filterset>
-  
-  <filterset id="testset.two" beginToken="%" endToken="^">
-    <filter token="cccc" value="3333"/>
-    <filter token="dddd" value="4444"/>
-  </filterset>
-  
-  <target name="test1">
-    <delete file="dest1.txt"/>
-    <copy file="filterseta.txt" tofile="dest1.txt">
-        <filterset refid="testset.one"/> 
-    </copy>
-    <fixcrlf eol="lf" srcdir="." includes="dest1.txt"/>
-  </target>
-
-  <target name="test2">
-    <delete file="dest2.txt"/>
-    <copy file="filtersetb.txt" tofile="dest2.txt">
-        <filterset refid="testset.two"/> 
-    </copy>
-    <fixcrlf eol="lf" srcdir="." includes="dest2.txt"/>
-  </target>
-
-  <target name="test3">
-    <delete file="dest3.txt"/>
-    <copy file="filtersetc.txt" tofile="dest3.txt">
-        <filterset refid="testset.one"/> 
-        <filterset refid="testset.two"/> 
-    </copy>
-    <fixcrlf eol="lf" srcdir="." includes="dest3.txt"/>
-  </target>
-  
-</project>
diff --git a/src/etc/testcases/types/filterseta.txt b/src/etc/testcases/types/filterseta.txt
deleted file mode 100644
index 4404995..0000000
--- a/src/etc/testcases/types/filterseta.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This is a test file for filters @aaaa@
-It has two lines @bbbb@
diff --git a/src/etc/testcases/types/filtersetb.txt b/src/etc/testcases/types/filtersetb.txt
deleted file mode 100644
index f49640a..0000000
--- a/src/etc/testcases/types/filtersetb.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This is a test file for filters with non default markers
-@cccc@ - should not change
-%cccc^ - should change
-^dddd% - should not change
-%dddd^ - should change
diff --git a/src/etc/testcases/types/filtersetc.txt b/src/etc/testcases/types/filtersetc.txt
deleted file mode 100644
index 2522d35..0000000
--- a/src/etc/testcases/types/filtersetc.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Combined filter test
-@aaaa@ - should change
-@bbbb@ - should change
-@cccc@ - should not change
-%cccc^ - should change
-^dddd% - should not change
-%dddd^ - should change
diff --git a/src/etc/testcases/types/gold/filterset1.txt b/src/etc/testcases/types/gold/filterset1.txt
deleted file mode 100644
index 975416f..0000000
--- a/src/etc/testcases/types/gold/filterset1.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This is a test file for filters 1111
-It has two lines 2222
diff --git a/src/etc/testcases/types/gold/filterset2.txt b/src/etc/testcases/types/gold/filterset2.txt
deleted file mode 100644
index eaab021..0000000
--- a/src/etc/testcases/types/gold/filterset2.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This is a test file for filters with non default markers
-@cccc@ - should not change
-3333 - should change
-^dddd% - should not change
-4444 - should change
diff --git a/src/etc/testcases/types/gold/filterset3.txt b/src/etc/testcases/types/gold/filterset3.txt
deleted file mode 100644
index 3516e62..0000000
--- a/src/etc/testcases/types/gold/filterset3.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Combined filter test
-1111 - should change
-2222 - should change
-@cccc@ - should not change
-3333 - should change
-^dddd% - should not change
-4444 - should change
diff --git a/src/etc/testcases/types/mapper.xml b/src/etc/testcases/types/mapper.xml
deleted file mode 100644
index e9a8eed..0000000
--- a/src/etc/testcases/types/mapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="copy-test" basedir="." default="test1">
-
-  <target name="test1">
-    <delete dir="copytest" />
-    <mkdir dir="copytest" />
-    <copy todir="copytest">
-      <fileset dir="../../../main">
-        <include name="**/taskdefs/*.java" />
-      </fileset>
-      <fileset dir="../../../testcases">
-        <include name="**/taskdefs/*.java" />
-      </fileset>
-      <mapper type="flatten" />
-    </copy>
-  </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 4752c2f..0000000
--- a/src/main/org/apache/tools/ant/AntClassLoader.java
+++ /dev/null
@@ -1,981 +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 java.net.*;
-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 implements BuildListener {
-
-    /**
-     * An enumeration of all resources of a given name found within the
-     * classpath of this class loader. This enumeration is used by the
-     * {@link #findResources(String) findResources} method, which is in
-     * turn used by the
-     * {@link ClassLoader#getResources ClassLoader.getResources} method.
-     *
-     * @see AntClassLoader#findResources(String)
-     * @see java.lang.ClassLoader#getResources(String)
-     * @author <a href="mailto:hermand@alumni.grinnell.edu">David A. Herman</a>
-     */
-    private class ResourceEnumeration implements Enumeration {
-
-        /**
-         * The name of the resource being searched for.
-         */
-        private String resourceName;
-
-        /**
-         * The index of the next classpath element to search.
-         */
-        private int pathElementsIndex;
-
-        /**
-         * The URL of the next resource to return in the enumeration. If this
-         * field is <code>null</code> then the enumeration has been completed,
-         * i.e., there are no more elements to return.
-         */
-        private URL nextResource;
-
-        /**
-         * Construct a new enumeration of resources of the given name found
-         * within this class loader's classpath.
-         *
-         * @param name the name of the resource to search for.
-         */
-        ResourceEnumeration(String name) {
-            this.resourceName = name;
-            this.pathElementsIndex = 0;
-            findNextResource();
-        }
-
-        /**
-         * Indicates whether there are more elements in the enumeration to
-         * return.
-         *
-         * @return <code>true</code> if there are more elements in the
-         *         enumeration; <code>false</code> otherwise.
-         */
-        public boolean hasMoreElements() {
-            return (this.nextResource != null);
-        }
-
-        /**
-         * Returns the next resource in the enumeration.
-         *
-         * @return the next resource in the enumeration.
-         */
-        public Object nextElement() {
-            URL ret = this.nextResource;
-            findNextResource();
-            return ret;
-        }
-
-        /**
-         * Locates the next resource of the correct name in the classpath and
-         * sets <code>nextResource</code> to the URL of that resource. If no
-         * more resources can be found, <code>nextResource</code> is set to
-         * <code>null</code>.
-         */
-        private void findNextResource() {
-            URL url = null;
-            while ((pathElementsIndex < pathComponents.size()) &&
-                   (url == null)) {
-                try {                       
-                    File pathComponent 
-                        = (File)pathComponents.elementAt(pathElementsIndex);
-                    url = getResourceURL(pathComponent, this.resourceName);
-                    pathElementsIndex++;
-                }
-                catch (BuildException e) {
-                    // ignore path elements which are not valid relative to the project
-                }
-            }
-            this.nextResource = url;
-        }
-    }
-
-    /**
-     * The size of buffers to be used in this classloader.
-     */
-    static private final int BUFFER_SIZE = 8192;
-    
-    /**
-     * The components of the classpath that the classloader searches for classes
-     */
-    Vector pathComponents  = new Vector();
-    
-    /**
-     * The project to which this class loader belongs.
-     */
-    private Project project;
-
-    /**
-     * Indicates whether the parent class loader should be 
-     * consulted before trying to load with this class loader. 
-     */
-    private boolean parentFirst = true;
-
-    /**
-     * These are the package roots that are to be loaded by the parent class loader
-     * regardless of whether the parent 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 parent class loader is being searched first or not.
-     */
-    private Vector loaderPackages = new Vector();
-    
-    /**
-     * This flag indicates that the classloader will ignore the base
-     * classloader if it can't find a class.
-     */
-    private boolean ignoreBase = false;
-
-    /** 
-     * The parent class loader, if one is given or can be determined
-     */
-    private ClassLoader parent = null;
-
-    /**
-     * A hashtable of zip files opened by the classloader
-     */
-    private Hashtable zipFiles = new Hashtable();     
-    
-    /**
-     * The context loader saved when setting the thread's current context loader.
-     */
-    private ClassLoader savedContextLoader = null;
-    private boolean isContextLoaderSaved = false;
-    
-    private static Method getProtectionDomain = null;
-    private static Method defineClassProtectionDomain = null;
-    private static Method getContextClassLoader = null;
-    private static Method setContextClassLoader = 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);
-            
-            getContextClassLoader = Thread.class.getMethod("getContextClassLoader", new Class[0]);
-            args = new Class[] {ClassLoader.class};
-            setContextClassLoader = Thread.class.getMethod("setContextClassLoader", args);
-        }
-        catch (Exception e) {}
-    }
-
-    
-    /**
-     * 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.  This
-     *                is combined with the system classpath in a manner
-     *                determined by the value of ${build.sysclasspath}
-     */
-    public AntClassLoader(Project project, Path classpath) {
-        parent = AntClassLoader.class.getClassLoader();
-        this.project = project;
-        project.addBuildListener(this);
-        if (classpath != null) {
-            Path actualClasspath = classpath.concatSystemClasspath("ignore");
-            String[] pathElements = actualClasspath.list();
-            for (int i = 0; i < pathElements.length; ++i) {
-                try {
-                    addPathElement((String)pathElements[i]);
-                }
-                catch (BuildException e) {
-                    // ignore path elements which are invalid relative to the project
-                }
-            }
-        }
-    }
-    
-    /**
-     * Create a classloader for the given project using the classpath given.
-     *
-     * @param parent the parent classloader to which unsatisfied loading attempts
-     *               are delgated
-     * @param project the project to which this classloader is to belong.
-     * @param classpath the classpath to use to load the classes.
-     * @param parentFirst if true indicates that the parent classloader should be consulted
-     *                    before trying to load the a class through this loader.
-     */
-    public AntClassLoader(ClassLoader parent, Project project, Path classpath, 
-                          boolean parentFirst) {
-        this(project, classpath);
-        if (parent != null) {
-            this.parent = parent;
-        }
-        this.parentFirst = parentFirst;
-        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.
-     * @param parentFirst if true indicates that the parent classloader should be consulted
-     *                    before trying to load the a class through this loader.
-     */
-    public AntClassLoader(Project project, Path classpath, boolean parentFirst) {
-        this(null, project, classpath, parentFirst);
-    }
-
-    /**
-     * Create an empty class loader. The classloader should be configured with path elements
-     * to specify where the loader is to look for classes.
-     *
-     * @param parent the parent classloader to which unsatisfied loading attempts
-     *               are delgated
-     * @param parentFirst if true indicates that the parent classloader should be consulted
-     *                    before trying to load the a class through this loader.
-     */
-    public AntClassLoader(ClassLoader parent, boolean parentFirst) {
-        if (parent != null) {
-            this.parent = parent;
-        }
-        else {
-            parent = AntClassLoader.class.getClassLoader();
-        }
-        project = null;
-        this.parentFirst = parentFirst;
-    }
-    
-    /**
-     * Log a message through the project object if one has been provided.
-     *
-     * @param message the message to log
-     * @param priority the logging priority of the message
-     */
-    protected void log(String message, int priority) {
-        if (project != null) {
-            project.log(message, priority);
-        }
-//         else {
-//             System.out.println(message);
-//         }
-    }
-
-    /**
-     * Set the current thread's context loader to this classloader, storing the current
-     * loader value for later resetting
-     */
-    public void setThreadContextLoader() {
-        if (isContextLoaderSaved) {
-            throw new BuildException("Context loader has not been reset");
-        }
-        if (getContextClassLoader != null && setContextClassLoader != null) {
-            try {
-                savedContextLoader 
-                    = (ClassLoader)getContextClassLoader.invoke(Thread.currentThread(), new Object[0]);
-                Object[] args = new Object[] {this};
-                setContextClassLoader.invoke(Thread.currentThread(), args);
-                isContextLoaderSaved = true;
-            }
-            catch (InvocationTargetException ite) {
-                Throwable t = ite.getTargetException();
-                throw new BuildException(t.toString());
-            }
-            catch (Exception e) {
-                throw new BuildException(e.toString());
-            }
-        }
-    }
-        
-    /**
-     * Reset the current thread's context loader to its original value
-     */
-    public void resetThreadContextLoader() {
-        if (isContextLoaderSaved &&
-                getContextClassLoader != null && setContextClassLoader != null) {
-            try {
-                Object[] args = new Object[] {savedContextLoader};
-                setContextClassLoader.invoke(Thread.currentThread(), args);
-                savedContextLoader = null;
-                isContextLoaderSaved = false;
-            }
-            catch (InvocationTargetException ite) {
-                Throwable t = ite.getTargetException();
-                throw new BuildException(t.toString());
-            }
-            catch (Exception e) {
-                throw new BuildException(e.toString());
-            }
-        }
-    }
-        
-    
-    /**
-     * Add an element to the classpath to be searched
-     *
-     */
-    public void addPathElement(String pathElement) throws BuildException {
-        File pathComponent 
-            = project != null ? project.resolveFile(pathElement)
-                              : new File(pathElement);
-        pathComponents.addElement(pathComponent);
-    }
-        
-    /**
-     * Set this classloader to run in isolated mode. In isolated mode, classes not
-     * found on the given classpath will not be referred to the base class loader
-     * but will cause a classNotFoundException.
-     */
-    public void setIsolated(boolean isolated) {
-        ignoreBase = isolated;
-    }
-
-    /**
-     * Force initialization of a class in a JDK 1.1 compatible, albeit hacky 
-     * way 
-     */
-    static public void initializeClass(Class theClass) {
-        // ***HACK*** We try to create an instance to force the VM to run the
-        // class' static initializer. We don't care if the instance can't 
-        // be created - we are just interested in the side effect.
-        try {
-            theClass.newInstance();
-        }
-        catch (Throwable t) {
-            //ignore - our work is done
-        }
-    }
-    
-    /**
-     * Add a package root to the list of packages which must be loaded on the 
-     * parent 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
-     * parent 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 {
-        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 parent class loader
-     *
-     * This ensures that instances of the returned class will be compatible with instances which
-     * which have already been loaded on the parent 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 {
-        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) {
-
-        InputStream resourceStream = null;
-        if (isParentFirst(name)) {
-            resourceStream = loadBaseResource(name);
-            if (resourceStream != null) {
-                log("ResourceStream for " + name
-                    + " loaded from parent loader", Project.MSG_DEBUG);
-
-            } else {
-                resourceStream = loadResource(name);
-                if (resourceStream != null) {
-                    log("ResourceStream for " + name
-                        + " loaded from ant loader", Project.MSG_DEBUG);
-                }
-            }
-        }
-        else {
-            resourceStream = loadResource(name);
-            if (resourceStream != null) {
-                log("ResourceStream for " + name
-                    + " loaded from ant loader", Project.MSG_DEBUG);
-
-            } else {
-                resourceStream = loadBaseResource(name);
-                if (resourceStream != null) {
-                    log("ResourceStream for " + name
-                        + " loaded from parent loader", Project.MSG_DEBUG);
-                }
-            }
-        }
-            
-        if (resourceStream == null) {
-            log("Couldn't load ResourceStream for " + name, 
-                Project.MSG_DEBUG);
-        }
-
-        return resourceStream;
-    }
-    
-    
-    
-    /**
-     * Get a stream to read the requested resource name from this loader.
-     *
-     * @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.
-     */
-    private InputStream loadResource(String name) {
-        // we need to search the components of the path to see if we can find the 
-        // class we want. 
-        InputStream stream = null;
- 
-        for (Enumeration e = pathComponents.elements(); e.hasMoreElements() && stream == null; ) {
-            File pathComponent = (File)e.nextElement();
-            stream = getResourceStream(pathComponent, name);
-        }
-        return stream;
-    }
-
-    /**
-     * Find a system resource (which should be loaded from the parent classloader).
-     */
-    private InputStream loadBaseResource(String name) {
-        if (parent == null) {
-            return getSystemResourceAsStream(name);
-        }
-        else {
-            return parent.getResourceAsStream(name);
-        }
-    }
-
-    /**
-     * 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 {
-                // is the zip file in the cache
-                ZipFile zipFile = (ZipFile)zipFiles.get(file);
-                if (zipFile == null) {
-                    zipFile = new ZipFile(file);
-                    zipFiles.put(file, zipFile);                    
-                }
-                ZipEntry entry = zipFile.getEntry(resourceName);
-                if (entry != null) {
-                    return zipFile.getInputStream(entry);
-                }
-            }
-        }
-        catch (Exception e) {
-            log("Ignoring Exception " + e.getClass().getName() + ": " + e.getMessage() + 
-                " reading resource " + resourceName + " from " + file, Project.MSG_VERBOSE);  
-        }
-        
-        return null;   
-    }
-
-    private boolean isParentFirst(String resourceName) {
-        // 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 parent one)
-        boolean useParentFirst = parentFirst; 
-
-        for (Enumeration e = systemPackages.elements(); e.hasMoreElements();) {
-            String packageName = (String)e.nextElement();
-            if (resourceName.startsWith(packageName)) {
-                useParentFirst = true;
-                break;
-            }
-        }
-
-        for (Enumeration e = loaderPackages.elements(); e.hasMoreElements();) {
-            String packageName = (String)e.nextElement();
-            if (resourceName.startsWith(packageName)) {
-                useParentFirst = false;
-                break;
-            }
-        }
-        
-        return useParentFirst;
-    }
-
-    /**
-     * Finds the resource with the given name. A resource is 
-     * some data (images, audio, text, etc)
-     * that can be accessed by class
-     * code in a way that is independent of the location of the code.
-     *
-     * @param name the name of the resource for which a stream is required.
-     *
-     * @return a URL for reading the resource, or null if the resource 
-     *         could not be found or the caller
-     * doesn't have adequate privileges to get the resource.
-     */
-    public URL getResource(String name) {
-        // we need to search the components of the path to see if we can find the
-        // class we want.
-        URL url = null;
-        if (isParentFirst(name)) {
-            url = (parent == null) ? super.getResource(name) : parent.getResource(name);
-        }
-
-        if (url != null) {
-            log("Resource " + name + " loaded from parent loader", 
-                Project.MSG_DEBUG);
-
-        } else {
-            // try and load from this loader if the parent either didn't find 
-            // it or wasn't consulted.
-            for (Enumeration e = pathComponents.elements(); e.hasMoreElements() && url == null; ) {
-                File pathComponent = (File)e.nextElement();
-                url = getResourceURL(pathComponent, name);
-                if (url != null) {
-                    log("Resource " + name 
-                        + " loaded from ant loader", 
-                        Project.MSG_DEBUG);
-                }
-            }
-        }
-        
-        if (url == null && !isParentFirst(name)) {
-            // this loader was first but it didn't find it - try the parent
-            
-            url = (parent == null) ? super.getResource(name) : parent.getResource(name);
-            if (url != null) {
-                log("Resource " + name + " loaded from parent loader", 
-                    Project.MSG_DEBUG);
-            }
-        }
-
-        if (url == null) {
-            log("Couldn't load Resource " + name, Project.MSG_DEBUG);
-        }
-
-        return url;
-    }
-
-    /**
-     * Returns an enumeration of URLs representing all the resources with the
-     * given name by searching the class loader's classpath.
-     *
-     * @param name the resource name.
-     * @return an enumeration of URLs for the resources.
-     * @throws IOException if I/O errors occurs (can't happen)
-     */
-    protected Enumeration findResources(String name) throws IOException {
-        return new ResourceEnumeration(name);
-    }
-
-    /**
-     * 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 URL getResourceURL(File file, String resourceName) {
-        try {
-            if (!file.exists()) {
-                return null;
-            }
-
-            if (file.isDirectory()) {
-                File resource = new File(file, resourceName);
-
-                if (resource.exists()) {
-                    try {
-                        return new URL("file:"+resource.toString());
-                    } catch (MalformedURLException ex) {
-                        return null;
-                    }
-                }
-            }
-            else {
-                ZipFile zipFile = (ZipFile)zipFiles.get(file);
-                if (zipFile == null) {
-                    zipFile = new ZipFile(file);
-                    zipFiles.put(file, zipFile);                    
-                }
-
-                ZipEntry entry = zipFile.getEntry(resourceName);
-                if (entry != null) {
-                    try {
-                        return new URL("jar:file:"+file.toString()+"!/"+entry);
-                    } catch (MalformedURLException ex) {
-                        return null;
-                    }
-                }
-            }
-        }
-        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 {
-
-        Class theClass = findLoadedClass(classname);
-        if (theClass != null) {
-            return theClass;
-        }
-
-        if (isParentFirst(classname)) {
-            try {
-                theClass = findBaseClass(classname);
-                log("Class " + classname + " loaded from parent loader", Project.MSG_DEBUG);
-            }
-            catch (ClassNotFoundException cnfe) {
-                theClass = findClass(classname);
-                log("Class " + classname + " loaded from ant loader", Project.MSG_DEBUG);
-            }
-        }
-        else {
-            try {
-                theClass = findClass(classname);
-                log("Class " + classname + " loaded from ant loader", Project.MSG_DEBUG);
-            }
-            catch (ClassNotFoundException cnfe) {
-                if (ignoreBase) {
-                    throw cnfe;
-                }
-                theClass = findBaseClass(classname);
-                log("Class " + classname + " loaded from parent loader", Project.MSG_DEBUG);
-            }
-        }
-            
-        if (resolve) {
-            resolveClass(theClass);
-        }
-
-        return theClass;
-    }
-
-    /**
-     * Convert the class dot notation to a filesystem equivalent for
-     * searching purposes.
-     *
-     * @param classname the class name in dot format (ie java.lang.Integer)
-     *
-     * @return the classname in filesystem 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[BUFFER_SIZE];
-        
-        while ((bytesRead = stream.read(buffer, 0, BUFFER_SIZE)) != -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 {
-        log("Finding class " + name, Project.MSG_DEBUG);
-
-        return findClassInComponents(name);
-    }
-
-
-    /**
-     * Find a class on the given classpath.
-     */
-    private Class findClassInComponents(String name) 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 {
-            for (Enumeration e = pathComponents.elements(); e.hasMoreElements(); ) {
-                File pathComponent = (File)e.nextElement();
-                try {
-                    stream = getResourceStream(pathComponent, classFilename);
-                    if (stream != null) {
-                        return getClassFromStream(stream, name);
-                    }
-                }
-                catch (IOException ioe) {
-                    log("Exception reading component " + pathComponent , Project.MSG_VERBOSE);
-                }
-            }
-            
-            throw new ClassNotFoundException(name);
-        }
-        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 {
-        if (parent == null) {
-            return findSystemClass(name);
-        }
-        else {
-            return parent.loadClass(name);
-        }
-    }
-
-    public void cleanup() {
-        pathComponents = null;
-        project = null;
-        for (Enumeration e = zipFiles.elements(); e.hasMoreElements(); ) {
-            ZipFile zipFile = (ZipFile)e.nextElement();
-            try {
-                zipFile.close();
-            }
-            catch (IOException ioe) {
-                // ignore
-            }
-        }
-        zipFiles = new Hashtable();
-    }
-    
-    public void buildStarted(BuildEvent event) {
-    }
-
-    public void buildFinished(BuildEvent event) {
-        cleanup();
-    }
-
-    public void targetStarted(BuildEvent event) {
-    }
-
-    public void targetFinished(BuildEvent event) {
-    }
-
-    public void taskStarted(BuildEvent event) {
-    }
-
-    public void taskFinished(BuildEvent event) {
-    }
-
-    public void messageLogged(BuildEvent event) {
-    }
-}
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 08b269b..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) {
-            super.printStackTrace(ps);
-            if (cause != null) {
-                ps.println("--- Nested Exception ---");
-                cause.printStackTrace(ps);
-            }
-        }
-    }
-    
-    public void printStackTrace(PrintWriter pw) {
-        synchronized (pw) {
-            super.printStackTrace(pw);
-            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 4d990fe..0000000
--- a/src/main/org/apache/tools/ant/DefaultLogger.java
+++ /dev/null
@@ -1,208 +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 (Project.MSG_VERBOSE <= msgOutputLevel ||
-                !(error instanceof BuildException)) {
-                error.printStackTrace(err);
-            }
-            else {
-                err.println(error.getMessage());
-            }
-        }
-
-        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/DemuxOutputStream.java b/src/main/org/apache/tools/ant/DemuxOutputStream.java
deleted file mode 100644
index 8568e7f..0000000
--- a/src/main/org/apache/tools/ant/DemuxOutputStream.java
+++ /dev/null
@@ -1,151 +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.*;
-import java.util.*;
-
-
-/**
- * Logs content written by a thread and forwards the buffers onto the
- * project object which will forward the content to the appropriate
- * task 
- *
- * @author Conor MacNeill
- */
-public class DemuxOutputStream extends OutputStream {
-
-    static private final int MAX_SIZE = 1024;
-    
-    private Hashtable buffers = new Hashtable();
-//    private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-    private boolean skip = false;
-    private Project project;
-    private boolean isErrorStream;
-    
-    /**
-     * 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 DemuxOutputStream(Project project, boolean isErrorStream) {
-        this.project = project;
-        this.isErrorStream = isErrorStream;
-    }
-
-    private ByteArrayOutputStream getBuffer() {
-        Thread current = Thread.currentThread();
-        ByteArrayOutputStream buffer = (ByteArrayOutputStream)buffers.get(current);
-        if (buffer == null) {
-            buffer = new ByteArrayOutputStream();
-            buffers.put(current, buffer);
-        }
-        return buffer;
-    }
-
-    private void resetBuffer() {    
-        Thread current = Thread.currentThread();
-        buffers.remove(current);
-    }
-    
-    /**
-     * 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 {
-            ByteArrayOutputStream buffer = getBuffer();
-            buffer.write(cc);
-            if (buffer.size() > MAX_SIZE) {
-                processBuffer();
-            }
-        }
-        skip = (c == '\r');
-    }
-
-
-    /**
-     * Converts the buffer to a string and sends it to <code>processLine</code>
-     */
-    protected void processBuffer() {
-        String output = getBuffer().toString();
-        project.demuxOutput(output, isErrorStream);
-        resetBuffer();
-    }
-
-    /**
-     * Writes all remaining
-     */
-    public void close() throws IOException {
-        flush();
-    }
-
-    /**
-     * Writes all remaining
-     */
-    public void flush() throws IOException {
-        if (getBuffer().size() > 0) {
-            processBuffer();
-        }
-    }
-}
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 92672ad..0000000
--- a/src/main/org/apache/tools/ant/DesirableFilter.java
+++ /dev/null
@@ -1,132 +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;
-        }
-
-        // CVS merge autosaves.
-        if (name.startsWith(".#")) {
-            return false;
-        }
-
-        // SCCS/CSSC/TeamWare:
-        if (name.equals("SCCS")) {
-            return false;
-        }
-    
-        // Visual Source Save
-        if (name.equals("vssver.scc")) {
-            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 ba6d9e7..0000000
--- a/src/main/org/apache/tools/ant/DirectoryScanner.java
+++ /dev/null
@@ -1,979 +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",
-        "**/SCCS",
-        "**/SCCS/**",
-        "**/vssver.scc"
-    };
-
-    /**
-     * 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 " + basedir
-                                            + " does not exist");
-        }
-        if (!basedir.isDirectory()) {
-            throw new IllegalStateException("basedir " + 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();
-
-        if (isIncluded("")) {
-            if (!isExcluded("")) {
-                dirsIncluded.addElement("");
-            } else {
-                dirsExcluded.addElement("");
-            }
-        } else {
-            dirsNotIncluded.addElement("");
-        }
-        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++) {
-            if (!couldHoldIncluded(excl[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);
-                        if (fast && couldHoldIncluded(name)) {
-                            scandir(file, name+File.separator, fast);
-                        }
-                    }
-                } 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, and 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/ExitException.java b/src/main/org/apache/tools/ant/ExitException.java
deleted file mode 100644
index 620c171..0000000
--- a/src/main/org/apache/tools/ant/ExitException.java
+++ /dev/null
@@ -1,76 +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;
-
-/**
- * Used to report exit status of classes which call System.exit()
- *
- * @author Conor MacNeill
- */
-public class ExitException extends SecurityException {
-
-    private int status;
-    
-    /**
-     * Constructs an exit exception.
-     */
-    public ExitException(int status) {
-        super("ExitException: status " + status);
-        this.status = status;
-    }
-
-    public int getStatus() {
-        return status;
-    }
-}
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 4d29478..0000000
--- a/src/main/org/apache/tools/ant/IntrospectionHelper.java
+++ /dev/null
@@ -1,662 +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.DataType;
-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 <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class IntrospectionHelper implements BuildListener {
-
-    /**
-     * 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;
-
-    /**
-     * Holds methods to store configured nested elements.
-     */
-    private Hashtable nestedStorers;
-
-    /**
-     * 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();
-        nestedStorers = 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;
-            }
-            
-            // hide addTask for TaskContainers
-            if (org.apache.tools.ant.TaskContainer.class.isAssignableFrom(bean) 
-                && args.length == 1 && "addTask".equals(name) 
-                && org.apache.tools.ant.Task.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("addConfigured")
-                       && 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, "addConfigured");
-                    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[] {});
-                                return o;
-                            }
-
-                        });
-                    nestedStorers.put(propName, new NestedStorer() {
-
-                            public void store(Object parent, Object child) 
-                                throws InvocationTargetException, IllegalAccessException, InstantiationException {
-                                
-                                m.invoke(parent, new Object[] {child});
-                            }
-
-                        });
-                } catch (NoSuchMethodException nse) {
-                }
-            } 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 = getElementName(p, element) +
-            //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(Project project, Object element, String text) {
-        if (addText == null) {
-	   String msg = getElementName(project, element) +
-           //String msg = "Class " + element.getClass().getName() +
-                " doesn't support nested text data.";
-            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(Project project, Object element, String elementName) 
-        throws BuildException {
-        NestedCreator nc = (NestedCreator) nestedCreators.get(elementName);
-        if (nc == null) {
-	    String msg = getElementName(project, element) +
-            //String msg = "Class " + element.getClass().getName() +
-                " doesn't support the nested \"" + elementName + "\" element.";
-            throw new BuildException(msg);
-        }
-        try {
-            Object nestedElement = nc.create(element);
-            if (nestedElement instanceof DataType) {
-                ((DataType)nestedElement).setProject(project);
-            }
-            return nestedElement;
-        } 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);
-        }
-    }
-
-    /**
-     * Creates a named nested element.
-     */
-    public void storeElement(Project project, Object element, Object child, String elementName) 
-        throws BuildException {
-        if (elementName == null) {
-            return;
-        }
-        NestedStorer ns = (NestedStorer)nestedStorers.get(elementName);
-        if (ns == null) {
-            return;
-        }
-        try {
-            ns.store(element, child);
-        } 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 {
-                                Object attribute = c.newInstance(new String[] {value});
-                                if (attribute instanceof DataType) {
-                                    ((DataType)attribute).setProject(p);
-                                }
-                                m.invoke(parent, new Object[] {attribute});
-                            } catch (InstantiationException ie) {
-                                throw new BuildException(ie);
-                            }
-                        }
-                    };
-                
-            } catch (NoSuchMethodException nme) {
-            }
-        }
-        
-        return null;
-    }
-
-    protected String getElementName(Project project, Object element)
-    {
-	Hashtable elements = project.getTaskDefinitions();
-	String typeName = "task";
-	if (!elements.contains( element.getClass() ))
-	{
-	    elements = project.getDataTypeDefinitions();
-	    typeName = "data type";
-	    if (!elements.contains( element.getClass() ))
-	    {
-		elements = null;
-	    }
-	}
-
-	if (elements != null)
-	{
-	    Enumeration e = elements.keys();
-	    while (e.hasMoreElements())
-	    {
-		String elementName = (String) e.nextElement();
-		Class elementClass = (Class) elements.get( elementName );
-		if ( element.getClass().equals( elementClass ) )
-		{
-		    return "The <" + elementName + "> " + typeName;
-		}
-	    }
-	}
-	
-	return "Class " + element.getClass().getName();
-    }
-
-    /**
-     * 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 NestedStorer {
-        public void store(Object parent, Object child) 
-            throws InvocationTargetException, IllegalAccessException, InstantiationException;
-    }
-    
-    private interface AttributeSetter {
-        public void set(Project p, Object parent, String value)
-            throws InvocationTargetException, IllegalAccessException, 
-                   BuildException;
-    }
-
-    public void buildStarted(BuildEvent event) {}
-    public void buildFinished(BuildEvent event) {
-        attributeTypes.clear();
-        attributeSetters.clear();
-        nestedTypes.clear();
-        nestedCreators.clear();
-        addText = null;
-        helpers.clear();
-    }
-
-    public void targetStarted(BuildEvent event) {}
-    public void targetFinished(BuildEvent event) {}
-    public void taskStarted(BuildEvent event) {}
-    public void taskFinished(BuildEvent event) {}
-    public void messageLogged(BuildEvent event) {}
-}
diff --git a/src/main/org/apache/tools/ant/Launcher.java b/src/main/org/apache/tools/ant/Launcher.java
deleted file mode 100644
index 6b14b98..0000000
--- a/src/main/org/apache/tools/ant/Launcher.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;
-
-import java.io.*;
-import java.util.*;
-import java.net.*;
-import java.lang.reflect.*;
-
-/**
- * This is the Ant command line front end to end. This front end
- * works out where ant is installed and loads the ant libraries before
- * starting Ant proper.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */ 
-public class Launcher {
-    static private File determineAntHome11() {
-        String classpath = System.getProperty("java.class.path");
-        StringTokenizer tokenizer = new StringTokenizer(classpath, System.getProperty("path.separator"));
-        while (tokenizer.hasMoreTokens()) {
-            String path = tokenizer.nextToken();
-            if (path.endsWith("ant.jar")) {
-                File antJarFile = new File(path);
-                File libDirectory = new File(antJarFile.getParent());
-                File antHome = new File(libDirectory.getParent());
-                return antHome;
-            }
-        }
-        return null;
-    }
-
-    static private File determineAntHome(ClassLoader systemClassLoader) {
-        try {
-            String className = Launcher.class.getName().replace('.', '/') + ".class";
-            URL classResource = systemClassLoader.getResource(className);
-            String fileComponent = classResource.getFile();
-            if (classResource.getProtocol().equals("file")) {
-                // Class comes from a directory of class files rather than
-                // from a jar. 
-                int classFileIndex = fileComponent.lastIndexOf(className);
-                if (classFileIndex != -1) {
-                    fileComponent = fileComponent.substring(0, classFileIndex);
-                }
-                File classFilesDir = new File(fileComponent);
-                File buildDir = new File(classFilesDir.getParent());
-                File devAntHome = new File(buildDir.getParent());
-                return devAntHome;
-            }
-            else if (classResource.getProtocol().equals("jar")) {
-                // Class is coming from a jar. The file component of the URL
-                // is actually the URL of the jar file
-                int classSeparatorIndex = fileComponent.lastIndexOf("!");
-                if (classSeparatorIndex != -1) {
-                    fileComponent = fileComponent.substring(0, classSeparatorIndex);
-                }
-                URL antJarURL = new URL(fileComponent);
-                File antJarFile = new File(antJarURL.getFile());
-                File libDirectory = new File(antJarFile.getParent());
-                File antHome = new File(libDirectory.getParent());
-                return antHome;
-            }
-        }
-        catch (MalformedURLException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-    
-    static private void addDirJars(AntClassLoader classLoader, File jarDir) {
-        String[] fileList = jarDir.list(new FilenameFilter() {
-                                            public boolean accept(File dir, String name) {
-                                                return name.endsWith(".jar");
-                                            }
-                                        });
-
-        if (fileList != null) {                                                
-            for (int i = 0; i < fileList.length; ++i) {
-                File jarFile = new File(jarDir, fileList[i]);                                        
-                classLoader.addPathElement(jarFile.getAbsolutePath());
-            }
-        }
-    }
-    
-    static private void addToolsJar(AntClassLoader antLoader) {
-        String javaHome = System.getProperty("java.home");
-        if (javaHome.endsWith("jre")) {
-            javaHome = javaHome.substring(0, javaHome.length() - 4);
-        }
-        System.out.println("Java home is " + javaHome);
-        File toolsJar = new File(javaHome, "lib/tools.jar");
-        if (!toolsJar.exists()) {
-            System.out.println("Unable to find tools.jar at " + toolsJar.getPath());
-        }
-        else {
-            antLoader.addPathElement(toolsJar.getAbsolutePath());
-        }
-    }
-    
-
-    static public void main(String[] args) {
-        File antHome = null;
-        ClassLoader systemClassLoader = Launcher.class.getClassLoader();
-        if (systemClassLoader == null) {
-            antHome = determineAntHome11();
-        }
-        else {
-            antHome = determineAntHome(systemClassLoader);
-        }
-        if (antHome == null) {
-            System.err.println("Unable to determine ANT_HOME");
-            System.exit(1);
-        }
-    
-        System.out.println("ANT_HOME is " + antHome);
-
-        // We now create the class loader with which we are going to launch ant
-        AntClassLoader antLoader = new AntClassLoader(systemClassLoader, false);
-
-        // need to find tools.jar
-        addToolsJar(antLoader);        
-        
-        // add everything in the lib directory to this classloader
-        File libDir = new File(antHome, "lib");
-        addDirJars(antLoader, libDir);
-        
-        File optionalDir = new File(antHome, "lib/optional");
-        addDirJars(antLoader, optionalDir);
-
-        Properties launchProperties = new Properties();
-        launchProperties.put("ant.home", antHome.getAbsolutePath());        
-        
-        try {
-            Class mainClass = antLoader.loadClass("org.apache.tools.ant.Main");
-            antLoader.initializeClass(mainClass);
-            
-            final Class[] param = {Class.forName("[Ljava.lang.String;"),
-                                   Properties.class, ClassLoader.class};
-            final Method startMethod = mainClass.getMethod("start", param);
-            final Object[] argument = {args, launchProperties, systemClassLoader};
-            startMethod.invoke(null, argument);
-        }
-        catch (Exception e) {
-            System.out.println("Exception running Ant: " + e.getClass().getName() + ": " + e.getMessage());
-            e.printStackTrace();
-        }
-    }
-}
-
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 a5d0bc8..0000000
--- a/src/main/org/apache/tools/ant/Main.java
+++ /dev/null
@@ -1,685 +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);
-        }
-    }
-
-    /**
-     * Entry point allowing for more options from other front ends
-     */
-    public static void start(String[] args, Properties additionalUserProperties,
-                             ClassLoader coreLoader) {
-        Main m = null;
-
-        try {
-            m = new Main(args);
-        } catch(Throwable exc) {
-            printMessage(exc);
-            System.exit(1);
-        }
-
-        if (additionalUserProperties != null) {
-            for (Enumeration e = additionalUserProperties.keys(); e.hasMoreElements(); ) {
-                String key = (String) e.nextElement();
-                String property = additionalUserProperties.getProperty(key);
-                m.definedProps.put(key, property);
-            }
-        }
-        
-        try {
-            m.runBuild(coreLoader);
-            System.exit(0);
-        } catch (BuildException be) {
-            if (m.err != System.err) {
-                printMessage(be);
-            }
-            System.exit(1);
-        } catch(Throwable exc) {
-            printMessage(exc);
-            System.exit(1);
-        }
-    }
-                                 
-    
-    
-    /**
-     * 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) {
-        start(args, null, null);
-    }
-
-    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;
-                }
-                try {
-                    loggerClassname = args[++i];
-                } 
-                catch (ArrayIndexOutOfBoundsException aioobe) {
-                    System.out.println("You must specify a classname when " +
-                                       "using the -logger argument");
-                    return;
-                }
-            } 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(System.getProperty("user.dir"), 
-                                          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(ClassLoader coreLoader) throws BuildException {
-
-        if (!readyToRun) {
-            return;
-        }
-
-        // track when we started
-
-        if (msgOutputLevel >= Project.MSG_INFO) {
-            System.out.println("Buildfile: " + buildFile);
-        }
-
-        final Project project = new Project();
-        project.setCoreLoader(coreLoader);
-        
-        Throwable error = null;
-
-        try {
-            addBuildListeners(project);
-
-            PrintStream err = System.err;
-            PrintStream out = System.out;
-            SecurityManager oldsm = System.getSecurityManager();
-
-            try {
-                System.setOut(new PrintStream(new DemuxOutputStream(project, false)));
-                System.setErr(new PrintStream(new DemuxOutputStream(project, true)));
-                project.fireBuildStarted();
-                project.init();
-                project.setUserProperty("ant.version", getAntVersion());
-
-                // 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.
-                String noParserMessage = 
-                    "No JAXP compliant XML parser found. Please visit http://xml.apache.org for a suitable parser";
-                try {
-                    Class.forName("javax.xml.parsers.SAXParserFactory");
-                    ProjectHelper.configureProject(project, buildFile);
-                } catch (NoClassDefFoundError ncdfe) {
-                    throw new BuildException(noParserMessage, ncdfe);
-                } catch (ClassNotFoundException cnfe) {
-                    throw new BuildException(noParserMessage, cnfe);
-                } catch (NullPointerException npe) {
-                    throw new BuildException(noParserMessage, npe);
-                }
-                
-                // make sure that we have a target to execute
-                if (targets.size() == 0) {
-                    targets.addElement(project.getDefaultTarget());
-                }
-                
-                if (!projectHelp) {
-                    project.executeTargets(targets);
-                }
-            }
-            finally {
-                System.setOut(out);
-                System.setErr(err);
-            }
-            if (projectHelp) {
-                printDescription(project);
-                printTargets(project);
-            }
-        }
-        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(Throwable 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() throws BuildException {
-        System.out.println(getAntVersion());
-    }
-
-    private static String antVersion = null;
-
-    public synchronized static String getAntVersion() throws BuildException {
-        if (antVersion == null) {
-            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"));
-                antVersion = msg.toString();
-            } catch (IOException ioe) {
-                throw new BuildException("Could not load the version information:"
-                                         + ioe.getMessage());
-            } catch (NullPointerException npe) {
-                throw new BuildException("Could not load the version information.");
-            }
-        }
-        return antVersion;
-    }
-
-     /**
-      * Print the project description, if any
-      */
-    private static void printDescription(Project project) {
-       if (project.getDescription() != null) {
-          System.out.println(project.getDescription());
-       }
-    }
-
-    /**
-     * 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();
-                }
-            }
-        }
-
-        String defaultTarget = project.getDefaultTarget();
-        if (defaultTarget != null && !"".equals(defaultTarget)) { // shouldn't need to check but...
-            Vector defaultName = new Vector();
-            Vector defaultDesc = null;
-            defaultName.addElement(defaultTarget);
-
-            int indexOfDefDesc = topNames.indexOf(defaultTarget);
-            if (indexOfDefDesc >= 0) {
-                defaultDesc = new Vector();
-                defaultDesc.addElement(topDescriptions.elementAt(indexOfDefDesc));
-            }
-            printTargets(defaultName, defaultDesc, "Default target:", maxLength);
-
-        }
-
-        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 9636050..0000000
--- a/src/main/org/apache/tools/ant/Project.java
+++ /dev/null
@@ -1,1000 +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.*;
-
-import org.apache.tools.ant.types.FilterSet; 
-import org.apache.tools.ant.types.FilterSetCollection; 
-import org.apache.tools.ant.util.FileUtils; 
-
-/**
- * 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 JAVA_1_4 = "1.4";
-
-    public static final String TOKEN_START = FilterSet.DEFAULT_TOKEN_START;
-    public static final String TOKEN_END = FilterSet.DEFAULT_TOKEN_END;
-
-    private String name;
-    private String description;
-
-    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 FilterSet globalFilterSet = new FilterSet();
-    private FilterSetCollection globalFilters = new FilterSetCollection(globalFilterSet);
-    private File baseDir;
-
-    private Vector listeners = new Vector();
-
-    /** The Ant core classloader - may be null if using system loader */    
-    private ClassLoader coreLoader = null;
-
-    /** Records the latest task on a thread */ 
-    private Hashtable threadTasks = new Hashtable();
-    
-    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;
-            Class.forName("java.lang.CharSequence");
-            javaVersion = JAVA_1_4;
-        } catch (ClassNotFoundException cnfe) {
-            // swallow as we've hit the max class version that
-            // we have
-        }
-    }
-
-    private FileUtils fileUtils;
-
-    public Project() {
-        fileUtils = FileUtils.newFileUtils();
-    }
-
-    /**
-     * 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");
-        }
-
-        setSystemProperties();
-    }
-
-    public void setCoreLoader(ClassLoader coreLoader) {
-        this.coreLoader = coreLoader;
-    }
-    
-    public ClassLoader getCoreLoader() {
-        return coreLoader;
-    }
-    
-    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 FilterSet getGlobalFilterSet() {
-        return globalFilterSet;
-    }
-    
-    
-    public void setProperty(String name, String value) {
-        // command line properties take precedence
-        if (null != userProperties.get(name)) {
-            log("Override ignored for user property " + name, MSG_VERBOSE);
-            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 setDescription(String description) {
-        this.description = description;
-    }
-
-   // Will return null if no description has been set
-    public String getDescription() {
-        return description;
-    }
-
-    /** @deprecated */
-    public void addFilter(String token, String value) {
-        if (token == null) {
-            return;
-        }
-        
-        globalFilterSet.addFilter(new FilterSet.Filter(token, value));
-    }
-
-    /** @deprecated */
-    public Hashtable getFilters() {
-        // we need to build the hashtable dynamically
-        return globalFilterSet.getFilterHash();
-    }
-
-    // match basedir attribute in xml
-    public void setBasedir(String baseD) throws BuildException {
-        setBaseDir(new File(baseD));
-    }
-
-    public void setBaseDir(File baseDir) throws BuildException {
-        baseDir = fileUtils.normalize(baseDir.getAbsolutePath());
-        if (!baseDir.exists()) 
-            throw new BuildException("Basedir " + baseDir.getAbsolutePath() + " does not exist");
-        if (!baseDir.isDirectory()) 
-            throw new BuildException("Basedir " + baseDir.getAbsolutePath() + " is not a directory");
-        this.baseDir = baseDir;
-        setProperty( "basedir", this.baseDir.getPath());
-        String msg = "Project base dir set to: " + this.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 + " in: " + System.getProperty("java.home"), MSG_VERBOSE);
-
-        log("Detected OS: " + System.getProperty("os.name"), MSG_VERBOSE);
-    }
-
-    public void setSystemProperties() {
-        Properties systemP = System.getProperties();
-        Enumeration e = systemP.keys();
-        while (e.hasMoreElements()) {
-            Object name = e.nextElement();
-            String value = systemP.get(name).toString();
-            this.setProperty(name.toString(), value);
-        }
-    }
-
-    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});
-            }
-            if (o instanceof ProjectComponent) {
-                ((ProjectComponent)o).setProject(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 demuxOutput(String line, boolean isError) {
-        Task task = (Task)threadTasks.get(Thread.currentThread());
-        if (task == null) {
-            fireMessageLogged(this, line, isError ? MSG_ERR : MSG_INFO);
-        }
-        else {
-            if (isError) {
-                task.handleErrorOutput(line);
-            }
-            else {
-                task.handleOutput(line);
-            }
-        }
-    }
-    
-    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++);
-            curtarget.performTasks();
-        } while (!curtarget.getName().equals(targetName));
-    }
-
-    /**
-     * Return the canonical form of fileName as an absolute path.
-     *
-     * <p>If fileName is a relative file name, resolve it relative to
-     * rootDir.</p>
-     *
-     * @deprecated
-     */
-    public File resolveFile(String fileName, File rootDir) {
-        return fileUtils.resolveFile(rootDir, fileName);
-    }
-
-    public File resolveFile(String fileName) {
-        return fileUtils.resolveFile(baseDir, fileName);
-    }
-
-    /**
-     * 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
-     *
-     * @deprecated
-     */
-    public void copyFile(String sourceFile, String destFile) throws IOException {
-        fileUtils.copyFile(sourceFile, destFile);
-    }
-
-    /**
-     * Convienence method to copy a file from a source to a destination
-     * specifying if token filtering must be used.
-     *
-     * @throws IOException
-     *
-     * @deprecated
-     */
-    public void copyFile(String sourceFile, String destFile, boolean filtering)
-        throws IOException {
-        fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilters : null);
-    }
-
-    /**
-     * 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 
-     *
-     * @deprecated
-     */
-    public void copyFile(String sourceFile, String destFile, boolean filtering,
-                         boolean overwrite) throws IOException {
-        fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilters : null, 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 
-     *
-     * @deprecated
-     */
-    public void copyFile(String sourceFile, String destFile, boolean filtering,
-                         boolean overwrite, boolean preserveLastModified)
-        throws IOException {
-        fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilters : null, 
-                           overwrite, preserveLastModified);
-    }
-
-    /**
-     * Convienence method to copy a file from a source to a destination.
-     * No filtering is performed.
-     *
-     * @throws IOException
-     *
-     * @deprecated
-     */
-    public void copyFile(File sourceFile, File destFile) throws IOException {
-        fileUtils.copyFile(sourceFile, destFile);
-    }
-
-    /**
-     * Convienence method to copy a file from a source to a destination
-     * specifying if token filtering must be used.
-     *
-     * @throws IOException
-     *
-     * @deprecated
-     */
-    public void copyFile(File sourceFile, File destFile, boolean filtering)
-        throws IOException {
-        fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilters : null);
-    }
-
-    /**
-     * 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 
-     *
-     * @deprecated
-     */
-    public void copyFile(File sourceFile, File destFile, boolean filtering,
-                         boolean overwrite) throws IOException {
-        fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilters : null, 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 
-     *
-     * @deprecated
-     */
-    public void copyFile(File sourceFile, File destFile, boolean filtering,
-                         boolean overwrite, boolean preserveLastModified)
-        throws IOException {
-        fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilters : null, 
-                           overwrite, preserveLastModified);
-    }
-
-    /**
-     * Calls File.setLastModified(long time) in a Java 1.1 compatible way.
-     *
-     * @deprecated
-     */
-    public 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;
-        }
-        fileUtils.setFileLastModified(file, time);
-        log("Setting modification time for " + file, MSG_VERBOSE);
-    }
-
-    /**
-     * 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"));
-    }
-
-    /**
-     * 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) {
-        if (null != references.get(name)) {
-            log("Overriding previous definition of reference to " + name, 
-                MSG_WARN);
-        }
-        log("Adding reference: " + name + " -> " + value, MSG_DEBUG);
-        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) {
-        // register this as the current task on the current thread.
-        threadTasks.put(Thread.currentThread(), 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) {
-        threadTasks.remove(Thread.currentThread());
-        System.out.flush();
-        System.err.flush();
-        BuildEvent event = new BuildEvent(task);
-        event.setException(exception);
-        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/ProjectComponent.java b/src/main/org/apache/tools/ant/ProjectComponent.java
deleted file mode 100644
index 8a3fd6e..0000000
--- a/src/main/org/apache/tools/ant/ProjectComponent.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;
-
-/**
- * Base class for components of a project, including tasks and data types. Provides
- * common facilities.
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-
-public abstract class ProjectComponent {
-
-    protected Project project = null;
-
-    /**
-     * Sets the project object of this component. This method is used by
-     * project when a component is added to it so that the component has
-     * access to the functions of the project. It should not be used
-     * for any other purpose.
-     *
-     * @param project Project in whose scope this component belongs.
-     */
-    public void setProject(Project project) {
-        this.project = project;
-    }
-
-    /**
-     * Get the Project to which this component belongs
-     *
-     * @return the components's project.
-     */
-    public Project getProject() {
-        return project;
-    }
-    
-    /**
-     * 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) {
-        if (project != null) {
-            project.log(msg, msgLevel);
-        }
-    }
-}
-
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 1bbb125..0000000
--- a/src/main/org/apache/tools/ant/ProjectHelper.java
+++ /dev/null
@@ -1,800 +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;
-        InputSource inputSource = null;
-        
-        try {
-            SAXParser saxParser = getParserFactory().newSAXParser();
-            parser = saxParser.getParser();
-
-            String uri = "file:" + buildFile.getAbsolutePath().replace('\\', '/');
-            for (int index = uri.indexOf('#'); index != -1; index = uri.indexOf('#')) {
-                uri = uri.substring(0, index) + "%23" + uri.substring(index+1);
-            }
-            
-            inputStream = new FileInputStream(buildFile);
-            inputSource = new InputSource(inputStream);
-            inputSource.setSystemId(uri);
-            project.log("parsing buildfile " + buildFile + " with URI = " + uri, Project.MSG_VERBOSE);
-            saxParser.parse(inputSource, 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
-         * handled.
-         */
-        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) {
-        
-            project.log("resolving systemId: " + systemId, Project.MSG_VERBOSE);
-        
-            if (systemId.startsWith("file:")) {
-                String path = systemId.substring(5);
-                int index = path.indexOf("file:");
-                
-                // we only have to handle these for backward compatibility
-                // since they are in the FAQ.
-                while (index != -1) {
-                    path = path.substring(0, index) + path.substring(index + 5);
-                    index = path.indexOf("file:");
-                }
-                
-                String entitySystemId = path;
-                index = path.indexOf("%23");
-                // convert these to #
-                while (index != -1) {
-                    path = path.substring(0, index) + "#" + path.substring(index + 3);
-                    index = path.indexOf("%23");
-                }
-
-                File file = new File(path);
-                if (!file.isAbsolute()) {
-                    file = new File(buildFileParent, path);
-                }
-                
-                try {
-                    InputSource inputSource = new InputSource(new FileInputStream(file));
-                    inputSource.setSystemId("file:" + entitySystemId);
-                    return inputSource;
-                } 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(project.resolveFile(baseDir, buildFileParent));
-                    }
-                }
-            }
-
-        }
-
-        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, null)).init(name, attrs);
-        }
-
-        private void handleProperty(String name, AttributeList attrs) throws SAXParseException {
-            (new TaskHandler(this, null, 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 {
-            if (project.getDataTypeDefinitions().get(name) != null) {
-                new DataTypeHandler(this, target).init(name, attrs);
-            } else {
-                new TaskHandler(this, target, target).init(name, attrs);
-            }
-        }
-    }
-
-    /**
-     * Handler for all task elements.
-     */
-    private class TaskHandler extends AbstractHandler {
-        private Target target;
-        private TaskContainer container;
-        private Task task;
-        private RuntimeConfigurable wrapper = null;
-
-        public TaskHandler(DocumentHandler parentHandler, TaskContainer container, Target target) {
-            super(parentHandler);
-            this.container = container;
-            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.setTaskType(tag);
-                task.setTaskName(tag);
-            }
-
-            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);
-                container.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(project, 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 {
-            if (task instanceof TaskContainer) {
-                // task can contain other tasks - no other nested elements possible
-                new TaskHandler(this, (TaskContainer)task, target).init(name, attrs);
-            }
-            else {
-                new NestedElementHandler(this, task, wrapper, target).init(name, attrs);
-            }
-        }
-    }
-
-    /**
-     * Handler for all nested properties.
-     */
-    private class NestedElementHandler extends AbstractHandler {
-        private Object parent;
-        private Object child;
-        private RuntimeConfigurable parentWrapper;
-        private RuntimeConfigurable childWrapper = null;
-        private Target target;
-
-        public NestedElementHandler(DocumentHandler parentHandler, 
-                                    Object parent,
-                                    RuntimeConfigurable parentWrapper,
-                                    Target target) {
-            super(parentHandler);
-
-            if (parent instanceof TaskAdapter) {
-                this.parent = ((TaskAdapter) parent).getProxy();
-            } else {
-                this.parent = parent;
-            }
-            this.parentWrapper = parentWrapper;
-            this.target = target;
-        }
-
-        public void init(String propType, AttributeList attrs) throws SAXParseException {
-            Class parentClass = parent.getClass();
-            IntrospectionHelper ih = 
-                IntrospectionHelper.getHelper(parentClass);
-
-            try {
-                if (parent instanceof UnknownElement) {
-                    child = new UnknownElement(propType.toLowerCase());
-                    ((UnknownElement) parent).addChild((UnknownElement) child);
-                } else {
-                    child = ih.createElement(project, parent, propType.toLowerCase());
-                }
-
-                configureId(child, attrs);
-
-                if (parentWrapper != null) {
-                    childWrapper = new RuntimeConfigurable(child, propType);
-                    childWrapper.setAttributes(attrs);
-                    parentWrapper.addChild(childWrapper);
-                } else {
-                    configure(child, attrs, project);
-                    ih.storeElement(project, parent, child, propType.toLowerCase());
-                }
-            } 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(project, 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 {
-            if (child instanceof TaskContainer) {
-                // taskcontainer nested element can contain other tasks - no other 
-                // nested elements possible
-                new TaskHandler(this, (TaskContainer)child, target).init(name, attrs);
-            }
-            else {
-                new NestedElementHandler(this, child, childWrapper, target).init(name, attrs);
-            }
-        }
-    }
-
-    /**
-     * Handler for all data types at global level.
-     */
-    private class DataTypeHandler extends AbstractHandler {
-        private Target target;
-        private Object element;
-        private RuntimeConfigurable wrapper = null;
-
-        public DataTypeHandler(DocumentHandler parentHandler) {
-            this(parentHandler, null);
-        }
-
-        public DataTypeHandler(DocumentHandler parentHandler, Target target) {
-            super(parentHandler);
-            this.target = target;
-        }
-
-        public void init(String propType, AttributeList attrs) throws SAXParseException {
-            try {
-                element = project.createDataType(propType);
-                if (element == null) {
-                    throw new BuildException("Unknown data type "+propType);
-                }
-                
-                if (target != null) {
-                    wrapper = new RuntimeConfigurable(element, propType);
-                    wrapper.setAttributes(attrs);
-                    target.addDataType(wrapper);
-                } else {
-                    configure(element, attrs, project);
-                    configureId(element, attrs);
-                }
-            } catch (BuildException exc) {
-                throw new SAXParseException(exc.getMessage(), locator, exc);
-            }
-        }
-
-        public void characters(char[] buf, int start, int end) throws SAXParseException {
-            try {
-                addText(project, 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, wrapper, target).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());
-
-        project.addBuildListener(ih);
-
-        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(Project project, Object target, char[] buf, int start, int end)
-        throws BuildException {
-        addText(project, target, new String(buf, start, end));
-    }
-
-    /**
-     * Adds the content of #PCDATA sections to an element.
-     */
-    public static void addText(Project project, 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(project, target, text);
-    }
-
-    /**
-     * Stores a configured child element into its parent object 
-     */
-    public static void storeChild(Project project, Object parent, Object child, String tag) {
-        IntrospectionHelper ih = IntrospectionHelper.getHelper(parent.getClass());
-        ih.storeElement(project, parent, child, tag);
-    }
-    
-    /**
-     * Replace ${} style constructions in the given value with the string value of
-     * the corresponding data types.
-     *
-     * @param value the string to be scanned for property references.
-     */
-     public static String replaceProperties(Project project, String value, Hashtable keys)
-            throws BuildException {
-        if (value == null) {
-            return null;
-        }
-
-        Vector fragments = new Vector();
-        Vector propertyRefs = new Vector();
-        parsePropertyString(value, fragments, propertyRefs);
-
-        StringBuffer sb = new StringBuffer();
-        Enumeration i = fragments.elements();
-        Enumeration j = propertyRefs.elements();
-        while (i.hasMoreElements()) {
-            String fragment = (String)i.nextElement();
-            if (fragment == null) {
-                String propertyName = (String)j.nextElement();
-                if (!keys.containsKey(propertyName)) {
-                    project.log("Property ${" + propertyName + "} has not been set", Project.MSG_VERBOSE);
-                }
-                fragment = (keys.containsKey(propertyName)) ? (String) keys.get(propertyName) 
-                                                            : "${" + propertyName + "}"; 
-            }
-            sb.append(fragment);
-        }                        
-        
-        return sb.toString();
-    }
-
-    /**
-     * This method will parse a string containing ${value} style 
-     * property values into two lists. The first list is a collection
-     * of text fragments, while the other is a set of string property names
-     * null entries in the first list indicate a property reference from the
-     * second list.
-     */
-    public static void parsePropertyString(String value, Vector fragments, Vector propertyRefs) 
-        throws BuildException {
-        int prev = 0;
-        int pos;
-        while ((pos = value.indexOf("$", prev)) >= 0) {
-            if (pos > 0) {
-                fragments.addElement(value.substring(prev, pos));
-            }
-
-            if( pos == (value.length() - 1)) {
-                fragments.addElement("$");
-                prev = pos + 1;
-            }
-            else if (value.charAt(pos + 1) != '{' ) {
-                fragments.addElement(value.substring(pos + 1, pos + 2));
-                prev = pos + 2;
-            } else {
-                int endName = value.indexOf('}', pos);
-                if (endName < 0) {
-                    throw new BuildException("Syntax error in property: " 
-                                                 + value );
-                }
-                String propertyName = value.substring(pos + 2, endName);
-                fragments.addElement(null);
-                propertyRefs.addElement(propertyName);
-                prev = endName + 1;
-            }
-        }
-
-        if (prev < value.length()) {
-            fragments.addElement(value.substring(prev));
-        }
-    }
-
-    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 893883e..0000000
--- a/src/main/org/apache/tools/ant/RuntimeConfigurable.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;
-
-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="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class RuntimeConfigurable {
-
-    private String elementTag = null;
-    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, String elementTag) {
-        wrappedObject = proxy;
-        this.elementTag = elementTag;
-    }
-
-    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));
-    }
-
-    public String getElementTag() {
-        return elementTag;
-    }
-    
-    
-    /**
-     * Configure the wrapped element and all children.
-     */
-    public void maybeConfigure(Project p) throws BuildException {
-	String id = null;
-	
-        if (attributes != null) {
-            ProjectHelper.configure(wrappedObject, attributes, p);
-            id = attributes.getValue("id");
-            attributes = null;
-        }
-        if (characters.length() != 0) {
-            ProjectHelper.addText(p, wrappedObject, characters.toString());
-            characters.setLength(0);
-        }
-        Enumeration enum = children.elements();
-        while (enum.hasMoreElements()) {
-            RuntimeConfigurable child = (RuntimeConfigurable) enum.nextElement();
-            child.maybeConfigure(p);
-            ProjectHelper.storeChild(p, wrappedObject, child.wrappedObject, child.getElementTag().toLowerCase());
-        }
-
-        if (id != null) {
-            p.addReference(id, wrappedObject);
-        }
-    }
-
-}
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 4fd72dc..0000000
--- a/src/main/org/apache/tools/ant/Target.java
+++ /dev/null
@@ -1,214 +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 implements TaskContainer {
-
-    private String name;
-    private String ifCondition = "";
-    private String unlessCondition = "";
-    private Vector dependencies = new Vector(2);
-    private Vector children = 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) {
-        children.addElement(task);
-    }
-
-    public void addDataType(RuntimeConfigurable r) {
-        children.addElement(r);
-    }
-
-    /** 
-     * Get the current set of tasks to be executed by this target.
-     * 
-     * @return The current set of tasks.
-     */
-    public Task[] getTasks() {
-        Vector tasks = new Vector(children.size());
-        Enumeration enum = children.elements();
-        while (enum.hasMoreElements()) {
-            Object o = enum.nextElement();
-            if (o instanceof Task) {
-                tasks.addElement(o);
-            }
-        }
-        
-        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 = children.elements();
-            while (enum.hasMoreElements()) {
-                Object o = enum.nextElement();
-                if (o instanceof Task) {
-                    Task task = (Task) o;
-                    task.perform();
-                } else {
-                    RuntimeConfigurable r = (RuntimeConfigurable) o;
-                    r.maybeConfigure(project);
-                }
-            }
-        } 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);
-        }
-    }
-
-    public final void performTasks() {
-        try {
-            project.fireTargetStarted(this);
-            execute();
-            project.fireTargetFinished(this, null);
-        }
-        catch(RuntimeException exc) {
-            project.fireTargetFinished(this, exc);
-            throw exc;
-        }
-    }
-    
-    void replaceTask(UnknownElement el, Task t) {
-        int index = -1;
-        while ((index = children.indexOf(el)) >= 0) {
-            children.setElementAt(t, index);
-        }
-    }
-
-    private boolean testIfCondition() {
-        if ("".equals(ifCondition)) {
-            return true;
-        }
-        
-        String test = ProjectHelper.replaceProperties(getProject(), ifCondition, getProject().getProperties());
-        return project.getProperty(test) != null;
-    }
-
-    private boolean testUnlessCondition() {
-        if ("".equals(unlessCondition)) {
-            return true;
-        }
-        String test = ProjectHelper.replaceProperties(getProject(), unlessCondition, getProject().getProperties());
-        return project.getProperty(test) == 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 9937a07..0000000
--- a/src/main/org/apache/tools/ant/Task.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;
-
-/**
- * Base class for all tasks.
- *
- * <p>Use {@link Project#createTask Project.createTask} to create a new Task.
- */
-
-public abstract class Task extends ProjectComponent {
-
-    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 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;
-    }
-
-    /** 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, getTaskName());
-        }
-        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);
-        }
-    }
-
-    protected void handleOutput(String line) {
-        log(line, Project.MSG_INFO);
-    }
-    
-    protected void handleErrorOutput(String line) {
-        log(line, Project.MSG_ERR);
-    }
-    
-    
-    /**   
-     * 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);   
-    }   
-    
-    /**
-     * Perform this task
-     */
-    public final void perform() {
-        try {
-            project.fireTaskStarted(this);
-            maybeConfigure();
-            execute();
-            project.fireTaskFinished(this, null);
-        }
-        catch(RuntimeException exc) {
-            if (exc instanceof BuildException) {
-                BuildException be = (BuildException) exc;
-                if (be.getLocation() == Location.UNKNOWN_LOCATION) {
-                    be.setLocation(getLocation());
-                }
-            }
-            project.fireTaskFinished(this, exc);
-            throw exc;
-        }
-    }
-}
-
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 1de4098..0000000
--- a/src/main/org/apache/tools/ant/TaskAdapter.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.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 setProjectM = null;
-        try {
-            Class c = proxy.getClass();
-            setProjectM = 
-                c.getMethod( "setProject", new Class[] {Project.class});
-            if(setProjectM != null) {
-                setProjectM.invoke(proxy, new Object[] {project});
-            }
-        } catch( Exception ex ) {
-            log("Error setting project in " + proxy.getClass(), 
-                Project.MSG_ERR);
-            throw new BuildException( ex );
-        }
-
-
-        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/TaskContainer.java b/src/main/org/apache/tools/ant/TaskContainer.java
deleted file mode 100644
index 87ca7da..0000000
--- a/src/main/org/apache/tools/ant/TaskContainer.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;
-
-/**
- * Interface for objects which can contain tasks 
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public interface TaskContainer {
-    /**
-     * Add a task to this task container
-     *
-     * @param task the task to be added to this container
-     */
-    void addTask(Task task);
-}
-
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 a96cb7d..0000000
--- a/src/main/org/apache/tools/ant/UnknownElement.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;
-
-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="mailto:stefan.bodewig@epost.de">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 = makeTask(this, wrapper);
-
-        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++) {
-            RuntimeConfigurable childWrapper = parentWrapper.getChild(i);
-            UnknownElement child = (UnknownElement) children.elementAt(i);
-            Object realChild = null;
-            if (parent instanceof TaskContainer) {
-                realChild = makeTask(child, childWrapper);
-                ((TaskContainer) parent).addTask((Task) realChild);
-            } else {
-                realChild = ih.createElement(project, parent, child.getTag());
-            }
-
-            childWrapper.setProxy(realChild);
-            if (realChild instanceof Task) {
-                ((Task) realChild).setRuntimeConfigurableWrapper(childWrapper);
-            }
-            child.handleChildren(realChild, childWrapper);
-            if (realChild instanceof Task) {
-                ((Task) realChild).maybeConfigure();
-            }
-        }
-    }
-
-    /**
-     * Create a named task and configure it up to the init() stage.
-     */
-    protected Task makeTask(UnknownElement ue, RuntimeConfigurable w) {
-        Task task = project.createTask(ue.getTag());
-        if (task == 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);
-        }
-
-        task.setLocation(getLocation());
-        String id = w.getAttributes().getValue("id");
-        if (id != null) {
-            project.addReference(id, task);
-        }
-        // UnknownElement always has an associated target
-        task.setOwningTarget(target);
-
-        task.init();
-        return task;
-    }
-
-    /**
-     * Get the name to use in logging messages.
-     *
-     * @return the name to use in logging messages.
-     */
-    public String getTaskName() {
-        return realTask == null ? super.getTaskName() : realTask.getTaskName();
-    }
-
-}// 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 fcd573d..0000000
--- a/src/main/org/apache/tools/ant/XmlLogger.java
+++ /dev/null
@@ -1,282 +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 Hashtable tasks = new Hashtable();
-    private Hashtable targets = new Hashtable();
-    private Hashtable threadStacks = new Hashtable();
-    private TimedElement buildElement = null;
-
-    static private class TimedElement {
-        long startTime;
-        Element element;
-    }
-
-    /**
-     *  Constructs a new BuildListener that logs build events to an XML file.
-     */
-    public XmlLogger() {
-    }
-
-    public void buildStarted(BuildEvent event) {
-        buildElement = new TimedElement();
-        buildElement.startTime = System.currentTimeMillis();
-
-        doc = builder.newDocument();
-        buildElement.element = doc.createElement(BUILD_TAG);
-    }
-
-    public void buildFinished(BuildEvent event) {
-        long totalTime = System.currentTimeMillis() - buildElement.startTime;
-        buildElement.element.setAttribute(TIME_ATTR, DefaultLogger.formatTime(totalTime));
-
-        if (event.getException() != null) {
-            buildElement.element.setAttribute(ERROR_ATTR, event.getException().toString());
-        }
-
-        try {
-            String outFilename = 
-                event.getProject().getProperty("XmlLogger.file");
-
-            if (outFilename == null) {
-                outFilename = "log.xml";
-            }
-            
-            // specify output in UTF8 otherwise accented characters will blow
-            // up everything
-            Writer out =
-                new OutputStreamWriter(new FileOutputStream(outFilename),
-                                       "UTF8");
-            out.write("<?xml:stylesheet type=\"text/xsl\" href=\"log.xsl\"?>\n\n");
-                      (new DOMElementWriter()).write(buildElement.element, out, 0, "\t");
-            out.flush();
-            out.close();
-            
-        } catch(IOException exc) {
-            throw new BuildException("Unable to close log file", exc);
-        }
-        buildElement = null;
-    }
-
-    private Stack getStack() {    
-        Stack threadStack = (Stack)threadStacks.get(Thread.currentThread());
-        if (threadStack == null) {
-            threadStack = new Stack();
-            threadStacks.put(Thread.currentThread(), threadStack);
-        }
-        return threadStack;
-    }
-    
-    public void targetStarted(BuildEvent event) {
-        Target target = event.getTarget();
-        TimedElement targetElement = new TimedElement();
-        targetElement.startTime = System.currentTimeMillis();
-        targetElement.element = doc.createElement(TARGET_TAG);
-        targetElement.element.setAttribute(NAME_ATTR, target.getName());
-        targets.put(target, targetElement);
-        getStack().push(targetElement);
-    }
-
-    public void targetFinished(BuildEvent event) {
-        Target target = event.getTarget();
-        TimedElement targetElement = (TimedElement)targets.get(target);
-        if (targetElement != null) {
-            long totalTime = System.currentTimeMillis() - targetElement.startTime;
-            targetElement.element.setAttribute(TIME_ATTR, DefaultLogger.formatTime(totalTime));
-
-            TimedElement parentElement = null;            
-            Stack threadStack = getStack();
-            if (!threadStack.empty()) {
-                TimedElement poppedStack = (TimedElement)threadStack.pop();
-                if (poppedStack != targetElement) {
-                    throw new RuntimeException("Mismatch - popped element = " + poppedStack.element +
-                    " finished task element = " + targetElement.element);
-                }                                           
-                if (!threadStack.empty()) {
-                    parentElement = (TimedElement)threadStack.peek();
-                }
-            }
-            if (parentElement == null) {
-                buildElement.element.appendChild(targetElement.element);
-            }
-            else {                
-                parentElement.element.appendChild(targetElement.element);
-            }
-        }
-    }
-
-    public void taskStarted(BuildEvent event) {
-        Task task = event.getTask();
-        TimedElement taskElement = new TimedElement();
-        taskElement.startTime = System.currentTimeMillis();
-        taskElement.element = doc.createElement(TASK_TAG);
-        
-        String name = task.getClass().getName();
-        int pos = name.lastIndexOf(".");
-        if (pos != -1) {
-            name = name.substring(pos + 1);
-        }
-        taskElement.element.setAttribute(NAME_ATTR, name);
-        taskElement.element.setAttribute(LOCATION_ATTR, event.getTask().getLocation().toString());
-        tasks.put(task, taskElement);
-        getStack().push(taskElement);
-    }
-
-    public void taskFinished(BuildEvent event) {
-        Task task = event.getTask();
-        TimedElement taskElement = (TimedElement)tasks.get(task);
-        if (taskElement != null) {
-            long totalTime = System.currentTimeMillis() - taskElement.startTime;
-            taskElement.element.setAttribute(TIME_ATTR, DefaultLogger.formatTime(totalTime));
-            Target target = task.getOwningTarget();
-            TimedElement targetElement = (TimedElement)targets.get(target);
-            if (targetElement == null) {
-                buildElement.element.appendChild(taskElement.element);
-            }
-            else {
-                targetElement.element.appendChild(taskElement.element);
-            }
-            Stack threadStack = getStack();
-            if (!threadStack.empty()) {
-                TimedElement poppedStack = (TimedElement)threadStack.pop();
-                if (poppedStack != taskElement) {
-                    throw new RuntimeException("Mismatch - popped element = " + poppedStack.element +
-                    " finished task element = " + taskElement.element);
-                }                                           
-            }
-        }
-    }
-
-    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);
-
-        TimedElement parentElement = null;
-        
-        Task task = event.getTask();
-        Target target = event.getTarget();
-        if (task != null) {
-            parentElement = (TimedElement)tasks.get(task);
-        }
-        if (parentElement == null && target != null) {
-            parentElement = (TimedElement)targets.get(target);
-        }
-         
-        if (parentElement == null) {
-            Stack threadStack = (Stack)threadStacks.get(Thread.currentThread());
-            if (threadStack != null) {
-                if (!threadStack.empty()) {
-                    parentElement = (TimedElement)threadStack.peek();
-                }
-            }
-        }
-        
-        if (parentElement != null) {
-            parentElement.element.appendChild(messageElement);
-        }
-        else {
-            buildElement.element.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/listener/Log4jListener.java b/src/main/org/apache/tools/ant/listener/Log4jListener.java
deleted file mode 100644
index 263cd7f..0000000
--- a/src/main/org/apache/tools/ant/listener/Log4jListener.java
+++ /dev/null
@@ -1,178 +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.listener;
-
-import org.apache.tools.ant.*;
-
-import org.apache.log4j.Category;
-import org.apache.log4j.helpers.NullEnumeration;
-
-  
-/**
- *  Listener which sends events to Log4j logging system
- *
- * @author <a href="mailto:conor@apache.org>Conor MacNeill </a>
- */
-public class Log4jListener implements BuildListener {
-    static final String LOG4J_CONFIG_PROPERTY = "log4j.configuration";
-    
-    private boolean initialized = false;
-    
-    public Log4jListener() {
-        initialized = false;
-        Category cat = Category.getInstance("org.apache.tools.ant");
-        Category rootCat = Category.getRoot();
-        if (!(rootCat.getAllAppenders() instanceof NullEnumeration)) {
-            initialized = true;
-        }
-        else {
-            cat.error("No log4j.properties in build area");
-        }
-    }
-    
-    public void buildStarted(BuildEvent event) {
-        if (initialized) {
-            Category cat = Category.getInstance(Project.class.getName());
-            cat.info("Build started.");
-        }
-    }
-    
-    public void buildFinished(BuildEvent event) {
-        if (initialized) {
-            Category cat = Category.getInstance(Project.class.getName());
-            if (event.getException() == null) {
-                cat.info("Build finished.");
-            }
-            else {
-                cat.error("Build finished with error.", event.getException());
-            }
-        }   
-    }
-    
-    public void targetStarted(BuildEvent event) {
-        if (initialized) {
-            Category cat = Category.getInstance(Target.class.getName());
-            cat.info("Target \"" + event.getTarget().getName() + "\" started.");
-        }
-    }
-    
-    public void targetFinished(BuildEvent event) {
-        if (initialized) {
-            String targetName = event.getTarget().getName();
-            Category cat = Category.getInstance(Target.class.getName());
-            if (event.getException() == null) {
-                cat.info("Target \"" + event.getTarget().getName() + "\" finished.");
-            }
-            else {
-                cat.error("Target \"" + event.getTarget().getName() + "\" finished with error.", event.getException());
-            }
-        } 
-    }
-    
-    public void taskStarted(BuildEvent event) {
-        if (initialized) {
-            Task task = event.getTask();
-            Category cat = Category.getInstance(task.getClass().getName());
-            cat.info("Task \"" + task.getTaskName() + "\" started.");
-        }
-    }
-    
-    public void taskFinished(BuildEvent event) {
-        if (initialized) {
-            Task task = event.getTask();
-            Category cat = Category.getInstance(task.getClass().getName());
-            if (event.getException() == null) {
-                cat.info("Task \"" + task.getTaskName() + "\" finished.");
-            }
-            else {
-                cat.error("Task \"" + task.getTaskName() + "\" finished with error.", event.getException());
-            }
-        }
-    }
-    
-    public void messageLogged(BuildEvent event) {
-        if (initialized) {
-            Object categoryObject = event.getTask();
-            if (categoryObject == null) {
-                categoryObject = event.getTarget();
-                if (categoryObject == null) {
-                    categoryObject = event.getProject();
-                }
-            }
-            
-            Category cat = Category.getInstance(categoryObject.getClass().getName());
-            switch (event.getPriority()) {
-                case Project.MSG_ERR:
-                    cat.error(event.getMessage());
-                    break;
-                case Project.MSG_WARN:
-                    cat.warn(event.getMessage());
-                    break;
-                case Project.MSG_INFO:
-                    cat.info(event.getMessage());
-                    break;
-                case Project.MSG_VERBOSE:
-                    cat.debug(event.getMessage());
-                    break;
-                case Project.MSG_DEBUG:
-                    cat.debug(event.getMessage());
-                    break;
-                default:                        
-                    cat.error(event.getMessage());
-                    break;
-            }
-        }
-    }
-}
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 1e66a48..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Ant.java
+++ /dev/null
@@ -1,289 +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;
-    private boolean inheritAll = true;
-
-    Vector properties = new Vector();
-    Project p1;
-
-    /**
-     * If true, inherit all properties from parent Project
-     * If false, inherit only userProperties and those defined
-     * inside the ant call itself
-     **/
-    public void setInheritAll(boolean inherit) {
-       inheritAll = inherit;
-    } //-- setInheritAll
-
-    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-defined or all properties from calling project
-        Hashtable prop1;
-        if (inheritAll == true) {
-           prop1 = project.getProperties();
-        }
-        else {
-           prop1 = project.getUserProperties();
-
-           // set Java built-in properties separately,
-           // b/c we won't inherit them.
-           project.setSystemProperties();
-        }
-        
-        e = prop1.keys();
-        while (e.hasMoreElements()) {
-            String arg = (String) e.nextElement();
-            String value = (String) prop1.get(arg);
-            if (inheritAll == true)
-               p1.setProperty(arg, value);
-            else
-               p1.setUserProperty(arg, value);
-        }
-    }
-
-    protected void handleOutput(String line) {
-        if (p1 != null) {
-            p1.demuxOutput(line, false);
-        }
-        else {
-            super.handleOutput(line);
-        }
-    }
-    
-    protected void handleErrorOutput(String line) {
-        if (p1 != null) {
-            p1.demuxOutput(line, true);
-        }
-        else {
-            super.handleErrorOutput(line);
-        }
-    }
-    
-    /**
-     * 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")) &&
-                getOwningTarget() != null &&
-                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 6157659..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/AntStructure.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;
-
-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.TaskContainer;
-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@epost.de">Stefan Bodewig</a>
- *
- * @version $Revision$
- */
-
-public class AntStructure extends Task {
-
-    private final String lSep = System.getProperty("line.separator");
-
-    private final String BOOLEAN = "%boolean;";
-    private final String TASKS = "%tasks;";
-    private final String TYPES = "%types;";
-
-    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), "UTF8"));
-            } catch (UnsupportedEncodingException ue) {
-                /*
-                 * Plain impossible with UTF8, 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));
-            }
-            
-            printHead(out, project.getTaskDefinitions().keys(), 
-                      project.getDataTypeDefinitions().keys());
-
-            printTargetDecl(out);
-
-            Enumeration dataTypes = project.getDataTypeDefinitions().keys();
-            while (dataTypes.hasMoreElements()) {
-                String typeName = (String) dataTypes.nextElement();
-                printElementDecl(out, typeName, 
-                                 (Class) project.getDataTypeDefinitions().get(typeName));
-            }
-            
-            Enumeration tasks = project.getTaskDefinitions().keys();
-            while (tasks.hasMoreElements()) {
-                String taskName = (String) tasks.nextElement();
-                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 tasks, 
-                           Enumeration types) {
-        out.println("<?xml version=\"1.0\" ?>");
-        out.println("<!ENTITY % boolean \"(true|false|on|off|yes|no)\">");
-        out.print("<!ENTITY % tasks \"");
-        boolean first = true;
-        while (tasks.hasMoreElements()) {
-            String taskName = (String) tasks.nextElement();
-            if (!first) {
-                out.print(" | ");
-            } else {
-                first = false;
-            }
-            out.print(taskName);
-        }
-        out.println("\">");
-        out.print("<!ENTITY % types \"");
-        first = true;
-        while (types.hasMoreElements()) {
-            String typeName = (String) types.nextElement();
-            if (!first) {
-                out.print(" | ");
-            } else {
-                first = false;
-            }
-            out.print(typeName);
-        }
-        out.println("\">");
-
-        out.println("");
-        
-        out.print("<!ELEMENT project (target | property | taskdef | ");
-        out.print(TYPES);
-        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) {
-        out.print("<!ELEMENT target (");
-        out.print(TASKS);
-        out.print(" | ");
-        out.print(TYPES);
-        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 = null;
-        try {
-            ih = IntrospectionHelper.getHelper(element);
-        } catch (Throwable t) {
-            /*
-             * XXX - failed to load the class properly.
-             *
-             * should we print a warning here?
-             */
-            return;
-        }
-
-        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");
-        }
-
-        if (TaskContainer.class.isAssignableFrom(element)) {
-            v.addElement(TASKS);
-        }
-
-        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).append(" ");
-            } 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
-                        || !areNmtokens(values)) {
-                        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) &&
-                !TASKS.equals(nestedName) &&
-                !TYPES.equals(nestedName)
-                ) {
-                printElementDecl(out, nestedName, ih.getElementType(nestedName));
-            }
-        }
-    }
-    
-    private void printTail(PrintWriter out) {}
-
-    /**
-     * Does this String match the XML-NMTOKEN production?
-     */
-    protected boolean isNmtoken(String s) {
-        for (int i = 0; i < s.length(); i++) {
-            char c = s.charAt(i);
-            // XXX - we are ommitting CombiningChar and Extender here
-            if (!Character.isLetterOrDigit(c) &&
-                c != '.' && c != '-' &&
-                c != '_' && c != ':') {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Do the Strings all match the XML-NMTOKEN production?
-     *
-     * <p>Otherwise they are not suitable as an enumerated attribute,
-     * for example.</p>
-     */
-    protected boolean areNmtokens(String[] s) {
-        for (int i = 0; i < s.length; i++) {
-            if (!isNmtoken(s[i])) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-}
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 c965e8b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Available.java
+++ /dev/null
@@ -1,242 +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.taskdefs.condition.Condition;
-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 implements Condition {
-
-    private String property;
-    private String classname;
-    private File file;
-    private Path filepath;
-    private String resource;
-    private String type;
-    private Path classpath;
-    private AntClassLoader loader;
-    private String value = "true";
-
-    public void setClasspath(Path classpath) {
-        createClasspath().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 setFilepath(Path filepath) {
-        createFilepath().append(filepath);
-    }
-    
-    public Path createFilepath() {
-        if (this.filepath == null) {
-            this.filepath = new Path(project);
-        }
-        return this.filepath.createPath();
-    }
-
-    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 setType(String type) {
-        this.type = type;
-    }
-
-    public void execute() throws BuildException {
-        if (property == null) {
-            throw new BuildException("property attribute is required", location);
-        }
-
-        if (eval()) {
-            this.project.setProperty(property, value);
-        }
-    }
-        
-    public boolean  eval() throws BuildException {
-        if (classname == null && file == null && resource == null) {
-            throw new BuildException("At least one of (classname|file|resource) is required", location);
-        }
-
-        if (type != null){
-            if (!type.equalsIgnoreCase("file") && !type.equalsIgnoreCase("dir")){
-                throw new BuildException("Type must be one of either dir or file");
-            }
-        }
-
-        if (classpath != null) {
-            classpath.setProject(project);
-            this.loader = new AntClassLoader(project, classpath);
-        }
-
-        if ((classname != null) && !checkClass(classname)) {
-            log("Unable to load class " + classname + " to set property " + property, Project.MSG_VERBOSE);
-            return false;
-        }
-        
-        if ((file != null) && !checkFile()) {
-            log("Unable to find " + file + " to set property " + property, Project.MSG_VERBOSE);
-            return false;
-        }
-        
-        if ((resource != null) && !checkResource(resource)) {
-            log("Unable to load resource " + resource + " to set property " + property, Project.MSG_VERBOSE);
-            return false;
-        }
-
-        if (loader != null) {
-            loader.cleanup();
-        }
-
-        return true;
-    }
-
-    private boolean checkFile() {
-        if (filepath == null) {
-            return checkFile(file);
-        } else {
-            String[] paths = filepath.list();
-            for(int i = 0; i < paths.length; ++i) {
-                log("Searching " + paths[i], Project.MSG_VERBOSE);
-                if(new File(paths[i], file.getName()).isFile()) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    private boolean checkFile(File file) {
-        if (type != null) {
-            if (type.equalsIgnoreCase("dir")) {
-                return file.isDirectory();
-            } else if (type.equalsIgnoreCase("file")) {
-                return file.isFile();
-            }
-        }
-        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) {
-            return false;
-        } catch (NoClassDefFoundError e) {
-            return false;
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/CVSPass.java b/src/main/org/apache/tools/ant/taskdefs/CVSPass.java
deleted file mode 100644
index ed99abb..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/CVSPass.java
+++ /dev/null
@@ -1,176 +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;
-
-import org.apache.tools.ant.*;
-import java.io.*;
-
-/**
- * CVSLogin
- *
- * Adds an new entry to a CVS password file
- *
- * @author <a href="jeff@custommonkey.org">Jeff Martin</a>
- * @version $Revision$
- */
-public class CVSPass extends Task {
-    /** CVS Root */
-    private String cvsRoot = null; 
-    /** Password file to add password to */
-    private File passFile = null;
-    /** Password to add to file */
-    private String password = null;
-    /** End of line character */
-    private final String EOL = System.getProperty("line.separator");
-
-    /** Array contain char conversion data */
-   private final char shifts[] = {
-    0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
-   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-  114,120, 53, 79, 96,109, 72,108, 70, 64, 76, 67,116, 74, 68, 87,
-  111, 52, 75,119, 49, 34, 82, 81, 95, 65,112, 86,118,110,122,105,
-   41, 57, 83, 43, 46,102, 40, 89, 38,103, 45, 50, 42,123, 91, 35,
-  125, 55, 54, 66,124,126, 59, 47, 92, 71,115, 78, 88,107,106, 56,
-   36,121,117,104,101,100, 69, 73, 99, 63, 94, 93, 39, 37, 61, 48,
-   58,113, 32, 90, 44, 98, 60, 51, 33, 97, 62, 77, 84, 80, 85,223,
-  225,216,187,166,229,189,222,188,141,249,148,200,184,136,248,190,
-  199,170,181,204,138,232,218,183,255,234,220,247,213,203,226,193,
-  174,172,228,252,217,201,131,230,197,211,145,238,161,179,160,212,
-  207,221,254,173,202,146,224,151,140,196,205,130,135,133,143,246,
-  192,159,244,239,185,168,215,144,139,165,180,157,147,186,214,176,
-  227,231,219,169,175,156,206,198,129,164,150,210,154,177,134,127,
-  182,128,158,208,162,132,167,209,149,241,153,251,237,236,171,195,
-  243,233,253,240,194,250,191,155,142,137,245,235,163,242,178,152 };
-
-    public CVSPass(){
-        passFile = new File(System.getProperty("user.home")+"/.cvspass");
-    }
-
-    /**
-     * Does the work.
-     *
-     * @exception BuildException if someting goes wrong with the build
-     */
-    public final void execute() throws BuildException {
-        if(cvsRoot==null)throw new BuildException("cvsroot is required");
-        if(password==null)throw new BuildException("password is required");
-
-        log("cvsRoot: " + cvsRoot, project.MSG_DEBUG);
-        log("password: " + password, project.MSG_DEBUG);
-        log("passFile: " + passFile, project.MSG_DEBUG);
-
-        try{
-            StringBuffer buf = new StringBuffer();
-
-            if(passFile.exists()){
-                BufferedReader reader =
-                    new BufferedReader(new FileReader(passFile));
-
-                String line = null;
-
-                while((line=reader.readLine())!=null){
-                    if(!line.startsWith(cvsRoot)){
-                        buf.append(line+EOL);
-                    }
-                }
-
-            reader.close();
-            }
-
-            String pwdfile = buf.toString() + cvsRoot + " A" + mangle(password);
-
-            log("Writing -> " + pwdfile , project.MSG_DEBUG);
-
-            PrintWriter writer = new PrintWriter(new FileWriter(passFile));
-
-            writer.println( pwdfile );
-
-            writer.close();
-        }catch(IOException e){
-            throw new BuildException(e);
-        }
-
-    }
-
-    private final String mangle(String password){
-        StringBuffer buf = new StringBuffer();
-        for(int i=0;i<password.length();i++) {
-            buf.append(shifts[password.charAt(i)]);
-        }
-        return buf.toString();
-    }
-
-    /**
-     * Sets cvs root to be added to the password file
-     */
-    public void setCvsroot(String cvsRoot) {
-        this.cvsRoot = cvsRoot;
-    }
-
-    /**
-     * Sets the password file attribute.
-     */
-    public void setPassfile(File passFile) {
-        this.passFile = passFile;
-    }
-
-    /**
-     * Sets the password attribute.
-     */
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-}
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 2aaf9bc..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/CallTarget.java
+++ /dev/null
@@ -1,149 +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@epost.de">Stefan Bodewig</a> 
- */
-public class CallTarget extends Task {
-
-    private Ant callee;
-    private String subTarget;
-    private boolean initialized = false;
-    private boolean inheritAll = true;
-
-    /**
-     * If true, inherit all properties from parent Project
-     * If false, inherit only userProperties and those defined
-     * inside the antcall call itself
-     **/
-    public void setInheritAll(boolean inherit) {
-       inheritAll = inherit;
-    } //-- setInheritAll
-
-    public void init() {
-        callee = (Ant) project.createTask("ant");
-        callee.setOwningTarget(target);
-        callee.setTaskName(getTaskName());
-        callee.setLocation(location);
-        callee.init();
-        initialized = true;
-    }
-
-    public void execute() {
-        if (!initialized) {
-            init();
-        }
-        
-        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.setInheritAll(inheritAll);
-        callee.execute();
-    }
-
-    public Property createParam() {
-        return callee.createProperty();
-    }
-
-    public void setTarget(String target) {
-        subTarget = target;
-    }
-
-    protected void handleOutput(String line) {
-        if (callee != null) {
-            callee.handleOutput(line);
-        }
-        else {
-            super.handleOutput(line);
-        }
-    }
-    
-    protected void handleErrorOutput(String line) {
-        if (callee != null) {
-            callee.handleErrorOutput(line);
-        }
-        else {
-            super.handleErrorOutput(line);
-        }
-    }
-    
-}
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 5e6d34b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Chmod.java
+++ /dev/null
@@ -1,209 +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@epost.de">Stefan Bodewig</a>
- */
-
-public class Chmod extends ExecuteOn {
-
-    private FileSet defaultSet = new FileSet();
-    private boolean defaultSetDefined = false;
-    private boolean havePerm = false;
-    
-    public Chmod() {
-        super.setExecutable("chmod");
-        super.setParallel(true);
-        super.setSkipEmptyFilesets(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() {
-        defaultSetDefined = true;
-        return defaultSet.createInclude();
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public PatternSet.NameEntry createExclude() {
-        defaultSetDefined = true;
-        return defaultSet.createExclude();
-    }
-
-    /**
-     * add a set of patterns
-     */
-    public PatternSet createPatternSet() {
-        defaultSetDefined = true;
-        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) {
-        defaultSetDefined = true;
-        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) {
-        defaultSetDefined = true;
-        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) {
-        defaultSetDefined = true;
-        defaultSet.setDefaultexcludes(useDefaultExcludes);
-    }
-    
-    protected void checkConfiguration() {
-        if (!havePerm) {
-            throw new BuildException("Required attribute perm not set in chmod", 
-                                     location);
-        }
-        
-        if (defaultSetDefined && defaultSet.getDir(project) != null) {
-            addFileset(defaultSet);
-        }
-        super.checkConfiguration();
-    }
-
-    public void execute() throws BuildException {
-        if (defaultSetDefined || defaultSet.getDir(project) == null) {
-            super.execute();
-        }
-        else if (isValidOs()) {
-            // we are chmodding the given directory
-            createArg().setValue(defaultSet.getDir(project).getPath());
-            Execute execute = prepareExec();
-            try {
-                execute.setCommandline(cmdl.getCommandline());
-                runExecute(execute);
-            } catch (IOException e) {
-                throw new BuildException("Execute failed: " + e, e, location);
-            } finally {
-                // close the output file if required
-                logFlush();
-            }
-        }
-    }
-    
-
-    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);
-    }
-
-    public void setSkipEmptyFilesets(boolean skip) {
-        throw new BuildException(taskType+" doesn\'t support the skipemptyfileset 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/ConditionTask.java b/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java
deleted file mode 100644
index 9c67476..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/ConditionTask.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.taskdefs;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.taskdefs.condition.Condition;
-import org.apache.tools.ant.taskdefs.condition.ConditionBase;
-
-/**
- * &lt;condition&gt; task as a generalization of &lt;available&gt; and
- * &lt;uptodate&gt;
- *
- * <p>This task supports boolean logic as well as pluggable conditions
- * to decide, whether a property should be set.</p>
- *
- * <p>This task does not extend Task to take advantage of
- * ConditionBase.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de>Stefan Bodewig</a>
- * @version $Revision$
- */
-public class ConditionTask extends ConditionBase {
-
-    private String property;
-    private String value = "true";
-
-    /**
-     * The name of the property to set. Required.
-     *
-     * @since 1.1
-     */
-    public void setProperty(String p) {property = p;}
-
-    /**
-     * The value for the property to set. Defaults to "true".
-     *
-     * @since 1.1
-     */
-    public void setValue(String v) {value = v;}
-
-    /**
-     * See whether our nested condition holds and set the property.
-     *
-     * @since 1.1
-     */
-    public void execute() throws BuildException {
-        if (countConditions() > 1) {
-            throw new BuildException("You must not nest more than one condition into <condition>");
-        }
-        if (countConditions() < 1) {
-            throw new BuildException("You must nest a condition into <condition>");
-        }
-        Condition c = (Condition) getConditions().nextElement();
-        if (c.eval()) {
-            getProject().setProperty(property, value);
-        }
-    }
-}
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 89c680b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Copy.java
+++ /dev/null
@@ -1,408 +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>
- * @author <A href="gholam@xtra.co.nz">Michael McCallum</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;
-    private Vector filterSets = new Vector();
-    private FileUtils fileUtils;
-    
-    public Copy() {
-        fileUtils = FileUtils.newFileUtils();
-    }
-
-    protected FileUtils getFileUtils() {return fileUtils;}
-
-    /**
-     * 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;
-    }
-
-    /**
-     * Create a nested filterset
-     */
-    public FilterSet createFilterSet() {
-        FilterSet filterSet = new FilterSet();
-        filterSets.addElement(filterSet);
-        return filterSet;
-    }
-    
-    /**
-     * Give the copied files the same last modified time as the original files.
-     */
-    public void setPreserveLastModified(String preserve) {
-        preserveLastModified = Project.toBoolean(preserve);
-    }
-
-    /**
-     * Get the filtersets being applied to this operation.
-     *
-     * @return a vector of FilterSet objects
-     */
-    protected Vector getFilterSets() {
-        return filterSets;
-    }
-    
-    /**
-     * 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(file + " omitted as " + destFile + " is up to date.",
-                        Project.MSG_VERBOSE);
-                }
-            } else {
-                String message = "Could not find file " 
-                                 + file.getAbsolutePath() + " to copy.";
-                log(message);
-                throw new BuildException(message);
-            }
-        }
-
-        // 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);
-                    
-                    FilterSetCollection executionFilters = new FilterSetCollection();
-                    if (filtering) {
-                        executionFilters.addFilterSet(project.getGlobalFilterSet());
-                    }
-                    for (Enumeration filterEnum = filterSets.elements(); filterEnum.hasMoreElements();) {
-                        executionFilters.addFilterSet((FilterSet)filterEnum.nextElement());
-                    }
-                    fileUtils.copyFile(fromFile, toFile, executionFilters,
-                                       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 5206d09..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Cvs.java
+++ /dev/null
@@ -1,303 +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 org.apache.tools.ant.types.Environment;
-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;
-
-    /**
-     * CVS port
-     */
-    private int port = 0;
-
-    /**
-     * CVS password file
-     */
-    private File passFile = null;
-
-    /**
-     * 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; 
-
-    /**
-     * If true it will stop the build if cvs exits with error.
-     * Default is false. (Iulian)
-     */
-    private boolean failOnError = false; 
-
-
-    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);
-        }
-
-        Environment env = new Environment();
-
-        if(port>0){
-            Environment.Variable var = new Environment.Variable();
-            var.setKey("CVS_CLIENT_PORT");
-            var.setValue(String.valueOf(port));
-            env.addVariable(var);
-        }
-
-        if(passFile!=null){
-            Environment.Variable var = new Environment.Variable();
-            var.setKey("CVS_PASSFILE");
-            var.setValue(String.valueOf(passFile));
-            env.addVariable(var);
-        }
-
-        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());
-        exe.setEnvironment(env.getVariables());
-        try {
-	    int retCode = exe.execute();
-	    /*Throw an exception if cvs exited with error. (Iulian)*/
-	    if(failOnError && retCode != 0)
-		throw new BuildException("cvs exited with error code "+ retCode);
-        } 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 setPort(int port){
-        this.port = port;
-    }
-
-    public void setPassfile(File passFile){
-        this.passFile = passFile;
-    }
-
-    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;
-    }
-
-    public void setFailOnError(boolean failOnError) {
-	this.failOnError = failOnError;
-    }
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/Definer.java b/src/main/org/apache/tools/ant/taskdefs/Definer.java
deleted file mode 100644
index ba318fb..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Definer.java
+++ /dev/null
@@ -1,220 +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 org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-import java.util.*;
-import java.io.*;
-
-/**
- * Base class for Taskdef and Typedef - does all the classpath
- * handling and and class loading.
- *
- * @author Costin Manolache
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public abstract class Definer extends Task {
-    private String name;
-    private String value;
-    private Path classpath;
-    private File file;
-    private String resource;
-    private boolean reverseLoader = false;
-
-    public void setReverseLoader(boolean reverseLoader) {
-        this.reverseLoader = reverseLoader;
-        log("The reverseloader attribute is DEPRECATED. It will be removed", Project.MSG_WARN);
-    }
-    
-    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 {
-        AntClassLoader al=createLoader();
-
-        if (file==null && resource==null ) {
-
-            // simple case - one definition
-            if ( name==null || value==null  ) {
-                String msg = "name or classname attributes of "
-                    + getTaskName() + " element "
-                    + "are undefined";
-                throw new BuildException(msg);
-            }
-            addDefinition( al, name, value );
-
-        } else {
-
-            try {
-                if (name != null || value != null) {
-                    String msg = "You must not specify name or value "
-                        + "together with file or resource.";
-                    throw new BuildException(msg, location);
-                }
-            
-                if (file != null && resource != null) {
-                    String msg = "You must not specify both, file and resource.";
-                    throw new BuildException(msg, location);
-                }
-            
-
-                Properties props=new Properties();
-                InputStream is=null;
-                if( file != null ) {
-                    log("Loading definitions from file " + file, 
-                        Project.MSG_VERBOSE);
-                    is=new FileInputStream( file );
-                    if (is == null) {
-                        log("Could not load definitions from file " + file
-                            + ". It doesn\'t exist.", Project.MSG_WARN);
-                    }
-                }    
-                if( resource!=null ) {
-                    log("Loading definitions from resource " + resource, 
-                        Project.MSG_VERBOSE);
-                    is=al.getResourceAsStream( resource );
-                    if (is == null) {
-                        log("Could not load definitions from resource " 
-                            + resource + ". It could not be found.", 
-                            Project.MSG_WARN);
-                    }
-                }
-
-                if( is!=null ) {
-                    props.load( is );
-                    Enumeration keys=props.keys();
-                    while( keys.hasMoreElements() ) {
-                        String n=(String)keys.nextElement();
-                        String v=props.getProperty( n );
-                        addDefinition( al, n, v );
-                    }
-                }
-            } catch( IOException ex ) {
-                throw new BuildException(ex, location);
-            }
-        }
-    }
-    
-    private void addDefinition( ClassLoader al, String name, String value ) {
-        try {
-            Class c = al.loadClass(value);
-            AntClassLoader.initializeClass(c);
-            addDefinition(name, c);
-        } catch (ClassNotFoundException cnfe) {
-            String msg = getTaskName()+" class " + value +
-                " cannot be found";
-            throw new BuildException(msg, cnfe, location);
-        } catch (NoClassDefFoundError ncdfe) {
-            String msg = getTaskName()+" class " + value +
-                " cannot be found";
-            throw new BuildException(msg, ncdfe, location);
-        }
-    }
-
-
-    private AntClassLoader createLoader() {
-        AntClassLoader al = null;
-        if (classpath != null) {
-            al = new AntClassLoader(project, classpath, !reverseLoader);
-        } else {
-            al = new AntClassLoader(project, Path.systemClasspath, !reverseLoader);
-        }
-        // 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");
-        return al;
-    }
-
-    public void setFile( File file ) {
-        this.file=file;
-    }
-
-    public void setResource( String res ) {
-        this.resource=res;
-    }
-
-    public void setName( String name) {
-        this.name = name;
-    }
-
-    public String getClassname() {
-        return value;
-    }
-
-    public void setClassname(String v) {
-        value = v;
-    }
-
-    protected abstract void addDefinition(String name, Class c);
-}
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 0ca04bb..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Delete.java
+++ /dev/null
@@ -1,419 +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;
-    private boolean failonerror = true;
-
-    /**
-     * 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;
-        if (quiet) {
-            this.failonerror = false;
-        }
-    }
-
-    /**
-     * this flag means 'note errors to the output, but keep going'
-     * @param failonerror true or false
-     */
-     public void setFailOnError(boolean failonerror) {
-         this.failonerror=failonerror;
-     }
-
-
-    /**
-     * 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.");
-        }
-
-        if (quiet && failonerror) {
-            throw new BuildException("quiet and failonerror cannot both be set to true",
-                                     location);
-        }
-        
-
-        // 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()) {
-                        String message="Unable to delete file " + file.getAbsolutePath();
-                        if(failonerror)
-                            throw new BuildException(message);
-                        else 
-                            log(message, 
-                                quiet ? Project.MSG_VERBOSE : Project.MSG_WARN);
-                    }
-                }
-            } else {
-                log("Could not find file " + file.getAbsolutePath() + " to delete.", 
-                    Project.MSG_VERBOSE);
-            }
-        }
-
-        // 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);
-            try {
-                DirectoryScanner ds = fs.getDirectoryScanner(project);
-                String[] files = ds.getIncludedFiles();
-                String[] dirs = ds.getIncludedDirectories();
-                removeFiles(fs.getDir(project), files, dirs);
-            } catch (BuildException be) {
-                // directory doesn't exist or is not readable
-                if (failonerror) {
-                    throw be;
-                } else {
-                    log(be.getMessage(), 
-                        quiet ? Project.MSG_VERBOSE : Project.MSG_WARN);
-                }
-            }
-        }
-
-        // delete the files from the default fileset
-        if (usedMatchingTask && dir != null) {
-            try {
-                DirectoryScanner ds = super.getDirectoryScanner(dir);
-                String[] files = ds.getIncludedFiles();
-                String[] dirs = ds.getIncludedDirectories();
-                removeFiles(dir, files, dirs);
-            } catch (BuildException be) {
-                // directory doesn't exist or is not readable
-                if (failonerror) {
-                    throw be;
-                } else {
-                    log(be.getMessage(), 
-                        quiet ? Project.MSG_VERBOSE : Project.MSG_WARN);
-                }
-            }
-        }
-    }
-
-//************************************************************************
-//  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()) {
-                    String message="Unable to delete file " + f.getAbsolutePath();
-                    if(failonerror)
-                        throw new BuildException(message);
-                    else
-                        log(message,
-                            quiet ? Project.MSG_VERBOSE : Project.MSG_WARN);
-                }
-            }
-        }
-        log("Deleting directory " + d.getAbsolutePath(), verbosity);
-        if (!d.delete()) {
-            String message="Unable to delete directory " + dir.getAbsolutePath();
-            if(failonerror)
-                throw new BuildException(message);
-            else
-                log(message,
-                    quiet ? Project.MSG_VERBOSE : Project.MSG_WARN);
-        }
-    }
-
-    /**
-     * remove an array of files in a directory, and a list of subdirectories
-     * which will only be deleted if 'includeEmpty' is true
-     * @param d directory to work from
-     * @param files array of files to delete; can be of zero length
-     * @param dirs array of directories to delete; can of zero length
-     */
-    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()) {
-                    String message="Unable to delete file " + f.getAbsolutePath();
-                    if(failonerror)
-                        throw new BuildException(message);
-                    else
-                        log(message,
-                            quiet ? Project.MSG_VERBOSE : Project.MSG_WARN);
-                }
-            }
-        }
-
-        if (dirs.length > 0 && includeEmpty) {
-            int dirCount = 0;
-            for (int j=dirs.length-1; j>=0; 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()) {
-                        String message="Unable to delete directory "
-                                + dir.getAbsolutePath();
-                        if(failonerror)
-                            throw new BuildException(message);
-                        else
-                            log(message,
-                                quiet ? Project.MSG_VERBOSE : Project.MSG_WARN);
-                    } 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/DependSet.java b/src/main/org/apache/tools/ant/taskdefs/DependSet.java
deleted file mode 100644
index 215f585..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/DependSet.java
+++ /dev/null
@@ -1,315 +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;
-
-import java.io.File;
-import java.util.Enumeration;
-import java.util.Vector;
-import java.util.Date;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.FileList;
-
-/**
- * A Task to record explicit dependencies.  If any of the target files
- * are out of date with respect to any of the source files, all target
- * files are removed.  This is useful where dependencies cannot be
- * computed (for example, dynamically interpreted parameters or files
- * that need to stay in synch but are not directly linked) or where
- * the ant task in question could compute them but does not (for
- * example, the linked DTD for an XML file using the style task).
- *
- * nested arguments:
- * <ul>
- * <li>srcfileset     (fileset describing the source files to examine)
- * <li>srcfilelist    (filelist describing the source files to examine)
- * <li>targetfileset  (fileset describing the target files to examine)
- * <li>targetfilelist (filelist describing the target files to examine)
- * </ul>
- * At least one instance of either a fileset or filelist for both source and target
- * are required.
- * <p>
- * This task will examine each of the source files against each of the target files.
- * If any target files are out of date with respect to any of the source files, all targets are removed.
- * If any files named in a (src or target) filelist do not exist, all targets are removed.
- * Hint: If missing files should be ignored, specify them as include patterns in filesets,
- * rather than using filelists.
- * </p><p>
- * This task attempts to optimize speed of dependency checking.  It will stop after the first
- * out of date file is found and remove all targets, rather than exhaustively checking every
- * source vs target combination unnecessarily.
- * </p><p>
- * Example uses: 
- * <ulist><li>
- * Record the fact that an XML file must be up to date
- * with respect to its XSD (Schema file), even though the XML file
- * itself includes no reference to its XSD.
- * </li><li>
- * Record the fact that an XSL stylesheet includes other
- * sub-stylesheets
- * </li><li>
- * Record the fact that java files must be recompiled if the ant build
- * file changes
- * </li></ulist>
- * 
- * @author <a href="mailto:cstrong@arielpartners.com">Craeg Strong</a>
- * @version $Revision$ $Date$
- */
-public class DependSet extends MatchingTask {
-
-    private Vector sourceFileSets  = new Vector();
-    private Vector sourceFileLists = new Vector();
-    private Vector targetFileSets  = new Vector();
-    private Vector targetFileLists = new Vector();
-
-    /**
-     * Creates a new DependSet Task.
-     **/
-    public DependSet() {
-    } //-- DependSet
-
-    /**
-     * Nested &lt;srcfileset&gt; element.
-     */
-    public void addSrcfileset(FileSet fs) {
-        sourceFileSets.addElement(fs);
-    }
-
-    /**
-     * Nested &lt;srcfilelist&gt; element.
-     */
-    public void addSrcfilelist(FileList fl) {
-        sourceFileLists.addElement(fl);
-    }
-
-    /**
-     * Nested &lt;targetfileset&gt; element.
-     */
-    public void addTargetfileset(FileSet fs) {
-        targetFileSets.addElement(fs);
-    }
-
-    /**
-     * Nested &lt;targetfilelist&gt; element.
-     */
-    public void addTargetfilelist(FileList fl) {
-        targetFileLists.addElement(fl);
-    }
-
-    /**
-     * Executes the task.
-     */
-
-    public void execute() throws BuildException {
-
-        if ( (sourceFileSets.size() == 0) && (sourceFileLists.size() == 0) ) { 
-          throw new BuildException("At least one <srcfileset> or <srcfilelist> element must be set");
-        }
-
-        if ( (targetFileSets.size() == 0) && (targetFileLists.size() == 0) ) {
-          throw new BuildException("At least one <targetfileset> or <targetfilelist> element must be set");
-        }
-
-        long now = (new Date()).getTime();
-        /*
-          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;
-        }
-
-        //
-        // Grab all the target files specified via filesets
-        //
-        Vector  allTargets         = new Vector();
-        Enumeration enumTargetSets = targetFileSets.elements();
-        while (enumTargetSets.hasMoreElements()) {
-                 
-           FileSet targetFS          = (FileSet) enumTargetSets.nextElement();
-           DirectoryScanner targetDS = targetFS.getDirectoryScanner(project);
-           String[] targetFiles      = targetDS.getIncludedFiles();
-                 
-           for (int i = 0; i < targetFiles.length; i++) {
-                    
-              File dest = new File(targetFS.getDir(project), targetFiles[i]);
-              allTargets.addElement(dest);
-
-              if (dest.lastModified() > now) {
-                 log("Warning: "+targetFiles[i]+" modified in the future.", 
-                     Project.MSG_WARN);
-              }
-           }
-        }
-
-        //
-        // Grab all the target files specified via filelists
-        //
-        boolean upToDate            = true;
-        Enumeration enumTargetLists = targetFileLists.elements();
-        while (enumTargetLists.hasMoreElements()) {
-                 
-           FileList targetFL    = (FileList) enumTargetLists.nextElement();
-           String[] targetFiles = targetFL.getFiles(project);
-                 
-           for (int i = 0; i < targetFiles.length; i++) {
-                    
-              File dest = new File(targetFL.getDir(project), targetFiles[i]);
-              if (!dest.exists()) {
-                 log(targetFiles[i]+ " does not exist.", Project.MSG_VERBOSE);
-                 upToDate = false;
-                 continue;
-              }
-              else {
-                 allTargets.addElement(dest);
-              }
-              if (dest.lastModified() > now) {
-                 log("Warning: "+targetFiles[i]+" modified in the future.", 
-                     Project.MSG_WARN);
-              }
-           }
-        }
-
-        //
-        // Check targets vs source files specified via filesets
-        //
-        if (upToDate) {
-           Enumeration enumSourceSets = sourceFileSets.elements();
-           while (upToDate && enumSourceSets.hasMoreElements()) {
-          
-              FileSet sourceFS          = (FileSet) enumSourceSets.nextElement();
-              DirectoryScanner sourceDS = sourceFS.getDirectoryScanner(project);
-              String[] sourceFiles      = sourceDS.getIncludedFiles();
-
-              int i = 0;
-              do {
-                 File src = new File(sourceFS.getDir(project), sourceFiles[i]);
-
-                 if (src.lastModified() > now) {
-                    log("Warning: "+sourceFiles[i]+" modified in the future.", 
-                        Project.MSG_WARN);
-                 }
-
-                 Enumeration enumTargets = allTargets.elements();
-                 while (upToDate && enumTargets.hasMoreElements()) {
-                 
-                    File dest = (File)enumTargets.nextElement();
-                    if (src.lastModified() > dest.lastModified()) {
-                       log(dest.getPath() + " is out of date with respect to " +
-                                sourceFiles[i], Project.MSG_VERBOSE);
-                       upToDate = false;
-
-                    }
-                 }
-              } while (upToDate && (++i < sourceFiles.length) );
-           }
-        }
-
-        //
-        // Check targets vs source files specified via filelists
-        //
-        if (upToDate) {
-           Enumeration enumSourceLists = sourceFileLists.elements();
-           while (upToDate && enumSourceLists.hasMoreElements()) {
-          
-              FileList sourceFL         = (FileList) enumSourceLists.nextElement();
-              String[] sourceFiles      = sourceFL.getFiles(project);
-
-              int i = 0;
-              do {
-                 File src = new File(sourceFL.getDir(project), sourceFiles[i]);
-
-                 if (src.lastModified() > now) {
-                    log("Warning: "+sourceFiles[i]+" modified in the future.", 
-                        Project.MSG_WARN);
-                 }
-
-                 if (!src.exists()) {
-                    log(sourceFiles[i]+ " does not exist.", Project.MSG_VERBOSE);
-                    upToDate = false;
-                    break;
-                 }
-
-                 Enumeration enumTargets = allTargets.elements();
-                 while (upToDate && enumTargets.hasMoreElements()) {
-                 
-                    File dest = (File)enumTargets.nextElement();
-                    
-                    if (src.lastModified() > dest.lastModified()) {
-                       log(dest.getPath() + " is out of date with respect to " +
-                                sourceFiles[i], Project.MSG_VERBOSE);
-                       upToDate = false;
-
-                    }
-                 }
-              } while (upToDate && (++i < sourceFiles.length) );
-           }
-        }
-
-        if (!upToDate) {
-           log("Deleting all target files. ", Project.MSG_VERBOSE);
-           for (Enumeration e = allTargets.elements(); e.hasMoreElements(); ) {
-              File fileToRemove = (File)e.nextElement();
-              log("Deleting file " + fileToRemove.getAbsolutePath(), Project.MSG_VERBOSE);
-              fileToRemove.delete();
-           }
-        }
-        
-
-    } //-- execute
-   
-} //-- DependSet.java
diff --git a/src/main/org/apache/tools/ant/taskdefs/Ear.java b/src/main/org/apache/tools/ant/taskdefs/Ear.java
deleted file mode 100644
index cac185c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Ear.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;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.ZipFileSet;
-import org.apache.tools.zip.*;
-
-import java.io.*;
-import java.util.Vector;
-
-/**
- * Creates a EAR archive. Based on WAR task
- * 
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:leslie.hughes@rubus.com">Les Hughes</a> 
- */
-public class Ear extends Jar {
-
-    private File deploymentDescriptor;
-    private boolean descriptorAdded;    
-
-    public Ear() {
-        super();
-        archiveType = "ear";
-        emptyBehavior = "create";
-    }
-
-    public void setEarfile(File earFile) {
-        super.setZipfile(earFile);
-    }
-    
-    public void setAppxml(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("META-INF/application.xml");
-        super.addFileset(fs);
-    }
-
-
-    public void addArchives(ZipFileSet fs) {
-        // We just set the prefix for this fileset, and pass it up.
-        // Do we need to do this? LH
-        log("addArchives called",Project.MSG_DEBUG);
-        fs.setPrefix("/");
-        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("appxml 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("META-INF/aplication.xml"))  {
-            if (deploymentDescriptor == null || !deploymentDescriptor.equals(file) || descriptorAdded) {
-                log("Warning: selected "+archiveType+" files include a META-INF/application.xml which will be ignored " +
-                    "(please use appxml 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/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 19d3363..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/ExecTask.java
+++ /dev/null
@@ -1,331 +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 static String lSep = System.getProperty("line.separator");
-
-    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;
-    private ByteArrayOutputStream baos = null;
-    private String outputprop;
-
-    /** Controls whether the VM (1.3 and above) is used to execute the command */
-    private boolean vmLauncher = true;
-     
-    /**
-     * 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;
-    }
-
-    /**
-     * Property name whose value should be set to the output of
-     * the process
-     */
-    public void setOutputproperty(String outputprop) {
-	this.outputprop = outputprop;
-    }
-
-    /**
-     * 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("Current OS is " + myos, Project.MSG_VERBOSE);
-        if ((os != null) && (os.indexOf(myos) < 0)){
-            // this command will be executed only on the specified OS
-            log("This OS, " + myos + " was not found in the specified list of valid OSes: " + os, Project.MSG_VERBOSE);
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Control whether the VM is used to launch the new process or
-     * whether the OS's shell is used.
-     */
-    public void setVMLauncher(boolean vmLauncher) {
-        this.vmLauncher = vmLauncher;
-    }
-    
-    /**
-     * 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);
-        exe.setVMLauncher(vmLauncher);
-        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;
-    }
-
-    /**
-     * A Utility method for this classes and subclasses to run an Execute instance (an external command).
-     */
-    protected final void runExecute(Execute exe) throws IOException {
-        int err = -1; // assume the worst
-
-        err = exe.execute();
-        if (err != 0) {
-            if (failOnError) {
-                throw new BuildException(taskType + " returned: "+err, location);
-            } else {
-                log("Result: " + err, Project.MSG_ERR);
-            }
-        }
-        if (baos != null) {
-            BufferedReader in = 
-                new BufferedReader(new StringReader(baos.toString()));
-            String line = null;
-            StringBuffer val = new StringBuffer();
-            while ((line = in.readLine()) != null) {
-                if (val.length() != 0) {
-                    val.append(lSep);
-                }
-                val.append(line);
-            }
-            project.setProperty(outputprop, val.toString());
-        }
-    }
-    
-    /**
-     * Run the command using the given Execute instance. This may be overidden by subclasses
-     */
-    protected void runExec(Execute exe) throws BuildException {
-        exe.setCommandline(cmdl.getCommandline());
-        try {
-            runExecute(exe);
-        } 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 if (outputprop != null) {
-	    //	    try {
-	    baos = new ByteArrayOutputStream();
-	    log("Output redirected to ByteArray", Project.MSG_VERBOSE);
-	    return new PumpStreamHandler(baos);
-        } 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();
-            if (baos != null) baos.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 81b9ce0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Execute.java
+++ /dev/null
@@ -1,733 +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;
-
-    /** Controls whether the VM is used to launch commands, where possible */
-    private boolean useVMLauncher = true;    
-    
-    private static String antWorkingDirectory = System.getProperty("user.dir");
-    private static CommandLauncher vmLauncher = null;
-    private static CommandLauncher shellLauncher = null;
-    private static Vector procEnvironment = null;
-
-    /** 
-     * Builds a command launcher for the OS and JVM we are running under
-     */
-    static {
-        // Try using a JDK 1.3 launcher
-        try {
-            vmLauncher = new Java13CommandLauncher();
-        }
-        catch ( NoSuchMethodException exc ) {
-            // Ignore and keep try
-        }
-
-        String osname = System.getProperty("os.name").toLowerCase();
-        if ( osname.indexOf("mac os") >= 0 ) {
-            // Mac
-            shellLauncher = new MacCommandLauncher(new CommandLauncher());
-        }
-        else if ( osname.indexOf("os/2") >= 0 ) {
-            // OS/2 - use same mechanism as Windows 2000
-            shellLauncher = 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
-                shellLauncher = new WinNTCommandLauncher(baseLauncher);
-            }
-            else {
-                // Windows 98/95 - need to use an auxiliary script
-                shellLauncher = new ScriptCommandLauncher("bin/antRun.bat", baseLauncher);
-            }
-        }
-        else {
-            // Generic
-            shellLauncher = 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 var = null;
-            String line, lineSep = System.getProperty("line.separator");
-            while ((line = in.readLine()) != null) {
-                if (line.indexOf('=') == -1) {
-                    // Chunk part of previous env var (UNIX env vars can
-                    // contain embedded new lines).
-                    if (var == null) {
-                        var = lineSep + line;
-                    }
-                    else {
-                        var += lineSep + line;
-                    }
-                }
-                else {
-                    // New env var...append the previous one if we have it.
-                    if (var != null) {
-                        procEnvironment.addElement(var);
-                    }
-                    var = line;
-                }
-            }
-            // Since we "look ahead" before adding, there's one last env var.
-            procEnvironment.addElement(var);
-        } 
-        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
-            // Determine if we are running under OS X
-            try {
-                String version = System.getProperty("os.version");
-                int majorVersion = 
-                    Integer.parseInt(version.substring(0, version.indexOf('.')));
-
-                if (majorVersion >= 10) {
-                    // OS X - just line UNIX
-                    String[] cmd = {"/usr/bin/env"};
-                    return cmd;
-                }
-            } catch (NumberFormatException e) {
-                // fall through to OS 9
-            }
-            // OS 9 and previous
-            // 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;
-    }
-
-    /**
-     * Launch this execution through the VM, where possible, rather than through
-     * the OS's shell. In some cases and operating systems using the shell will 
-     * allow the shell to perform additional processing such as associating an 
-     * executable with a script, etc
-     *
-     * @param vmLauncher true if exec should launch through thge VM, 
-     *                   false if the shell should be used to launch the command.
-     */
-    public void setVMLauncher(boolean useVMLauncher) {
-        this.useVMLauncher = useVMLauncher;
-    }
-    
-    /**
-     * 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 {
-        CommandLauncher launcher = vmLauncher != null ? vmLauncher : shellLauncher;
-        if (!useVMLauncher) {
-            launcher = shellLauncher;
-        }
-        
-        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
-        {
-            if (project != null) {
-                project.log("Execute:CommandLauncher: " +
-                            Commandline.toString(cmd), Project.MSG_DEBUG);
-            }                            
-            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]);
-            }
-            if (project != null) {
-                project.log("Execute:Java11CommandLauncher: " +
-                            Commandline.toString(newcmd), Project.MSG_DEBUG);
-            }                            
-            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 {
-                if (project != null) {
-                    project.log("Execute:Java13CommandLauncher: " +
-                                Commandline.toString(cmd), Project.MSG_DEBUG);
-                }                                
-                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 BuildException("Unable to execute command", realexc);
-                }
-            } 
-            catch (Exception exc) {
-                // IllegalAccess, IllegalArgument, ClassCast
-                throw new BuildException("Unable to execute command", exc);
-            }
-        }
-        
-        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
-        {
-            File commandDir = workingDir;
-            if ( workingDir == null ) {
-                if ( project != null ) {
-                    commandDir = project.getBaseDir();
-                } else {
-                    return exec(project, cmd, env);
-                }
-            }
-
-            // Use cmd.exe to change to the specified directory before running
-            // the command
-            final int preCmdLength = 6;
-            String[] newcmd = new String[cmd.length + preCmdLength];
-            newcmd[0] = "cmd";
-            newcmd[1] = "/c";
-            newcmd[2] = "cd";
-            newcmd[3] = "/d";
-            newcmd[4] = commandDir.getAbsolutePath();
-            newcmd[5] = "&&";
-            System.arraycopy(cmd, 0, newcmd, preCmdLength, 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 ( project == null ) {
-                if ( workingDir == null ) {
-                    return exec(project, cmd, env);
-                }
-                throw new IOException("Cannot locate antRun script: No project provided");
-            }
-            
-            // Locate the auxiliary script
-            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
-            File commandDir = workingDir;
-            if ( workingDir == null && project != null ) {
-                commandDir = project.getBaseDir();
-            }
-
-            String[] newcmd = new String[cmd.length + 2];
-            newcmd[0] = antRun;
-            newcmd[1] = commandDir.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 f94cdd8..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java
+++ /dev/null
@@ -1,149 +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.ExitException;
-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;
-
-    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.
-     *
-     * @deprecated manage output at the task level
-     */
-    public void setOutput(PrintStream out) {
-    }
-
-    public void execute(Project project) throws BuildException{
-        final String classname = javaCommand.getExecutable();
-        final Object[] argument = { javaCommand.getArguments() };
-
-        AntClassLoader loader = null; 
-        try {
-            if (sysProperties != null) {
-                sysProperties.setSystem();
-            }
-
-            final Class[] param = { Class.forName("[Ljava.lang.String;") };
-            Class target = null;
-            if (classpath == null) {
-                target = Class.forName(classname);
-            } else {
-                loader = new AntClassLoader(project.getCoreLoader(), project, classpath, false);
-                loader.setIsolated(true);
-                loader.setThreadContextLoader();
-                target = loader.forceLoadClass(classname);
-                AntClassLoader.initializeClass(target);
-            }
-            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 {
-                throw (SecurityException)t;
-            }
-        } catch (Exception e) {
-            throw new BuildException(e);
-        } finally {
-            if (loader != null) {
-                loader.resetThreadContextLoader();
-                loader.cleanup();
-            }
-            if (sysProperties != null) {
-                sysProperties.restoreSystem();
-            }
-        }
-    }
-}
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 398385a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java
+++ /dev/null
@@ -1,391 +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.util.Hashtable;
-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;
-    private boolean skipEmpty = false;
-    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;
-
-    /**
-     * 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();
-    }
-
-    /**
-     * Should empty filesets be ignored?
-     */
-    public void setSkipEmptyFilesets(boolean skip) {
-        skipEmpty = skip;
-    }
-
-    /**
-     * Set the destination directory.
-     */
-    public void setDest(File destDir) {
-        this.destDir = destDir;
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * 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() {
-        if ("execon".equals(taskName)) {
-            log("!! execon is deprecated. Use apply instead. !!");
-        }
-        
-        super.checkConfiguration();
-        if (filesets.size() == 0) {
-            throw new BuildException("no filesets specified", location);
-        }
-
-        if (targetFilePos != null || mapperElement != null 
-            || destDir != null) {
-
-            if (mapperElement == null) {
-                throw new BuildException("no mapper specified", location);
-            }
-            if (mapperElement == null) {
-                throw new BuildException("no dest attribute specified", 
-                                         location);
-            }
-            mapper = mapperElement.getImplementation();
-        }
-    }
-
-    protected void runExec(Execute exe) throws BuildException {
-        try {
-
-            Vector fileNames = new Vector();
-            Vector baseDirs = new Vector();
-            for (int i=0; i<filesets.size(); i++) {
-                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++) {
-                        fileNames.addElement(s[j]);
-                        baseDirs.addElement(base);
-                    }
-                }
-
-                if (!"file".equals(type)) {
-                    String[] s = getDirs(base, ds);;
-                    for (int j=0; j<s.length; j++) {
-                        fileNames.addElement(s[j]);
-                        baseDirs.addElement(base);
-                    }
-                }
-
-                if (fileNames.size() == 0 && skipEmpty) {
-                    log("Skipping fileset for directory "
-                        + base + ". It is empty.", Project.MSG_INFO);
-                    continue;
-                }
-
-                if (!parallel) {
-                    String[] s = new String[fileNames.size()];
-                    fileNames.copyInto(s);
-                    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);
-                        runExecute(exe);
-                    }
-                    fileNames.removeAllElements();
-                    baseDirs.removeAllElements();
-                }
-            }
-
-            if (parallel) {
-                String[] s = new String[fileNames.size()];
-                fileNames.copyInto(s);
-                File[] b = new File[baseDirs.size()];
-                baseDirs.copyInto(b);
-                String[] command = getCommandline(s, b);
-                log("Executing " + Commandline.toString(command), 
-                    Project.MSG_VERBOSE);
-                exe.setCommandline(command);
-                runExecute(exe);
-            }
-
-        } 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[] baseDirs) {
-        Vector targets = new Vector();
-        if (targetFilePos != null) {
-            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();
-        }
-
-        if (targetFilePos != null) {
-            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;
-            }
-
-        } else { // no targetFilePos
-            System.arraycopy(orig, 0, result, 0, srcIndex);
-        }
-
-        // fill in source file names
-        for (int i=0; i < srcFiles.length; i++) {
-            result[srcIndex+i] = 
-                (new File(baseDirs[i], 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}, new File[] {baseDir});
-    }
-
-    /**
-     * Return the list of files from this DirectoryScanner that should
-     * be included on the command line.
-     */
-    protected String[] getFiles(File baseDir, DirectoryScanner ds) {
-        if (mapper != null) {
-            SourceFileScanner sfs = new SourceFileScanner(this);
-            return sfs.restrict(ds.getIncludedFiles(), baseDir, destDir, 
-                                mapper);
-        } else {
-            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) {
-        if (mapper != null) {
-            SourceFileScanner sfs = new SourceFileScanner(this);
-            return sfs.restrict(ds.getIncludedDirectories(), baseDir, destDir, 
-                                mapper);
-        } else {
-            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 e707db6..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Exit.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;
-
-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");
-        }
-    }
-
-    /**
-     * Set a multiline message.
-     */
-    public void addText(String msg) {
-        message += 
-            ProjectHelper.replaceProperties(project, msg, project.getProperties());
-    }
-
-}
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 0db5146..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Expand.java
+++ /dev/null
@@ -1,199 +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@epost.de">Stefan Bodewig</a>
- */
-public class Expand extends MatchingTask {
-    private File dest; // req
-    private File source; // req
-
-    private boolean overwrite = true;
-    
-    /**
-     * 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 {
-                    if (!overwrite && f.exists() 
-                        && f.lastModified() >= ze.getTime()) {
-                        log("Skipping " + f + " as it is up-to-date",
-                            Project.MSG_DEBUG);
-                        continue;
-                    }
-                    
-                    log("expanding " + ze.getName() + " to "+ f, 
-                        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;
-    }
-
-    /**
-     * Should we overwrite files in dest, even if they are newer than
-     * the corresponding entries in the archive?
-     */
-    public void setOverwrite(boolean b) {
-        overwrite = b;
-    }
-
-}
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 916eec7..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Filter.java
+++ /dev/null
@@ -1,112 +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>
- * @author <A href="gholam@xtra.co.nz">Michael McCallum</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.getGlobalFilterSet().addFilter(token, value);
-        }
-        
-        if (isFiltersFromFile) {
-            readFilters();
-        }
-    }
-    
-    protected void readFilters() throws BuildException {
-        log("Reading filters from " + filtersFile, Project.MSG_VERBOSE);
-        project.getGlobalFilterSet().readFiltersFromFile(filtersFile);
-    }
-}
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 5e3b81b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
+++ /dev/null
@@ -1,1056 +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.*;
-
-/**
- * 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>eol
- * <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>
- * This version generalises the handling of EOL characters, and allows
- * for CR-only line endings (which I suspect is the standard on Macs.)
- * Tab handling has also been generalised to accommodate any tabwidth
- * from 2 to 80, inclusive.  Importantly, it will leave untouched any
- * literal TAB characters embedded within string or character constants.
- * <p>
- * <em>Warning:</em> do not run on binary files.
- * <em>Caution:</em> run with care on carefully formatted files.
- * This may sound obvious, but if you don't specify asis, presume that
- * your files are going to be modified.  If "tabs" is "add" or "remove",
- * whitespace characters may be added or removed as necessary.  Similarly,
- * for CR's - in fact "eol"="crlf" or cr="add" can result in cr
- * characters being removed in one special case accommodated, i.e.,
- * CRCRLF is regarded as a single EOL 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>
- * @author <a href="mailto:pbwest@powerup.com.au">Peter B. West</a>
- * @version $Revision$ $Name$
- */
-
-public class FixCRLF extends MatchingTask {
-
-    private static final int UNDEF = -1;
-    private static final int NOTJAVA = 0;
-    private static final int LOOKING = 1;
-    private static final int IN_CHAR_CONST = 2;
-    private static final int IN_STR_CONST = 3;
-    private static final int IN_SINGLE_COMMENT = 4;
-    private static final int IN_MULTI_COMMENT = 5;
-
-    private static final int ASIS = 0;
-    private static final int CR = 1;
-    private static final int LF = 2;
-    private static final int CRLF = 3;
-    private static final int ADD = 1;
-    private static final int REMOVE = -1;
-    private static final int SPACES = -1;
-    private static final int TABS = 1;
-
-    private static final int INBUFLEN = 8192;
-    private static final int LINEBUFLEN = 200;
-
-    private static final char CTRLZ = '\u001A';
-
-    private int tablength = 8;
-    private String spaces = "        ";
-    private StringBuffer linebuf = new StringBuffer(1024);
-    private StringBuffer linebuf2 = new StringBuffer(1024);
-    private int eol;
-    private String eolstr;
-    private int ctrlz;
-    private int tabs;
-    private boolean javafiles = false;
-
-    private File srcDir;
-    private File destDir = null;
-
-    /**
-     * Defaults the properties based on the system type.
-     * <ul><li>Unix: eol="LF" tab="asis" eof="remove"
-     *     <li>Mac: eol="CR" tab="asis" eof="remove"
-     *     <li>DOS: eol="CRLF" tab="asis" eof="asis"</ul>
-     */
-    public FixCRLF () {
-        tabs = ASIS;
-        if (System.getProperty("path.separator").equals(":")) {
-            ctrlz = REMOVE;
-            if (System.getProperty("os.name").indexOf("Mac") > -1) {
-                eol = CR;
-                eolstr = "\r";
-            } else {
-                eol = LF;
-                eolstr = "\n";
-            }
-        }
-        else {
-            ctrlz = ASIS;
-            eol = CRLF;
-            eolstr = "\r\n";
-        }
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * Fixing Java source files?
-     */
-    public void setJavafiles(boolean javafiles) {
-        this.javafiles = javafiles;
-    }
-
-
-    /**
-     * Specify how EndOfLine characters are to be handled
-     *
-     * @param option valid values:
-     * <ul>
-     * <li>asis: leave line endings alone
-     * <li>cr: convert line endings to CR
-     * <li>lf: convert line endings to LF
-     * <li>crlf: convert line endings to CRLF
-     * </ul>
-     */
-    public void setEol(CrLf attr) {
-        String option = attr.getValue();
-        if (option.equals("asis")) {
-            eol = ASIS;
-        } else if (option.equals("cr")) {
-            eol = CR;
-            eolstr = "\r";
-        } else if (option.equals("lf")) {
-            eol = LF;
-            eolstr = "\n";
-        } else {
-            // Must be "crlf"
-            eol = CRLF;
-            eolstr = "\r\n";
-        }
-    }
-
-    /**
-     * Specify how carriage return (CR) characters 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>
-     *
-     * @deprecated use {@link #setEol setEol} instead.
-     */
-    public void setCr(AddAsisRemove attr) {
-        log("DEPRECATED: The cr attribute has been deprecated,", 
-            Project.MSG_WARN);
-        log("Please us the eol attribute instead", Project.MSG_WARN);
-        String option = attr.getValue();
-        CrLf c = new CrLf();
-        if (option.equals("remove")) {
-            c.setValue("lf");
-        } else if (option.equals("asis")) {
-            c.setValue("asis");
-        } else {
-            // must be "add"
-            c.setValue("crlf");
-        }
-        setEol(c);
-    }
-
-    /**
-     * Specify how tab characters 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")) {
-            tabs = SPACES;
-        } else if (option.equals("asis")) {
-            tabs = ASIS;
-        } else {
-            // must be "add"
-            tabs = TABS;
-        }
-    }
-
-    /**
-     * Specify tab length in characters
-     *
-     * @param tlength specify the length of tab in spaces,
-     */
-    public void setTablength(int tlength) throws BuildException {
-        if (tlength < 2 || tlength >80) {
-            throw new BuildException("tablength must be between 2 and 80",
-                                     location);
-        }
-        tablength = tlength;
-        StringBuffer sp = new StringBuffer();
-        for (int i = 0; i < tablength; i++) {
-            sp.append(' ');
-        }
-        spaces = sp.toString();
-    }
-
-    /**
-     * 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 = REMOVE;
-        } else if (option.equals("asis")) {
-            ctrlz = ASIS;
-        } else {
-            // must be "add"
-            ctrlz = ADD;
-        }
-    }
-    /**
-     * 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:" +
-            " eol=" +
-            (eol==ASIS ? "asis" : eol==CR ? "cr" : eol==LF ? "lf" : "crlf") +
-            " tab=" + (tabs==TABS ? "add" : tabs==ASIS ? "asis" : "remove") +
-            " eof=" + (ctrlz==ADD ? "add" : ctrlz==ASIS ? "asis" : "remove") +
-            " tablength=" + tablength,
-            Project.MSG_VERBOSE);
-
-        DirectoryScanner ds = super.getDirectoryScanner(srcDir);
-        String[] files = ds.getIncludedFiles();
-
-        for (int i = 0; i < files.length; i++) {
-            processFile(files[i]);
-        }
-    }
-
-    /**
-     * Creates a temporary file.
-     */
-    private File createTempFile() {
-        String name = "fixcrlf" 
-            + (new Random(System.currentTimeMillis())).nextLong();
-        if (destDir == null) {
-            return new File(srcDir, name);
-        } else {
-            return new File(destDir, name);
-        }
-    }
-
-    /**
-     * Checks for the inequality of two files
-     */
-    private boolean filesEqual(File file1, File file2) {
-        BufferedReader reader1;
-        BufferedReader reader2;
-        char buf1[] = new char[INBUFLEN];
-        char buf2[] = new char[INBUFLEN];
-        int buflen;
-
-        if (file1.length() != file2.length()) {
-            return false;
-        }
-        
-        try {
-             reader1 = new BufferedReader
-                     (new FileReader(file1), INBUFLEN);
-             reader2 = new BufferedReader
-                     (new FileReader(file2), INBUFLEN);
-             while ((buflen = reader1.read(buf1, 0, INBUFLEN)) != -1 ) {
-                 reader2.read(buf2, 0, INBUFLEN);
-                 // Compare the contents of the buffers
-                 // There must be an easier way to do this, but I don''t
-                 // know what it is
-                 for (int i = 0; i < buflen; i++) {
-                     if (buf1[i] != buf2[i]) {
-                         reader1.close();
-                         reader2.close();
-                         return false;
-                     } // end of if (buf1[i] != buf2[i])
-                 }
-             }
-             reader1.close();
-             reader2.close();
-             return true;   // equal
-        } catch (IOException e) {
-            throw new BuildException("IOException in filesEqual: " +
-                                      file1 + " : " + file2);
-        } // end of try-catch
-                 
-    }
-
-
-    private void processFile(String file) throws BuildException {
-        File srcFile = new File(srcDir, file);
-        File tmpFile = null;
-        BufferedWriter outWriter;
-        OneLiner.BufferLine line;
-
-        // read the contents of the file
-        OneLiner lines = new OneLiner(srcFile);
-
-        try {
-            // Set up the output Writer
-            try {
-                tmpFile = createTempFile();
-                FileWriter writer = new FileWriter(tmpFile);
-                outWriter = new BufferedWriter(writer);
-            } catch (IOException e) {
-                throw new BuildException(e);
-            }
-            
-            while (lines.hasMoreElements()) {
-                // In-line states
-                int endComment;
-
-                try {
-                    line = (OneLiner.BufferLine)lines.nextElement();
-                } catch (NoSuchElementException e) {
-                    throw new BuildException(e);
-                }
-            
-                String lineString = line.getLineString();
-                int linelen = line.length();
-
-                // Note - all of the following processing NOT done for 
-                // tabs ASIS
-
-                if (tabs == ASIS) {
-                    // Just copy the body of the line across
-                    try {
-                        outWriter.write(lineString);
-                    } catch (IOException e) {
-                        throw new BuildException(e);
-                    } // end of try-catch
-
-                } else { // (tabs != ASIS)
-                    int ptr;
-
-                    while ((ptr = line.getNext()) < linelen) {
-
-                        switch (lines.getState()) {
-                            
-                        case NOTJAVA:
-                            notInConstant(line, line.length(), outWriter);
-                            break;
-                        
-                        case IN_MULTI_COMMENT:
-                            if ((endComment =
-                                 lineString.indexOf("*/", line.getNext())
-                                 ) >= 0)
-                                {
-                                    // End of multiLineComment on this line
-                                    endComment += 2;  // Include the end token
-                                    lines.setState(LOOKING);
-                                }
-                            else {
-                                endComment = linelen;
-                            }
-                        
-                            notInConstant(line, endComment, outWriter);
-                            break;
-
-                        case IN_SINGLE_COMMENT:
-                            notInConstant(line, line.length(), outWriter);
-                            lines.setState(LOOKING);
-                            break;
-
-                        case IN_CHAR_CONST:
-                        case IN_STR_CONST:
-                            // Got here from LOOKING by finding an opening "\'"
-                            // next points to that quote character.
-                            // Find the end of the constant.  Watch out for
-                            // backslashes.  Literal tabs are left unchanged, and
-                            // the column is adjusted accordingly.
-                            
-                            int begin = line.getNext();
-                            char terminator = (lines.getState() == IN_STR_CONST
-                                               ? '\"'
-                                               : '\'');
-                            endOfCharConst(line, terminator);
-                            while (line.getNext() < line.getLookahead()) {
-                                if (line.getNextCharInc() == '\t') {
-                                    line.setColumn(
-                                                   line.getColumn() +
-                                                   tablength -
-                                                   line.getColumn() % tablength); 
-                                }
-                                else {
-                                    line.incColumn();
-                                }
-                            }
-                            
-                            // Now output the substring
-                            try {
-                                outWriter.write(line.substring(begin, line.getNext()));
-                            } catch (IOException e) {
-                                throw new BuildException(e);
-                            }
-                            
-                            lines.setState(LOOKING);
-                            
-                            break;
-                            
-                            
-                        case LOOKING:
-                            nextStateChange(line);
-                            notInConstant(line, line.getLookahead(), outWriter);
-                            break;
-                            
-                        } // end of switch (state)
-                        
-                    } // end of while (line.getNext() < linelen)
-                    
-                } // end of else (tabs != ASIS)
-                
-                try {
-                    outWriter.write(eolstr);
-                } catch (IOException e) {
-                    throw new BuildException(e);
-                } // end of try-catch
-                
-            } // end of while (lines.hasNext())
-
-            try {
-                // Handle CTRLZ
-                if (ctrlz == ASIS) {
-                    outWriter.write(lines.getEofStr());
-                } else if (ctrlz == ADD){
-                    outWriter.write(CTRLZ);
-                }
-                outWriter.close();
-            } catch (IOException e) {
-                throw new BuildException(e);
-            } // end of try-catch
-            
-            File destFile = new File(destDir == null ? srcDir : destDir,
-                                     file);
-
-            try {                                            
-                lines.close();
-                lines = null;
-            }
-            catch (IOException e) {
-                throw new BuildException("Unable to close source file " + srcFile);
-            }
-
-            if (destFile.exists()) {
-                // Compare the destination with the temp file
-                log("destFile exists", Project.MSG_DEBUG);
-                if ( ! filesEqual(destFile, tmpFile)) {
-                    log(destFile + " is being written", Project.MSG_DEBUG);
-                    if (!destFile.delete()) {
-                        throw new BuildException("Unable to delete "
-                                                 + destFile);
-                    }
-                    if (!tmpFile.renameTo(destFile)) {
-                        throw new BuildException(
-                                "Failed to transform " + srcFile
-                                + " to " + destFile
-                                + ". Couldn't rename temporary file: "
-                                + tmpFile);
-                    }
-
-                } else { // destination is equal to temp file
-                    log(destFile +
-                        " is not written, as the contents are identical",
-                        Project.MSG_DEBUG);
-                    if (!tmpFile.delete()) {
-                        throw new BuildException("Unable to delete "
-                                                 + tmpFile);
-                    }
-                }
-            } else { // destFile does not exist - write the temp file
-                log("destFile does not exist", Project.MSG_DEBUG);
-                if (!tmpFile.renameTo(destFile)) {
-                    throw new BuildException(
-                            "Failed to transform " + srcFile
-                            + " to " + destFile
-                            + ". Couldn't rename temporary file: "
-                            + tmpFile);
-                }
-            }
-
-            tmpFile = null;
-
-        } finally {
-            try {
-                if (lines != null) {
-                    lines.close();
-                }
-            } catch (IOException io) {
-                log("Error closing "+srcFile, Project.MSG_ERR);
-            } // end of catch
-            
-            if (tmpFile != null) {
-                tmpFile.delete();
-            }
-        } // end of finally
-    }
-
-    /**
-     * Scan a BufferLine for the next state changing token: the beginning
-     * of a single or multi-line comment, a character or a string constant.
-     *
-     * As a side-effect, sets the buffer state to the next state, and sets
-     * field lookahead to the first character of the state-changing token, or
-     * to the next eol character.
-     *
-     * @param BufferLine bufline       BufferLine containing the string
-     *                                 to be processed
-     * @exception org.apache.tools.ant.BuildException
-     *                                 Thrown when end of line is reached
-     *                                 before the terminator is found.
-     */
-    private void nextStateChange(OneLiner.BufferLine bufline)
-        throws BuildException
-    {
-        int eol = bufline.length();
-        int ptr = bufline.getNext();
-        
-        
-        //  Look for next single or double quote, double slash or slash star
-        while (ptr < eol) {
-            switch (bufline.getChar(ptr++)) {
-            case '\'':
-                bufline.setState(IN_CHAR_CONST);
-                bufline.setLookahead(--ptr);
-                return;
-            case '\"':
-                bufline.setState(IN_STR_CONST);
-                bufline.setLookahead(--ptr);
-                return;
-            case '/':
-                if (ptr < eol) {
-                    if (bufline.getChar(ptr) == '*') {
-                        bufline.setState(IN_MULTI_COMMENT);
-                        bufline.setLookahead(--ptr);
-                        return;
-                    }
-                    else if (bufline.getChar(ptr) == '/') {
-                        bufline.setState(IN_SINGLE_COMMENT);
-                        bufline.setLookahead(--ptr);
-                        return;
-                    }
-                }
-                break;
-            } // end of switch (bufline.getChar(ptr++))
-            
-        } // end of while (ptr < eol)
-        // Eol is the next token
-        bufline.setLookahead(ptr);
-    }
-
-
-    /**
-     * Scan a BufferLine forward from the 'next' pointer
-     * for the end of a character constant.  Set 'lookahead' pointer to the
-     * character following the terminating quote.
-     *
-     * @param BufferLine bufline       BufferLine containing the string
-     *                                 to be processed
-     * @param char terminator          The constant terminator
-     *
-     * @exception org.apache.tools.ant.BuildException
-     *                                 Thrown when end of line is reached
-     *                                 before the terminator is found.
-     */
-    private void endOfCharConst(OneLiner.BufferLine bufline, char terminator)
-        throws BuildException
-    {
-        int ptr = bufline.getNext();
-        int eol = bufline.length();
-        char c;
-        ptr++;          // skip past initial quote
-        while (ptr < eol) {
-            if ((c = bufline.getChar(ptr++)) == '\\') {
-                ptr++;
-            }
-            else {
-                if (c == terminator) {
-                    bufline.setLookahead(ptr);
-                    return;
-                }
-            }
-        } // end of while (ptr < eol)
-        // Must have fallen through to the end of the line
-        throw new BuildException("endOfCharConst: unterminated char constant");
-    }
-
-
-    /**
-     * Process a BufferLine string which is not part of of a string constant.
-     * The start position of the string is given by the 'next' field.
-     * Sets the 'next' and 'column' fields in the BufferLine.
-     *
-     * @param BufferLine bufline       BufferLine containing the string
-     *                                 to be processed
-     * @param int end                  Index just past the end of the
-     *                                 string
-     * @param BufferedWriter outWriter Sink for the processed string
-     */
-    private void notInConstant(OneLiner.BufferLine bufline, int end,
-                                BufferedWriter outWriter)
-    {
-        // N.B. both column and string index are zero-based
-        // Process a string not part of a constant;
-        // i.e. convert tabs<->spaces as required
-        // This is NOT called for ASIS tab handling
-        int nextTab;
-        int nextStop;
-        int tabspaces;
-        String line = bufline.substring(bufline.getNext(), end);
-        int place = 0;          // Zero-based
-        int col = bufline.getColumn();  // Zero-based
-
-        // process sequences of white space
-        // first convert all tabs to spaces
-        linebuf.setLength(0);
-        while ((nextTab = line.indexOf((int) '\t', place)) >= 0) {
-            linebuf.append(line.substring(place, nextTab)); // copy to the TAB
-            col += nextTab - place;
-            tabspaces = tablength - (col % tablength);
-            linebuf.append(spaces.substring(0, tabspaces));
-            col += tabspaces;
-            place = nextTab + 1;
-        } // end of while
-        linebuf.append(line.substring(place, line.length()));
-        // if converting to spaces, all finished
-        String linestring = new String(linebuf.toString());
-        if (tabs == REMOVE) {
-            try {
-                outWriter.write(linestring);
-            } catch (IOException e) {
-                throw new BuildException(e);
-            } // end of try-catch
-        }
-        else { // tabs == ADD
-            int tabCol;
-            linebuf2.setLength(0);
-            place = 0;
-            col = bufline.getColumn();
-            int placediff = col - 0;
-            // for the length of the string, cycle through the tab stop
-            // positions, checking for a space preceded by at least one
-            // other space at the tab stop.  if so replace the longest possible
-            // preceding sequence of spaces with a tab.
-            nextStop = col + (tablength - col % tablength);
-            if (nextStop - col < 2) {
-                linebuf2.append(linestring.substring(
-                                        place, nextStop - placediff));
-                place = nextStop - placediff;
-                nextStop += tablength;
-            }
-            
-            for ( ; nextStop - placediff <= linestring.length()
-                          ; nextStop += tablength)
-            {
-                for (tabCol = nextStop;
-                             --tabCol - placediff >= place
-                             && linestring.charAt(tabCol - placediff) == ' '
-                             ;)
-                {
-                    ; // Loop for the side-effects
-                }
-                // tabCol is column index of the last non-space character
-                // before the next tab stop
-                if (nextStop - tabCol > 2) {
-                    linebuf2.append(linestring.substring(
-                                    place, ++tabCol - placediff));
-                    linebuf2.append('\t');
-                }
-                else {
-                    linebuf2.append(linestring.substring(
-                                    place, nextStop - placediff));
-                } // end of else
-
-                place = nextStop - placediff;
-            } // end of for (nextStop ... )
-
-            // pick up that last bit, if any
-            linebuf2.append(linestring.substring(place, linestring.length()));
-
-            try {
-                outWriter.write(linebuf2.toString());
-            } catch (IOException e) {
-                throw new BuildException(e);
-            } // end of try-catch
-            
-        } // end of else tabs == ADD
-
-        // Set column position as modified by this method
-        bufline.setColumn(bufline.getColumn() + linestring.length());
-        bufline.setNext(end);
-
-    }
-
-
-    class OneLiner implements Enumeration {
-
-        private int state = javafiles ? LOOKING : NOTJAVA;
-
-        private StringBuffer eolStr = new StringBuffer(LINEBUFLEN);
-        private StringBuffer eofStr = new StringBuffer();
-
-        private BufferedReader reader;
-        private String line;
-
-        public OneLiner(File srcFile)
-            throws BuildException
-        {
-            try {
-                reader = new BufferedReader
-                        (new FileReader(srcFile), INBUFLEN);
-                nextLine();
-            } catch (IOException e) {
-                throw new BuildException(e);
-            }
-        }
-
-        protected void nextLine()
-            throws BuildException {
-            int ch;
-            int eolcount = 0;
-
-            eolStr.setLength(0);
-
-            try {
-                int linelen;
-
-                reader.mark(INBUFLEN);
-                line = reader.readLine();
-                if (line == null) {
-                    // Eof has been reached
-                    linelen = 0;
-                }
-                else {
-                    linelen = line.length();
-                }
-                
-                
-                // Find the EOL character(s)
-
-                reader.reset();
-
-                // an IOException will be thrown
-                reader.skip((long)linelen);
-                reader.mark(INBUFLEN);
-                ch = reader.read();
-                switch ((char) ch) {
-                case '\r':
-                    // Check for \r, \r\n and \r\r\n
-                    // Regard \r\r not followed by \n as two lines
-                    ++eolcount;
-                    eolStr.append('\r');
-                    switch ((char)(ch = reader.read())) {
-                    case '\r':
-                        if ((char)(ch = reader.read()) == '\n') {
-                            eolcount += 2;
-                            eolStr.append("\r\n");
-                        }
-                        break;
-                    case '\n':
-                        ++eolcount;
-                        eolStr.append('\n');
-                        break;
-                    } // end of switch ((char)(ch = reader.read()))
-                    break;
-                    
-                case '\n':
-                    ++eolcount;
-                    eolStr.append('\n');
-                    break;
-                    
-                } // end of switch ((char) ch)
-
-                // Reset the position of the file reader
-                reader.reset();
-                reader.skip((long)eolcount);
-
-                // if at eolcount == 0 and trailing characters of string
-                // are CTRL-Zs, set eofStr
-                if (line != null && eolcount == 0) {
-                    int i = linelen;
-                    while (--i >= 0 && line.charAt(i) == CTRLZ) {}
-                    if (i < linelen - 1) {
-                        // Trailing characters are ^Zs
-                        // Construct new line and eofStr
-                        eofStr.append(line.substring(i + 1));
-                        line = i < 0 ? null : line.substring(0, i + 1);
-                    }
-                    
-                } // end of if (eolcount == 0)
-                
-            } catch (IOException e) {
-                throw new BuildException(e);
-            }
-        }
-
-        public String getEofStr() {
-            return eofStr.toString();
-        }
-
-        public int getState() {
-            return state;
-        }
-
-        public void setState(int state) {
-            this.state = state;
-        }
-
-        public boolean hasMoreElements()
-        {
-            return line != null;
-        }
-
-        public Object nextElement()
-            throws NoSuchElementException
-        {
-            if (! hasMoreElements()) {
-                throw new NoSuchElementException("OneLiner");
-            }
-            BufferLine tmpLine =
-                    new BufferLine(line, eolStr.toString());
-            nextLine();
-            return tmpLine;
-        }
-
-        public void close() throws IOException {
-            if (reader != null) {
-                reader.close();
-            }
-        }
-
-        class BufferLine {
-            private int next = 0;
-            private int column = 0;
-            private int lookahead = UNDEF;
-            private String line;
-            private String eolStr;
-        
-            public BufferLine(String line, String eolStr)
-                throws BuildException
-            {
-                next = 0;
-                column = 0;
-                this.line = line;
-                this.eolStr = eolStr;
-            }
-
-            public int getNext() {
-                return next;
-            }
-
-            public void setNext(int next) {
-                this.next = next;
-            }
-
-            public int getLookahead() {
-                return lookahead;
-            }
-
-            public void setLookahead(int lookahead) {
-                this.lookahead = lookahead;
-            }
-
-            public char getChar(int i) {
-                return line.charAt(i);
-            }
-
-            public char getNextChar() {
-                return getChar(next);
-            }
-
-            public char getNextCharInc() {
-                return getChar(next++);
-            }
-
-            public int getColumn() {
-                return column;
-            }
-
-            public void setColumn(int col) {
-                column = col;
-            }
-
-            public int incColumn() {
-                return column++;
-            }
-
-            public int length() {
-                return line.length();
-            }
-
-            public int getEolLength() {
-                return eolStr.length();
-            }
-
-            public String getLineString() {
-                return line;
-            }
-
-            public String getEol() {
-                return eolStr;
-            }
-
-            public String substring(int begin) {
-                return line.substring(begin);
-            }
-
-            public String substring(int begin, int end) {
-                return line.substring(begin, end);
-            }
-
-            public void setState(int state) {
-                OneLiner.this.setState(state);
-            }
-
-            public int getState() {
-                return OneLiner.this.getState();
-            }
-        }
-    }
-
-    /**
-     * Enumerated attribute with the values "asis", "add" and "remove".
-     */
-    public static class AddAsisRemove extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"add", "asis", "remove"};
-        }
-    }
-
-    /**
-     * Enumerated attribute with the values "asis", "cr", "lf" and "crlf".
-     */
-    public static class CrLf extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"asis", "cr", "lf", "crlf"};
-        }
-    }
-
-}
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 6c134dc..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 <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</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 d70dfcc..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(File zipFilename) {
-        zipFile = zipFilename;
-    }
-
-    public void setSrc(File src) {
-        source = 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 2a8e48f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Jar.java
+++ /dev/null
@@ -1,331 +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 org.apache.tools.zip.*;
-
-import java.io.*;
-import java.util.Enumeration;
-
-/**
- * Creates a JAR archive.
- * 
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- */
-public class Jar extends Zip {
-
-    private File manifestFile;
-    private Manifest manifest;
-    private Manifest execManifest;  
-    
-    /** true if a manifest has been specified in the task */
-    private boolean buildFileManifest = false;
-    
-    public Jar() {
-        super();
-        archiveType = "jar";
-        emptyBehavior = "create";
-        setEncoding("UTF8");
-    }
-
-    public void setJarfile(File jarFile) {
-        super.setZipfile(jarFile);
-    }
-
-    public void addConfiguredManifest(Manifest newManifest) throws ManifestException {
-        if (manifest == null) {
-            manifest = getDefaultManifest();
-        }
-        manifest.merge(newManifest);
-        buildFileManifest = true;
-    }
-    
-    public void setManifest(File manifestFile) {
-        if (!manifestFile.exists()) {
-            throw new BuildException("Manifest file: " + manifestFile + " does not exist.", 
-                                     getLocation());
-        }
-
-        this.manifestFile = manifestFile;
-        
-        InputStream is = null;
-        try {
-            is = new FileInputStream(manifestFile);
-            Manifest newManifest = new Manifest(is);
-            if (manifest == null) {
-                manifest = getDefaultManifest();
-            }
-            manifest.merge(newManifest);
-        }
-        catch (ManifestException e) {
-            log("Manifest is invalid: " + e.getMessage(), Project.MSG_ERR);
-            throw new BuildException("Invalid Manifest: " + manifestFile, e, getLocation());
-        }
-        catch (IOException e) {
-            throw new BuildException("Unable to read manifest file: " + manifestFile, e);
-        }
-        finally {
-            if (is != null) {
-                try {
-                    is.close();
-                }
-                catch (IOException e) {
-                    // do nothing
-                }
-            }
-        }
-    }
-
-    public void addMetainf(ZipFileSet fs) {
-        // We just set the prefix for this fileset, and pass it up.
-        fs.setPrefix("META-INF/");
-        super.addFileset(fs);
-    }
-
-    protected void initZipOutputStream(ZipOutputStream zOut)
-        throws IOException, BuildException
-    {
-        try {
-            // If no manifest is specified, add the default one.
-            if (manifest == null) {
-                execManifest = null;
-            }
-            else {
-                execManifest = new Manifest();
-                execManifest.merge(manifest);
-            }
-            zipDir(null, zOut, "META-INF/");
-            super.initZipOutputStream(zOut);
-        }
-        catch (ManifestException e) {
-                log("Manifest is invalid: " + e.getMessage(), Project.MSG_ERR);
-                throw new BuildException("Invalid Manifest", e, getLocation());
-        }
-    }
-        
-    private Manifest getDefaultManifest() {
-        try {
-            String s = "/org/apache/tools/ant/defaultManifest.mf";
-            InputStream in = this.getClass().getResourceAsStream(s);
-            if (in == null) {
-                throw new BuildException("Could not find default manifest: " + s);
-            }
-            return new Manifest(in);
-        }
-        catch (ManifestException e) {
-            throw new BuildException("Default manifest is invalid !!");
-        }
-        catch (IOException e) {
-            throw new BuildException("Unable to read default manifest", e);
-        }
-    }   
-    
-    protected void finalizeZipOutputStream(ZipOutputStream zOut)
-        throws IOException, BuildException {
-
-        if (execManifest == null) {
-            execManifest = getDefaultManifest();
-        }
-
-        for (Enumeration e = execManifest.getWarnings(); e.hasMoreElements(); ) {
-            log("Manifest warning: " + (String)e.nextElement(), Project.MSG_WARN);
-        }
-        
-        // time to write the manifest
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        PrintWriter writer = new PrintWriter(baos);
-        execManifest.write(writer);
-        writer.flush();
-        
-        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        super.zipFile(bais, zOut, "META-INF/MANIFEST.MF", System.currentTimeMillis());
-        super.finalizeZipOutputStream(zOut);
-    }
-
-    /**
-     * Handle situation when we encounter a manifest file
-     *
-     * If we haven't been given one, we use this one.
-     *
-     * If we have, we merge the manifest in, provided it is a new file
-     * and not the old one from the JAR we are updating
-     */
-    private void zipManifestEntry(InputStream is) throws IOException {
-        try {
-            if (execManifest == null) {
-                execManifest = new Manifest(is);
-            }
-            else if (isAddingNewFiles()) {
-                execManifest.merge(new Manifest(is));
-            }
-        }
-        catch (ManifestException e) {
-            log("Manifest is invalid: " + e.getMessage(), Project.MSG_ERR);
-            throw new BuildException("Invalid Manifest", e, getLocation());
-        }
-    }
-    
-    protected void zipFile(File file, ZipOutputStream zOut, String vPath)
-        throws IOException
-    {
-        // If the file being added is META-INF/MANIFEST.MF, we merge it with the
-        // current manifest 
-        if (vPath.equalsIgnoreCase("META-INF/MANIFEST.MF"))  {
-            InputStream is = null;
-            try {
-                is = new FileInputStream(file);
-                zipManifestEntry(is);
-            }
-            catch (IOException e) {
-                throw new BuildException("Unable to read manifest file: " + file, e);
-            }
-            finally {
-                if (is != null) {
-                    try {
-                        is.close();
-                    }
-                    catch (IOException e) {
-                        // do nothing
-                    }
-                }
-            }
-        } else {
-            super.zipFile(file, zOut, vPath);
-        }
-    }
-
-    protected void zipFile(InputStream is, ZipOutputStream zOut, String vPath, long lastModified)
-        throws IOException
-    {
-        // If the file being added is META-INF/MANIFEST.MF, we merge it with the
-        // current manifest 
-        if (vPath.equalsIgnoreCase("META-INF/MANIFEST.MF"))  {
-            try {
-                zipManifestEntry(is);
-            }
-            catch (IOException e) {
-                throw new BuildException("Unable to read manifest file: ", e);
-            }
-        } else {
-            super.zipFile(is, zOut, vPath, lastModified);
-        }
-    }
-
-    /**
-     * Check whether the archive is up-to-date; 
-     * @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 {
-        // need to handle manifest as a special check
-        if (buildFileManifest || manifestFile == null) {
-            java.util.zip.ZipFile theZipFile = null;
-            try {
-                theZipFile = new java.util.zip.ZipFile(zipFile);
-                java.util.zip.ZipEntry entry = theZipFile.getEntry("META-INF/MANIFEST.MF");
-                if (entry == null) {
-                    log("Updating jar since the current jar has no manifest", Project.MSG_VERBOSE);
-                    return false;
-                }
-                Manifest currentManifest = new Manifest(theZipFile.getInputStream(entry));
-                if (manifest == null) {
-                    manifest = getDefaultManifest();
-                }
-                if (!currentManifest.equals(manifest)) {
-                    log("Updating jar since jar manifest has changed", Project.MSG_VERBOSE);
-                    return false;
-                }
-            }
-            catch (Exception e) {
-                // any problems and we will rebuild
-                log("Updating jar since cannot read current jar manifest: " + e.getClass().getName() + e.getMessage(), 
-                    Project.MSG_VERBOSE);
-                return false;
-            }
-            finally {
-                if (theZipFile != null) {
-                    try {
-                        theZipFile.close();
-                    }
-                    catch (IOException e) {
-                        //ignore
-                    }
-                }
-            }
-        }
-        else if (manifestFile.lastModified() > zipFile.lastModified()) {
-            return false;
-        }
-        return super.isUpToDate(scanners, zipFile);
-    }
-        
-    protected boolean createEmptyZip(File zipFile) {
-        // Jar files always contain a manifest and can never be empty        
-        return false;
-    }
-    
-    /**
-     * Make sure we don't think we already have a MANIFEST next time this task
-     * gets executed.
-     */
-    protected void cleanUp() {
-        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 fab7af7..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Java.java
+++ /dev/null
@@ -1,370 +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.ExitException;
-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 PrintStream outStream = null;
-    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 && cmdl.getJar() == null) {
-            throw new BuildException("Classname must not be null.");
-        }
-        if (!fork && cmdl.getJar() != null){
-            throw new BuildException("Cannot execute a jar in non-forked mode. Please set fork='true'. ");
-        }
-
-        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);
-            try {
-                run(cmdl);
-                return 0;
-            }
-            catch (ExitException ex) {
-                return ex.getStatus();
-            }
-        }
-    }
-
-    /**
-     * 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 jar name...
-     */
-    public void setJar(File jarfile) throws BuildException {
-        if ( cmdl.getClassname() != null ){
-            throw new BuildException("Cannot use 'jar' and 'classname' attributes in same command.");
-        }
-        cmdl.setJar(jarfile.getAbsolutePath());
-    }
-
-    /**
-     * Set the class name.
-     */
-    public void setClassname(String s) throws BuildException {
-        if ( cmdl.getJar() != null ){
-            throw new BuildException("Cannot use 'jar' and 'classname' attributes in same command");
-        }
-        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){
-        cmdl.setMaxmemory(max);
-    }
-
-    public void setJVMVersion(String value) {
-        cmdl.setVmversion(value);
-    }
-    
-    protected void handleOutput(String line) {
-        if (outStream != null) {
-            outStream.println(line);
-        }
-        else {
-            super.handleOutput(line);
-        }
-    }
-    
-    protected void handleErrorOutput(String line) {
-        if (outStream != null) {
-            outStream.println(line);
-        }
-        else {
-            super.handleErrorOutput(line);
-        }
-    }
-    
-    /**
-     * 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 {
-                outStream = new PrintStream(new FileOutputStream(out));
-                exe.execute(project);
-            } catch (IOException io) {
-                throw new BuildException(io, location);
-            }
-            finally {
-                if (outStream != null) {
-                    outStream.close();
-                }
-            }
-        }
-        else {
-            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 bb672a9..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Javac.java
+++ /dev/null
@@ -1,558 +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;
-    private boolean fork = false;
-    private boolean nowarn = 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;
-    }
-
-    /**
-     * Sets whether to fork the javac compiler.
-     */    
-    public void setFork(boolean fork) 
-    {
-	this.fork = fork;
-    }
-	
-
-    /**
-     * Sets whether the -nowarn option should be used.
-     */
-    public void setNowarn(boolean flag) {
-        this.nowarn = flag;
-    }
-
-    /**
-     * Should the -nowarn option be used.
-     */
-    public boolean getNowarn() {
-        return nowarn;
-    }
-
-    /**
-     * 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 (fork) {
-	    if (compiler != null) {
-                if (isJdkCompiler(compiler)) {
-                    log("Since fork is true, ignoring build.compiler setting.",
-                        Project.MSG_WARN);
-                    compiler = "extJavac";
-                }
-                else {
-                    log("Since build.compiler setting isn't classic or modern, ignoring fork setting.", Project.MSG_WARN);
-                }
-	    }
-            else {
-                compiler = "extJavac";
-            }
-	} 
-
-	if (compiler == null) {
-            if (Project.getJavaVersion() != Project.JAVA_1_1 &&
-                Project.getJavaVersion() != Project.JAVA_1_2) {
-                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;
-    }
-
-    protected boolean isJdkCompiler(String compiler) {
-        return "modern".equals(compiler) ||
-            "classic".equals(compiler) ||
-            "javac1.1".equals(compiler) ||
-            "javac1.2".equals(compiler) ||
-            "javac1.3".equals(compiler) ||
-            "javac1.4".equals(compiler);
-    }
-
-}
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 1e68496..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
+++ /dev/null
@@ -1,1175 +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.ProjectHelper;
-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();
-        }
-    }
-
-    public static class PackageName {
-        private String name;
-        public void setName(String name) {
-            this.name = name;
-        }
-        public String getName() {
-            return name;
-        }
-        public String toString() {
-            return getName();
-        }
-    }
-
-    public static class SourceFile {
-        private File file;
-        public void setFile(File file) {
-            this.file = file;
-        }
-        public File getFile() {
-            return file;
-        }
-    }
-
-    public static class Html {
-        private StringBuffer text = new StringBuffer();
-        public void addText(String t) {
-            text.append(t);
-        }
-        public String getText() {
-            return text.toString();
-        }
-    }
-
-    public static class AccessType extends EnumeratedAttribute {
-        public String[] getValues() {
-            // Protected first so if any GUI tool offers a default
-            // based on enum #0, it will be right.
-            return new String[] {"protected", "public", "package", "private"};
-        }
-    }
-
-    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 add12ArgIfNotEmpty(String key, String value) {
-        if (!javadoc1) {
-            if (value != null && value.length() != 0) {
-                cmd.createArgument().setValue(key);
-                cmd.createArgument().setValue(value);
-            } else {
-                project.log(this, 
-                            "Warning: Leaving out empty argument '" + key + "'", 
-                            Project.MSG_WARN);
-            }
-        } 
-    }
-
-    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 Vector sourceFiles = new Vector();
-    private Vector packageNames = new Vector(5);
-    private Vector excludePackageNames = new Vector(1);
-    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;
-    private Html doctitle = null;
-    private Html header = null;
-    private Html footer = null;
-    private Html bottom = null;
-    private boolean useExternalFile = false;
-    private File tmpList = null;
-
-    /**
-     * Work around command line length limit by using an external file
-     * for the sourcefiles.
-     */
-    public void setUseExternalFile(boolean b) {
-        if (!javadoc1) {
-            useExternalFile = b;
-        }
-    }
-
-    /**
-     * 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().setLine(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) {
-        StringTokenizer tok = new StringTokenizer(src, ",");
-        while (tok.hasMoreTokens()) {
-            String f = tok.nextToken();
-            SourceFile sf = new SourceFile();
-            sf.setFile(project.resolveFile(f));
-            addSource(sf);
-        }
-    }
-    public void addSource(SourceFile sf) {
-        sourceFiles.addElement(sf);
-    }
-    public void setPackagenames(String src) {
-        StringTokenizer tok = new StringTokenizer(src, ",");
-        while (tok.hasMoreTokens()) {
-            String p = tok.nextToken();
-            PackageName pn = new PackageName();
-            pn.setName(p);
-            addPackage(pn);
-        }
-    }
-    public void addPackage(PackageName pn) {
-        packageNames.addElement(pn);
-    }
-
-    public void setExcludePackageNames(String src) {
-        StringTokenizer tok = new StringTokenizer(src, ",");
-        while (tok.hasMoreTokens()) {
-            String p = tok.nextToken();
-            PackageName pn = new PackageName();
-            pn.setName(p);
-            addExcludePackage(pn);
-        }
-    }
-    public void addExcludePackage(PackageName pn) {
-        excludePackageNames.addElement(pn);
-    }
-
-    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 setAccess(AccessType at) {
-        cmd.createArgument().setValue("-" + at.getValue());
-    }
-    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) {
-        add12ArgIfNotEmpty("-windowtitle", src);
-    }
-    public void setDoctitle(String src) {
-        Html h = new Html();
-        h.addText(src);
-        addDoctitle(h);
-    }
-    public void addDoctitle(Html text) {
-        if (!javadoc1) {
-            doctitle = text;
-        }
-    }
-    public void setHeader(String src) {
-        Html h = new Html();
-        h.addText(src);
-        addHeader(h);
-    }
-    public void addHeader(Html text) {
-        if (!javadoc1) {
-            header = text;
-        }
-    }
-
-    public void setFooter(String src) {
-        Html h = new Html();
-        h.addText(src);
-        addFooter(h);
-    }
-    public void addFooter(Html text) {
-        if (!javadoc1) {
-            footer = text;
-        }
-    }
-
-    public void setBottom(String src) {
-        Html h = new Html();
-        h.addText(src);
-        addBottom(h);
-    }
-    public void addBottom(Html text) {
-        if (!javadoc1) {
-            bottom = text;
-        }
-    }
-
-    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(project.resolveFile(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 File packagelistLoc;
-        
-        public LinkArgument() {
-        }
-
-        public void setHref(String hr) {
-            href = hr;
-        }
-        
-        public String getHref() {
-            return href;
-        }
-        
-        public void setPackagelistLoc(File src) {
-            packagelistLoc = src;
-        }
-        
-        public File 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 Html title;
-        private Vector packages = new Vector(3);
-
-        public GroupArgument() {
-        }
-
-        public void setTitle(String src) {
-            Html h = new Html();
-            h.addText(src);
-            addTitle(h);
-        }
-        public void addTitle(Html text) {
-            title = text;
-        }
-
-        public String getTitle() {
-            return title != null ? title.getText() : null;
-        }
-
-        public void setPackages(String src) {
-            StringTokenizer tok = new StringTokenizer(src, ",");
-            while (tok.hasMoreTokens()) {
-                String p = tok.nextToken();
-                PackageName pn = new PackageName();
-                pn.setName(p);
-                addPackage(pn);
-            }
-        }
-        public void addPackage(PackageName pn) {
-            packages.addElement(pn);
-        }
-
-        public String getPackages() {
-            StringBuffer p = new StringBuffer( "\"" );
-            for (int i = 0; i < packages.size(); i++) {
-                if ( i > 0 ) {
-                    p.append( ":" );
-                }
-                p.append( packages.elementAt(i).toString() );
-            }
-            p.append( "\"" );
-            return p.toString();
-        }
-    }
-    
-    public void setCharset(String src) {
-        this.add12ArgIfNotEmpty("-charset", 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);
-
-        if (doctitle != null) {
-            cmd.createArgument().setValue("-doctitle");
-            cmd.createArgument().setValue(expand(doctitle.getText()));
-        }
-        if (header != null) {
-            cmd.createArgument().setValue("-header");
-            cmd.createArgument().setValue(expand(header.getText()));
-        }
-        if (footer != null) {
-            cmd.createArgument().setValue("-footer");
-            cmd.createArgument().setValue(expand(footer.getText()));
-        }
-        if (bottom != null) {
-            cmd.createArgument().setValue("-bottom");
-            cmd.createArgument().setValue(expand(bottom.getText()));
-        }
-
-        Commandline toExecute = (Commandline)cmd.clone();
-	toExecute.setExecutable( getJavadocExecutableName() );
-
-// ------------------------------------------------ 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()) {
-                        File 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");
-                        }
-                        File packageList = new File(packageListLocation, "package-list");
-                        if (packageList.exists()) {
-                            toExecute.createArgument().setValue("-linkoffline");
-                            toExecute.createArgument().setValue(la.getHref());
-                            toExecute.createArgument().setValue(packageListLocation.getAbsolutePath());
-                        }
-                        else {
-                            log("Warning: No package list was found at " + packageListLocation, 
-                                Project.MSG_VERBOSE);
-                        }
-                    }
-                    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 org.apache.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(expand(title));
-                    toExecute.createArgument().setValue(packages);
-                }
-            }
-
-        }
-
-        tmpList = null;
-        if (packageNames.size() > 0) {
-            Vector packages = new Vector();
-            Enumeration enum = packageNames.elements();
-            while (enum.hasMoreElements()) {
-                PackageName pn = (PackageName) enum.nextElement();
-                String name = pn.getName().trim();
-                if (name.endsWith(".*")) {
-                    packages.addElement(name);
-                } else {
-                    toExecute.createArgument().setValue(name);
-                }
-            }
-
-            Vector excludePackages = new Vector();
-            if (excludePackageNames.size() > 0) {
-                enum = excludePackageNames.elements();
-                while (enum.hasMoreElements()) {
-                    PackageName pn = (PackageName) enum.nextElement();
-                    excludePackages.addElement(pn.getName().trim());
-                }
-            }
-            if (packages.size() > 0) {
-                evaluatePackages(toExecute, sourcePath, packages, excludePackages);
-            }
-        }
-
-        if (sourceFiles.size() > 0) {
-            PrintWriter srcListWriter = null;
-            try {
-
-                /**
-                 * Write sourcefiles to a temporary file if requested.
-                 */
-                if (useExternalFile) {
-                    if (tmpList == null) {
-                        tmpList = createTempFile();
-                        toExecute.createArgument().setValue("@" + tmpList.getAbsolutePath());
-                    }
-                    srcListWriter = new PrintWriter(new FileWriter(tmpList.getAbsolutePath(), 
-                                                                   true));
-                }
-            
-                Enumeration enum = sourceFiles.elements();
-                while (enum.hasMoreElements()) {
-                    SourceFile sf = (SourceFile) enum.nextElement();
-                    String sourceFileName = sf.getFile().getAbsolutePath();
-                    if (useExternalFile) {
-                        srcListWriter.println(sourceFileName);
-                    } else {
-                        toExecute.createArgument().setValue(sourceFileName);
-                    }
-                }
-
-            } catch (IOException e) {
-                throw new BuildException("Error creating temporary file", 
-                                         e, location);
-            } finally {
-                if (srcListWriter != null) {
-                    srcListWriter.close();
-                }
-            }
-        }
-
-        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);
-        
-        /*
-         * No reason to change the working directory as all filenames and
-         * path components have been resolved already.
-         *
-         * Avoid problems with command line length in some environments.
-         */
-        exe.setWorkingDirectory(null);
-        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 {
-
-            if (tmpList != null) {
-                tmpList.delete();
-                tmpList = null;
-            }
-            
-            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, Vector excludePackages) {
-        log("Source path = " + sourcePath.toString(), Project.MSG_VERBOSE);
-        StringBuffer msg = new StringBuffer("Packages = ");
-        for (int i=0; i<packages.size(); i++) {
-            if (i > 0) {
-                msg.append(",");
-            }
-            msg.append(packages.elementAt(i));
-        }
-        log(msg.toString(), Project.MSG_VERBOSE);
-
-        msg.setLength(0);
-        msg.append("Exclude Packages = ");
-        for (int i=0; i<excludePackages.size(); i++) {
-            if (i > 0) {
-                msg.append(",");
-            }
-            msg.append(excludePackages.elementAt(i));
-        }
-        log(msg.toString(), 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
-
-        e = excludePackages.elements();
-        while (e.hasMoreElements()) {
-            String pkg = (String)e.nextElement();
-            pkg = pkg.replace('.','/');
-            if (pkg.endsWith("*")) {
-                pkg += "*";
-            }
-            
-            fs.createExclude().setName(pkg);
-        }
-        
-        PrintWriter packageListWriter = null;
-        try {
-            if (useExternalFile) {
-                tmpList = createTempFile();
-                toExecute.createArgument().setValue("@" + tmpList.getAbsolutePath());
-                packageListWriter = new PrintWriter(new FileWriter(tmpList));
-            }
-
-
-            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)) {
-                            if (useExternalFile) {
-                                packageListWriter.println(pkgDir);
-                            } else {
-                                toExecute.createArgument().setValue(pkgDir);
-                            }
-                            addedPackages.addElement(pkgDir);
-                        }
-                    }
-                }
-            }
-        } catch (IOException ioex) {
-            throw new BuildException("Error creating temporary file", 
-                                     ioex, location);
-        } finally {
-            if (packageListWriter != null) {
-                packageListWriter.close();
-            }
-        }
-    }
-
-    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;
-            }
-        }
-    }
-
-    /**
-     * Convenience method to expand properties.
-     */
-    protected String expand(String content) {
-        return ProjectHelper.replaceProperties(project, content, 
-                                               project.getProperties());
-    }
-
-    /**
-     * Creates a temporary file.
-     */
-    private File createTempFile() {
-        return new File("javadoc" + (new Random(System.currentTimeMillis())).nextLong());
-    }
-
-    private String getJavadocExecutableName()
-    {
-	// This is the most common extension case - exe for windows and OS/2, 
-        // nothing for *nix.
-        String os = System.getProperty("os.name").toLowerCase();
-        boolean dosBased = 
-            os.indexOf("windows") >= 0 || os.indexOf("os/2") >= 0;
-	String extension =  dosBased? ".exe" : "";
-
-	// Look for javadoc in the java.home/../bin directory.  Unfortunately
-	// on Windows java.home doesn't always refer to the correct location, 
-	// so we need to fall back to assuming javadoc is somewhere on the
-	// PATH.
-	File jdocExecutable = new File( System.getProperty("java.home") +
-		"/../bin/javadoc" + extension );
-
-	if (jdocExecutable.exists())
-	{
-	    return jdocExecutable.getAbsolutePath();
-	}
-	else
-	{
-	    log( "Unable to locate " + jdocExecutable.getAbsolutePath() +
-		    ". Using \"javadoc\" instead.", Project.MSG_VERBOSE );
-	    return "javadoc";
-	}
-    }
-    
-}
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 39733ae..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(File s) {
-        this.source = s;
-    }
-
-    /**
-        Set the destination file.
-    */
-    public void setDest(File dest) {
-        this.dest = 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 783c793..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.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;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-
-import java.io.OutputStream;
-import java.io.InputStream;
-import java.io.IOException;
-
-/**
- * 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));
-    }
-
-    public void stop() {
-        super.stop();
-        try {
-            getErr().close();
-            getOut().close();
-        } catch (IOException e) {
-            // plain impossible
-            throw new BuildException(e);
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Manifest.java b/src/main/org/apache/tools/ant/taskdefs/Manifest.java
deleted file mode 100644
index 947aa97..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Manifest.java
+++ /dev/null
@@ -1,626 +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;
-
-import java.util.*;
-import java.io.*;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * Class to manage Manifest information
- * 
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class Manifest {
-    /** The standard manifest version header */
-    static public final String ATTRIBUTE_MANIFEST_VERSION = "Manifest-Version";
-    
-    /** The standard Signature Version header */
-    static public final String ATTRIBUTE_SIGNATURE_VERSION = "Signature-Version";
-    
-    /** The Name Attribute is the first in a named section */
-    static public final String ATTRIBUTE_NAME = "Name";
-    
-    /** THe From Header is disallowed in a Manifest */    
-    static public final String ATTRIBUTE_FROM = "From";
-    
-    /** Default Manifest version if one is not specified */
-    static public final String DEFAULT_MANIFEST_VERSION = "1.0";
-    
-    /** The max length of a line in a Manifest */
-    static public final int MAX_LINE_LENGTH = 70;
-    
-    /**
-     * Class to hold manifest attributes
-     */
-    static public class Attribute {
-        /** The attribute's name */
-        private String name = null;
-        
-        /** The attribute's value */
-        private String value = null;
-
-        /** 
-         * Construct an empty attribute */
-        public Attribute() {
-        }
-        
-        /**
-         * Construct an attribute by parsing a line from the Manifest
-         * 
-         * @param line the line containing the attribute name and value
-         *
-         * @throws ManifestException if the line is not valid 
-         */
-        public Attribute(String line) throws ManifestException {
-            parse(line);
-        }
-        
-        /**
-         * Construct a manifest by specifying its name and value 
-         * 
-         * @param name the attribute's name
-         * @param value the Attribute's value
-         */
-        public Attribute(String name, String value) {
-            this.name = name;
-            this.value = value;
-        }
-        
-        public boolean equals(Object rhs) {
-            if (!(rhs instanceof Attribute)) {
-                return false;
-            }
-            
-            Attribute rhsAttribute = (Attribute)rhs;
-            return (name != null && rhsAttribute.name != null &&
-                    name.toLowerCase().equals(rhsAttribute.name.toLowerCase()) &&
-                    value != null && value.equals(rhsAttribute.value));
-        }
-                    
-        /**
-         * Parse a line into name and value pairs
-         *
-         * @param line the line to be parsed
-         *
-         * @throws ManifestException if the line does not contain a colon
-         * separating the name and value
-         */
-        public void parse(String line) throws ManifestException {
-            int index = line.indexOf(": ");
-            if (index == -1) {
-                throw new ManifestException("Manifest line \"" + line + "\" is not valid");
-            }
-            name = line.substring(0, index);
-            value = line.substring(index + 2);
-        } 
-        
-        /**
-         * Set the Attribute's name
-         * 
-         * @param name the attribute's name
-         */
-        public void setName(String name) {
-            this.name = name;
-        }
-        
-        /**
-         * Get the Attribute's name
-         *
-         * @return the attribute's name.
-         */
-        public String getName() {
-            return name;
-        }
-        
-        /**
-         * Set the Attribute's value
-         * 
-         * @param value the attribute's value
-         */
-        public void setValue(String value) {
-            this.value = value;
-        }
-        
-        /**
-         * Get the Attribute's value
-         *
-         * @return the attribute's value.
-         */
-        public String getValue() {
-            return value;
-        }
-        
-        /**
-         * Add a continuation line from the Manifest file
-         *
-         * When lines are too long in a manifest, they are continued on the 
-         * next line by starting with a space. This method adds the continuation
-         * data to the attribute value by skipping the first character.
-         */
-        public void addContinuation(String line) {
-            value += line.substring(1);
-        }
-        
-        /**
-         * Write the attribute out to a print writer.
-         *
-         * @param writer the Writer to which the attribute is written
-         *
-         * @throws IOException if the attribte value cannot be written
-         */
-        public void write(PrintWriter writer) throws IOException {
-            String line = name + ": " + value;
-            while (line.getBytes().length > MAX_LINE_LENGTH) {
-                // try to find a MAX_LINE_LENGTH byte section
-                int breakIndex = MAX_LINE_LENGTH;
-                String section = line.substring(0, breakIndex);
-                while (section.getBytes().length > MAX_LINE_LENGTH && breakIndex > 0) {
-                    breakIndex--;
-                    section = line.substring(0, breakIndex);
-                }
-                if (breakIndex == 0) {
-                    throw new IOException("Unable to write manifest line " + name + ": " + value);
-                }
-                writer.println(section);
-                line = " " + line.substring(breakIndex);
-            }
-            writer.println(line);
-        }    
-    }
-
-    /** 
-     * Class to represent an individual section in the 
-     * Manifest. A section consists of a set of attribute values,
-     * separated from other sections by a blank line.
-     */
-    static public class Section {
-        private Vector warnings = new Vector();
-        
-        /** The section's name if any. The main section in a manifest is unnamed.*/
-        private String name = null;
-        
-        /** The section's attributes.*/
-        private Hashtable attributes = new Hashtable();
-        
-        /**
-         * Set the Section's name
-         * 
-         * @param name the section's name
-         */
-        public void setName(String name) {
-            this.name = name;
-        }
-        
-        /**
-         * Get the Section's name
-         *
-         * @return the section's name.
-         */
-        public String getName() {
-            return name;
-        }
-        
-        /**
-         * Read a section through a reader 
-         * 
-         * @param reader the reader from which the section is read
-         *
-         * @return the name of the next section if it has been read as part of this 
-         *         section - This only happens if the Manifest is malformed.
-         * 
-         * @throws ManifestException if the section is not valid according to the JAR spec
-         * @throws IOException if the section cannot be read from the reader.
-         */
-        public String read(BufferedReader reader) throws ManifestException, IOException {
-            Attribute attribute = null;
-            while (true) { 
-                String line = reader.readLine();
-                if (line == null || line.length() == 0) {
-                    return null;
-                }
-                if (line.charAt(0) == ' ') {
-                    // continuation line
-                    if (attribute == null) {
-                        throw new ManifestException("Can't start an attribute with a continuation line " + line);
-                    }
-                    attribute.addContinuation(line);
-                }
-                else {
-                    attribute = new Attribute(line);
-                    String nameReadAhead = addAttributeAndCheck(attribute);
-                    if (nameReadAhead != null) {
-                        return nameReadAhead;
-                    }
-                }
-            }
-        }
-        
-        /**
-         * Merge in another section
-         *
-         * @param section the section to be merged with this one.
-         *
-         * @throws ManifestException if the sections cannot be merged.
-         */
-        public void merge(Section section) throws ManifestException {
-            if (name == null && section.getName() != null ||
-                    name != null && !(name.equalsIgnoreCase(section.getName()))) {
-                throw new ManifestException("Unable to merge sections with different names");
-            }
-            
-            for (Enumeration e = section.attributes.keys(); e.hasMoreElements();) {
-                String attributeName = (String)e.nextElement();
-                // the merge file always wins
-                attributes.put(attributeName, section.attributes.get(attributeName));
-            }
-            
-            // add in the warnings
-            for (Enumeration e = section.warnings.elements(); e.hasMoreElements();) {
-                warnings.addElement(e.nextElement());
-            }
-        }
-        
-        /**
-         * Write the section out to a print writer.
-         *
-         * @param writer the Writer to which the section is written
-         *
-         * @throws IOException if the section cannot be written
-         */
-        public void write(PrintWriter writer) throws IOException {
-            if (name != null) {
-                Attribute nameAttr = new Attribute(ATTRIBUTE_NAME, name);
-                nameAttr.write(writer);
-            }
-            for (Enumeration e = attributes.elements(); e.hasMoreElements();) {
-                Attribute attribute = (Attribute)e.nextElement();
-                attribute.write(writer);
-            }
-            writer.println();
-        }
-    
-        /**
-         * Get the value of the attribute with the name given.
-         *
-         * @param attributeName the name of the attribute to be returned.
-         *
-         * @return the attribute's value or null if the attribute does not exist
-         *         in the section
-         */         
-        public String getAttributeValue(String attributeName) {
-            Attribute attribute = (Attribute)attributes.get(attributeName.toLowerCase());
-            if (attribute == null) {
-                return null;
-            }
-            return attribute.getValue();
-        }
-
-        /**
-         * Remove tge given attribute from the section 
-         *
-         * @param attributeName the name of the attribute to be removed.
-         */
-        public void removeAttribute(String attributeName) {
-            attributes.remove(attributeName.toLowerCase());
-        }
-
-        public void addConfiguredAttribute(Attribute attribute) throws ManifestException {
-            String check = addAttributeAndCheck(attribute);
-            if (check != null) {
-                throw new BuildException("Use the \"name\" attribute of the <section> element rather than using " +
-                                         "the \"Name\" attribute");
-            }
-        }
-        
-        /**
-         * Add an attribute to the section
-         *
-         * @param attribute the attribute to be added.
-         *
-         * @return the value of the attribute if it is a name attribute - null other wise
-         *
-         * @throws ManifestException if the attribute already exists in this section.
-         */
-        public String addAttributeAndCheck(Attribute attribute) throws ManifestException {
-            if (attribute.getName() == null || attribute.getValue() == null) {
-                throw new BuildException("Attributes must have name and value");
-            }
-            if (attribute.getName().equalsIgnoreCase(ATTRIBUTE_NAME)) {
-                warnings.addElement("\"" + ATTRIBUTE_NAME + "\" attributes should not occur in the " +
-                                    "main section and must be the first element in all " + 
-                                    "other sections: \"" +attribute.getName() + ": " + attribute.getValue() + "\"");  
-                return attribute.getValue();
-            }
-            
-            if (attribute.getName().toLowerCase().startsWith(ATTRIBUTE_FROM.toLowerCase())) {
-                warnings.addElement("Manifest attributes should not start with \"" +
-                                    ATTRIBUTE_FROM + "\" in \"" +attribute.getName() + ": " + attribute.getValue() + "\"");  
-            }
-            else if (attributes.containsKey(attribute.getName().toLowerCase())) {
-                throw new ManifestException("The attribute \"" + attribute.getName() + "\" may not " + 
-                                            "occur more than once in the same section");
-            }
-            else {
-                attributes.put(attribute.getName().toLowerCase(), attribute);
-            }
-            return null;
-        }
-
-        public Enumeration getWarnings() {
-            return warnings.elements();
-        }
-        
-        public boolean equals(Object rhs) {
-            if (!(rhs instanceof Section)) {
-                return false;
-            }
-            
-            Section rhsSection = (Section)rhs;
-            if (attributes.size() != rhsSection.attributes.size()) {
-                return false;
-            }
-        
-            for (Enumeration e = attributes.elements(); e.hasMoreElements();) {
-                Attribute attribute  = (Attribute)e.nextElement();
-                Attribute rshAttribute = (Attribute)rhsSection.attributes.get(attribute.getName().toLowerCase());
-                if (!attribute.equals(rshAttribute)) {
-                    return false;
-                }
-            }
-            
-            return true;
-        }
-    }        
-
-
-    /** The version of this manifest */
-    private String manifestVersion = DEFAULT_MANIFEST_VERSION;
-    
-    /** The main section of this manifest */ 
-    private Section mainSection = new Section();
-    
-    /** The named sections of this manifest */
-    private Hashtable sections = new Hashtable();
-
-    /** Construct an empty manifest */
-    public Manifest() {
-    }
-    
-    /**
-     * Read a manifest file from the given input stream
-     *
-     * @param is the input stream from which the Manifest is read 
-     * 
-     * @throws ManifestException if the manifest is not valid according to the JAR spec
-     * @throws IOException if the manifest cannot be read from the reader.
-     */
-    public Manifest(InputStream is) throws ManifestException, IOException {
-        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-        String line = reader.readLine();
-        if (line == null) {
-            return;
-        }
-        
-        // This should be the manifest version
-        String nextSectionName = mainSection.read(reader);
-        String readManifestVersion = mainSection.getAttributeValue(ATTRIBUTE_MANIFEST_VERSION);
-        if (readManifestVersion != null) {
-            manifestVersion = readManifestVersion;
-            mainSection.removeAttribute(ATTRIBUTE_MANIFEST_VERSION);
-        }
-
-        while ((line = reader.readLine()) != null) {
-            if (line.length() == 0) {
-                continue;
-            }
-            
-            Section section = new Section();
-            if (nextSectionName == null) {
-                Attribute sectionName = new Attribute(line);
-                if (!sectionName.getName().equalsIgnoreCase(ATTRIBUTE_NAME)) {
-                    throw new ManifestException("Manifest sections should start with a \"" + ATTRIBUTE_NAME + 
-                                                "\" attribute and not \"" + sectionName.getName() + "\"");
-                }
-                nextSectionName = sectionName.getValue();
-            }
-            else {
-                // we have already started reading this section
-                // this line is the first attribute. set it and then let the normal
-                // read handle the rest
-                Attribute firstAttribute = new Attribute(line);
-                section.addAttributeAndCheck(firstAttribute);
-            }
-                    
-            section.setName(nextSectionName);
-            nextSectionName = section.read(reader);
-            addConfiguredSection(section);
-        }
-    }
-    
-    public void addConfiguredSection(Section section) throws ManifestException {
-        if (section.getName() == null) {
-            throw new BuildException("Sections must have a name");
-        }
-        sections.put(section.getName().toLowerCase(), section);
-    }
-    
-    public void addConfiguredAttribute(Attribute attribute) throws ManifestException {
-        mainSection.addConfiguredAttribute(attribute);
-    }
-    
-    /**
-     * Merge the contents of the given manifest into this manifest
-     *
-     * @param other the Manifest to be merged with this one.
-     *
-     * @throws ManifestException if there is a problem merging the manfest according
-     *         to the Manifest spec.
-     */
-    public void merge(Manifest other) throws ManifestException {
-        manifestVersion = other.manifestVersion;
-        mainSection.merge(other.mainSection);
-        for (Enumeration e = other.sections.keys(); e.hasMoreElements();) {
-            String sectionName = (String)e.nextElement();
-            Section ourSection = (Section)sections.get(sectionName);
-            Section otherSection = (Section)other.sections.get(sectionName);
-            if (ourSection == null) {
-                sections.put(sectionName.toLowerCase(), otherSection);
-            }
-            else {
-                ourSection.merge(otherSection);
-            }
-        }
-        
-    }
-    
-    /**
-    * Write the manifest out to a print writer.
-    *
-    * @param writer the Writer to which the manifest is written
-    *
-    * @throws IOException if the manifest cannot be written
-    */
-    public void write(PrintWriter writer) throws IOException {
-        writer.println(ATTRIBUTE_MANIFEST_VERSION + ": " + manifestVersion);
-        String signatureVersion = mainSection.getAttributeValue(ATTRIBUTE_SIGNATURE_VERSION);
-        if (signatureVersion != null) {
-            writer.println(ATTRIBUTE_SIGNATURE_VERSION + ": " + signatureVersion);
-            mainSection.removeAttribute(ATTRIBUTE_SIGNATURE_VERSION);
-        }
-        mainSection.write(writer);
-        if (signatureVersion != null) {
-            try {
-                mainSection.addConfiguredAttribute(new Attribute(ATTRIBUTE_SIGNATURE_VERSION, signatureVersion));
-            }
-            catch (ManifestException e) {
-                // shouldn't happen - ignore
-            }
-        }
-        
-        for (Enumeration e = sections.elements(); e.hasMoreElements();) {
-            Section section = (Section)e.nextElement();
-            section.write(writer);
-        }
-    }
-    
-    /**
-     * Convert the manifest to its string representation
-     *
-     * @return a multiline string with the Manifest as it appears in a Manifest file.
-     */
-    public String toString() {
-        StringWriter sw = new StringWriter();
-        try {
-            write(new PrintWriter(sw));
-        }
-        catch (IOException e) {
-            return null;
-        }
-        return sw.toString();
-    }
-    
-    /**
-     * Get the warnings for this manifest.
-     *
-     * @return an enumeration of warning strings
-     */
-    public Enumeration getWarnings() {
-        Vector warnings = new Vector();
-        
-        for (Enumeration e2 = mainSection.getWarnings(); e2.hasMoreElements();) {
-            warnings.addElement(e2.nextElement());
-        }
-        
-        // create a vector and add in the warnings for all the sections
-        for (Enumeration e = sections.elements(); e.hasMoreElements();) {
-            Section section = (Section)e.nextElement();
-            for (Enumeration e2 = section.getWarnings(); e2.hasMoreElements();) {
-                warnings.addElement(e2.nextElement());
-            }
-        }
-        
-        return warnings.elements();
-    }
-    
-    public boolean equals(Object rhs) {
-        if (!(rhs instanceof Manifest)) {
-            return false;
-        }
-        
-        Manifest rhsManifest = (Manifest)rhs;
-        if (!manifestVersion.equals(rhsManifest.manifestVersion)) {
-            return false;
-        }
-        if (sections.size() != rhsManifest.sections.size()) {
-            return false;
-        }
-        
-        if (!mainSection.equals(rhsManifest.mainSection)) {
-            return false;
-        }
-        
-        for (Enumeration e = sections.elements(); e.hasMoreElements();) {
-            Section section = (Section)e.nextElement();
-            Section rhsSection = (Section)rhsManifest.sections.get(section.getName().toLowerCase());
-            if (!section.equals(rhsSection)) {
-                return false;
-            }
-        }
-        
-        return true;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/ManifestException.java b/src/main/org/apache/tools/ant/taskdefs/ManifestException.java
deleted file mode 100644
index 27b087f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/ManifestException.java
+++ /dev/null
@@ -1,73 +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;
-
-
-import java.io.*;
-
-/**
- * Exception thrown indicating problems in a JAR Manifest
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class ManifestException extends Exception {
-
-    /**
-     * Constructs an exception with the given descriptive message.
-     * @param msg Description of or information about the exception.
-     */
-    public ManifestException(String msg) {
-        super(msg);
-    }
-}
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 126c7a1..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/MatchingTask.java
+++ /dev/null
@@ -1,218 +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 include files list
-     */
-    public PatternSet.NameEntry createIncludesFile() {
-        return fileset.createIncludesFile();
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public PatternSet.NameEntry createExclude() {
-        return fileset.createExclude();
-    }
-
-    /**
-     * add a name entry on the include files list
-     */
-    public PatternSet.NameEntry createExcludesFile() {
-        return fileset.createExcludesFile();
-    }
-    
-    /**
-     * 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 dd5b866..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 " +
-		    "successful 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 a4f23a9..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Move.java
+++ /dev/null
@@ -1,264 +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>
- * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</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);
-
-                if( fromFile.equals( toFile ) ) {
-                    log("Skipping self-move of " + fromFile, verbosity);
-                    continue;
-                }
-
-                boolean moved = false;
-                File f = new File(fromFile);
-                File d = new File(toFile);
-
-                try {
-                    log("Attempting to rename: " + fromFile +
-                        " to " + toFile, verbosity);
-                    moved = renameFile(f, d, filtering, forceOverwrite);
-                } catch (IOException ioe) {
-                    String msg = "Failed to rename " + fromFile 
-                        + " to " + toFile
-                        + " due to " + ioe.getMessage();
-                    throw new BuildException(msg, ioe, location);
-                }
-
-                if (!moved) {
-                    try {
-                        log("Moving " + fromFile + " to " + toFile, verbosity);
-                    
-                        FilterSetCollection executionFilters = new FilterSetCollection();
-                        if (filtering) {
-                            executionFilters.addFilterSet(project.getGlobalFilterSet());
-                        }
-                        for (Enumeration filterEnum = getFilterSets().elements(); filterEnum.hasMoreElements();) {
-                            executionFilters.addFilterSet((FilterSet)filterEnum.nextElement());
-                        }
-                        getFileUtils().copyFile(f, d, executionFilters,
-                                                forceOverwrite);
-                        
-                        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());
-       }
-    }
-
-    /**
-     * Attempts to rename a file from a source to a destination.
-     * If overwrite is set to true, this method overwrites existing file
-     * even if the destination file is newer.  Otherwise, the source file is
-     * renamed only if the destination file is older than it.
-     * Method then checks if token filtering is used.  If it is, this method
-     * returns false assuming it is the responsibility to the copyFile method.
-     *
-     * @throws IOException
-     */
-    protected boolean renameFile(File sourceFile, File destFile,
-                                 boolean filtering, boolean overwrite)
-        throws IOException, BuildException {
-
-        boolean renamed = true;
-        if (!filtering) {
-            // ensure that parent dir of dest file exists!
-            // not using getParentFile method to stay 1.1 compat
-            String parentPath = destFile.getParent();
-            if (parentPath != null) {
-                File parent = new File(parentPath);
-                if (!parent.exists()) {
-                    parent.mkdirs();
-                }
-            }
-
-            if (destFile.exists()) {
-                if (!destFile.delete()) {
-                    throw new BuildException("Unable to remove existing file " 
-                                             + destFile);
-                }
-            }
-            renamed = sourceFile.renameTo(destFile);
-        } else {
-            renamed = false;
-        }
-        return renamed;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Parallel.java b/src/main/org/apache/tools/ant/taskdefs/Parallel.java
deleted file mode 100644
index 6c83b4e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Parallel.java
+++ /dev/null
@@ -1,179 +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;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import java.util.*;
-import java.text.*;
-import java.lang.RuntimeException;
-
-/**
- * Implements a multi threaded task execution.
- * <p>
- * @author Thomas Christen <a href="mailto:chr@active.ch">chr@active.ch</a>
- * @author <a href="mailto:conor@apache.org">Conor MacNeill </a>
- */
-public class Parallel extends Task
-                      implements TaskContainer {
-
-    /** Collection holding the nested tasks */
-    private Vector nestedTasks = new Vector();
-
-
-    /**
-     * Add a nested task to execute parallel (asynchron).
-     * <p>
-     * @param nestedTask  Nested task to be executed in parallel
-     */
-    public void addTask(Task nestedTask) throws BuildException {
-        nestedTasks.addElement(nestedTask);
-    }
-
-    /**
-     * Block execution until the specified time or for a
-     * specified amount of milliseconds and if defined,
-     * execute the wait status.
-     */
-    public void execute() throws BuildException {
-        TaskThread[] threads = new TaskThread[nestedTasks.size()];
-        int threadNumber = 0;
-        for (Enumeration e = nestedTasks.elements(); e.hasMoreElements(); threadNumber++) {
-            Task nestedTask = (Task)e.nextElement();
-            threads[threadNumber] = new TaskThread(threadNumber, nestedTask);
-        }
-
-        // now start all threads        
-        for (int i = 0; i < threads.length; ++i) {
-            threads[i].start();
-        }
-
-        // now join to all the threads 
-        for (int i = 0; i < threads.length; ++i) {
-            try {
-                threads[i].join();
-            }
-            catch (InterruptedException ie) {
-                // who would interrupt me at a time like this?
-            }
-        }
-        
-        // now did any of the threads throw an exception
-        StringBuffer exceptionMessage = new StringBuffer();
-        String lSep = System.getProperty("line.separator");
-        int numExceptions = 0;
-        Throwable firstException = null;
-        Location firstLocation = Location.UNKNOWN_LOCATION;;
-        for (int i = 0; i < threads.length; ++i) {
-            Throwable t = threads[i].getException();
-            if (t != null) {
-                numExceptions++;
-                if (firstException == null) {
-                    firstException = t;
-                }
-                if (t instanceof BuildException && 
-                        firstLocation == Location.UNKNOWN_LOCATION) {
-                    firstLocation = ((BuildException)t).getLocation();
-                }
-                exceptionMessage.append(lSep);
-                exceptionMessage.append(t.getMessage());
-            }
-        }
-        
-        if (numExceptions == 1) {
-            if (firstException instanceof BuildException) {
-                throw (BuildException)firstException;
-            }
-            else {
-                throw new BuildException(firstException);
-            }
-        }
-        else if (numExceptions > 1) {
-            throw new BuildException(exceptionMessage.toString(), firstLocation);
-        }
-    }
-
-    class TaskThread extends Thread {
-        private Throwable exception;
-        private Task task;
-        private int taskNumber;
-
-        /**
-         * Construct a new TaskThread<p>
-         *
-         * @param task the Task to be executed in a seperate thread
-         */
-        TaskThread(int taskNumber, Task task) {
-            this.task = task;
-            this.taskNumber = taskNumber;
-        }
-
-        /**
-         * Executes the task within a thread and takes care about
-         * Exceptions raised within the task.
-         */
-        public void run() {
-            try {
-                task.perform();
-            }
-            catch (Throwable t) {
-                exception = t;
-            }
-        }
-        
-        public Throwable getException() { 
-            return exception;
-        }
-    }
-}
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 a84326a..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@epost.de">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/PathConvert.java b/src/main/org/apache/tools/ant/taskdefs/PathConvert.java
deleted file mode 100644
index 4a0a3c0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/PathConvert.java
+++ /dev/null
@@ -1,365 +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.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.*;
-
-import java.util.*;
-import java.io.File;
-
-/**
- * This task converts path and classpath information to a specific target OS format.
- * The resulting formatted path is placed into a specified property.
- * <p>
- * LIMITATION: Currently this implementation groups all machines into one of two
- * types: Unix or Windows.  Unix is defined as NOT windows.
- *
- * @author Larry Streepy <a href="mailto:streepy@healthlanguage.com">streepy@healthlanguage.com</a>
- */
-public class PathConvert extends Task {
-
-    /**
-     * Helper class, holds the nested <map> values.  Elements will look like this:
-     * &lt;map from="d:" to="/foo"/>
-     * <p>
-     * When running on windows, the prefix comparison will be case insensitive.
-     */
-    public class MapEntry {
-
-        /**
-         * Set the "from" attribute of the map entry
-         */
-        public void setFrom( String from ) {
-            this.from = from;
-        }
-
-        /**
-         * Set the "to" attribute of the map entry
-         */
-        public void setTo( String to ) {
-            this.to = to;
-        }
-
-        /**
-         * Apply this map entry to a given path element
-         * @param elem Path element to process
-         * @return String Updated path element after mapping
-         */
-        public String apply( String elem ) {
-            if( from == null || to == null ) {
-                throw new BuildException( "Both 'from' and 'to' must be set in a map entry" );
-            }
-
-            // If we're on windows, then do the comparison ignoring case
-            String cmpElem = onWindows ? elem.toLowerCase() : elem;
-            String cmpFrom = onWindows ? from.toLowerCase() : from;
-
-            // If the element starts with the configured prefix, then convert the prefix
-            // to the configured 'to' value.
-
-            if( cmpElem.startsWith( cmpFrom ) ) {
-                int len = from.length();
-
-                if( len >= elem.length() ) {
-                    elem = to;
-                } else {
-                    elem = to + elem.substring( len );
-                }
-            }
-
-            return elem;
-        }
-
-        // Members
-        private String from = null;
-        private String to = null;
-    }
-
-    /**
-     * Create a nested PATH element
-     */
-    public Path createPath() {
-
-        if( isReference() )
-            throw noChildrenAllowed();
-
-        if( path == null ) {
-            path = new Path(getProject());
-        }
-        return path.createPath();
-    }
-
-    /**
-     * Create a nested MAP element
-     */
-    public MapEntry createMap() {
-
-        MapEntry entry = new MapEntry();
-        prefixMap.addElement( entry );
-        return entry;
-    }
-
-    /**
-     * Set the value of the targetos attribute
-     */
-    public void setTargetos( String target ) {
-
-        targetOS = target.toLowerCase();
-
-        if( ! targetOS.equals( "windows" ) && ! target.equals( "unix" ) ) {
-            throw new BuildException( "targetos must be one of 'unix' or 'windows'" );
-        }
-
-        // Currently, we deal with only two path formats: Unix and Windows
-        // And Unix is everything that is not Windows
-
-        targetWindows = targetOS.equals("windows");
-    }
-
-    /**
-     * Set the value of the proprty attribute - this is the property into which our
-     * converted path will be placed.
-     */
-    public void setProperty( String p ) {
-        property = p;
-    }
-
-    /**
-     * Adds a reference to a PATH or FILESET defined elsewhere.
-     */
-    public void setRefid(Reference r) {
-        if( path != null )
-            throw noChildrenAllowed();
-
-        refid = r;
-    }
-
-    /**
-     * Override the default path separator string for the target os
-     */
-    public void setPathSep( String sep ) {
-        pathSep = sep;
-    }
-
-    /**
-     * Override the default directory separator string for the target os
-     */
-    public void setDirSep( String sep ) {
-        dirSep = sep;
-    }
-
-    /**
-     * Has the refid attribute of this element been set?
-     */
-    public boolean isReference() {
-        return refid != null;
-    }
-
-    /**
-     * Do the execution.
-     */
-    public void execute() throws BuildException {
-
-        // If we are a reference, the create a Path from the reference
-        if( isReference() ) {
-            path = new Path(getProject()).createPath();
-
-            Object obj = refid.getReferencedObject(getProject());
-
-            if( obj instanceof Path ) {
-                path.setRefid(refid);
-            } else if( obj instanceof FileSet ) {
-                FileSet fs = (FileSet)obj;
-                path.addFileset( fs );
-            } else {
-                throw new BuildException( "'refid' does not refer to a path or fileset" );
-            }
-        }
-
-        validateSetup();                    // validate our setup
-
-        // Currently, we deal with only two path formats: Unix and Windows
-        // And Unix is everything that is not Windows
-
-        String osname = System.getProperty("os.name").toLowerCase();
-        onWindows = ( osname.indexOf("windows") >= 0 );
-
-        // Determine the from/to char mappings for dir sep
-        char fromDirSep = onWindows ? '\\' : '/';
-        char toDirSep   = dirSep.charAt(0);
-
-        StringBuffer rslt = new StringBuffer( 100 );
-
-        // Get the list of path components in canonical form
-        String[] elems = path.list();
-
-        for( int i=0; i < elems.length; i++ ) {
-            String elem = elems[i];
-
-            elem = mapElement( elem );      // Apply the path prefix map
-
-            // Now convert the path and file separator characters from the
-            // current os to the target os.
-
-            elem = elem.replace( fromDirSep, toDirSep );
-
-            if( i != 0 ) rslt.append( pathSep );
-            rslt.append( elem );
-        }
-
-        // Place the result into the specified property
-        String value = rslt.toString();
-
-        log( "Set property " + property + " = " + value, Project.MSG_VERBOSE );
-
-        getProject().setProperty( property, value );
-    }
-
-    /**
-     * Apply the configured map to a path element.  The map is used to convert
-     * between Windows drive letters and Unix paths.  If no map is configured,
-     * then the input string is returned unchanged.
-     *
-     * @param elem The path element to apply the map to
-     * @return String Updated element
-     */
-    private String mapElement( String elem ) {
-
-        int size = prefixMap.size();
-
-        if( size != 0 ) {
-
-            // Iterate over the map entries and apply each one.  Stop when one of the
-            // entries actually changes the element
-
-            for( int i=0; i < size; i++ ) {
-                MapEntry entry = (MapEntry)prefixMap.elementAt(i);
-                String newElem = entry.apply( elem );
-
-                // Note I'm using "!=" to see if we got a new object back from
-                // the apply method.
-
-                if( newElem != elem ) {
-                    elem = newElem;
-                    break;                  // We applied one, so we're done
-                }
-            }
-        }
-
-        return elem;
-    }
-
-    /**
-     * Validate that all our parameters have been properly initialized.
-     * @throws BuildException if something is not setup properly
-     */
-    private void validateSetup() throws BuildException {
-
-        if( path == null )
-            throw new BuildException( "You must specify a path to convert" );
-
-        if( property == null )
-            throw new BuildException( "You must specify a property" );
-
-        // Must either have a target OS or both a dirSep and pathSep
-
-        if( targetOS == null && pathSep == null && dirSep == null )
-            throw new BuildException( "You must specify at least one of targetOS, dirSep, or pathSep" );
-
-        // Determine the separator strings.  The dirsep and pathsep attributes
-        // override the targetOS settings.
-        String dsep = File.separator;
-        String psep = File.pathSeparator;
-
-        if( targetOS != null ) {
-            psep = targetWindows ? ";" : ":";
-            dsep = targetWindows ? "\\" : "/";
-        }
-
-        if( pathSep != null ) {             // override with pathsep=
-            psep = pathSep;
-        }
-
-        if( dirSep != null ) {              // override with dirsep=
-            dsep = dirSep;
-        }
-
-        pathSep = psep;
-        dirSep = dsep;
-    }
-
-    /**
-     * Creates an exception that indicates that this XML element must
-     * not have child elements if the refid attribute is set.  
-     */
-    private BuildException noChildrenAllowed() {
-        return new BuildException("You must not specify nested PATH elements when using refid");
-    }
-
-
-    // Members
-    private Path path = null;               // Path to be converted
-    private Reference refid = null;         // Reference to path/fileset to convert
-    private String targetOS = null;         // The target OS type
-    private boolean targetWindows = false;  // Set when targetOS is set
-    private boolean onWindows = false;      // Set if we're running on windows
-    private String property = null;         // The property to receive the results
-    private Vector prefixMap = new Vector();  // Path prefix map
-    private String pathSep = null;          // User override on path sep char
-    private String dirSep = null;           // User override on directory sep char
-}
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 aa775c0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Property.java
+++ /dev/null
@@ -1,322 +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 {
-        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());
-            }
-        }
-    }
-
-    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 property file: " + file.getAbsolutePath(), 
-                    Project.MSG_VERBOSE);
-            }
-        } catch(IOException ex) {
-            throw new BuildException(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); 
-            } 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 (IOException ex) {
-            throw new BuildException(ex, location);
-        }
-    }
-
-    protected void loadEnvironment( String prefix ) {
-        Properties props = new Properties();
-        if (!prefix.endsWith(".")) prefix += ".";
-        log("Loading Environment " + prefix, Project.MSG_VERBOSE);
-        Vector osEnv = Execute.getProcEnvironment();
-        for (Enumeration e = osEnv.elements(); e.hasMoreElements(); ) {
-            String entry = (String)e.nextElement();
-            int pos = entry.indexOf('=');
-            if (pos == -1) {
-                log("Ignoring: " + entry, Project.MSG_WARN);
-            } else {
-                props.put(prefix + entry.substring(0, pos), 
-                entry.substring(pos + 1));
-            }
-        }
-        addProperties(props);
-    }
-
-    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, v);
-        }
-    }
-
-    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(Properties props) throws BuildException {
-        for (Enumeration e = props.keys(); e.hasMoreElements();) {
-            String name = (String)e.nextElement();
-            String value = props.getProperty(name);
-
-            boolean resolved = false;
-            while (!resolved) {
-                Vector fragments = new Vector();
-                Vector propertyRefs = new Vector();
-                ProjectHelper.parsePropertyString(value, fragments, propertyRefs);
-                
-                resolved = true;
-                if (propertyRefs.size() != 0) {
-                    StringBuffer sb = new StringBuffer();
-                    Enumeration i = fragments.elements();
-                    Enumeration j = propertyRefs.elements();
-                    while (i.hasMoreElements()) {
-                        String fragment = (String)i.nextElement();
-                        if (fragment == null) {
-                            String propertyName = (String)j.nextElement();
-                            if (propertyName.equals(name)) {
-                                throw new BuildException("Property " + name + " was circularly defined.");
-                            }
-                            fragment = getProject().getProperty(propertyName);
-                            if (fragment == null) {
-                                if (props.containsKey(propertyName)) {
-                                    fragment = props.getProperty(propertyName);
-                                    resolved = false;
-                                }
-                                else {
-                                    fragment = "${" + propertyName + "}";
-                                }
-                            }
-                        }
-                        sb.append(fragment);
-                    }
-                    value = sb.toString();
-                    props.put(name, value);
-                }
-            }
-        }
-    }    
-}
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 5de274e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/PumpStreamHandler.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.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) {}
-        try {
-            err.flush();
-        } catch (IOException e) {}
-        try {
-            out.flush();
-        } catch (IOException e) {}
-    }
-
-    protected OutputStream getErr() {
-        return err;
-    }
-
-    protected OutputStream getOut() {
-        return out;
-    }
-
-    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/Recorder.java b/src/main/org/apache/tools/ant/taskdefs/Recorder.java
deleted file mode 100644
index 4605d36..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Recorder.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.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 org.apache.tools.ant.Task;
-
-import java.io.*;
-
-import java.util.*;
-
-/**
- * This task is the manager for RecorderEntry's.  It is this class
- * that holds all entries, modifies them every time the <recorder>
- * task is called, and addes them to the build listener process.
- * @see RecorderEntry
- * @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
- * @version 0.5
- *
- */
-public class Recorder extends Task {
-
-    //////////////////////////////////////////////////////////////////////
-    // ATTRIBUTES
-
-    /** The name of the file to record to. */
-    private String filename = null;
-    /** Whether or not to append.  Need Boolean to record an unset
-     *  state (null).
-     */
-    private Boolean append = null;
-    /** Whether to start or stop recording.  Need Boolean to record an
-     *  unset state (null).
-     */
-    private Boolean start = null;
-    /** What level to log?  -1 means not initialized yet. */
-    private int loglevel = -1;
-    /** The list of recorder entries. */
-    private static Hashtable recorderEntries = new Hashtable();
-
-    //////////////////////////////////////////////////////////////////////
-    // CONSTRUCTORS / INITIALIZERS
-
-    //////////////////////////////////////////////////////////////////////
-    // ACCESSOR METHODS
-
-    /**
-     * Sets the name of the file to log to, and the name of the recorder entry.
-     * @param fname File name of logfile.
-     */
-    public void setName( String fname ) {
-        filename = fname;
-    }
-
-    /**
-     * Sets the action for the associated recorder entry.
-     * @param action The action for the entry to take: start or stop.
-     */
-    public void setAction( ActionChoices action ) {
-        if ( action.getValue().equalsIgnoreCase( "start" ) ) {
-            start = Boolean.TRUE;
-        } else {
-            start = Boolean.FALSE;
-        }
-    }
-
-    /**
-     * Whether or not the logger should append to a previous file.
-     */
-    public void setAppend( boolean append ) {
-        this.append = new Boolean(append);
-    }
-
-    /**
-     * Sets the level to which this recorder entry should log to.
-     * @see VerbosityLevelChoices
-     */
-    public void setLoglevel( VerbosityLevelChoices level ){
-        //I hate cascading if/elseif clauses !!!
-        String lev = level.getValue();
-        if ( lev.equalsIgnoreCase("error") ) {
-            loglevel = Project.MSG_ERR;
-        } else if ( lev.equalsIgnoreCase("warn") ){
-            loglevel = Project.MSG_WARN;
-        } else if ( lev.equalsIgnoreCase("info") ){
-            loglevel = Project.MSG_INFO;
-        } else if ( lev.equalsIgnoreCase("verbose") ){
-            loglevel = Project.MSG_VERBOSE;
-        } else if ( lev.equalsIgnoreCase("debug") ){
-            loglevel = Project.MSG_DEBUG;
-        }
-    }
-
-    //////////////////////////////////////////////////////////////////////
-    // CORE / MAIN BODY
-
-    /**
-     * The main execution.
-     */
-    public void execute() throws BuildException {
-        if ( filename == null )
-            throw new BuildException( "No filename specified" );
-
-        getProject().log( "setting a recorder for name " + filename,
-            Project.MSG_DEBUG );
-
-        // get the recorder entry
-        RecorderEntry recorder = getRecorder( filename, getProject() );
-        // set the values on the recorder
-        recorder.setMessageOutputLevel( loglevel );
-        recorder.setRecordState( start );
-    }
-
-    //////////////////////////////////////////////////////////////////////
-    // INNER CLASSES
-
-    /**
-     * A list of possible values for the <code>setAction()</code> method.
-     * Possible values include: start and stop.
-     */
-    public static class ActionChoices extends EnumeratedAttribute {
-        private static final String[] values = {"start", "stop"};
-        public String[] getValues() {
-            return values;
-        }
-    }
-
-    /**
-     * A list of possible values for the <code>setLoglevel()</code> method.
-     * Possible values include: error, warn, info, verbose, debug.
-     */
-    public static class VerbosityLevelChoices extends EnumeratedAttribute {
-        private static final String[] values = { "error", "warn", "info",
-            "verbose", "debug"};
-        public String[] getValues() {
-            return values;
-        }
-    }
-
-    /**
-     * Gets the recorder that's associated with the passed in name.
-     * If the recorder doesn't exist, then a new one is created.
-     */
-    protected RecorderEntry getRecorder( String name, Project proj ) throws BuildException {
-        Object o = recorderEntries.get(name);
-        RecorderEntry entry;
-        if ( o == null ) {
-            // create a recorder entry
-            try {
-                entry = new RecorderEntry( name );
-                PrintStream out = null;
-                if ( append == null ) {
-                    out = new PrintStream(
-                        new FileOutputStream(name));
-                } else {
-                    out = new PrintStream(
-                        new FileOutputStream(name, append.booleanValue()));
-                }
-                entry.setErrorPrintStream(out);
-                entry.setOutputPrintStream(out);
-            } catch ( IOException ioe ) {
-                throw new BuildException( "Problems creating a recorder entry",
-                    ioe );
-            }
-            proj.addBuildListener(entry);
-            recorderEntries.put(name, entry);
-        } else {
-            entry = (RecorderEntry) o;
-        }
-        return entry;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java b/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java
deleted file mode 100644
index 34a794f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.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.taskdefs;
-
-import org.apache.tools.ant.*;
-import java.io.*;
-import java.util.*;
-
-/**
- * This is a class that represents a recorder.  This is the listener
- * to the build process.
- * @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
- * @version 0.5
- *
- */
-public class RecorderEntry implements BuildLogger  {
-
-    //////////////////////////////////////////////////////////////////////
-    // ATTRIBUTES
-
-    /**
-     * The name of the file associated with this recorder entry.
-     */
-    private String filename = null;
-    /**
-     * The state of the recorder (recorder on or off).
-     */
-    private boolean record = true;
-    /**
-     * The current verbosity level to record at.
-     */
-    private int loglevel = Project.MSG_INFO;
-    /**
-     * The output PrintStream to record to.
-     */
-    private PrintStream out = null;
-    /**
-     * The start time of the last know target.
-     */
-    private long targetStartTime = 0l;
-    /**
-     * Line separator.
-     */
-    private static String lSep = System.getProperty("line.separator");
-
-    //////////////////////////////////////////////////////////////////////
-    // CONSTRUCTORS / INITIALIZERS
-
-    /**
-     * @param name The name of this recorder (used as the filename).
-     *
-     */
-    protected RecorderEntry( String name ) {
-        filename = name;
-    }
-
-    //////////////////////////////////////////////////////////////////////
-    // ACCESSOR METHODS
-
-    /**
-     * @return the name of the file the output is sent to.
-     */
-    public String getFilename() {
-        return filename;
-    }
-
-    /**
-     * Turns off or on this recorder.
-     * @param state true for on, false for off, null for no change.
-     */
-    public void setRecordState( Boolean state ) {
-        if ( state != null )
-            record = state.booleanValue();
-    }
-
-    public void buildStarted(BuildEvent event) {
-        log( "> BUILD STARTED", Project.MSG_DEBUG );
-    }
-
-    public void buildFinished(BuildEvent event) {
-        log( "< BUILD FINISHED", Project.MSG_DEBUG );
-
-        Throwable error = event.getException();
-        if (error == null) {
-            out.println(lSep + "BUILD SUCCESSFUL");
-        } else {
-            out.println(lSep + "BUILD FAILED" + lSep);
-            error.printStackTrace(out);
-        }
-        out.flush();
-        out.close();
-    }
-
-    public void targetStarted(BuildEvent event) {
-        log( ">> TARGET STARTED -- " + event.getTarget(), Project.MSG_DEBUG );
-        log( lSep + event.getTarget().getName() + ":", Project.MSG_INFO );
-        targetStartTime = System.currentTimeMillis();
-    }
-
-    public void targetFinished(BuildEvent event) {
-        log( "<< TARGET FINISHED -- " + event.getTarget(), Project.MSG_DEBUG );
-        String time = formatTime( System.currentTimeMillis() - targetStartTime );
-        log( event.getTarget() + ":  duration " + time, Project.MSG_VERBOSE );
-        out.flush();
-    }
-
-    public void taskStarted(BuildEvent event) {
-        log( ">>> TAST STARTED -- " + event.getTask(), Project.MSG_DEBUG );
-    }
-
-    public void taskFinished(BuildEvent event) {
-        log( "<<< TASK FINISHED -- " + event.getTask(), Project.MSG_DEBUG );
-        out.flush();
-    }
-
-    public void messageLogged(BuildEvent event) {
-        log( "--- MESSAGE LOGGED", Project.MSG_DEBUG );
-
-        StringBuffer buf = new StringBuffer();
-        if ( event.getTask() != null ) {
-            String name = "[" + event.getTask().getTaskName() + "]";
-            /** @todo replace 12 with DefaultLogger.LEFT_COLUMN_SIZE */
-            for ( int i = 0; i < (12 - name.length()); i++ ) {
-                buf.append( " " );
-            } // for
-            buf.append( name );
-        } // if
-        buf.append( event.getMessage() );
-
-        log( buf.toString(), event.getPriority() );
-    }
-
-    /**
-     * The thing that actually sends the information to the output.
-     * @param mesg The message to log.
-     * @param level The verbosity level of the message.
-     */
-    private void log( String mesg, int level ) {
-        if ( record && (level <= loglevel) ) {
-                out.println(mesg);
-        }
-    }
-
-    public void setMessageOutputLevel(int level) {
-        if ( level >= Project.MSG_ERR  &&  level <= Project.MSG_DEBUG )
-            loglevel = level;
-    }
-
-    public void setOutputPrintStream(PrintStream output) {
-        out = output;
-    }
-
-    public void setEmacsMode(boolean emacsMode) {
-        throw new java.lang.RuntimeException("Method setEmacsMode() not yet implemented.");
-    }
-
-    public void setErrorPrintStream(PrintStream err) {
-        out = err;
-    }
-
-    private 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/taskdefs/Rename.java b/src/main/org/apache/tools/ant/taskdefs/Rename.java
deleted file mode 100644
index 82eff38..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(File src) {
-        this.src = src;
-    }
-
-    /**
-     * Sets the new name of the file.
-     * @param dest the new name of the file.
-     */
-    public void setDest(File dest) {
-        this.dest = 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 ba049f2..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Replace.java
+++ /dev/null
@@ -1,480 +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;
-
-    private int fileCount;
-    private int replaceCount;    
-    private boolean summary = false;
-    
-    //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();
-        fileCount = 0;
-        replaceCount = 0;
-
-        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);
-            }
-        }
-        
-        if (summary) {
-            log("Replaced " + replaceCount + " occurrences in " + fileCount + " files.", Project.MSG_INFO);
-        }
-    }
-    
-    /**
-     * 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 StringBuffer
-            //   size of work buffer may be bigger than needed
-            //   when multibyte characters exist in the source file
-            //   but then again, it might be smaller than needed on
-            //   platforms like Windows where length can't be trusted
-            int fileLengthInBytes = (int)(src.length());
-            StringBuffer tmpBuf = new StringBuffer(fileLengthInBytes);
-            int readChar = 0;
-            int totread = 0;
-            while (true) {
-                readChar = br.read();
-                if (readChar < 0) { break; }
-                tmpBuf.append((char)readChar);
-                totread++;
-            }
-
-            // create a String so we can use indexOf
-            String buf = tmpBuf.toString();
-
-            //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) {
-                ++fileCount;
-                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;
-    }
-
-    /**
-     * Request a summary
-     *
-     * @param summary true if you would like a summary logged of the replace operation
-     */
-    public void setSummary(boolean summary) {
-        this.summary = summary;
-    }
-    
-    
-    /**
-     * 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(File filename) {
-        propertyFile = 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);
-            ++replaceCount;
-        }
-
-        // 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 110fc92..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Rmic.java
+++ /dev/null
@@ -1,539 +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.taskdefs.rmic.*;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.Reference;
-import org.apache.tools.ant.util.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.rmi.Remote;
-import java.util.Vector;
-
-/**
- * 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 
- * <li>includeantruntime
- * <li>includejavaruntime
- * <li>extdirs
- * </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> 
- * @author Takashi Okamoto tokamoto@rd.nttdata.co.jp
- */
-
-public class Rmic extends MatchingTask {
-
-    private static final String FAIL_MSG 
-        = "Rmic failed, messages should have been provided.";
-
-    private File baseDir;
-    private String classname;
-    private File sourceBase;
-    private String stubVersion;
-    private Path compileClasspath;
-    private Path extdirs;
-    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 boolean includeAntRuntime = true;
-    private boolean includeJavaRuntime = false;
-
-    private Vector compileList = new Vector();
-
-    private ClassLoader loader = null;
-
-    /** Sets the base directory to output generated class. */
-    public void setBase(File base) {
-        this.baseDir = base;
-    }
-
-    /** Gets the base directory to output generated class. */
-    public File getBase() {
-        return this.baseDir;
-    }
-
-    /** Sets the class name to compile. */
-    public void setClassname(String classname) {
-        this.classname = classname;
-    }
-
-    /** Gets the class name to compile. */
-    public String getClassname() {
-        return classname;
-    }
-
-    /** Sets the source dirs to find the source java files. */
-    public void setSourceBase(File sourceBase) {
-        this.sourceBase = sourceBase;
-    }
-
-    /** Gets the source dirs to find the source java files. */
-    public File getSourceBase() {
-        return sourceBase;
-    }
-
-    /** Sets the stub version. */
-    public void setStubVersion(String stubVersion) {
-        this.stubVersion = stubVersion;
-    }
-
-    public String getStubVersion() {
-        return stubVersion;
-    }
-
-    public void setFiltering(boolean filter) {
-        filtering = filter;
-    }
-
-    public boolean getFiltering() {
-        return filtering;
-    }
-
-    /** Sets the debug flag. */
-    public void setDebug(boolean debug) {
-        this.debug = debug;
-    }
-
-    /** Gets the debug flag. */
-    public boolean getDebug() {
-        return 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);
-    }
-
-    /**
-     * Gets the classpath. 
-     */
-    public Path getClasspath() {
-        return compileClasspath; 
-    }
-
-    /**
-     * 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;
-    }
-
-    /** Get verify flag. */
-    public boolean getVerify() {
-        return verify;
-    }
-
-    /**
-     * Indicates that IIOP compatible stubs should
-     * be generated.  This defaults to false 
-     * if not set.  
-     */
-    public void setIiop(boolean iiop) {
-        this.iiop = iiop;
-    }
-
-    /** Gets iiop flags. */
-    public boolean getIiop() {
-        return iiop;
-    }
-
-    /**
-     * pass additional arguments for iiop 
-     */
-    public void setIiopopts(String iiopopts) {
-        this.iiopopts = iiopopts;
-    }
-
-    /** Gets additional arguments for iiop. */
-    public String getIiopopts() {
-        return iiopopts;
-    }
-
-    /**
-     * Indicates that IDL output should be 
-     * generated.  This defaults to false 
-     * if not set.  
-     */
-    public void setIdl(boolean idl) {
-        this.idl = idl;
-    }
-
-    /* Gets IDL flags. */
-    public boolean getIdl() {
-        return idl;
-    }
-
-    /**
-     * pass additional arguments for idl compile 
-     */
-    public void setIdlopts(String idlopts) {
-        this.idlopts = idlopts;
-    }
-
-    /**
-     * Gets additional arguments for idl compile. 
-     */
-    public String getIdlopts() {
-        return idlopts;
-    }
-
-    /** Gets file list to compile. */
-    public Vector getFileList() {
-        return compileList;
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * 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 extdirs element.
-     */
-    public Path createExtdirs() {
-        if (extdirs == null) {
-            extdirs = new Path(project);
-        }
-        return extdirs.createPath();
-    }
-
-    /**
-     * Gets the extension directories that will be used during the
-     * compilation.
-     */
-    public Path getExtdirs() {
-        return extdirs;
-    }
-
-    public Vector getCompileList() {
-        return compileList;
-    }
-
-    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);
-        }
-
-        String compiler = project.getProperty("build.rmic");
-        RmicAdapter adapter = RmicAdapterFactory.getRmic(compiler, this );
-            
-        // now we need to populate the compiler adapter
-        adapter.setRmic( this );
-
-        Path classpath = adapter.getClasspath();
-        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, adapter.getMapper());
-        } else {
-            // otherwise perform a timestamp comparison - at least
-            scanDir(baseDir, 
-                    new String[] {classname.replace('.', File.separatorChar) + ".class"},
-                    adapter.getMapper());
-        }
-        
-        int fileCount = compileList.size();
-        if (fileCount > 0) {
-            log("RMI Compiling " + fileCount +
-                " class"+ (fileCount > 1 ? "es" : "")+" to " + baseDir, 
-                Project.MSG_INFO);
-
-            // finally, lets execute the compiler!!
-            if (!adapter.execute()) {
-                throw new BuildException(FAIL_MSG, location);
-            }
-        }
-
-        /* 
-         * Move the generated source file to the base directory.  If
-         * base directory and sourcebase are the same, the generated
-         * sources are already in place.
-         */
-        if (null != sourceBase && !baseDir.equals(sourceBase)) {
-            if (idl) {
-                log("Cannot determine sourcefiles in idl mode, ", 
-                    Project.MSG_WARN);
-                log("sourcebase attribute will be ignored.", Project.MSG_WARN);
-            } else {
-                for (int j = 0; j < fileCount; j++) {
-                    moveGeneratedFile(baseDir, sourceBase,
-                                      (String) compileList.elementAt(j),
-                                      adapter);
-                }
-            }
-        }
-        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,
-                                    RmicAdapter adapter)
-        throws BuildException {
-
-        String classFileName = 
-            classname.replace('.', File.separatorChar) + ".class";
-        String[] generatedFiles = 
-            adapter.getMapper().mapFileName(classFileName);
-
-        for (int i=0; i<generatedFiles.length; i++) {
-            String sourceFileName = 
-                classFileName.substring(0, classFileName.length()-6) + ".java";
-            File oldFile = new File(baseDir, sourceFileName);
-            File newFile = new File(sourceBaseFile, sourceFileName);
-            try {
-                project.copyFile(oldFile, newFile, filtering);
-                oldFile.delete();
-            } catch (IOException ioe) {
-                String msg = "Failed to copy " + oldFile + " to " +
-                    newFile + " 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[],
-                           FileNameMapper mapper) {
-
-        String[] newFiles = files;
-        if (idl) {
-            log("will leave uptodate test to rmic implementation in idl mode.",
-                Project.MSG_VERBOSE);
-        } else if (iiop 
-                   && iiopopts != null && iiopopts.indexOf("-always") > -1) {
-            log("no uptodate test as -always option has been specified",
-                Project.MSG_VERBOSE);
-        } else {
-            SourceFileScanner sfs = new SourceFileScanner(this);
-            newFiles = sfs.restrict(files, baseDir, baseDir, mapper);
-        }
-
-        for (int i = 0; i < newFiles.length; i++) {
-            String classname = newFiles[i].replace(File.separatorChar, '.');
-            classname = classname.substring(0, classname.lastIndexOf(".class"));
-            compileList.addElement(classname);
-        }
-    }
-
-    /**
-     * Load named class and test whether it can be rmic'ed
-     */
-    public boolean isValidRmiRemote(String classname) {
-        try {
-            Class testClass = loader.loadClass(classname);
-            // One cannot RMIC an interface for "classic" RMI (JRMP)
-            if (testClass.isInterface() && !iiop && !idl) {
-                return false;
-            }
-            return isValidRmiRemote(testClass);
-        } 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);
-        } catch (Throwable t) {
-            log("Unable to verify class " + classname + 
-                ". Loading caused Exception: " +
-                t.getMessage(), Project.MSG_WARN);
-        }
-        // we only get here if an exception has been thrown
-        return false;
-    }
-
-    /**
-     * Returns the topmost interface that extends Remote for a given
-     * class - if one exists.
-     */
-    public Class getRemoteInterface(Class testClass) {
-        if (Remote.class.isAssignableFrom(testClass)) {
-            Class [] interfaces = testClass.getInterfaces();
-            if (interfaces != null) {
-                for (int i = 0; i < interfaces.length; i++) {
-                    if (Remote.class.isAssignableFrom(interfaces[i])) {
-                        return interfaces[i];
-                    }
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Check to see if the class or (super)interfaces implement
-     * java.rmi.Remote.
-     */
-    private boolean isValidRmiRemote (Class testClass) {
-        return getRemoteInterface(testClass) != null;
-    }
-
-    /**
-     * Classloader for the user-specified classpath.
-     */
-    public ClassLoader getLoader() {return loader;}
-
-}
-
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 afa5d44..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
+++ /dev/null
@@ -1,694 +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.
- * Comments may be created with REM -- or //.
- * 
- * @author <a href="mailto:jeff@custommonkey.org">Jeff Martin</a>
- * @author <A href="mailto:gholam@xtra.co.nz">Michael McCallum</A>
- * @author <A href="mailto:tim.stephenson@sybase.com">Tim Stephenson</A>
- */
-public class SQLExec extends Task {
-
-    static public class DelimiterType extends EnumeratedAttribute {
-        static public final String NORMAL = "normal";
-        static public final String ROW = "row";
-        public String[] getValues() {
-            return new String[] {NORMAL, ROW};
-        }
-    }
-    
-    
-    private int goodSql = 0, totalSql = 0;
-
-    private Path classpath;
-
-    private AntClassLoader loader;
-
-    private Vector filesets = new Vector();
-
-    /**
-     * 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();
-
-    /**
-     * SQL Statement delimiter
-     */
-    private String delimiter = ";";
-    
-    /**
-     * The delimiter type indicating whether the delimiter will
-     * only be recognized on a line by itself
-     */
-    private String delimiterType = DelimiterType.NORMAL;
-    
-    /**
-     * 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;
-    }
-    
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
-
-
-    /**
-     * 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 statement delimiter.
-     *
-     * <p>For example, set this to "go" and delimitertype to "ROW" for
-     * Sybase ASE or MS SQL Server.</p>
-     */
-    public void setDelimiter(String delimiter) {
-        this.delimiter = delimiter;
-    }
-
-    /**
-     * Set the Delimiter type for this sql task. The delimiter type takes
-     * two values - normal and row. Normal means that any occurence of the delimiter
-     * terminate the SQL command whereas with row, only a line containing just the
-     * delimiter is recognized as the end of the command.
-     */
-    public void setDelimiterType(DelimiterType delimiterType) {
-        this.delimiterType = delimiterType.getValue();
-    }
-    
-    /**
-     * 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 && filesets.isEmpty()) { 
-            if (transactions.size() == 0) {
-                throw new BuildException("Source file or fileset, transactions or sql statement must be set!", location);
-            }
-        } else { 
-            // deal with the filesets
-            for (int i=0; i<filesets.size(); i++) {
-                FileSet fs = (FileSet) filesets.elementAt(i);
-                DirectoryScanner ds = fs.getDirectoryScanner(project);
-                File srcDir = fs.getDir(project);
-
-                String[] srcFiles = ds.getIncludedFiles();
-
-                // Make a transaction for each file
-                for ( int j=0 ; j<srcFiles.length ; j++ ) {
-                    Transaction t = createTransaction();
-                    t.setSrc(new File(srcDir, srcFiles[j]));
-                }
-            }
-
-            // 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);
-                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){
-                line = line.trim();
-                line = ProjectHelper.replaceProperties(project, line,
-                                                       project.getProperties());
-                if (line.startsWith("//")) continue;
-                if (line.startsWith("--")) continue;
-                if (line.length() > 2 &&
-                    line.substring(0,3).equalsIgnoreCase("REM")) 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 (delimiterType.equals(DelimiterType.NORMAL) && sql.endsWith(delimiter) ||
-                    delimiterType.equals(DelimiterType.ROW) && line.equals(delimiter)) {
-                    log("SQL: " + sql, Project.MSG_VERBOSE);
-                    execSQL(sql.substring(0, sql.length() - delimiter.length()), 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);
-            }
-            else {
-                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/Sequential.java b/src/main/org/apache/tools/ant/taskdefs/Sequential.java
deleted file mode 100644
index cb663f4..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Sequential.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.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import java.util.*;
-import java.text.*;
-import java.lang.RuntimeException;
-
-/**
- * Implements a single threaded task execution.
- * <p>
- * @author Thomas Christen <a href="mailto:chr@active.ch">chr@active.ch</a>
- */
-public class Sequential extends Task
-                        implements TaskContainer {
-
-    /** Optional Vector holding the nested tasks */
-    private Vector nestedTasks = new Vector();
-
-    /**
-     * Add a nested task to Sequential.
-     * <p>
-     * @param nestedTask  Nested task to execute Sequential
-     * <p>
-     */
-    public void addTask(Task nestedTask) {
-        nestedTasks.addElement(nestedTask);
-    }
-
-    /**
-     * Execute all nestedTasks.
-     */
-    public void execute() throws BuildException {
-        for (Enumeration e = nestedTasks.elements(); e.hasMoreElements();) {
-            Task nestedTask = (Task)e.nextElement();
-            nestedTask.perform();
-        }
-    }
-}
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 e975f40..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/SignJar.java
+++ /dev/null
@@ -1,316 +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 java.io.IOException;
-import java.util.Enumeration;
-import java.util.Vector;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.FileSet;
-
-/**
- * Sign a archive.
- *
- * @author Peter Donald <a href="mailto:donaldp@apache.org">donaldp@apache.org</a>
- * @author Nick Fortescue <a href="mailto:nick@ox.compsoc.net">nick@ox.compsoc.net</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;
-
-    /**
-     * the filesets of the jars to sign
-     */
-    protected Vector filesets = new Vector();
-    /**
-     * Whether to assume a jar which has an appropriate .SF file in is already
-     * signed.
-     */
-    protected boolean lazy;
-
-    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 setLazy(final boolean lazy) {
-        this.lazy = lazy;
-    }
-
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(final FileSet set) {
-        filesets.addElement(set);
-    }
-
-
-    public void execute() throws BuildException {
-        if (null == jar && null == filesets) {
-            throw new BuildException("jar must be set through jar attribute or nested filesets");
-        }
-        if( null != jar ) {
-            doOneJar(jar, signedjar);
-            return;
-        } else {
-            //Assume null != filesets
-
-            // deal with the filesets
-            for (int i=0; i<filesets.size(); i++) {
-                FileSet fs = (FileSet) filesets.elementAt(i);
-                DirectoryScanner ds = fs.getDirectoryScanner(project);
-                String[] jarFiles = ds.getIncludedFiles();
-                for(int j=0; j<jarFiles.length; j++) {
-                    doOneJar(jarFiles[j], null);
-                }
-            }
-        }
-    }
-
-    private void doOneJar(String jarSource, String jarTarget) 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 == alias) {
-            throw new BuildException("alias attribute must be set");
-        }
-
-        if (null == storepass) {
-            throw new BuildException("storepass attribute must be set");
-        }
-
-        if(isUpToDate(jarSource, jarTarget)) 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 != jarTarget) {
-            cmd.createArg().setValue("-signedjar");
-            cmd.createArg().setValue(jarTarget);
-        }
-
-        if (verbose) {
-            cmd.createArg().setValue("-verbose");
-        }
-
-        if (internalsf) {
-            cmd.createArg().setValue("-internalsf");
-        }
-
-        if (sectionsonly) {
-            cmd.createArg().setValue("-sectionsonly");
-        }
-
-        cmd.createArg().setValue(jarSource);
-
-
-        cmd.createArg().setValue(alias);
-
-        log("Signing Jar : " + (new File(jarSource)).getAbsolutePath());
-        cmd.setFailonerror(true);
-        cmd.setTaskName( getTaskName() );
-        cmd.execute();
-    }
-
-    protected boolean isUpToDate(String jarSource, String jarTarget) {
-        if( null == jarSource ) {
-            return false;
-        }
-
-        if( null != jarTarget ) {
-
-            final File jarFile = new File(jarSource);
-            final File signedjarFile = new File(jarTarget);
-
-            if(!jarFile.exists()) return false;
-            if(!signedjarFile.exists()) return false;
-            if(jarFile.equals(signedjarFile)) return false;
-            if(signedjarFile.lastModified() > jarFile.lastModified())
-                return true;
-        } else {
-            if( lazy ) {
-                return isSigned(jarSource);
-            }
-        }
-
-        return false;
-    }
-
-    protected boolean isSigned(String jarFilename) {
-        final String SIG_START = "META-INF/";
-        final String SIG_END = ".SF";
-
-        File file = new File(jarFilename);
-        if( !file.exists() ) {
-            return false;
-        }
-        ZipFile jarFile = null;
-        try {
-            jarFile = new ZipFile(file);
-            if(null == alias) {
-                Enumeration entries = jarFile.entries();
-                while(entries.hasMoreElements()) {
-                    String name =  ((ZipEntry)entries.nextElement()).getName();
-                    if(name.startsWith(SIG_START) && name.endsWith(SIG_END)) {
-                        return true;
-                    }
-                }
-                return false;
-            } else {
-                return jarFile.getEntry(SIG_START+alias.toUpperCase()+
-                                        SIG_END) != null;
-            }
-        } catch(IOException e) {
-            return false;
-        } finally {
-            if(jarFile != null) {
-                try {jarFile.close();} catch(IOException e) {}
-            }
-        }
-    }
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/Sleep.java b/src/main/org/apache/tools/ant/taskdefs/Sleep.java
deleted file mode 100644
index a3a626b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Sleep.java
+++ /dev/null
@@ -1,216 +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;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.BuildException;
-
-/**
- * A task to sleep for a period of time
- *
- * @author steve_l@iseran.com steve loughran
- * @created 01 May 2001
- */
-
-public class Sleep extends Task {
-    /**
-     * failure flag
-     */
-    private boolean failOnError = true;
-
-    /**
-     * Description of the Field
-     */
-    private int seconds = 0;
-    /**
-     * Description of the Field
-     */
-    private int hours = 0;
-    /**
-     * Description of the Field
-     */
-    private int minutes = 0;
-    /**
-     * Description of the Field
-     */
-    private int milliseconds = 0;
-
-
-
-    /**
-     * Creates new instance
-     */
-    public Sleep() {
-    }
-
-
-    /**
-     * Sets the Seconds attribute of the Sleep object
-     *
-     * @param seconds The new Seconds value
-     */
-    public void setSeconds(int seconds) {
-        this.seconds = seconds;
-    }
-
-
-    /**
-     * Sets the Hours attribute of the Sleep object
-     *
-     * @param hours The new Hours value
-     */
-    public void setHours(int hours) {
-        this.hours = hours;
-    }
-
-
-    /**
-     * Sets the Minutes attribute of the Sleep object
-     *
-     * @param minutes The new Minutes value
-     */
-    public void setMinutes(int minutes) {
-        this.minutes = minutes;
-    }
-
-
-    /**
-     * Sets the Milliseconds attribute of the Sleep object
-     *
-     * @param milliseconds The new Milliseconds value
-     */
-    public void setMilliseconds(int milliseconds) {
-        this.milliseconds = milliseconds;
-    }
-
-
-    /**
-     * sleep for a period of time
-     *
-     * @param millis time to sleep
-     */
-    public void doSleep(long millis) {
-        try {
-            Thread.currentThread().sleep(millis);
-        }
-        catch (InterruptedException ie) {
-        }
-    }
-
-
-    /**
-     * Sets the FailOnError attribute of the MimeMail object
-     *
-     * @param failOnError The new FailOnError value
-     */
-    public void setFailOnError(boolean failOnError) {
-        this.failOnError = failOnError;
-    }
-
-
-    /**
-     * return time to sleep
-     *
-     * @return sleep time. if below 0 then there is an error
-     */
-
-    private long getSleepTime() {
-        return ((((long) hours * 60) + minutes) * 60 + seconds) * 1000 + milliseconds;
-    }
-
-
-    /**
-     * verify parameters
-     *
-     * @throws BuildException if something is invalid
-     */
-    public void validate() 
-        throws BuildException {
-        long sleepTime = getSleepTime();
-        if (getSleepTime() < 0) {
-            throw new BuildException("Negative sleep periods are not supported");
-        }
-    }
-
-
-    /**
-     * Executes this build task. throws org.apache.tools.ant.BuildException
-     * if there is an error during task execution.
-     *
-     * @exception BuildException Description of Exception
-     */
-    public void execute()
-        throws BuildException {
-        try {
-            validate();
-            long sleepTime=getSleepTime();
-            log("sleeping for "+sleepTime+" milliseconds",
-                Project.MSG_VERBOSE);
-            doSleep(sleepTime);
-        }
-        catch (Exception e) {
-            if (failOnError) {
-                throw new BuildException(e);
-            }
-            else {
-                String text = e.toString();
-                log(text, Project.MSG_ERR);
-            }
-        }
-    }
-
-}
-
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 5b4a80e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Tar.java
+++ /dev/null
@@ -1,366 +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";
-    static public final String OMIT = "omit";
-
-    private String[] validModes = new String[] {WARN, FAIL, TRUNCATE, GNU, OMIT};
-
-    File tarFile;
-    File baseDir;
-    
-    String longFileMode = WARN;
-    
-    Vector filesets = new Vector();
-    Vector fileSetFiles = new Vector();
-    
-    /**
-     * Indicates whether the user has been warned about long files already.
-     */
-    private boolean longWarningGiven = false;
-
-    public TarFileSet createTarFileSet() {
-        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 - paths are truncated to the maximum length
-     *   fail - patsh greater than the maximim cause a build exception
-     *   warn - paths greater than the maximum cause a warning and GNU is used
-     *   gnu - GNU extensions are used for any paths greater than the maximum.
-     *   omit - paths greater than the maximum are omitted from the archive
-     */
-    public void setLongfile(String mode) {
-        for (int i = 0; i < validModes.length; ++i) {
-            if (mode.equalsIgnoreCase(validModes[i])) {
-                this.longFileMode = mode;
-                return;
-            }
-        }
-        throw new BuildException("The longfile value " + mode + " is not a valid value");
-    }
-
-    public void execute() throws BuildException {
-        if (tarFile == null) {
-            throw new BuildException("tarfile attribute must be set!", 
-                                     location);
-        }
-
-        if (tarFile.exists() && tarFile.isDirectory()) {
-            throw new BuildException("tarfile is a directory!", 
-                                     location);
-        }
-
-        if (tarFile.exists() && !tarFile.canWrite()) {
-            throw new BuildException("Can not write to the specified tarfile!", 
-                                     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);
-            filesets.addElement(mainFileSet);
-        }
-        
-        if (filesets.size() == 0) {
-            throw new BuildException("You must supply either a basdir attribute or some nested filesets.", 
-                                     location);
-        }
-        
-        // 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;
-            }
-            
-            for (int i = 0; i < files.length; ++i) {
-                if (tarFile.equals(new File(fs.getDir(project), files[i]))) {
-                    throw new BuildException("A tar file cannot include itself", location);
-                }
-            }
-        }
-
-        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);
-            if (longFileMode.equalsIgnoreCase(TRUNCATE)) {
-                tOut.setLongFileMode(TarOutputStream.LONGFILE_TRUNCATE);
-            }
-            else if (longFileMode.equalsIgnoreCase(FAIL) ||
-                     longFileMode.equalsIgnoreCase(OMIT)) {
-                tOut.setLongFileMode(TarOutputStream.LONGFILE_ERROR);
-            }
-            else {
-                // warn or GNU
-                tOut.setLongFileMode(TarOutputStream.LONGFILE_GNU);
-            }
-        
-            longWarningGiven = false;
-            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(fs.getDir(project), 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 = null;
-
-        // don't add "" to the archive
-        if (vPath.length() <= 0) {
-            return;
-        }
-        
-        if (file.isDirectory() && !vPath.endsWith("/")) {
-            vPath += "/";
-        }
-
-        try {
-            if (vPath.length() >= TarConstants.NAMELEN) {
-                if (longFileMode.equalsIgnoreCase(OMIT)) {
-                    log("Omitting: "+ vPath, Project.MSG_INFO);
-                    return;
-                } else if (longFileMode.equalsIgnoreCase(WARN)) {
-                    log("Entry: "+ vPath + " longer than " + 
-                        TarConstants.NAMELEN + " characters.", Project.MSG_WARN);
-                    if (!longWarningGiven) {                        
-                        log("Resulting tar file can only be processed successfully"
-                            + " by GNU compatible tar commands", Project.MSG_WARN);
-                        longWarningGiven = true;
-                    }
-                } else if (longFileMode.equalsIgnoreCase(FAIL)) {
-                    throw new BuildException(
-                        "Entry: "+ vPath + " longer than " + 
-                        TarConstants.NAMELEN + "characters.", location);
-                }
-            }
-
-            TarEntry te = new TarEntry(vPath);
-            te.setModTime(file.lastModified());
-            if (!file.isDirectory()) {
-                te.setSize(file.length());
-                te.setMode(tarFileSet.getMode());
-            } 
-            te.setUserName(tarFileSet.getUserName());
-            te.setGroupName(tarFileSet.getGroup());
-            
-            tOut.putNextEntry(te);
-            
-            if (!file.isDirectory()) {
-                fIn = new FileInputStream(file);
-
-                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 {
-            if (fIn != null)
-                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();
-        }
-        
-        /**
-         *  Get a list of files and directories specified in the fileset.
-         *  @return a list of file and directory names, relative to
-         *    the baseDir for the project.
-         */
-        public String[] getFiles(Project p) {
-            if (files == null) {
-                DirectoryScanner ds = getDirectoryScanner(p);
-                String[] directories = ds.getIncludedDirectories();
-                String[] filesPerSe = ds.getIncludedFiles();
-                files = new String [directories.length + filesPerSe.length];
-                System.arraycopy(directories, 0, files, 0, directories.length);
-                System.arraycopy(filesPerSe, 0, files, directories.length,
-                        filesPerSe.length);
-            }
-            
-            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 f072f33..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Taskdef.java
+++ /dev/null
@@ -1,66 +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;
-
-/**
- * Define a new task.
- *
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class Taskdef extends Definer {
-    protected void addDefinition(String name, Class c) {
-        project.addTaskDefinition(name, c);
-    }
-}
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 6a170c6..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Touch.java
+++ /dev/null
@@ -1,218 +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.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.Enumeration;
-import java.util.Locale;
-import java.util.Vector;
-
-/**
- * Touch a file and/or fileset(s) -- corresponds to the Unix touch command.
- *
- * <p>If the file to touch doesn't exist, an empty one is
- * created. </p>
- *
- * <p>Note: Setting the modification time of files is not supported in
- * JDK 1.1.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:mj@servidium.com">Michael J. Sikorsky</a>
- * @author <a href="mailto:shaw@servidium.com">Robert Shaw</a>
- */
-public class Touch extends Task {
-
-    private File file;              // required
-    private long millis = -1;
-    private String dateTime;
-    private Vector filesets = new Vector();
-    private FileUtils fileUtils;
-
-    public Touch() {
-        fileUtils = FileUtils.newFileUtils();
-    }
-
-    /**
-     * Sets a single source file to touch.  If the file does not exist
-     * an  empty file will be created.
-     */
-    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;
-    }
-
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
-
-    /**
-     * Execute the touch operation.
-     */
-    public void execute() throws BuildException {
-        if (file == null && filesets.size() == 0) {
-            throw 
-                new BuildException("Specify at least one source - a file or a fileset.");
-        }
-
-        if (file != null && file.exists() && file.isDirectory()) {
-            throw new BuildException("Use a fileset to touch directories.");
-        }
-
-        if (dateTime != null) {
-            DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT,
-                                                           DateFormat.SHORT,
-                                                           Locale.US);
-            try {
-                setMillis(df.parse(dateTime).getTime());
-                if (millis < 0) {
-                    throw new BuildException("Date of " + dateTime
-                                             + " results in negative milliseconds value relative to epoch (January 1, 1970, 00:00:00 GMT).");
-                }
-            } catch (ParseException pe) {
-                throw new BuildException(pe.getMessage(), pe, location);
-            }
-        }
-
-        touch();
-    }
-
-    /**
-     * Does the actual work. Entry point for Untar and Expand as well.
-     */
-    protected void touch() throws BuildException {
-        if (file != null) {
-            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);
-                }
-            }
-            touch(file);
-        }
-
-        if (millis >= 0 && project.getJavaVersion() == Project.JAVA_1_1) {
-            log("modification time of files cannot be set in JDK 1.1",
-                Project.MSG_WARN);
-            return;
-        }
-
-        // 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();
-
-            for(int j=0; j < srcFiles.length ; j++) {
-                touch(new File(fromDir, srcFiles[j]));
-            }
-         
-            for(int j=0; j < srcDirs.length ; j++) {
-                touch(new File(fromDir, srcDirs[j]));
-            }
-        }
-    }
-
-    protected void touch(File file) throws BuildException {
-        if (!file.canWrite()) {
-            throw new BuildException("Can not change modification date of read-only file " + file);
-        }
-
-        if (project.getJavaVersion() == Project.JAVA_1_1) {
-            return;
-        }
-
-        if (millis < 0) {
-            fileUtils.setFileLastModified(file, System.currentTimeMillis());
-        } else {
-            fileUtils.setFileLastModified(file, millis);
-        }
-    }
-
-}
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 7420dd2..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Transform.java
+++ /dev/null
@@ -1,62 +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;
-
-/**
- * Has been merged into ExecuteOn, empty class for backwards compatibility.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class Transform extends ExecuteOn {}
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 8aac5e6..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Tstamp.java
+++ /dev/null
@@ -1,216 +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 String language;
-        private String country;
-        private String variant;
-        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 setLocale(String locale)
-        {
-            StringTokenizer st = new StringTokenizer( locale, " \t\n\r\f,");
-            try {
-                language = st.nextToken();
-                if (st.hasMoreElements()) {
-                    country = st.nextToken();
-                    if (st.hasMoreElements()) {
-                        country = st.nextToken();
-                        if (st.hasMoreElements()) {
-                            throw new BuildException( "bad locale format", getLocation());
-                        }
-                    }
-                }
-                else {
-                    country = "";
-                }
-            }
-            catch (NoSuchElementException e) {
-                throw new BuildException( "bad locale format", e, getLocation());
-            }
-        }
-        
-        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", getLocation());
-            }
-        }            
-        
-        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;
-            if (language == null) {
-                sdf = new SimpleDateFormat(pattern);
-            }
-            else if (variant == null) {
-                sdf = new SimpleDateFormat(pattern, new Locale(language, country));
-            }
-            else {
-                sdf = new SimpleDateFormat(pattern, new Locale(language, country, variant));
-            }
-            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/Typedef.java b/src/main/org/apache/tools/ant/taskdefs/Typedef.java
deleted file mode 100644
index 8a389d2..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Typedef.java
+++ /dev/null
@@ -1,66 +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;
-
-/**
- * Define a new data type.
- *
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class Typedef extends Definer {
-    protected void addDefinition(String name, Class c) {
-        project.addDataTypeDefinition(name, c);
-    }
-}
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 980ea9f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Untar.java
+++ /dev/null
@@ -1,187 +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@epost.de">Stefan Bodewig</a>
- */
-public class Untar extends Task {
-    private File dest; // req
-    private File source; // req
-
-    private boolean overwrite = true;
-    
-    /**
-     * 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 = 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 = 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()));
-                    if (!overwrite && f.exists() 
-                        && f.lastModified() >= te.getModTime().getTime()) {
-                        log("Skipping " + f + " as it is up-to-date",
-                            Project.MSG_DEBUG);
-                        continue;
-                    }
-                    
-                    log("expanding " + te.getName() + " to "+ f, 
-                        Project.MSG_VERBOSE);
-                    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(File d) {
-        this.dest = d;
-    }
-
-    /**
-     * Set the path to tar-file.
-     *
-     * @param s Path to tar-file.
-     */
-    public void setSrc(File s) {
-        this.source = s;
-    }
-
-    /**
-     * Should we overwrite files in dest, even if they are newer than
-     * the corresponding entries in the archive?
-     */
-    public void setOverwrite(boolean b) {
-        overwrite = b;
-    }
-
-}
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 9fbbea6..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/UpToDate.java
+++ /dev/null
@@ -1,199 +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.taskdefs.condition.Condition;
-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 implements Condition {
-
-    private String _property;
-    private String _value;
-    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 value to set the named property to if the target file is more up to
-     * date than each of the source files. Defaults to 'true'.
-     *
-     * @param value the value to set the property to if Target is up to date
-     */
-    public void setValue(String value) {
-        _value = value;
-    }
-
-    /**
-     * Returns the value, or "true" if a specific value wasn't provided.
-     */
-    private String getValue() {
-        return ( _value != null ) ? _value : "true";
-    } 
-
-    /**
-     * 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;
-    }
-
-    /**
-     * Evaluate all target and source files, see if the targets are up-to-date.
-     */
-    public boolean eval() {
-        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 false; 
-
-        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());
-        }
-        return upToDate;
-    }
-
-
-    /**
-     * Sets property to true if target files have a more recent timestamp than
-     * each of the corresponding source files.
-     */
-    public void execute() throws BuildException {
-        boolean upToDate = eval();
-        if (upToDate) {
-            this.project.setProperty(_property, this.getValue());
-            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;
-        File dir = srcDir;
-        if (mapperElement == null) {
-            MergingMapper mm = new MergingMapper();
-            mm.setTo(_targetFile.getAbsolutePath());
-            mapper = mm;
-            dir = null;
-        } else {
-            mapper = mapperElement.getImplementation();
-        }
-        return sfs.restrict(files, srcDir, dir, 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 7e12d54..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 org.apache.tools.zip.*;
-
-import java.io.*;
-import java.util.Vector;
-
-/**
- * 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 4325f42..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/XSLTLiaison.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.taskdefs;
-
-import java.io.File;
-
-/**
- * Proxy interface for XSLT processors.
- *
- * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
- * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
- * @see #XSLTProcess
- */
-public interface XSLTLiaison {
-
-    /**
-     * the file protocol prefix for systemid.
-     * This file protocol must be appended to an absolute path.
-     * Typically: <tt>FILE_PROTOCOL_PREFIX + file.getAbsolutePath()</tt>
-     * This is not correct in specification terms since an absolute
-     * url in Unix is file:// + file.getAbsolutePath() while it is
-     * file:/// + file.getAbsolutePath() under Windows.
-     * Whatever, it should not be a problem to put file:/// in every
-     * case since most parsers for now incorrectly makes no difference
-     * between it.. and users also have problem with that :)
-     */
-    public final static String FILE_PROTOCOL_PREFIX = "file:///";
-
-    /**
-     * set the stylesheet to use for the transformation.
-     * @param stylesheet the stylesheet to be used for transformation.
-     */
-    public void setStylesheet(File stylesheet) throws Exception;
-
-    /**
-     * Add a parameter to be set during the XSL transformation.
-     * @param name the parameter name.
-     * @param expression the parameter value as an expression string.
-     * @throws Exception thrown if any problems happens.
-     */
-    public void addParam(String name, String expression) throws Exception;
-
-    /**
-     * Perform the transformation of a file into another.
-     * @param infile the input file, probably an XML one. :-)
-     * @param outfile the output file resulting from the transformation
-     * @throws Exception thrown if any problems happens.
-     * @see #setStylesheet(File)
-     */
-    public void transform(File infile, File 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 2f14582..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
+++ /dev/null
@@ -1,469 +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.*;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.Reference;
-import org.apache.tools.ant.util.FileUtils;
-
-
-/**
- * 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>
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$ $Date$
- */
-public class XSLTProcess extends MatchingTask {
-
-    private File destDir = null;
-
-    private File baseDir = null;
-
-    private String xslFile = null;
-
-    private String targetExtension = ".html";
-    private Vector params = new Vector();
-
-    private File inFile = null;
-
-    private File outFile = null;
-
-    private String processor;
-    private Path classpath = null;
-    private XSLTLiaison liaison;
-    private boolean stylesheetLoaded = false;
-
-    private boolean force = false;
-
-    private FileUtils fileUtils;
-
-    /**
-     * Creates a new XSLTProcess Task.
-     **/
-    public XSLTProcess() {
-        fileUtils = FileUtils.newFileUtils();
-    } //-- XSLTProcess
-
-    /**
-     * Executes the task.
-     */
-
-    public void execute() throws BuildException {
-        DirectoryScanner scanner;
-        String[]         list;
-        String[]         dirs;
-
-        if (xslFile == null) {
-            throw new BuildException("no stylesheet specified", location);
-        }
-
-        if (baseDir == null) {
-            baseDir = project.resolveFile(".");
-        }
-
-        liaison = getLiaison();
-        log("Using "+liaison.getClass().toString(), Project.MSG_VERBOSE);
-
-        File stylesheet = project.resolveFile(xslFile);
-        if (!stylesheet.exists()) {
-            stylesheet = fileUtils.resolveFile(baseDir, xslFile);
-            /*
-             * shouldn't throw out deprecation warnings before we know,
-             * the wrong version has been used.
-             */
-            if (stylesheet.exists()) {
-                log("DEPRECATED - the style attribute should be relative to the project\'s");
-                log("             basedir, not the tasks\'s basedir.");
-            }
-        }
-
-        // if we have an in file and out then process them
-        if (inFile != null && outFile != null) {
-            process(inFile, outFile, stylesheet);
-            return;
-        }
-
-        /*
-         * if we get here, in and out have not been specified, we are
-         * in batch processing mode.
-         */
-
-        //-- 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);
-
-        // Process all the files marked for styling
-        list = scanner.getIncludedFiles();
-        for (int i = 0;i < list.length; ++i) {
-            process( baseDir, list[i], destDir, stylesheet );
-        }
-
-        // 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, stylesheet );
-        }
-    } //-- execute
-
-    /**
-     * Set whether to check dependencies, or always generate.
-     **/
-    public void setForce(boolean force) {
-        this.force = force;
-    } //-- setForce
-
-    /**
-     * 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
-     * of this task.
-     */
-    public void setStyle(String xslFile) {
-        this.xslFile = xslFile;
-    }
-
-    /**
-     * Set the classpath to load the Processor through (attribute).
-     */
-    public void setClasspath(Path classpath) {
-        createClasspath().append(classpath);
-    }
-
-    /**
-     * Set the classpath to load the Processor through (nested element).
-     */
-    public Path createClasspath() {
-        if (classpath == null) {
-            classpath = new Path(project);
-        }
-        return classpath.createPath();
-    }
-
-    /**
-     * Set the classpath to load the Processor through via reference
-     * (attribute).
-     */
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-
-    public void setProcessor(String processor) {
-        this.processor = processor;
-    }
-
-    /**
-     * Load processor here instead of in setProcessor - this will be
-     * called from within execute, so we have access to the latest
-     * classpath.
-     */
-    private void resolveProcessor(String proc) throws Exception {
-        if (proc.equals("trax")) {
-            final Class clazz =
-                loadClass("org.apache.tools.ant.taskdefs.optional.TraXLiaison");
-            liaison = (XSLTLiaison)clazz.newInstance();
-        } else if (proc.equals("xslp")) {
-            final Class clazz =
-                loadClass("org.apache.tools.ant.taskdefs.optional.XslpLiaison");
-            liaison = (XSLTLiaison) clazz.newInstance();
-        } else if (proc.equals("xalan")) {
-            final Class clazz =
-                loadClass("org.apache.tools.ant.taskdefs.optional.XalanLiaison");
-            liaison = (XSLTLiaison)clazz.newInstance();
-        } else {
-            liaison = (XSLTLiaison) loadClass(proc).newInstance();
-        }
-    }
-
-    /**
-     * Load named class either via the system classloader or a given
-     * custom classloader.
-     */
-    private Class loadClass(String classname) throws Exception {
-        if (classpath == null) {
-            return Class.forName(classname);
-        } else {
-            AntClassLoader al = new AntClassLoader(project, classpath);
-            Class c = al.loadClass(classname);
-            AntClassLoader.initializeClass(c);
-            return c;
-        }
-    }
-
-    /**
-     * 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,
-                         File stylesheet)
-        throws BuildException {
-
-        String fileExt=targetExtension;
-        File   outFile=null;
-        File   inFile=null;
-
-        try {
-            long styleSheetLastModified = stylesheet.lastModified();
-            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 (force ||
-                inFile.lastModified() > outFile.lastModified() ||
-                styleSheetLastModified > outFile.lastModified()) {
-                ensureDirectoryFor( outFile );
-                log("Transforming into "+destDir);
-
-                configureLiaison(stylesheet);
-                liaison.transform(inFile, outFile);
-            }
-        }
-        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, File stylesheet) throws BuildException {
-        try{
-            long styleSheetLastModified = stylesheet.lastModified();
-            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 (force ||
-                inFile.lastModified() > outFile.lastModified() ||
-                styleSheetLastModified > outFile.lastModified()) {
-                ensureDirectoryFor( outFile );
-                log("Processing " + inFile + " to " + outFile, Project.MSG_INFO);
-                configureLiaison(stylesheet);
-                liaison.transform(inFile, outFile);
-            }
-        }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() );
-            }
-        }
-    }
-
-    protected XSLTLiaison getLiaison() {
-        // 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) {
-            if (processor != null) {
-                try {
-                    resolveProcessor(processor);
-                } catch (Exception e) {
-                    throw new BuildException(e);
-                }
-            } else {
-                try {
-                    resolveProcessor("trax");
-                } catch (Throwable e1) {
-                    try {
-                        resolveProcessor("xslp");
-                    } catch (Throwable e2) {
-                        try {
-                            resolveProcessor("xalan");
-                        } catch (Throwable e3) {
-                            e3.printStackTrace();
-                            e2.printStackTrace();
-                            throw new BuildException(e1);
-                        }
-                    }
-                }
-            }
-        }
-        return liaison;
-    }
-
-    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;
-        }
-    }
-
-    /**
-     * Loads the stylesheet and set xsl:param parameters.
-     */
-    protected void configureLiaison(File stylesheet) throws BuildException {
-        if (stylesheetLoaded) {
-            return;
-        }
-        stylesheetLoaded = true;
-
-        try {
-            log( "Loading stylesheet " + stylesheet, Project.MSG_INFO);
-            liaison.setStylesheet( stylesheet );
-            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 " + stylesheet, Project.MSG_INFO);
-            throw new BuildException(ex);
-        }
-    }
-
-} //-- 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 7691db4..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Zip.java
+++ /dev/null
@@ -1,734 +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.CRC32;
-import java.util.zip.ZipInputStream;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.util.*;
-import org.apache.tools.zip.*;
-
-/**
- * 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;
-    private boolean doUpdate = false;
-    private boolean doFilesonly = false;
-    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();
-    private Vector addedFiles = new Vector();
-    
-    /** true when we are adding new files into the Zip file, as opposed to 
-        adding back the unchanged files */
-    private boolean addingNewFiles;
-    
-    
-    /**
-     * Encoding to use for filenames, defaults to the platform's
-     * default encoding.
-     */
-    private String encoding = null;
-
-    /**
-     * 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;
-    }
-
-    /**
-     * Emulate Sun's jar utility by not adding parent dirs
-     */
-    public void setFilesonly(boolean f) {
-        doFilesonly = f;
-    }
-
-    /**
-     * Sets whether we want to update the file (if it exists)
-     * or create a new one.
-     */
-    public void setUpdate(boolean c) {
-        doUpdate = 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);
-    }
-
-
-    /** Possible behaviors when there are no matching files for the task. */
-    public static class WhenEmpty extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"fail", "skip", "create"};
-        }
-    }
-
-    /**
-     * 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(WhenEmpty we) {
-        emptyBehavior = we.getValue();
-    }
-
-    /**
-     * Encoding to use for filenames, defaults to the platform's
-     * default encoding.
-     *
-     * <p>For a list of possible values see <a
-     * href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html">http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html</a>.</p>
-     */
-    public void setEncoding(String encoding) {
-        this.encoding = encoding;
-    }
-
-    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!");
-        }
-
-        // Renamed version of original file, if it exists
-        File renamedFile = null;
-        // Whether or not an actual update is required -
-        // we don't need to update if the original file doesn't exist
-        
-        addingNewFiles = true;
-        boolean reallyDoUpdate = false;
-        if (doUpdate && zipFile.exists())
-        {
-            reallyDoUpdate = true;
-            
-            int i;
-            for (i=0; i < 1000; i++)
-            {
-                renamedFile = new File(zipFile.getParent(), "tmp."+i);
-                
-                if (!renamedFile.exists()) {
-                    break;
-                }
-            }
-            if (i == 1000) {
-                throw new BuildException("Can't find available temporary filename to which to rename old file.");
-            }
-            
-            try
-            {
-                if (!zipFile.renameTo(renamedFile)) {
-                    throw new BuildException("Unable to rename old file to temporary file");
-                }
-            }
-            catch (SecurityException e)
-            {
-                throw new BuildException("Not allowed to rename old file to temporary file");
-            }
-        }
-        
-        // 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;
-        }
-
-        String action = reallyDoUpdate ? "Updating " : "Building ";
-        
-        log(action + archiveType +": "+ zipFile.getAbsolutePath());
-
-        boolean success = false;
-        try {
-            ZipOutputStream zOut = 
-              new ZipOutputStream(new FileOutputStream(zipFile));
-            zOut.setEncoding(encoding);
-            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);
-                if (reallyDoUpdate) {
-                    addingNewFiles = false;
-                    ZipFileSet oldFiles = new ZipFileSet();
-                    oldFiles.setSrc(renamedFile);
-                    
-                    StringBuffer exclusionPattern = new StringBuffer();
-                    for (int i=0; i < addedFiles.size(); i++)
-                    {
-                        if (i != 0) {
-                            exclusionPattern.append(",");
-                        }
-                        exclusionPattern.append((String)addedFiles.elementAt(i));
-                    }
-                    oldFiles.setExcludes(exclusionPattern.toString());
-                    Vector tmp = new Vector();
-                    tmp.addElement(oldFiles);
-                    addFiles(tmp, zOut);
-                }
-                finalizeZipOutputStream(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)";
-            }
-
-            if (reallyDoUpdate) {
-                if (!renamedFile.renameTo(zipFile)) {
-                    msg+=" (and I couldn't rename the temporary file "+
-                        renamedFile.getName()+" back)";
-                }
-            }
-            
-            throw new BuildException(msg, ioe, location);
-        } finally {
-            cleanUp();
-        }
-        
-        // If we've been successful on an update, delete the temporary file
-        if (success && reallyDoUpdate) {
-            if (!renamedFile.delete()) {
-                log ("Warning: unable to delete temporary file " +
-                     renamedFile.getName(), Project.MSG_WARN);
-            }
-        }
-    }
-
-    /**
-     * Indicates if the task is adding new files into the archive as opposed to
-     * copying back unchanged files from the backup copy
-     */
-    protected boolean isAddingNewFiles() {
-        return addingNewFiles;
-    }
-    
-    /**
-     * 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++) {
-            if ("".equals(dirs[i])) {
-                continue;
-            }
-            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;
-        java.util.zip.ZipEntry origEntry;
-        ZipInputStream in = null;
-        try {
-            in = new ZipInputStream(new FileInputStream(zipSrc));
-
-            while ((origEntry = in.getNextEntry()) != null) {
-                entry = new ZipEntry(origEntry);
-                String vPath = entry.getName();
-                if (zipScanner.match(vPath)) {
-                    addParentDirs(null, vPath, zOut, prefix);
-                    if (! entry.isDirectory()) {
-                        zipFile(in, zOut, prefix+vPath, entry.getTime());
-                    }
-                }
-            }
-        } finally {
-            if (in != null) {
-                in.close();
-            }
-        }
-    }
-
-    protected void initZipOutputStream(ZipOutputStream zOut)
-        throws IOException, BuildException
-    {
-    }
-
-    protected void finalizeZipOutputStream(ZipOutputStream zOut)
-        throws IOException, BuildException
-    {
-    }
-
-    /**
-     * Create an empty zip file
-     *
-     * @return true if the file is then considered up to date.
-     */
-    protected boolean createEmptyZip(File zipFile) {
-        // 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;
-    }
-    
-    
-    /**
-     * 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.
-                return createEmptyZip(zipFile);
-            }
-        } else {
-            for (int i = 0; i < files.length; ++i) {
-                if (files[i].equals(zipFile)) {
-                    throw new BuildException("A zip file cannot include itself", location);
-                }
-            }
-
-            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 && dir.exists()) {
-            ze.setTime(dir.lastModified());
-        } else {
-            ze.setTime(System.currentTimeMillis());
-        }
-        ze.setSize (0);
-        ze.setMethod (ZipEntry.STORED);
-        // This is faintly ridiculous:
-        ze.setCrc (emptyCrc);
-
-        // this is 040775 | MS-DOS directory flag in reverse byte order
-        ze.setExternalAttributes(0x41FD0010L);
-
-        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 {
-            if (count != 0) {
-                zOut.write(buffer, 0, count);
-            }
-            count = in.read(buffer, 0, buffer.length);
-        } while (count != -1);
-        addedFiles.addElement(vPath);
-    }
-
-    protected void zipFile(File file, ZipOutputStream zOut, String vPath)
-        throws IOException
-    {
-        if (file.equals(zipFile)) {
-            throw new BuildException("A zip file cannot include itself", location);
-        }
-
-        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 {
-        if( !doFilesonly ) {
-            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() {
-        addedDirs = new Hashtable();
-        addedFiles = new Vector();
-    }
-}
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 560ae25..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java
+++ /dev/null
@@ -1,167 +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>kjc = the kopi compiler</li>
-     * <li>gcj = the gcj compiler from gcc</li>
-     * <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("extJavac") ) {
-                return new JavacExternal();
-            }       
-            if ( compilerType.equalsIgnoreCase("classic") ||
-                    compilerType.equalsIgnoreCase("javac1.1") ||
-                    compilerType.equalsIgnoreCase("javac1.2")) {
-                return new Javac12();
-            }
-            if ( compilerType.equalsIgnoreCase("modern") ||
-                    compilerType.equalsIgnoreCase("javac1.3") ||
-                    compilerType.equalsIgnoreCase("javac1.4")) {
-                // 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();
-            }
-            if ( compilerType.equalsIgnoreCase("kjc") ) {
-                return new Kjc();
-            }
-            if ( compilerType.equalsIgnoreCase("gcj") ) {
-                return new Gcj();
-            }
-            if (compilerType.equalsIgnoreCase("sj") ||
-                    compilerType.equalsIgnoreCase("symantec")) {
-                return new Sj();
-            }
-            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 2f5d2c9..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
+++ /dev/null
@@ -1,416 +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) {
-            // XXX move this stuff to a separate class, code is identical to
-            //     code in ../rmic/DefaultRmicAdapter
-
-            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"));
-
-                // Added for MacOS X
-                classpath.addExisting(new Path(null,
-                                               System.getProperty("java.home")
-                                               + File.separator + ".."
-                                               + File.separator + "Classes"
-                                               + File.separator + "classes.jar"));
-                classpath.addExisting(new Path(null,
-                                               System.getProperty("java.home")
-                                               + File.separator + ".."
-                                               + File.separator + "Classes"
-                                               + File.separator + "ui.jar"));
-            }
-        }
-            
-        return classpath;
-    }
-
-    /**
-     * Does the command line argument processing common to classic and
-     * modern.  Doesn't add the files to compile.
-     */
-    protected Commandline setupJavacCommandlineSwitches(Commandline cmd) {
-        Path classpath = getCompileClasspath();
-
-        if (attributes.getNowarn()) {
-            cmd.createArgument().setValue("-nowarn");
-        }
-        
-        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 )
-        // as well as "bootclasspath" and "extdirs"
-        if (Project.getJavaVersion().startsWith("1.1")) {
-            Path cp = new Path(project);
-            /*
-             * XXX - This doesn't mix very well with build.systemclasspath,
-             */
-            if (bootclasspath != null) {
-                cp.append(bootclasspath);
-            }
-            if (extdirs != null) {
-                addExtdirsToClasspath(cp);
-            }
-            cp.append(classpath);
-            cp.append(src);
-            cmd.createArgument().setPath(cp);
-        } 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 (bootclasspath != null) {
-                cmd.createArgument().setValue("-bootclasspath");
-                cmd.createArgument().setPath(bootclasspath);
-            }
-            if (extdirs != null) {
-                cmd.createArgument().setValue("-extdirs");
-                cmd.createArgument().setPath(extdirs);
-            }
-        }
-
-        if (encoding != null) {
-            cmd.createArgument().setValue("-encoding");
-            cmd.createArgument().setValue(encoding);
-        }
-        if (debug) {
-            cmd.createArgument().setValue("-g");
-        } else if (Project.getJavaVersion() != Project.JAVA_1_0 &&
-                   Project.getJavaVersion() != Project.JAVA_1_1) {
-            cmd.createArgument().setValue("-g:none");
-        }
-        if (optimize) {
-            cmd.createArgument().setValue("-O");
-        }
-
-        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");
-        }
-        return cmd;
-    }
-
-    /**
-     * Does the command line argument processing common to classic and
-     * modern and adds the files to compile as well.
-     */
-    protected Commandline setupJavacCommand() {
-        Commandline cmd = new Commandline();
-        setupJavacCommandlineSwitches(cmd);
-        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/Gcj.java b/src/main/org/apache/tools/ant/taskdefs/compilers/Gcj.java
deleted file mode 100644
index 39d6e84..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Gcj.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.taskdefs.compilers;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.*;
-import java.io.File;
-
-/**
- * The implementation of the gcj compiler.
- * This is primarily a cut-and-paste from the jikes.
- *
- * @author <a href="mailto:tora@debian.org">Takashi Okamoto</a>
- */
-public class Gcj extends DefaultCompilerAdapter {
-
-    /**
-     * Performs a compile using the gcj compiler.
-     *  
-     * @author tora@debian.org
-     */
-    public boolean execute() throws BuildException {
-	Commandline cmd;
-        attributes.log("Using gcj compiler", Project.MSG_VERBOSE);
-	cmd = setupGCJCommand();
-
-        int firstFileName = cmd.size();
-        logAndAddFilesToCompile(cmd);
-
-        return executeExternalCompile(cmd.getCommandline(), firstFileName) == 0;
-    }
-
-    protected Commandline setupGCJCommand() {
-        Commandline cmd = new Commandline();
-        Path classpath = new Path(project);
-
-        // gcj doesn't support bootclasspath dir (-bootclasspath)
-        // so we'll emulate it for compatibility and convenience.
-        if (bootclasspath != null) {
-            classpath.append(bootclasspath);
-        }
-
-        // gcj 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;
-        }
-        classpath.append(getCompileClasspath());
-
-        // Gcj has no option for source-path so we
-        // will add it to classpath.
-        classpath.append(src);
-
-        cmd.setExecutable("gcj");
-
-        if (destDir != null) {
-            cmd.createArgument().setValue("-d");
-            cmd.createArgument().setFile(destDir);
-	    
-	    if(destDir.mkdirs()){
-                throw new BuildException("Can't make output directories. Maybe permission is wrong. ");
-	    };
-        }
-        
-        cmd.createArgument().setValue("-classpath");
-        cmd.createArgument().setPath(classpath);
-
-        if (encoding != null) {
-            attributes.log("gcj doesn't support -encoding option.",
-                           Project.MSG_WARN);
-        }
-        if (debug) {
-            cmd.createArgument().setValue("-g1");
-        }
-        if (optimize) {
-            cmd.createArgument().setValue("-O");
-        }
-
-	/**
-	 *  gcj should be set for generate class.
-         */
-        cmd.createArgument().setValue("-C");
-	return cmd;
-    }
-}
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 6066839..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Javac12.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.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();
-
-        OutputStream logstr = new LogOutputStream(attributes, Project.MSG_WARN);
-        try {
-            // Create an instance of the compiler, redirecting output to
-            // the project log
-            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);
-            }
-        } finally {
-            try {
-                logstr.close();
-            } catch (IOException e) {
-                // plain impossible
-                throw new BuildException(e);
-            }
-        }
-    }
-}
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 34641bf..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java
+++ /dev/null
@@ -1,103 +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();
-
-        // Use reflection to be able to build on all JDKs >= 1.1:
-        try {
-            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);
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/JavacExternal.java b/src/main/org/apache/tools/ant/taskdefs/compilers/JavacExternal.java
deleted file mode 100644
index 3461e6c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/JavacExternal.java
+++ /dev/null
@@ -1,83 +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.*;
-
-/**
- * Performs a compile using javac externally.
- *
- * @author Brian Deitte
- */
-public class JavacExternal extends DefaultCompilerAdapter {
-
-    /**
-     * Performs a compile using the Javac externally.
-     */
-    public boolean execute() throws BuildException {
-        attributes.log("Using external javac compiler", Project.MSG_VERBOSE);
-
-        Commandline cmd = new Commandline();
-        cmd.setExecutable("javac");
-        setupJavacCommandlineSwitches(cmd);
-        int firstFileName = cmd.size();
-        logAndAddFilesToCompile(cmd);
-
-        return executeExternalCompile(cmd.getCommandline(), firstFileName) == 0;
-    }
-}
-
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 fc5b39a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Jikes.java
+++ /dev/null
@@ -1,219 +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) {
-            attributes.log("!! the build.compiler.warnings property is deprecated. !!",
-                           Project.MSG_WARN);
-            attributes.log("!! Use the nowarn attribute instead. !!",
-                           Project.MSG_WARN);
-            if (!Project.toBoolean(warningsProperty)) {
-                cmd.createArgument().setValue("-nowarn");
-            }
-        } if (attributes.getNowarn()) {
-            /* 
-             * FIXME later
-             *
-             * let the magic property win over the attribute for backwards 
-             * compatibility
-             */
-            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/compilers/Kjc.java b/src/main/org/apache/tools/ant/taskdefs/compilers/Kjc.java
deleted file mode 100644
index b9d2ff7..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Kjc.java
+++ /dev/null
@@ -1,164 +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 org.apache.tools.ant.types.Path;
-
-import java.io.*;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-/**
- * The implementation of the Java compiler for KJC.
- * This is primarily a cut-and-paste from Jikes.java and
- * DefaultCompilerAdapter.
- *
- * @author <a href="mailto:tora@debian.org">Takashi Okamoto</a> + */
-public class Kjc extends DefaultCompilerAdapter {
-
-    public boolean execute() throws BuildException {
-        attributes.log("Using kjc compiler", Project.MSG_VERBOSE);
-        Commandline cmd = setupKjcCommand();
-
-        try {
-            Class c = Class.forName("at.dms.kjc.Main");
-
-            // Call the compile() method
-            Method compile = c.getMethod("compile", 
-                                         new Class [] { String [].class });
-            Boolean ok = (Boolean)compile.invoke(null, 
-                                                 new Object[] {cmd.getArguments()});
-            return ok.booleanValue();
-        }
-        catch (ClassNotFoundException ex) {
-            throw new BuildException("Cannot use kjc compiler, as it is not available"+
-                                     " A common solution is to set the environment variable"+
-                                     " CLASSPATH to your kjc archive (kjc.jar).", location);
-        }
-        catch (Exception ex) {
-            if (ex instanceof BuildException) {
-                throw (BuildException) ex;
-            } else {
-                throw new BuildException("Error starting kjc compiler: ", ex, location);
-            }
-        }
-    }
-
-    /**
-     * setup kjc command arguments.
-     */
-    protected Commandline setupKjcCommand() {
-        Commandline cmd = new Commandline();
-	
-	// generate classpath, because kjc does't support sourcepath.
-        Path classpath = getCompileClasspath();
-
-        if (deprecation == true) {
-            cmd.createArgument().setValue("-deprecation");
-        }
-
-        if (destDir != null) {
-            cmd.createArgument().setValue("-d");
-            cmd.createArgument().setFile(destDir);
-        }
-
-        // generate the clsspath 
-        cmd.createArgument().setValue("-classpath");
-
-	Path cp = new Path(project);
-
-	// kjc don't have bootclasspath option.
-	if (bootclasspath != null) {
-            cp.append(bootclasspath);
-	}
-
-	if (extdirs != null) {
-            addExtdirsToClasspath(cp);
-	}
-
-	cp.append(classpath);
-	cp.append(src);
-
-	cmd.createArgument().setPath(cp);
-
-	// kjc-1.5A doesn't support -encoding option now.
-        // but it will be supported near the feature.
-        if (encoding != null) {
-            cmd.createArgument().setValue("-encoding");
-            cmd.createArgument().setValue(encoding);
-        }
-
-        if (debug) {
-            cmd.createArgument().setValue("-g");
-        }
-
-        if (optimize) {
-            cmd.createArgument().setValue("-O2");
-        }
-
-        if (verbose) {
-            cmd.createArgument().setValue("-verbose");
-        }
-
-        logAndAddFilesToCompile(cmd);
-        return cmd;
-    }
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/Sj.java b/src/main/org/apache/tools/ant/taskdefs/compilers/Sj.java
deleted file mode 100644
index 17a51ed..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Sj.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.Project;
-import org.apache.tools.ant.types.*;
-
-/**
- * The implementation of the sj compiler.
- * Uses the defaults for DefaultCompilerAdapter
- * 
- * @author <a href="mailto:don@bea.com">Don Ferguson</a>
- */
-public class Sj extends DefaultCompilerAdapter {
-
-    /**
-     * Performs a compile using the sj compiler from Symantec.
-     * @author don@bea.com
-     */
-    public boolean execute() throws BuildException {
-        attributes.log("Using symantec java compiler", Project.MSG_VERBOSE);
-
-        Commandline cmd = setupJavacCommand();
-        cmd.setExecutable("sj");
-
-        int firstFileName = cmd.size() - compileList.length;
-
-        return executeExternalCompile(cmd.getCommandline(), firstFileName) == 0;
-    }
-
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/And.java b/src/main/org/apache/tools/ant/taskdefs/condition/And.java
deleted file mode 100644
index 2c04b80..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/condition/And.java
+++ /dev/null
@@ -1,83 +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.condition;
-
-import java.util.Enumeration;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * &lt;and&gt; condition container.
- *
- * <p>Iterates over all conditions and returns false as soon as one
- * evaluates to false.</p>
- * 
- * @author <a href="mailto:stefan.bodewig@epost.de>Stefan Bodewig</a>
- * @version $Revision$
- */
-public class And extends ConditionBase implements Condition {
-
-    public boolean eval() throws BuildException {
-        Enumeration enum = getConditions();
-        while (enum.hasMoreElements()) {
-            Condition c = (Condition) enum.nextElement();
-            if (!c.eval()) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Condition.java b/src/main/org/apache/tools/ant/taskdefs/condition/Condition.java
deleted file mode 100644
index a2028d3..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/condition/Condition.java
+++ /dev/null
@@ -1,71 +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.condition;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * Interface for conditions to use inside the &lt;condition&gt; task.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de>Stefan Bodewig</a>
- * @version $Revision$
- */
-public interface Condition {
-    /**
-     * Is this condition true?
-     */
-    public boolean eval() throws BuildException;
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java b/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java
deleted file mode 100644
index adbd07c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.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.taskdefs.condition;
-
-import java.util.Enumeration;
-import java.util.NoSuchElementException;
-import java.util.Vector;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.Available;
-import org.apache.tools.ant.taskdefs.UpToDate;
-
-/**
- * Baseclass for the &lt;condition&gt; task as well as several
- * conditions - ensures that the types of conditions inside the task
- * and the "container" conditions are in sync.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de>Stefan Bodewig</a>
- * @version $Revision$
- */
-public abstract class ConditionBase {
-    private Vector conditions = new Vector();
-    private Project project;
-
-    public void setProject(Project p) {
-        this.project = p;
-    }
-    protected Project getProject() {return project;}
-
-    /**
-     * Count the conditions.
-     *
-     * @since 1.1
-     */
-    protected int countConditions() {return conditions.size();}
-
-    /**
-     * Iterate through all conditions.
-     *
-     * @since 1.1
-     */
-    protected final Enumeration getConditions() {
-        return new ConditionEnumeration();
-    }
-
-    /**
-     * Add an &lt;available&gt; condition.
-     *
-     * @since 1.1
-     */
-    public void addAvailable(Available a) {conditions.addElement(a);}
-
-    /**
-     * Add an &lt;uptodate&gt; condition.
-     *
-     * @since 1.1
-     */
-    public void addUptodate(UpToDate u) {conditions.addElement(u);}
-
-    /**
-     * Add an &lt;not&gt; condition "container".
-     *
-     * @since 1.1
-     */
-    public void addNot(Not n) {conditions.addElement(n);}
-
-    /**
-     * Add an &lt;and&gt; condition "container".
-     *
-     * @since 1.1
-     */
-    public void addAnd(And a) {conditions.addElement(a);}
-
-    /**
-     * Add an &lt;or&gt; condition "container".
-     *
-     * @since 1.1
-     */
-    public void addOr(Or o) {conditions.addElement(o);}
-
-    /**
-     * Add an &lt;equals&gt; condition.
-     *
-     * @since 1.1
-     */
-    public void addEquals(Equals e) {conditions.addElement(e);}
-
-    /**
-     * Add an &lt;os&gt; condition.
-     *
-     * @since 1.1
-     */
-    public void addOs(Os o) {conditions.addElement(o);}
-
-    /**
-     * Inner class that configures those conditions with a project
-     * instance that need it.
-     *
-     * @since 1.1
-     */
-    private class ConditionEnumeration implements Enumeration {
-        private int currentElement = 0;
-
-        public boolean hasMoreElements() {
-            return countConditions() > currentElement;
-        }
-
-        public Object nextElement() throws NoSuchElementException {
-            Object o = null;
-            try {
-                o = conditions.elementAt(currentElement++);
-            } catch (ArrayIndexOutOfBoundsException e) {
-                throw new NoSuchElementException();
-            }
-            
-            if (o instanceof Task) {
-                ((Task) o).setProject(getProject());
-            } else if (o instanceof ConditionBase) {
-                ((ConditionBase) o).setProject(getProject());
-            }
-            return o;
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java b/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java
deleted file mode 100644
index e8ca6ff..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java
+++ /dev/null
@@ -1,78 +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.condition;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * Simple String comparison condition.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de>Stefan Bodewig</a>
- * @version $Revision$
- */
-public class Equals implements Condition {
-
-    private String arg1, arg2;
-
-    public void setArg1(String a1) {arg1 = a1;}
-    public void setArg2(String a2) {arg2 = a2;}
-
-    public boolean eval() throws BuildException {
-        if (arg1 == null || arg2 == null) {
-            throw new BuildException("both arg1 and arg2 are required in equals");
-        }
-        return arg1.equals(arg2);
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Not.java b/src/main/org/apache/tools/ant/taskdefs/condition/Not.java
deleted file mode 100644
index 384d2c8..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/condition/Not.java
+++ /dev/null
@@ -1,80 +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.condition;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * &lt;not&gt; condition.
- *
- * Evaluates to true if the single condition nested into it is false
- * and vice versa.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de>Stefan Bodewig</a>
- * @version $Revision$
- */
-public class Not extends ConditionBase implements Condition {
-
-    public boolean eval() throws BuildException {
-        if (countConditions() > 1) {
-            throw new BuildException("You must not nest more than one condition into <not>");
-        }
-        if (countConditions() < 1) {
-            throw new BuildException("You must nest a condition into <not>");
-        }
-        return !((Condition) getConditions().nextElement()).eval();
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Or.java b/src/main/org/apache/tools/ant/taskdefs/condition/Or.java
deleted file mode 100644
index edfd424..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/condition/Or.java
+++ /dev/null
@@ -1,83 +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.condition;
-
-import java.util.Enumeration;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * &lt;or&gt; condition container.
- *
- * <p>Iterates over all conditions and returns true as soon as one
- * evaluates to true.</p>
- * 
- * @author <a href="mailto:stefan.bodewig@epost.de>Stefan Bodewig</a>
- * @version $Revision$
- */
-public class Or extends ConditionBase implements Condition {
-
-    public boolean eval() throws BuildException {
-        Enumeration enum = getConditions();
-        while (enum.hasMoreElements()) {
-            Condition c = (Condition) enum.nextElement();
-            if (c.eval()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Os.java b/src/main/org/apache/tools/ant/taskdefs/condition/Os.java
deleted file mode 100644
index db3e094..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/condition/Os.java
+++ /dev/null
@@ -1,90 +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.condition;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * Condition that tests the OS type.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de>Stefan Bodewig</a>
- * @version $Revision$
- */
-public class Os implements Condition {
-    private String family;
-
-    public void setFamily(String f) {family = f.toLowerCase();}
-
-    public boolean eval() throws BuildException {
-        String osName = System.getProperty("os.name").toLowerCase();
-        String pathSep = System.getProperty("path.separator");
-        if (family != null) {
-            if (family.equals("windows")) {
-                return osName.indexOf("windows") > -1;
-            } else if (family.equals("dos")) {
-                return pathSep.equals(";");
-            } else if (family.equals("mac")) {
-                return osName.indexOf("mac") > -1;
-            } else if (family.equals("unix")) {
-                return pathSep.equals(":")
-                    && (!osName.startsWith("mac") || osName.endsWith("x"));
-            }
-            throw new BuildException("Don\'t know how to detect os family \""
-                                     + family + "\"");
-        }
-        return false;
-    }
-
-}
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 acd6055..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties
+++ /dev/null
@@ -1,131 +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
-record=org.apache.tools.ant.taskdefs.Recorder
-cvspass=org.apache.tools.ant.taskdefs.CVSPass
-typedef=org.apache.tools.ant.taskdefs.Typedef
-sleep=org.apache.tools.ant.taskdefs.Sleep
-pathconvert=org.apache.tools.ant.taskdefs.PathConvert
-ear=org.apache.tools.ant.taskdefs.Ear
-parallel=org.apache.tools.ant.taskdefs.Parallel
-sequential=org.apache.tools.ant.taskdefs.Sequential
-condition=org.apache.tools.ant.taskdefs.ConditionTask
-dependset=org.apache.tools.ant.taskdefs.DependSet
-
-# 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
-mmetrics=org.apache.tools.ant.taskdefs.optional.metamata.MMetrics
-maudit=org.apache.tools.ant.taskdefs.optional.metamata.MAudit
-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
-icontract=org.apache.tools.ant.taskdefs.optional.IContract
-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
-pvcs=org.apache.tools.ant.taskdefs.optional.pvcs.Pvcs
-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
-p4counter=org.apache.tools.ant.taskdefs.optional.perforce.P4Counter
-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
-vsslabel=org.apache.tools.ant.taskdefs.optional.vss.MSVSSLABEL
-vsshistory=org.apache.tools.ant.taskdefs.optional.vss.MSVSSHISTORY
-blgenclient=org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient
-rpm=org.apache.tools.ant.taskdefs.optional.Rpm
-xmlvalidate=org.apache.tools.ant.taskdefs.optional.XMLValidateTask
-vsscheckin=org.apache.tools.ant.taskdefs.optional.vss.MSVSSCHECKIN
-vsscheckout=org.apache.tools.ant.taskdefs.optional.vss.MSVSSCHECKOUT
-iplanet-ejbc=org.apache.tools.ant.taskdefs.optional.ejb.IPlanetEjbcTask
-jdepend=org.apache.tools.ant.taskdefs.optional.jdepend.JDependTask
-mimemail=org.apache.tools.ant.taskdefs.optional.net.MimeMail
-ccmcheckin=org.apache.tools.ant.taskdefs.optional.ccm.CCMCheckin
-ccmcheckout=org.apache.tools.ant.taskdefs.optional.ccm.CCMCheckout
-ccmcheckintask=org.apache.tools.ant.taskdefs.optional.ccm.CCMCheckinDefault
-ccmreconfigure=org.apache.tools.ant.taskdefs.optional.ccm.CCMReconfigure
-ccmcreatetask=org.apache.tools.ant.taskdefs.optional.ccm.CCMCreateTask
-jpcoverage=org.apache.tools.ant.taskdefs.optional.sitraka.Coverage
-jpcovmerge=org.apache.tools.ant.taskdefs.optional.sitraka.CovMerge
-jpcovreport=org.apache.tools.ant.taskdefs.optional.sitraka.CovReport
-
-# 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/IContract.java b/src/main/org/apache/tools/ant/taskdefs/optional/IContract.java
deleted file mode 100644
index 4e1c62e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/IContract.java
+++ /dev/null
@@ -1,826 +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", "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.tools.ant.taskdefs.optional;
-
-
-
-
-
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.Date;
-import java.util.Properties;
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.Java;
-import org.apache.tools.ant.taskdefs.Javac;
-import org.apache.tools.ant.taskdefs.MatchingTask;
-import org.apache.tools.ant.taskdefs.Mkdir;
-import org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.Reference;
-
-/**
- * Instruments Java classes with <a href="http://www.reliable-systems.com/tools/">iContract</a>
- * DBC preprocessor.
- * <br/>
- * The task can generate a properties file for <a href="http://hjem.sol.no/hellesoy/icontrol.html">iControl</a>,
- * a graphical user interface that lets you turn on/off assertions. iControl generates a control file that you can refer to
- * from this task using the controlfile attribute.
- * <p/>
- * Thanks to Rainer Schmitz for enhancements and comments.
- *
- * @author <a href="mailto:aslak.hellesoy@bekk.no">Aslak Hellesøy</a>
- *
- * <p/>
- * <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">srcdir</td>
- *     <td valign="top">Location of the java files.</td>
- *     <td valign="top" align="center">Yes</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">instrumentdir</td>
- *     <td valign="top">Indicates where the instrumented source files should go.</td>
- *     <td valign="top" align="center">Yes</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">repositorydir</td>
- *     <td valign="top">Indicates where the repository source files should go.</td>
- *     <td valign="top" align="center">Yes</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">builddir</td>
- *     <td valign="top">Indicates where the compiled instrumented classes should go.
- *       Defaults to the value of instrumentdir.
- *       </p>
- *       <em>NOTE:</em> Don't use the same directory for compiled instrumented classes
- *       and uninstrumented classes. It will break the dependency checking. (Classes will
- *       not be reinstrumented if you change them).</td>
- *     <td valign="top" align="center">No</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">repositorybuilddir</td>
- *     <td valign="top">Indicates where the compiled repository classes should go.
- *       Defaults to the value of repositorydir.</td>
- *     <td valign="top" align="center">No</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">pre</td>
- *     <td valign="top">Indicates whether or not to instrument for preconditions.
- *       Defaults to <code>true</code> unless controlfile is specified, in which case it
- *       defaults to <code>false</code>.</td>
- *     <td valign="top" align="center">No</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">post</td>
- *     <td valign="top">Indicates whether or not to instrument for postconditions.
- *       Defaults to <code>true</code> unless controlfile is specified, in which case it
- *       defaults to <code>false</code>.</td>
- *     <td valign="top" align="center">No</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">invariant</td>
- *     <td valign="top">Indicates whether or not to instrument for invariants.
- *       Defaults to <code>true</code> unless controlfile is specified, in which case it
- *       defaults to <code>false</code>.</td>
- *     <td valign="top" align="center">No</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">failthrowable</td>
- *     <td valign="top">The full name of the Throwable (Exception) that should be
- *       thrown when an assertion is violated. Defaults to <code>java.lang.Error</code></td>
- *     <td valign="top" align="center">No</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">verbosity</td>
- *     <td valign="top">Indicates the verbosity level of iContract. Any combination
- *       of <code>error*,warning*,note*,info*,progress*,debug*</code> (comma separated) can be
- *       used. Defaults to <code>error*</code></td>
- *     <td valign="top" align="center">No</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">quiet</td>
- *     <td valign="top">Indicates if iContract should be quiet. Turn it off if many your classes extend uninstrumented classes
- *     and you don't want warnings about this. Defaults to <code>false</code></td>
- *     <td valign="top" align="center">No</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">updateicontrol</td>
- *     <td valign="top">If set to true, it indicates that the properties file for
- *       iControl in the current directory should be updated (or created if it doesn't exist).
- *       Defaults to <code>false</code>.</td>
- *     <td valign="top" align="center">No</td>
- *   </tr>
- *   <tr>
- *     <td valign="top">controlfile</td>
- *     <td valign="top">The name of the control file to pass to iContract. Consider using iControl to generate the file.
- *       Default is not to pass a file. </td>
- *     <td valign="top" align="center">Only if <code>updateicontrol=true</code></td>
- *   </tr>
- *   <tr>
- *     <td valign="top">classdir</td>
- *     <td valign="top">Indicates where compiled (unistrumented) classes are located.
- *       This is required in order to properly update the icontrol.properties file, not
- *       for instrumentation.</td>
- *     <td valign="top" align="center">Only if <code>updateicontrol=true</code></td>
- *   </tr>
- *   <tr>
- *     <td valign="top">targets</td>
- *     <td valign="top">Name of the file that will be generated by this task, which lists all the
- *        classes that iContract will instrument. If specified, the file will not be deleted after execution.
- *        If not specified, a file will still be created, but it will be deleted after execution.</td>
- *     <td valign="top" align="center">No</td>
- *   </tr>
- * </table>
- *
- * <p/>
- * <b>Note:</b> iContract will use the java compiler indicated by the project's
- * <code>build.compiler</code> property. See documentation of the Javac task for
- * more information.
- * <p/>
- * Nested includes and excludes are also supported.
- *
- * <p><b>Example:</b></p>
- * <pre>
- * &lt;icontract
- *    srcdir="${build.src}"
- *    instrumentdir="${build.instrument}"
- *    repositorydir="${build.repository}"
- *    builddir="${build.instrclasses}"
- *    updateicontrol="true"
- *    classdir="${build.classes}"
- *    controlfile="control"
- *    targets="targets"
- *    verbosity="error*,warning*"
- *    quiet="true"
- * >
- *    &lt;classpath refid="compile-classpath"/>
- * &lt;/icontract>
- * </pre>
- *
- */
-public class IContract extends MatchingTask {
-
-    private static final String ICONTROL_PROPERTIES_HEADER =
-        " You might want to set classRoot to point to your normal compilation class root directory.";
-
-    private static final String ICONTROL_PROPERTIES_MESSAGE =
-        "You should probably modify icontrol.properties' classRoot to where comiled (uninstrumented) classes go.";
-
-    /** \ on windows, / on linux/unix */
-    private static final String ps = System.getProperty( "path.separator" );
-
-    /** compiler to use for instrumenation */
-    private String icCompiler = "javac";
-
-    /** temporary file with file names of all java files to be instrumented */
-    private File targets = null;
-
-    /** will be set to true if any of the sourca files are newer than the instrumented files */
-    private boolean dirty = false;
-
-    /** set to true if the iContract jar is missing */
-    private boolean iContractMissing = false;
-
-    /** source file root */
-    private File srcDir = null;
-
-    /** instrumentation src root */
-    private File instrumentDir = null;
-
-    /** instrumentation build root */
-    private File buildDir = null;
-
-    /** repository src root */
-    private File repositoryDir = null;
-
-    /** repository build root */
-    private File repBuildDir = null;
-
-    /** classpath */
-    private Path classpath = null;
-
-    /** The class of the Throwable to be thrown on failed assertions */
-    private String failThrowable = "java.lang.Error";
-
-    /** The -v option */
-    private String verbosity = "error*";
-
-    /** The -q option */
-    private boolean quiet = false;
-
-    /** Indicates whether or not to use internal compilation */
-    private boolean internalcompilation = false;
-
-    /** The -m option */
-    private File controlFile = null;
-
-    /** Indicates whether or not to instrument for preconditions */
-    private boolean pre = true;
-    private boolean preModified = false;
-
-    /** Indicates whether or not to instrument for postconditions */
-    private boolean post = true;
-    private boolean postModified = false;
-
-    /** Indicates whether or not to instrument for invariants */
-    private boolean invariant = true;
-    private boolean invariantModified = false;
-
-    /** Indicates whether or not to instrument all files regardless of timestamp */
-    // can't be explicitly set, is set if control file exists and is newer than any source file
-    private boolean instrumentall = false;
-
-    /**
-     * Indicates the name of a properties file (intentionally for iControl) where the classpath
-     * property should be updated.
-     */
-    private boolean updateIcontrol = false;
-
-    /**
-     * Regular compilation class root
-     */
-    private File classDir = null;
-
-    /**
-     * Sets the source directory
-     *
-     * @param srcDir the source directory
-     */
-    public void setSrcdir( File srcDir ) {
-        this.srcDir = srcDir;
-    }
-
-    /**
-     * Sets the class directory (uninstrumented classes)
-     *
-     * @param srcDir the source directory
-     */
-    public void setClassdir( File classDir ) {
-        this.classDir = classDir;
-    }
-
-    /**
-     * Sets the instrumentation directory
-     *
-     * @param instrumentDir the source directory
-     */
-    public void setInstrumentdir( File instrumentDir ) {
-        this.instrumentDir = instrumentDir;
-        if ( this.buildDir == null ) {
-            setBuilddir( instrumentDir );
-        }
-    }
-
-    /**
-     * Sets the build directory for instrumented classes
-     *
-     * @param buildDir the build directory
-     */
-    public void setBuilddir( File buildDir ) {
-        this.buildDir = buildDir;
-    }
-
-    /**
-     * Sets the build directory for repository classes
-     *
-     * @param repositoryDir the source directory
-     */
-    public void setRepositorydir( File repositoryDir ) {
-        this.repositoryDir = repositoryDir;
-        if( this.repBuildDir == null ) {
-            setRepbuilddir( repositoryDir );
-        }
-    }
-
-    /**
-     * Sets the build directory for instrumented classes
-     *
-     * @param buildDir the build directory
-     */
-    public void setRepbuilddir( File repBuildDir ) {
-        this.repBuildDir = repBuildDir;
-    }
-
-    /**
-     * Turns on/off precondition instrumentation
-     *
-     * @param pre true turns it on
-     */
-    public void setPre( boolean pre ) {
-        this.pre = pre;
-        preModified = true;
-    }
-
-    /**
-     * Turns on/off postcondition instrumentation
-     *
-     * @param post true turns it on
-     */
-    public void setPost( boolean post ) {
-        this.post = post;
-        postModified = true;
-    }
-
-    /**
-     * Turns on/off invariant instrumentation
-     *
-     * @param invariant true turns it on
-     */
-    public void setInvariant( boolean invariant ) {
-        this.invariant = invariant;
-        invariantModified = true;
-    }
-
-    /**
-     * Sets the Throwable (Exception) to be thrown on assertion violation
-     *
-     * @param clazz the fully qualified Throwable class name
-     */
-    public void setFailthrowable( String clazz ) {
-        this.failThrowable = clazz;
-    }
-
-    /**
-     * Sets the verbosity level of iContract. Any combination of
-     * error*,warning*,note*,info*,progress*,debug* (comma separated)
-     * can be used. Defaults to error*,warning*
-     *
-     * @param verbosity verbosity level
-     */
-    public void setVerbosity( String verbosity ) {
-        this.verbosity = verbosity;
-    }
-
-    /**
-     * Tells iContract to be quiet.
-     *
-     * @param quiet true if iContract should be quiet.
-     */
-    public void setQuiet( boolean quiet ) {
-        this.quiet = quiet;
-    }
-
-    /**
-     * Sets the name of the file where targets will be written.
-     * That is the file that tells iContract what files to process.
-     *
-     * @param targets the targets file name
-     */
-    public void setTargets( File targets ) {
-        this.targets = targets;
-    }
-
-    /**
-     * Sets the control file to pass to iContract.
-     *
-     * @param controlFile the control file
-     */
-    public void setControlfile( File controlFile ) {
-        if( !controlFile.exists() ) {
-            log( "WARNING: Control file " + controlFile.getAbsolutePath() + " doesn't exist. iContract will be run without control file." );
-        }
-        this.controlFile = controlFile;
-    }
-
-    /**
-     * Sets the classpath to be used for invocation of iContract.
-     *
-     * @path the classpath
-     */
-    public void setClasspath( Path path ) {
-        createClasspath().append( path );
-    }
-
-    /**
-     * Creates a nested classpath element
-     *
-     * @return the nested classpath element
-     */
-    public Path createClasspath() {
-        if (classpath == null) {
-            classpath = new Path( getProject() );
-        }
-        return classpath;
-    }
-
-    /**
-     * Adds a reference to a classpath defined elsewhere.
-     *
-     * @param reference referenced classpath
-     */
-    public void setClasspathRef( Reference reference ) {
-        createClasspath().setRefid( reference );
-    }
-
-    /**
-     * Decides whether or not to update iControl properties file
-     *
-     * @param updateIcontrol true if iControl properties file should be updated
-     */
-    public void setUpdateicontrol( boolean updateIcontrol ) {
-        this.updateIcontrol = updateIcontrol;
-    }
-
-    /**
-     * Executes the task
-     *
-     * @exception BuildException if the instrumentation fails
-     */
-    public void execute() throws BuildException {
-        preconditions();
-        scan();
-        if( dirty ) {
-
-            // turn off assertions if we're using controlfile, unless they are not explicitly set.
-            boolean useControlFile = (controlFile != null) && controlFile.exists();
-            if( useControlFile && !preModified ) {
-                pre = false;
-            }
-            if( useControlFile && !postModified ) {
-                post = false;
-            }
-            if( useControlFile && !invariantModified ) {
-                invariant = false;
-            }
-            // issue warning if pre,post or invariant is used together with controlfile
-            if( ( pre || post || invariant ) && controlFile != null ) {
-                log( "WARNING: specifying pre,post or invariant will override control file settings" );
-            }
-
-
-
-            // We want to be notified if iContract jar is missing. This makes life easier for the user
-            // who didn't understand that iContract is a separate library (duh!)
-            getProject().addBuildListener( new IContractPresenceDetector() );
-
-            // Prepare the directories for iContract. iContract will make them if they
-            // don't exist, but for some reason I don't know, it will complain about the REP files
-            // afterwards
-            Mkdir mkdir = (Mkdir) project.createTask( "mkdir" );
-            mkdir.setDir( instrumentDir );
-            mkdir.execute();
-            mkdir.setDir( buildDir );
-            mkdir.execute();
-            mkdir.setDir( repositoryDir );
-            mkdir.execute();
-
-            // Set the classpath that is needed for regular Javac compilation
-            Path baseClasspath = createClasspath();
-
-            // Might need to add the core classes if we're not using Sun's Javac (like Jikes)
-            String compiler = project.getProperty("build.compiler");
-            ClasspathHelper classpathHelper = new ClasspathHelper( compiler );
-            classpathHelper.modify( baseClasspath );
-
-            // Create the classpath required to compile the sourcefiles BEFORE instrumentation
-            Path beforeInstrumentationClasspath = ((Path) baseClasspath.clone());
-            beforeInstrumentationClasspath.append( new Path( getProject(), srcDir.getAbsolutePath() ) );
-
-            // Create the classpath required to compile the sourcefiles AFTER instrumentation
-            Path afterInstrumentationClasspath = ((Path) baseClasspath.clone());
-            afterInstrumentationClasspath.append( new Path( getProject(), instrumentDir.getAbsolutePath() ) );
-            afterInstrumentationClasspath.append( new Path( getProject(), repositoryDir.getAbsolutePath() ) );
-            afterInstrumentationClasspath.append( new Path( getProject(), srcDir.getAbsolutePath() ) );
-            afterInstrumentationClasspath.append( new Path( getProject(), buildDir.getAbsolutePath() ) );
-
-            // Create the classpath required to automatically compile the repository files
-            Path repositoryClasspath = ((Path) baseClasspath.clone());
-            repositoryClasspath.append( new Path( getProject(), instrumentDir.getAbsolutePath() ) );
-            repositoryClasspath.append( new Path( getProject(), srcDir.getAbsolutePath() ) );
-            repositoryClasspath.append( new Path( getProject(), repositoryDir.getAbsolutePath() ) );
-            repositoryClasspath.append( new Path( getProject(), buildDir.getAbsolutePath() ) );
-
-            // Create the classpath required for iContract itself
-            Path iContractClasspath = ((Path) baseClasspath.clone());
-            iContractClasspath.append( new Path( getProject(), System.getProperty( "java.home" ) + File.separator + ".." + File.separator + "lib" + File.separator + "tools.jar" ) );
-            iContractClasspath.append( new Path( getProject(), srcDir.getAbsolutePath() ) );
-            iContractClasspath.append( new Path( getProject(), repositoryDir.getAbsolutePath() ) );
-            iContractClasspath.append( new Path( getProject(), instrumentDir.getAbsolutePath() ) );
-            iContractClasspath.append( new Path( getProject(), buildDir.getAbsolutePath() ) );
-
-            // Create a forked java process
-            Java iContract = (Java) project.createTask( "java" );
-            iContract.setTaskName( getTaskName() );
-            iContract.setFork( true );
-            iContract.setClassname( "com.reliablesystems.iContract.Tool" );
-            iContract.setClasspath( iContractClasspath );
-
-            // Build the arguments to iContract
-            StringBuffer args = new StringBuffer();
-            args.append( directiveString() );
-            args.append( "-v" ).append( verbosity ).append( " " );
-            args.append( "-b" ).append( "\"" ).append( icCompiler ).append( " -classpath " ).append( beforeInstrumentationClasspath ).append( "\" " );
-            args.append( "-c" ).append( "\"" ).append( icCompiler ).append( " -classpath " ).append( afterInstrumentationClasspath ).append( " -d " ).append( buildDir ).append( "\" " );
-            args.append( "-n" ).append( "\"" ).append( icCompiler ).append( " -classpath " ).append( repositoryClasspath ).append( "\" " );
-            args.append( "-d" ).append( failThrowable ).append( " " );
-            args.append( "-o" ).append( instrumentDir ).append( File.separator ).append( "@p" ).append( File.separator ).append( "@f.@e " );
-            args.append( "-k" ).append( repositoryDir ).append( File.separator ).append( "@p " );
-            args.append( quiet ? "-q " : "" );
-            args.append( instrumentall ? "-a " : "" ); // reinstrument everything if controlFile exists and is newer than any class
-            args.append( "@" ).append( targets.getAbsolutePath() );
-            iContract.createArg().setLine( args.toString() );
-
-//System.out.println( "JAVA -classpath " + iContractClasspath + " com.reliablesystems.iContract.Tool " + args.toString() );
-
-            // update iControlProperties if it's set.
-            if( updateIcontrol ) {
-                Properties iControlProps = new Properties();
-                try { // to read existing propertiesfile
-                    iControlProps.load( new FileInputStream( "icontrol.properties" ) );
-                } catch( IOException e ) {
-                    log( "File icontrol.properties not found. That's ok. Writing a default one." );
-                }
-                iControlProps.setProperty( "sourceRoot", srcDir.getAbsolutePath() );
-                iControlProps.setProperty( "classRoot", classDir.getAbsolutePath() );
-                iControlProps.setProperty( "classpath", afterInstrumentationClasspath.toString() );
-                iControlProps.setProperty( "controlFile", controlFile.getAbsolutePath() );
-                iControlProps.setProperty( "targetsFile", targets.getAbsolutePath() );
-
-                try { // to read existing propertiesfile
-                    iControlProps.store( new FileOutputStream( "icontrol.properties" ), ICONTROL_PROPERTIES_HEADER );
-                    log( "Updated icontrol.properties" );
-                } catch( IOException e ) {
-                    log( "Couldn't write icontrol.properties." );
-                }
-            }
-
-            // do it!
-            int result = iContract.executeJava();
-            if( result != 0 ) {
-                if( iContractMissing ) {
-                    log( "iContract can't be found on your classpath. Your classpath is:" );
-                    log( classpath.toString() );
-                    log( "If you don't have the iContract jar, go get it at http://www.reliable-systems.com/tools/" );
-                }
-                throw new BuildException( "iContract instrumentation failed. Code=" + result );
-            }
-
-        } else { // not dirty
-            //log( "Nothing to do. Everything up to date." );
-        }
-    }
-
-    /**
-     * Checks that the required attributes are set.
-     */
-    private void preconditions() throws BuildException {
-        if (srcDir == null) {
-            throw new BuildException( "srcdir attribute must be set!", location );
-        }
-        if (!srcDir.exists()) {
-            throw new BuildException( "srcdir \"" + srcDir.getPath() + "\" does not exist!", location );
-        }
-        if (instrumentDir == null) {
-            throw new BuildException( "instrumentdir attribute must be set!", location );
-        }
-        if (repositoryDir == null) {
-            throw new BuildException( "repositorydir attribute must be set!", location );
-        }
-        if (updateIcontrol == true && classDir == null) {
-            throw new BuildException( "classdir attribute must be specified when updateicontrol=true!", location );
-        }
-        if( updateIcontrol == true && controlFile == null ) {
-            throw new BuildException( "controlfile attribute must be specified when updateicontrol=true!", location );
-        }
-    }
-
-    /**
-     * Verifies whether any of the source files have changed. Done by comparing date of source/class files.
-     * The whole lot is "dirty" if at least one source file or the control file is newer than the instrumented
-     * files. If not dirty, iContract will not be executed.
-     * <br/>
-     * Also creates a temporary file with a list of the source files, that will be deleted upon exit.
-     */
-    private void scan() throws BuildException {
-        long now = (new Date()).getTime();
-
-        DirectoryScanner ds = null;
-
-        ds = getDirectoryScanner( srcDir );
-        String[] files = ds.getIncludedFiles();
-
-        FileOutputStream targetOutputStream = null;
-        PrintStream targetPrinter = null;
-        boolean writeTargets = false;
-        try {
-            if( targets == null ) {
-                targets = new File( "targets" );
-                log( "Warning: targets file not specified. generating file: " + targets.getName() );
-                writeTargets = true;
-            } else if( !targets.exists() ) {
-                log( "Specified targets file doesn't exist. generating file: " + targets.getName() );
-                writeTargets = true;
-            }
-            if( writeTargets ) {
-                log( "You should consider using iControl to create a target file." );
-                targetOutputStream = new FileOutputStream( targets );
-                targetPrinter = new PrintStream( targetOutputStream );
-            }
-            for (int i = 0; i < files.length; i++ ) {
-                File srcFile = new File(srcDir, files[i]);
-                if (files[i].endsWith(".java")) {
-                    // print the target, while we're at here. (Only if generatetarget=true).
-                    if( targetPrinter != null ) {
-                        targetPrinter.println( srcFile.getAbsolutePath() );
-                    }
-                    File classFile = new File( buildDir, files[i].substring( 0, files[i].indexOf( ".java" ) ) + ".class" );
-
-                    if (srcFile.lastModified() > now) {
-                        log("Warning: file modified in the future: " +
-                            files[i], Project.MSG_WARN);
-                    }
-
-                    if (!classFile.exists() || srcFile.lastModified() > classFile.lastModified()) {
-                        //log( "Found a file newer than the instrumentDir class file: " + srcFile.getPath() + " newer than " + classFile.getPath() + ". Running iContract again..." );
-                        dirty = true;
-                    }
-                }
-            }
-            if( targetPrinter != null ) {
-                targetPrinter.flush();
-                targetPrinter.close();
-            }
-        } catch( IOException e ) {
-            throw new BuildException( "Could not create target file:" + e.getMessage() );
-        }
-
-        // also, check controlFile timestamp
-        long controlFileTime = -1;
-        try {
-            if( controlFile != null ) {
-                if( controlFile.exists() && buildDir.exists() ) {
-                    controlFileTime = controlFile.lastModified();
-                    ds = getDirectoryScanner( buildDir );
-                    files = ds.getIncludedFiles();
-                    for( int i = 0; i < files.length; i++ ) {
-                        File srcFile = new File( srcDir, files[i] );
-                        if( files[i].endsWith( ".class" ) ) {
-                            if( controlFileTime > srcFile.lastModified() ) {
-                                if( !dirty ) {
-                                    log( "Control file " + controlFile.getAbsolutePath() + " has been updated. Instrumenting all files..." );
-                                }
-                                dirty = true;
-                                instrumentall = true;
-                            }
-                        }
-                    }
-                }
-            }
-        } catch( Throwable t ) {
-            throw new BuildException( "Got an interesting exception:" + t.getMessage() );
-        }
-    }
-
-
-    /**
-     * Creates the -m option based on the values of controlFile, pre, post and invariant.
-     */
-    private final String directiveString() {
-        StringBuffer sb = new StringBuffer();
-        boolean comma = false;
-
-        boolean useControlFile = (controlFile != null) && controlFile.exists();
-        if( useControlFile || pre || post || invariant ) {
-            sb.append( "-m" );
-        }
-        if( useControlFile ) {
-            sb.append( "@" ).append( controlFile );
-            comma = true;
-        }
-        if( pre ) {
-            if( comma ) {
-                sb.append( "," );
-            }
-            sb.append( "pre" );
-            comma = true;
-        }
-        if( post ) {
-            if( comma ) {
-                sb.append( "," );
-            }
-            sb.append( "post" );
-            comma = true;
-        }
-        if( invariant ) {
-            if( comma ) {
-                sb.append( "," );
-            }
-            sb.append( "inv" );
-        }
-        sb.append( " " );
-        return sb.toString();
-    }
-
-    /**
-     * BuildListener that sets the iContractMissing flag to true if a
-     * message about missing iContract is missing. Used to indicate
-     * a more verbose error to the user, with advice about how to solve
-     * the problem
-     */
-    private class IContractPresenceDetector implements BuildListener {
-        public void buildFinished(BuildEvent event) {}
-        public void buildStarted(BuildEvent event) {}
-        public void messageLogged(BuildEvent event) {
-            if( "java.lang.NoClassDefFoundError: com/reliablesystems/iContract/Tool".equals( event.getMessage() ) ) {
-                iContractMissing = true;
-            }
-        }
-        public void targetFinished(BuildEvent event) {}
-        public void targetStarted(BuildEvent event) {}
-        public void taskFinished(BuildEvent event) {}
-        public void taskStarted(BuildEvent event) {}
-    }
-
-    /**
-     * This class is a helper to set correct classpath for other compilers, like Jikes.
-     * It reuses the logic from DefaultCompilerAdapter, which is protected, so we have
-     * to subclass it.
-     */
-    private class ClasspathHelper extends DefaultCompilerAdapter {
-        private final String compiler;
-        public ClasspathHelper( String compiler ) {
-            super();
-            this.compiler = compiler;
-        }
-
-        // make it public
-        public void modify( Path path ) {
-            // depending on what compiler to use, set the includeJavaRuntime flag
-            if( "jikes".equals( compiler ) ) {
-                icCompiler = compiler;
-                includeJavaRuntime = true;
-                path.append( getCompileClasspath() );
-            }
-        }
-
-        // dummy implementation. Never called
-        public void setJavac( Javac javac ) {}
-        public boolean execute() { return true; }
-    }
-}
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 ee32e58..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java
+++ /dev/null
@@ -1,427 +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 File 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(File 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() != Project.JAVA_1_1 &&
-                Project.getJavaVersion() != Project.JAVA_1_2) {
-                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");
-        }
-        */
-        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.
-            //------------------------------------------------------------------
-            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);
-            }
-        }
-    }
-
-    /**
-     * 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().setFile(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);
-    }
-}
-
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 65fd909..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(File destDirName) {
-        destDir = 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(File srcDirName) {
-        srcDir = 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/Rpm.java b/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java
deleted file mode 100644
index 1abefaf..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.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;
-
-import java.io.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.Commandline;
-
-/**
- *
- *  @author lucas@collab.net
- */
-public class Rpm extends Task {
-    
-    /**
-     * the spec file
-     */
-    private String specFile;
-
-    /**
-     * the rpm top dir
-     */
-    private File topDir;
-
-    /**
-     * the rpm command to use
-     */
-    private String command = "-bb";
-
-    /**
-     * clean BUILD directory
-     */
-    private boolean cleanBuildDir = false;
-
-    /**
-     * remove spec file
-     */
-    private boolean removeSpec = false;
-
-    /**
-     * remove sources
-     */
-    private boolean removeSource = false;
-
-    /**
-     * 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 {
-        
-        Commandline toExecute = new Commandline();
-
-        toExecute.setExecutable("rpm");
-        if (topDir != null) {
-            toExecute.createArgument().setValue("--define");
-            toExecute.createArgument().setValue("_topdir" + topDir);
-        }
-
-        toExecute.createArgument().setLine(command);
-
-        if (cleanBuildDir) {
-            toExecute.createArgument().setValue("--clean");
-        }
-        if (removeSpec) {
-            toExecute.createArgument().setValue("--rmspec");
-        }
-        if (removeSource) {
-            toExecute.createArgument().setValue("--rmsource");
-        }
-
-        toExecute.createArgument().setValue("SPECS/" + specFile);
-
-        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 (topDir == null) topDir = project.getBaseDir();
-        exe.setWorkingDirectory(topDir);
-
-        exe.setCommandline(toExecute.getCommandline());
-        try {
-            exe.execute();
-            log("Building the RPM based on the " + specFile + " file");
-        } 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 setTopDir(File td) {
-        this.topDir = td;
-    }
-
-    public void setCommand(String c) {
-        this.command = c;
-    }
-
-    public void setSpecFile(String sf) {
-        if ( (sf == null) || (sf.trim().equals(""))) {
-            throw new BuildException("You must specify a spec file",location);
-        }
-        this.specFile = sf;
-    }
-
-    public void setCleanBuildDir(boolean cbd) {
-        cleanBuildDir = cbd;
-    }
-
-    public void setRemoveSpec(boolean rs) {
-        removeSpec = rs;
-    }
-
-    public void setRemoveSource(boolean rs) {
-        removeSource = rs;
-    }
-
-    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/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 565d8d5..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
+++ /dev/null
@@ -1,163 +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 java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-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.Source;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-/**
- * Concrete liaison for XSLT processor implementing TraX. (ie JAXP 1.1)
- *
- * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
- * @author <a href="mailto:dims@yahoo.com">Davanum Srinivas</a>
- * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
- */
-public class TraXLiaison implements XSLTLiaison {
-
-    /** The trax TransformerFactory */
-    private TransformerFactory tfactory = null;
-
-    /** stylesheet stream, close it asap */
-    private FileInputStream xslStream = null;
-
-    /** Stylesheet template */
-    private Templates templates = null;
-
-    /** transformer */
-    private Transformer transformer = null;
-
-    public TraXLiaison() throws Exception {
-        tfactory = TransformerFactory.newInstance();
-    }
-//------------------- IMPORTANT
-    // 1) Don't use the StreamSource(File) ctor. It won't work with
-    // xalan prior to 2.2 because of systemid bugs.
-
-    // 2) Use a stream so that you can close it yourself quickly
-    // and avoid keeping the handle until the object is garbaged.
-    // (always keep control), otherwise you won't be able to delete
-    // the file quickly on windows.
-
-    // 3) Always set the systemid to the source for imports, includes...
-    // in xsl and xml...
-
-    public void setStylesheet(File stylesheet) throws Exception {
-        xslStream = new FileInputStream(stylesheet);
-        StreamSource src = new StreamSource(xslStream);
-        src.setSystemId(getSystemId(stylesheet));
-        templates = tfactory.newTemplates(src);
-        transformer = templates.newTransformer();
-    }
-
-    public void transform(File infile, File outfile) throws Exception {
-        FileInputStream fis = null;
-        FileOutputStream fos = null;
-        try {
-            fis = new FileInputStream(infile);
-            fos = new FileOutputStream(outfile);
-            StreamSource src = new StreamSource(fis);
-            src.setSystemId(getSystemId(infile));
-            StreamResult res = new StreamResult(fos);
-            // not sure what could be the need of this...
-            res.setSystemId(getSystemId(outfile));
-
-            transformer.transform(src, res);
-        } finally {
-            // make sure to close all handles, otherwise the garbage
-            // collector will close them...whenever possible and
-            // Windows may complain about not being able to delete files.
-            try {
-                if (xslStream != null){
-                    xslStream.close();
-                }
-            } catch (IOException ignored){}
-            try {
-                if (fis != null){
-                    fis.close();
-                }
-            } catch (IOException ignored){}
-            try {
-                if (fos != null){
-                    fos.close();
-                }
-            } catch (IOException ignored){}
-        }
-    }
-
-    // make sure that the systemid is made of '/' and not '\' otherwise
-    // crimson will complain that it cannot resolve relative entities
-    // because it grabs the base uri via lastIndexOf('/') without
-    // making sure it is really a /'ed path
-    protected String getSystemId(File file){
-      String path = file.getAbsolutePath();
-      path = path.replace('\\','/');
-      return FILE_PROTOCOL_PREFIX + path;
-    }
-
-    public void addParam(String name, String value){
-        transformer.setParameter(name, value);
-    }
-} //-- TraXLiaison
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
deleted file mode 100644
index cd75034..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
+++ /dev/null
@@ -1,438 +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 java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Vector;
-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.Task;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.Reference;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Parser;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.ParserAdapter;
-
-/** 
- * The <code>XMLValidateTask</code> checks that an XML document is valid,
- * with a SAX validating parser.
- * @author Raphael Pierquin <a href="mailto:raphael.pierquin@agisphere.com">raphael.pierquin@agisphere.com</a>
- */
-public class XMLValidateTask extends Task {
-
-    /**
-     * The default implementation parser classname used by the task to process
-     * validation.
-     */
-    // The crimson implementation is shipped with ant.
-    public static String DEFAULT_XML_READER_CLASSNAME= "org.apache.crimson.parser.XMLReaderImpl";
-
-    protected static String INIT_FAILED_MSG = "Could'nt start xml validation: ";
-
-    // ant task properties
-    // defaults
-    protected boolean failOnError = true;
-    protected boolean warn = true;
-    protected boolean lenient = false;
-    protected String  readerClassName = DEFAULT_XML_READER_CLASSNAME;
-    
-    protected File file = null; // file to be validated
-    protected Vector filesets = new Vector(); // sets of file to be validated
-    protected Path classpath;
-
-
-    /**
-     * the parser is viewed as a SAX2 XMLReader. If a SAX1 parser is specified,
-     * it's wrapped in an adapter that make it behave as a XMLReader.
-     * a more 'standard' way of doing this would be to use the JAXP1.1 SAXParser
-     * interface.
-     */
-    protected XMLReader xmlReader = null; // XMLReader used to validation process
-    protected ValidatorErrorHandler errorHandler
-        = new ValidatorErrorHandler(); // to report sax parsing errors
-    protected Hashtable features = new Hashtable();
-
-
-    /**
-     * Specify how parser error are to be handled.
-     * <p>
-     * If set to <code>true</code> (default), throw a buildException if the parser yields an error.
-     */
-    public void setFailOnError(boolean fail) {
-        
-        failOnError = fail;
-    }
-
-    /**
-     * Specify how parser error are to be handled.
-     * <p>
-     * If set to <code>true</true> (default), log a warn message for each SAX warn event.
-     */
-    public void setWarn(boolean bool) {
-        
-        warn = bool;
-    }
-
-    /**
-     * Specify whether the parser should be validating. Default is <code>true</code>.
-     * <p>
-     * If set to false, the validation will fail only if the parsed document is not well formed XML.
-     * <p>
-     * this option is ignored if the specified class with {@link #setClassName(String)} is not a SAX2
-     * XMLReader.
-     */
-    public void setLenient(boolean bool) {
-
-        lenient = bool;
-    }
-    
-    /**
-     * Specify the class name of the SAX parser to be used. (optional)
-     * @param className should be an implementation of SAX2 <code>org.xml.sax.XMLReader</code>
-     * or SAX2 <code>org.xml.sax.Parser</code>.
-     * <p> if className is an implementation of <code>org.xml.sax.Parser</code>, {@link #setLenient(boolean)},
-     * will be ignored.
-     * <p> if not set, the default {@link #DEFAULT_XML_READER_CLASSNAME} will be used.
-     * @see org.xml.sax.XMLReader;
-     * @see org.xml.sax.Parser;
-     */
-    public void setClassName(String className) {
-        
-        readerClassName = className;
-    }
-
-
-    /**
-     * Specify the classpath to be searched to load the parser (optional)
-     */
-    public void setClasspath(Path classpath) {
-
-        if (this.classpath == null) {
-            this.classpath = classpath;
-        } else {
-            this.classpath.append(classpath);
-        }
-    }
-
-    /**
-     * @see #setClassPath
-     */
-    public Path createClasspath() {
-        if (this.classpath == null) {
-            this.classpath = new Path(project);
-        }
-        return this.classpath.createPath();
-    }
-
-    /**
-     * @see #setClassPath
-     */
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-    /**
-     * specifify the file to be checked
-     */
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    /**
-     * specifify a set of file to be checked
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
-
-    public void execute() throws BuildException {
-
-        int fileProcessed = 0;
-        if (file == null && (filesets.size()==0) ) {
-            throw new BuildException("Specify at least one source - a file or a fileset.");
-        }
-
-        initValidator();
-
-        if (file != null) {
-            if (file.exists() && file.canRead() && file.isFile())  {
-                doValidate(file);
-                fileProcessed++;
-            }
-            else {
-                String errorMsg = "File " + file + " cannot be read";
-                if (failOnError)
-                    throw new BuildException(errorMsg);
-                else
-                    log(errorMsg, Project.MSG_ERR);
-            }
-        }
-            
-        for (int i=0; i<filesets.size(); i++) {
-
-            FileSet fs = (FileSet) filesets.elementAt(i);
-            DirectoryScanner ds = fs.getDirectoryScanner(project);
-            String[] files = ds.getIncludedFiles();
-            
-            for (int j=0; j < files.length ; j++)  {
-                File srcFile = new File(fs.getDir(project), files[j]);
-                doValidate(srcFile);
-                fileProcessed++;
-            }
-        }
-        log(fileProcessed + " file(s) have been successfully validated.");
-    }
-
-    /**
-     * init the parser :
-     * load the parser class, and set features if necessary
-     */
-    private void initValidator() {
-
-        try {
-            // load the parser class
-            // with JAXP, we would use a SAXParser factory
-            Class readerClass= null;
-            //Class readerImpl = null;
-            //Class parserImpl = null;
-            if (classpath != null) {
-                AntClassLoader loader = new AntClassLoader(project, classpath);
-//                loader.addSystemPackageRoot("org.xml"); // needed to avoid conflict
-                readerClass = loader.loadClass(readerClassName);
-                AntClassLoader.initializeClass(readerClass);
-            } else 
-                readerClass = Class.forName(readerClassName);
-            
-            // then check it implements XMLReader
-            if (XMLReader.class.isAssignableFrom(readerClass)) {
-
-                xmlReader = (XMLReader) readerClass.newInstance();
-                log("Using SAX2 reader " + readerClassName, Project.MSG_VERBOSE);
-            } else {
-                
-                // see if it is a SAX1 Parser
-                if (Parser.class.isAssignableFrom(readerClass)) {
-                    Parser parser = (Parser) readerClass.newInstance();
-                    xmlReader = new ParserAdapter(parser);
-                    log("Using SAX1 parser " + readerClassName, Project.MSG_VERBOSE);
-                }  else {
-                    throw new BuildException(INIT_FAILED_MSG
-                                             + readerClassName
-                                             + " implements nor SAX1 Parser nor SAX2 XMLReader.");
-                }
-            }
-        } catch (ClassNotFoundException e) {
-            throw new BuildException(INIT_FAILED_MSG + readerClassName, e);
-        } catch (InstantiationException e) {
-            throw new BuildException(INIT_FAILED_MSG + readerClassName, e);
-        } catch (IllegalAccessException e) {
-            throw new BuildException(INIT_FAILED_MSG + readerClassName, e);
-        }
-
-        xmlReader.setErrorHandler(errorHandler);
-        
-        if (! (xmlReader instanceof ParserAdapter)) {
-            // turn validation on
-            if (! lenient) {
-                boolean ok = setFeature("http://xml.org/sax/features/validation",true,true);
-                if (! ok) {
-                    throw new BuildException(INIT_FAILED_MSG
-                                             + readerClassName
-                                             + " doesn't provide validation");
-                }
-            }
-            // set other features
-            Enumeration enum = features.keys();
-            while(enum.hasMoreElements()) {
-                String featureId = (String) enum.nextElement();
-                setFeature(featureId, ((Boolean) features.get(featureId)).booleanValue(), true);
-            }
-        }
-    }
-
-    /*
-     * set a feature on the parser.
-     * TODO: find a way to set any feature from build.xml
-     */
-    private boolean setFeature(String feature, boolean value, boolean warn) {
-
-        boolean  toReturn = false;
-        try {
-            xmlReader.setFeature(feature,value);
-            toReturn = true;
-        } catch (SAXNotRecognizedException e) {
-            if (warn)
-                log("Could'nt set feature '"
-                    + feature
-                    + "' because the parser doesn't recognize it", 
-                    Project.MSG_WARN);
-        } catch (SAXNotSupportedException  e) {
-            if (warn)
-                log("Could'nt set feature '"
-                    + feature 
-                    + "' because the parser doesn't support it",
-                    Project.MSG_WARN);
-        }
-        return toReturn;
-    }
-    /*
-     * parse the file
-     */
-    private void doValidate(File afile) {
-        try {
-            log("Validating " + afile.getName() + "... ", Project.MSG_VERBOSE);
-            errorHandler.init(afile);
-            InputSource is = new InputSource(new FileReader(afile));
-            String uri = "file:" + afile.getAbsolutePath().replace('\\', '/');
-            for (int index = uri.indexOf('#'); index != -1;
-                 index = uri.indexOf('#')) {
-                uri = uri.substring(0, index) + "%23" + uri.substring(index+1);
-            }
-            is.setSystemId(uri);
-            xmlReader.parse(is);
-        } catch (SAXException ex) {
-            if (failOnError)
-                throw new BuildException("Could'nt validate document " + afile);
-        } catch (IOException ex) {
-            throw new BuildException("Could'nt validate document " + afile, ex);
-        }
-        
-        if (errorHandler.getFailure()) {
-            if (failOnError)
-                throw new BuildException(afile + " is not a valid XML document.");
-            else
-                log(afile + " is not a valid XML document",Project.MSG_ERR);
-        }        
-    }
-
-    /*
-     * ValidatorErrorHandler role : 
-     * <ul>
-     * <li> log SAX parse exceptions,
-     * <li> remember if an error occured
-     * </ul>
-     */
-    protected class ValidatorErrorHandler implements ErrorHandler {
-        
-        protected File currentFile = null;
-        protected String lastErrorMessage = null;
-        protected boolean failed = false;
-        
-        public void init(File file) {
-            currentFile = file;
-            failed = false;
-        }
-        
-        // did an error happen during last parsing ?
-        public boolean getFailure() {
-            
-            return failed;
-        }
-
-        public void fatalError(SAXParseException exception) {
-
-            failed = true;
-            doLog(exception,Project.MSG_ERR);
-        }
-
-        public void error(SAXParseException exception) {
-
-            failed = true;
-            doLog(exception,Project.MSG_ERR);
-        }
-        
-        public void warning(SAXParseException exception) {
-            // depending on implementation, XMLReader can yield hips of warning, 
-            // only output then if user explicitely asked for it
-            if (warn)
-                doLog(exception,Project.MSG_WARN);
-        }
-        
-        private void doLog(SAXParseException e, int logLevel) {
-            
-            log(getMessage(e), logLevel);
-        }
-
-        private String getMessage(SAXParseException e) {
-            String sysID = e.getSystemId();
-            if (sysID != null) {
-                try {
-                    int line = e.getLineNumber();
-                    int col = e.getColumnNumber();
-                    return new URL(sysID).getFile() +
-                        (line == -1 ? "" : (":" + line +
-                                            (col == -1 ? "" : (":" + col)))) +
-                        ": " + e.getMessage();
-                } catch (MalformedURLException mfue) {
-                }
-            }
-            return e.getMessage();
-        }
-    }
-}
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 b5d9443..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java
+++ /dev/null
@@ -1,130 +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;
-import org.xml.sax.InputSource;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-/**
- * Concrete liaison for Xalan 1.x API.
- *
- * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
- * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
- */
-public class XalanLiaison implements XSLTLiaison {
-
-    protected XSLTProcessor processor;
-    protected File stylesheet;
-
-    public XalanLiaison() throws Exception {
-      processor = XSLTProcessorFactory.getProcessor();
-    }
-
-    public void setStylesheet(File stylesheet) throws Exception {
-        this.stylesheet = stylesheet;
-    }
-
-    public void transform(File infile, File outfile) throws Exception {
-        FileInputStream fis = null;
-        FileOutputStream fos = null;
-        FileInputStream xslStream = null;
-        try {
-            xslStream = new FileInputStream(stylesheet);
-            fis = new FileInputStream(infile);
-            fos = new FileOutputStream(outfile);
-            // systemid such as file:/// + getAbsolutePath() are considered
-            // invalid here...
-            XSLTInputSource xslSheet = new XSLTInputSource(xslStream);
-            xslSheet.setSystemId(stylesheet.getAbsolutePath());
-            XSLTInputSource src = new XSLTInputSource(fis);
-            src.setSystemId(infile.getAbsolutePath());
-            XSLTResultTarget res = new XSLTResultTarget(fos);
-            processor.process(src, xslSheet, res);
-        } finally {
-            // make sure to close all handles, otherwise the garbage
-            // collector will close them...whenever possible and
-            // Windows may complain about not being able to delete files.
-            try {
-                if (xslStream != null){
-                    xslStream.close();
-                }
-            } catch (IOException ignored){}
-            try {
-                if (fis != null){
-                    fis.close();
-                }
-            } catch (IOException ignored){}
-            try {
-                if (fos != null){
-                    fos.close();
-                }
-            } catch (IOException ignored){}
-        }
-    }
-
-    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 7176819..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/XslpLiaison.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.taskdefs.optional;
-
-import java.io.*;
-import java.net.URL;
-
-import org.apache.tools.ant.taskdefs.XSLTLiaison;
-import org.xml.sax.InputSource;
-
-import com.kvisco.xsl.*;
-
-/**
- * Concrete liaison for XSLP
- *
- * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
- * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
- */
-public class XslpLiaison implements XSLTLiaison {
-
-    protected XSLProcessor processor;
-    protected XSLStylesheet xslSheet;
-
-    public XslpLiaison() {
-      processor = new XSLProcessor();
-      // uh ?! I'm forced to do that otherwise a setProperty crashes with NPE !
-      // I don't understand why the property map is static though...
-      // how can we do multithreading w/ multiple identical parameters ?
-      processor.getProperty("dummy-to-init-properties-map");
-    }
-
-    public void setStylesheet(File fileName) throws Exception {
-      XSLReader xslReader = new XSLReader();
-      // a file:/// + getAbsolutePath() does not work here
-      // it is really the pathname
-      xslSheet = xslReader.read( fileName.getAbsolutePath() );
-    }
-
-    public void transform(File infile, File outfile) throws Exception {
-        FileOutputStream fos = new FileOutputStream(outfile);
-        // XSLP does not support encoding...we're in hot water.
-        OutputStreamWriter out = new OutputStreamWriter(fos,"UTF8");
-        processor.process(infile.getAbsolutePath(), xslSheet, out);
-    }
-
-    public void addParam(String name, String expression){
-      processor.setProperty(name, expression);
-    }
-
-} //-- XSLPLiaison
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java
deleted file mode 100644
index f233faa..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java
+++ /dev/null
@@ -1,184 +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.ccm;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-
-/**
- * Class common to all check commands (checkout, checkin,checkin default task);
- * @author Benoit Moussaud benoit.moussaud@criltelecom.com
- */
-public class CCMCheck extends Continuus {
-
-    private File   _file    = null;
-    private String _comment = null;
-    private String _task    = null;
-
-    public CCMCheck() {
-        super();
-    }
-
-    /**
-     * Get the value of file.
-     * @return value of file.
-     */
-    public File getFile() {
-        return _file;
-    }
-    
-    /**
-     * Set the value of file.
-     * @param v  Value to assign to file.
-     */
-    public void setFile(File  v) {
-        this._file = v;
-    }
-    
-    /**
-     * Get the value of comment.
-     * @return value of comment.
-     */
-    public String getComment() {
-        return _comment;
-    }
-    
-    /**
-     * Set the value of comment.
-     * @param v  Value to assign to comment.
-     */
-    public void setComment(String  v) {
-        this._comment = v;
-    }
-
-    
-    /**
-     * Get the value of task.
-     * @return value of task.
-     */
-    public String getTask() {
-        return _task;
-    }
-    
-    /**
-     * Set the value of task.
-     * @param v  Value to assign to task.
-     */
-    public void setTask(String  v) {
-        this._task = v;
-    }
-    
-    
-    /**
-     * Executes the task.
-     * <p>
-     * Builds a command line to execute ccm and then calls Exec's run method
-     * to execute the command line.
-     * </p>
-     */
-    public void execute() throws BuildException {
-        Commandline commandLine = new Commandline();
-        Project aProj = getProject();
-        int result = 0;
-
-        // build the command line from what we got the format is
-        // ccm co /t .. files
-        // as specified in the CLEARTOOL.EXE help
-        commandLine.setExecutable(getCcmCommand());
-        commandLine.createArgument().setValue(getCcmAction());
-        
-        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) {
-            cmd.createArgument().setValue(FLAG_COMMENT);
-            cmd.createArgument().setValue(getComment());
-        }
-
-        if ( getTask() != null) {
-            cmd.createArgument().setValue(FLAG_TASK);
-            cmd.createArgument().setValue(getTask());            
-        } // end of if ()        
-        
-        if ( getFile() != null ) {
-            cmd.createArgument().setValue(_file.getAbsolutePath());       
-        } // end of if ()        
-    }
-    
-    /**
-     * -comment flag -- comment to attach to the file
-     */
-    public static final String FLAG_COMMENT = "/comment";
-    
-    /**
-     *  -task flag -- associate checckout task with task
-     */
-    public static final String FLAG_TASK = "/task";   
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheckin.java b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheckin.java
deleted file mode 100644
index 8d9c4dd..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheckin.java
+++ /dev/null
@@ -1,72 +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.ccm;
-
-import java.util.Date;
-
-/**
- * Task to perform Checkin command to Continuus
- * @author Benoit Moussaud benoit.moussaud@criltelecom.com
- */
-public class CCMCheckin extends CCMCheck {
-    
-    public CCMCheckin() {
-        super();
-        setCcmAction(COMMAND_CHECKIN);
-        setComment("Checkin "+ new Date());
-    }
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheckinDefault.java b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheckinDefault.java
deleted file mode 100644
index 13b9b99..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheckinDefault.java
+++ /dev/null
@@ -1,71 +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.ccm;
-
-/**
- * Task to perform Checkin Default task command to Continuus
- * @author Benoit Moussaud benoit.moussaud@criltelecom.com
- */
-public class CCMCheckinDefault extends CCMCheck {
-    
-    public CCMCheckinDefault(){
-        super();
-        setCcmAction(COMMAND_CHECKIN);
-        setTask(DEFAULT_TASK);
-    }
-
-    public static final String DEFAULT_TASK = "default";   
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheckout.java b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheckout.java
deleted file mode 100644
index 2c35465..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheckout.java
+++ /dev/null
@@ -1,68 +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.ccm;
-
-/**
- * Task to perform Checkout command to Continuus
- * @author Benoit Moussaud benoit.moussaud@criltelecom.com
- */
-public class CCMCheckout extends CCMCheck {
-    
-    public CCMCheckout(){
-        super();
-        setCcmAction(COMMAND_CHECKOUT);
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCreateTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCreateTask.java
deleted file mode 100644
index 809ef4b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCreateTask.java
+++ /dev/null
@@ -1,366 +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.ccm;
-
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.lang.NullPointerException;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-
-/**
- * Task allows to create new ccm task and set it as the default
- * @author Benoit Moussaud benoit.moussaud@criltelecom.com
- */
-public class CCMCreateTask extends Continuus implements ExecuteStreamHandler  {
-
-    private String comment   = null;
-    private String platform  = null;
-    private String resolver  = null;
-    private String release   = null;
-    private String subSystem = null;
-    private String task      = null;
-
-    public CCMCreateTask() {
-        super();
-        setCcmAction(COMMAND_CREATE_TASK);
-    }
-
-        
-    /**
-     * Executes the task.
-     * <p>
-     * Builds a command line to execute ccm and then calls Exec's run method
-     * to execute the command line.
-     * </p>
-     */
-    public void execute() throws BuildException {
-        Commandline commandLine = new Commandline();
-        Project aProj = getProject();
-        int result = 0;
-
-        // build the command line from what we got the format 
-        // as specified in the CCM.EXE help
-        commandLine.setExecutable(getCcmCommand());
-        commandLine.createArgument().setValue(getCcmAction());
-        
-        checkOptions(commandLine);
-        
-        result = run(commandLine,this);
-        if ( result != 0 ) {
-            String msg = "Failed executing: " + commandLine.toString();
-            throw new BuildException(msg, location);
-        }
-
-        //create task ok, set this task as the default one
-        Commandline commandLine2 = new Commandline();
-        commandLine2.setExecutable(getCcmCommand());
-        commandLine2.createArgument().setValue(COMMAND_DEFAULT_TASK);
-        commandLine2.createArgument().setValue(getTask());
-
-        log(commandLine.toString(),Project.MSG_DEBUG);
-
-        result = run(commandLine2);
-        if ( result != 0 ) {
-            String msg = "Failed executing: " + commandLine2.toString();
-            throw new BuildException(msg, location);
-        }
-
-    }
-
-
-    /**
-     * Check the command line options.
-     */
-    private void checkOptions(Commandline cmd) {        
-        if (getComment() != null) {
-            cmd.createArgument().setValue(FLAG_COMMENT);
-            cmd.createArgument().setValue("\""+getComment()+"\"");
-        }
-
-        if ( getPlatform() != null) {
-            cmd.createArgument().setValue(FLAG_PLATFORM);
-            cmd.createArgument().setValue(getPlatform());            
-        } // end of if ()        
-
-        if ( getResolver() != null) {
-            cmd.createArgument().setValue(FLAG_RESOLVER);
-            cmd.createArgument().setValue(getResolver());            
-        } // end of if ()
-        
-        if ( getSubSystem() != null) {
-            cmd.createArgument().setValue(FLAG_SUBSYSTEM);
-            cmd.createArgument().setValue("\""+getSubSystem()+"\"");            
-        } // end of if ()        
-        
-        if ( getRelease() != null ) {
-            cmd.createArgument().setValue(FLAG_RELEASE);
-            cmd.createArgument().setValue(getRelease());            
-        } // end of if ()        
-    }
-    
-    
-    /**
-     * Get the value of comment.
-     * @return value of comment.
-     */
-    public String getComment() {
-        return comment;
-    }
-    
-    /**
-     * Set the value of comment.
-     * @param v  Value to assign to comment.
-     */
-    public void setComment(String  v) {
-        this.comment = v;
-    }
-    
-    
-    /**
-     * Get the value of platform.
-     * @return value of platform.
-     */
-    public String getPlatform() {
-        return platform;
-    }
-    
-    /**
-     * Set the value of platform.
-     * @param v  Value to assign to platform.
-     */
-    public void setPlatform(String  v) {
-        this.platform = v;
-    }
-    
-    
-    /**
-     * Get the value of resolver.
-     * @return value of resolver.
-     */
-    public String getResolver() {
-        return resolver;
-    }
-    
-    /**
-     * Set the value of resolver.
-     * @param v  Value to assign to resolver.
-     */
-    public void setResolver(String  v) {
-        this.resolver = v;
-    }
-
-    
-    /**
-     * Get the value of release.
-     * @return value of release.
-     */
-    public String getRelease() {
-        return release;
-    }
-    
-    /**
-     * Set the value of release.
-     * @param v  Value to assign to release.
-     */
-    public void setRelease(String  v) {
-        this.release = v;
-    }    
-    
-    /**
-     * Get the value of subSystem.
-     * @return value of subSystem.
-     */
-    public String getSubSystem() {
-        return subSystem;
-    }
-    
-    /**
-     * Set the value of subSystem.
-     * @param v  Value to assign to subSystem.
-     */
-    public void setSubSystem(String  v) {
-        this.subSystem = v;
-    }
-    
-    
-    /**
-     * Get the value of task.
-     * @return value of task.
-     */
-    public String  getTask()    {
-        return task;
-    }
-    
-    /**
-     * Set the value of task.
-     * @param v  Value to assign to task.
-     */
-    public void setTask(String   v)    {
-        this.task = v;
-    }
-    
-    /**
-     * /comment -- comments associated to the task
-     */
-    public static final String FLAG_COMMENT = "/synopsis";
-    
-    /**
-     *  /platform flag -- target platform
-     */
-    public static final String FLAG_PLATFORM = "/plat";   
-
-    /**
-     * /resolver flag
-     */
-    public static final String FLAG_RESOLVER = "/resolver";   
-
-    /**
-     * /release flag
-     */
-    public static final String FLAG_RELEASE = "/release";   
-
-    /**
-     * /release flag
-     */
-    public static final String FLAG_SUBSYSTEM = "/subsystem";   
-
-    /**
-     *  -task flag -- associate checckout task with task
-     */
-    public static final String FLAG_TASK = "/task";   
-
-
-    // implementation of org.apache.tools.ant.taskdefs.ExecuteStreamHandler interface
-    
-    /**
-     *
-     * @exception java.io.IOException <description>
-     */
-    public void start() throws IOException  {                                
-    }
-
-    /**
-     *
-     */
-    public void stop(){     
-    }
-
-    /**
-     *
-     * @param param1 <description>
-     * @exception java.io.IOException <description>
-     */
-    public void setProcessInputStream(OutputStream param1) throws IOException    {    
-    }
-
-    /**
-     *
-     * @param param1 <description>
-     * @exception java.io.IOException <description>
-     */
-    public void setProcessErrorStream(InputStream is) throws IOException    {
-        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-        String s = reader.readLine();
-        if ( s != null) 
-        {
-            log("err "+s,Project.MSG_DEBUG);
-        } // end of if ()        
-    }
-
-    /**
-     * read the output stream to retrieve the new task number.
-     * @param is InputStream
-     * @exception java.io.IOException 
-     */
-    public void setProcessOutputStream(InputStream is) throws IOException    {
-
-        String buffer = "";
-        try           
-        {
-            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-            buffer = reader.readLine();
-            if ( buffer != null) 
-            {
-                log("buffer:" +buffer,Project.MSG_DEBUG);             
-                String taskstring  = buffer.substring(buffer.indexOf(' ')).trim();
-                taskstring = taskstring.substring(0,taskstring.lastIndexOf(' ')).trim();                
-                setTask(taskstring);
-                log("task is "+getTask(),Project.MSG_DEBUG);             
-            } // end of if ()            
-        }
-        catch ( NullPointerException npe) 
-        {
-            log("error procession stream , null pointer exception",Project.MSG_ERR);
-            npe.printStackTrace();
-            throw new BuildException(npe.getClass().getName());
-        } // end of catch        
-        catch (Exception e) 
-        {
-            log("error procession stream "+e.getMessage(),Project.MSG_ERR);
-            throw new BuildException(e.getMessage());
-        } // end of try-catch
-        
-    }
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMReconfigure.java b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMReconfigure.java
deleted file mode 100644
index a886704..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMReconfigure.java
+++ /dev/null
@@ -1,202 +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.ccm;
-
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-
-/**
- * Task allows to reconfigure a project, recurcively or not 
- * @author Benoit Moussaud benoit.moussaud@criltelecom.com
- */
-public class CCMReconfigure extends Continuus {
-
-    private String project  = null;
-    private boolean recurse = false;
-    private boolean verbose = false;
-
-    public CCMReconfigure() {
-        super();
-        setCcmAction(COMMAND_RECONFIGURE);
-    }
-
-        
-    /**
-     * Executes the task.
-     * <p>
-     * Builds a command line to execute ccm and then calls Exec's run method
-     * to execute the command line.
-     * </p>
-     */
-    public void execute() throws BuildException {
-        Commandline commandLine = new Commandline();
-        Project aProj = getProject();
-        int result = 0;
-
-        // build the command line from what we got the format 
-        // as specified in the CCM.EXE help
-        commandLine.setExecutable(getCcmCommand());
-        commandLine.createArgument().setValue(getCcmAction());
-        
-        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 ( isRecurse() == true) {
-            cmd.createArgument().setValue(FLAG_RECURSE);
-        } // end of if ()        
-
-        if ( isVerbose() == true) {
-            cmd.createArgument().setValue(FLAG_VERBOSE);
-        } // end of if ()        
-
-        if (getCcmProject() != null) {
-            cmd.createArgument().setValue(FLAG_PROJECT);
-            cmd.createArgument().setValue(getCcmProject());
-        }
-
-    }        
-    
-    /**
-     * Get the value of project.
-     * @return value of project.
-     */
-    public String getCcmProject()  {
-        return project;
-    }
-    
-    /**
-     * Set the value of project.
-     * @param v  Value to assign to project.
-     */
-    public void setCcmProject(String  v) {
-        this.project = v;
-    }
-    
-    
-    /**
-     * Get the value of recurse.
-     * @return value of recurse.
-     */
-    public boolean isRecurse()     {
-        return recurse;
-    }
-    
-    /**
-     * Set the value of recurse.
-     * @param v  Value to assign to recurse.
-     */
-    public void setRecurse(boolean  v)     {
-        this.recurse = v;
-    }
-
-    
-    
-    /**
-     * Get the value of verbose.
-     * @return value of verbose.
-     */
-    public boolean isVerbose() 
-    {
-        return verbose;
-    }
-    
-    /**
-     * Set the value of verbose.
-     * @param v  Value to assign to verbose.
-     */
-    public void setVerbose(boolean  v) 
-    {
-        this.verbose = v;
-    }
-    
-    
-    /**
-     * /recurse -- 
-     */
-    public static final String FLAG_RECURSE = "/recurse";
-
-    /**
-     * /recurse -- 
-     */
-    public static final String FLAG_VERBOSE = "/verbose";
-
-    
-    /**
-     *  /project flag -- target project
-     */
-    public static final String FLAG_PROJECT = "/project";   
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/Continuus.java b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/Continuus.java
deleted file mode 100644
index e73749b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/Continuus.java
+++ /dev/null
@@ -1,167 +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.ccm;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.LogStreamHandler;
-import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
-import org.apache.tools.ant.types.Commandline;
-
-import java.io.File;
-
-/**
- * A base class for creating tasks for executing commands on Continuus 5.1
- * <p>
- * The class extends the  task as it operates by executing the ccm.exe program
- * supplied with Continuus/Synergy. By default the task expects the ccm executable to be
- * in the path, 
- * you can override this be specifying the ccmdir attribute.
- * </p>
- *
- * @author Benoit Moussaud benoit.moussaud@criltelecom.com
- */
-public abstract class Continuus extends Task {
-
-    private String _ccmDir    = "";
-    private String _ccmAction = "";
-    
-    /**
-     * Get the value of ccmAction.
-     * @return value of ccmAction.
-     */
-    public String getCcmAction() {
-        return _ccmAction;
-    }
-    
-    /**
-     * Set the value of ccmAction.
-     * @param v  Value to assign to ccmAction.
-     */
-    public void setCcmAction(String  v) {
-        this._ccmAction = v;
-    }
-    
-    
-    /**
-     * Set the directory where the ccm executable is located
-     * @param dir the directory containing the ccm executable
-     */
-    public final void setCcmDir(String dir) {
-        _ccmDir = project.translatePath(dir);
-    }
-
-    /**
-     * Builds and returns the command string to execute ccm
-     * @return String containing path to the executable
-     */
-    protected final String getCcmCommand() {
-        String toReturn = _ccmDir;
-        if ( !toReturn.equals("") && !toReturn.endsWith("/") ) {
-            toReturn += "/";
-        }
-
-        toReturn += CCM_EXE;
-
-        return toReturn;
-    }
-
-
-    protected int run(Commandline cmd, ExecuteStreamHandler handler) {
-        try {            
-            Execute exe = new Execute(handler);
-            exe.setAntRun(getProject());                         
-            exe.setWorkingDirectory(getProject().getBaseDir());
-            exe.setCommandline(cmd.getCommandline());
-            return exe.execute();
-        }
-        catch (java.io.IOException e) {
-            throw new BuildException(e, location);
-        }
-    }
-
-    protected int run(Commandline cmd) {        
-        return run(cmd,new LogStreamHandler(this, Project.MSG_VERBOSE, Project.MSG_WARN));
-    }
-
-    /**
-     * Constant for the thing to execute
-     */
-    private static final String CCM_EXE = "ccm";
-
-    /**
-     * The 'CreateTask' command
-     */
-    public static final String COMMAND_CREATE_TASK = "create_task";
-    /**
-     * The 'Checkout' command
-     */
-    public static final String COMMAND_CHECKOUT = "co";
-    /**
-     * The 'Checkin' command
-     */
-    public static final String COMMAND_CHECKIN = "ci";
-    /**
-     * The 'Reconfigure' command
-     */
-    public static final String COMMAND_RECONFIGURE = "reconfigure";
-
-    /**
-     * The 'Reconfigure' command
-     */
-    public static final String COMMAND_DEFAULT_TASK = "default_task";
-
-
-}
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 7457999..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFileUtils.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.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) {
-        return name.replace('\\', '.').replace( '/', '.' );
-    } 
-
-    /**
-     * 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) {
-        return dotName.replace( '.', '/');
-    } 
-}
-
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 c86589e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java
+++ /dev/null
@@ -1,652 +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 java.net.URL;
-
-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 {
-    /**
-     * A class (struct) user to manage information about a class
-     */
-    static private class ClassFileInfo {
-        /** The file where the class file is stored in the file system */
-        public File absoluteFile;
-        
-        /** The location of the file relative to its base directory - the root
-            of the package namespace */
-        public String relativeName;
-        
-        /** The Java class name of this class */
-        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;
-    
-    /**
-     * A map which gives the list of jars and classes from the classpath that
-     * a class depends upon 
-     */
-    private Hashtable classpathDependencies;
-
-    /**
-     * The list of classes which are out of date.
-     */
-    private Hashtable 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 = false;
-    
-    /**
-     * Flag which controls whether the reversed dependencies should be dumped
-     * to the log
-     */
-    private boolean dump = false;
-
-    /** The classpath to look for additional dependencies */
-    private Path dependClasspath;
-
-    /**
-     * constants used with the cache file
-     */
-    private final static String CACHE_FILE_NAME = "dependencies.txt";
-    private final static String CLASSNAME_PREPEND = "||:";
-
-    /**
-     * Set the classpath to be used for this dependency check.
-     */
-    public void setClasspath(Path classpath) {
-        if (dependClasspath == null) {
-            dependClasspath = classpath;
-        } else {
-            dependClasspath.append(classpath);
-        }
-    }
-
-    /** Gets the classpath to be used for this dependency check. */
-    public Path getClasspath() {
-        return dependClasspath;
-    }
-
-    /**
-     * Creates a nested classpath element.
-     */
-    public Path createClasspath() {
-        if (dependClasspath == null) {
-            dependClasspath = new Path(project);
-        }
-        return dependClasspath.createPath();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-        
-    /**
-     * Read the dependencies from cache file
-     */
-    private Hashtable readCachedDependencies() throws IOException{
-        Hashtable dependencyMap = new Hashtable();
-        
-        if (cache != null) {
-            File depFile = new File(cache, CACHE_FILE_NAME);
-            BufferedReader in = null;
-            if (depFile.exists()) {
-                try {
-                    in = new BufferedReader(new FileReader(depFile));
-                    String line = null;
-                    Vector dependencyList = null;
-                    String className = null;
-                    int prependLength = CLASSNAME_PREPEND.length();
-                    while ((line = in.readLine()) != null) {
-                        if (line.startsWith(CLASSNAME_PREPEND)) {
-                            dependencyList = new Vector();
-                            className = line.substring(prependLength);
-                            dependencyMap.put(className, dependencyList);
-                        }
-                        else {
-                            dependencyList.addElement(line);
-                        }
-                    }
-                }
-                finally {
-                    if (in != null) { 
-                        in.close();
-                    }
-                }
-            }
-        }
-        
-        return dependencyMap;
-    }
-    
-    /**
-     * Write the dependencies to cache file
-     */
-    private void writeCachedDependencies(Hashtable dependencyMap) throws IOException{
-        if (cache != null) {
-            PrintWriter pw = null;
-            try {
-                cache.mkdirs(); 
-                File depFile = new File(cache, CACHE_FILE_NAME);
-                
-                pw = new PrintWriter(new FileWriter(depFile));
-                for (Enumeration deps = dependencyMap.keys(); deps.hasMoreElements();) {
-                    String className = (String)deps.nextElement();
-                    
-                    pw.println(CLASSNAME_PREPEND + className);
-                    
-                    Vector dependencyList = (Vector)dependencyMap.get(className);
-                    int size = dependencyList.size();
-                    for (int x = 0; x < size; x++) {
-                        pw.println(dependencyList.elementAt(x));
-                    }
-                }
-            }
-            finally {
-                if (pw != null) { 
-                    pw.close();
-                }
-            }
-        }
-    }
-
-
-    /**
-     * Determine the dependencies between classes. 
-     *
-     * Class dependencies are determined by examining the class references in a class file
-     * to other classes 
-     */
-    private void determineDependencies() throws IOException {
-        affectedClassMap = new Hashtable();
-        classFileInfoMap = new Hashtable();
-        boolean cacheDirty = false;
-        
-        Hashtable dependencyMap = null;
-        File depCacheFile = null;
-        boolean depCacheFileExists = true;
-        long depCacheFileLastModified = Long.MAX_VALUE;
-        
-        // read the dependency cache from the disk
-        if (cache != null) {
-            dependencyMap = readCachedDependencies();
-            depCacheFile = new File(cache, CACHE_FILE_NAME);
-            depCacheFileExists = depCacheFile.exists();
-            depCacheFileLastModified = depCacheFile.lastModified();
-        }
-        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 map if it is not out of date
-                if (depCacheFileExists && depCacheFileLastModified > info.absoluteFile.lastModified()) {
-                    // depFile exists and is newer than the class file
-                    // need to get dependency list from the map.
-                    dependencyList = (Vector)dependencyMap.get(info.className);
-                }
-            }
-            
-            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 (dependencyList != null) {
-                        cacheDirty = true;
-                        dependencyMap.put(info.className, 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);
-            }
-        }
-        
-        classpathDependencies = null;
-        if (dependClasspath != null) {
-            // now determine which jars each class depends upon
-            classpathDependencies = new Hashtable();
-            AntClassLoader loader = new AntClassLoader(getProject(), dependClasspath);
-            Hashtable classpathFileCache = new Hashtable();
-            Object nullFileMarker = new Object();
-            for (Enumeration e = dependencyMap.keys(); e.hasMoreElements();) {
-                String className = (String)e.nextElement();
-                Vector dependencyList = (Vector)dependencyMap.get(className);
-                Hashtable dependencies = new Hashtable();
-                classpathDependencies.put(className, dependencies);
-                for (Enumeration e2 = dependencyList.elements(); e2.hasMoreElements();) {
-                    String dependency =(String)e2.nextElement();
-                    Object classpathFileObject = classpathFileCache.get(dependency);
-                    if (classpathFileObject == null) {
-                        classpathFileObject = nullFileMarker;
-                        
-                        if (!dependency.startsWith("java.") && !dependency.startsWith("javax.")) {
-                            URL classURL = loader.getResource(dependency.replace('.', '/') + ".class");
-                            if (classURL != null) {
-                                if (classURL.getProtocol().equals("jar")) {
-                                    String jarFilePath = classURL.getFile();
-                                    if (jarFilePath.startsWith("file:")) {
-                                        int classMarker = jarFilePath.indexOf('!');
-                                        jarFilePath = jarFilePath.substring(5, classMarker);
-                                    }
-                                    classpathFileObject = new File(jarFilePath);
-                                }
-                                else if (classURL.getProtocol().equals("file")) {
-                                    String classFilePath = classURL.getFile();
-                                    classpathFileObject = new File(classFilePath);
-                                }
-                                log("Class " + className + 
-                                    " depends on " + classpathFileObject + 
-                                    " due to " + dependency, Project.MSG_DEBUG);
-                            }
-                        }
-                        classpathFileCache.put(dependency, classpathFileObject);
-                    }
-                    if (classpathFileObject != null && classpathFileObject != nullFileMarker) {
-                        // we need to add this jar to the list for this class.
-                        File jarFile = (File)classpathFileObject;
-                        dependencies.put(jarFile, jarFile);
-                    }
-                }
-            }
-        }
-        
-        // write the dependency cache to the disk
-        if (cache != null && cacheDirty) {
-            writeCachedDependencies(dependencyMap);
-        }
-    }
-    
-    private int deleteAllAffectedFiles() {
-        int count = 0;
-        for (Enumeration e = outOfDateClasses.elements(); e.hasMoreElements();) {
-            String className = (String)e.nextElement();
-            count += deleteAffectedFiles(className);
-            ClassFileInfo classInfo = (ClassFileInfo)classFileInfoMap.get(className);
-            if (classInfo != null && classInfo.absoluteFile.exists()) {
-                classInfo.absoluteFile.delete();
-                count++;
-            }
-        }
-        return count;            
-    }
-    
-    private int deleteAffectedFiles(String className) {
-        int count = 0;
-
-        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();
-                    count++;
-                    if (closure) {
-                        count += 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();
-                                count++;
-                                if (closure) {
-                                    count += deleteAffectedFiles(topLevelClassName);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        return count;
-    }
-
-    /**
-     * 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();
-            
-            if (dump) {            
-                log("Reverse Dependency Dump for " + affectedClassMap.size() + 
-                    " classes:", Project.MSG_DEBUG);
-                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);
-                    }
-                }
-                
-                if (classpathDependencies != null) {
-                    log("Classpath file dependencies (Forward):", Project.MSG_DEBUG);
-                    for (Enumeration e = classpathDependencies.keys(); e.hasMoreElements();) { 
-                        String className = (String)e.nextElement();
-                        log(" Class " + className + " depends on:", Project.MSG_DEBUG);
-                        Hashtable dependencies = (Hashtable)classpathDependencies.get(className);
-                        for (Enumeration e2 = dependencies.elements(); e2.hasMoreElements();) {
-                            File classpathFile = (File)e2.nextElement();
-                            log("    " + classpathFile.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 Hashtable();
-            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);
-                }
-            }
-
-            // now check classpath file dependencies
-            if (classpathDependencies != null) {
-                for (Enumeration e = classpathDependencies.keys(); e.hasMoreElements();) { 
-                    String className = (String)e.nextElement();
-                    if (!outOfDateClasses.containsKey(className)) {
-                        ClassFileInfo info = (ClassFileInfo)classFileInfoMap.get(className);
-                        Hashtable dependencies = (Hashtable)classpathDependencies.get(className);
-                        for (Enumeration e2 = dependencies.elements(); e2.hasMoreElements();) {
-                            File classpathFile = (File)e2.nextElement();
-                            if (classpathFile.lastModified() > info.absoluteFile.lastModified()) {
-                                log("Class " + className + 
-                                    " is out of date with respect to " + classpathFile, Project.MSG_DEBUG);
-                                outOfDateClasses.put(className, className);
-                                break;
-                            }
-                        }
-                    }
-                }
-            }
-            
-            // we now have a complete list of classes which are out of date
-            // We scan through the affected classes, deleting any affected classes.
-            int count = deleteAllAffectedFiles();
-            
-            long duration = (System.currentTimeMillis() - start) / 1000;
-            log("Deleted " + count + " out of date files in " + duration + " seconds");
-        } 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.put(className, className);
-                }
-                else {
-                    if (srcFile.lastModified() > info.absoluteFile.lastModified()) {
-                        outOfDateClasses.put(className, 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;
-    }
-
-    /**
-     * Flag to indicate whether the reverse dependency list should be dumped to debug
-     */
-    public void setDump(boolean dump) {
-        this.dump = dump;
-    }
-}
-
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 54b5150..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
+++ /dev/null
@@ -1,864 +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);
-    }   
-    
-    /** 
-     * Fix C# reference inclusion. 
-     * 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=
-            "Accessibility.dll;"+
-            "cscompmgd.dll;"+
-            "CustomMarshalers.dll;"+
-            "IEExecRemote.dll;"+
-            "IEHost.dll;"+
-            "IIEHost.dll;"+
-            "ISymWrapper.dll;"+
-            "Microsoft.JScript.dll;"+
-            "Microsoft.VisualBasic.dll;"+
-            "Microsoft.VisualC.dll;"+
-            "Microsoft.Vsa.dll;"+
-            "Mscorcfg.dll;"+
-            "RegCode.dll;"+
-            "System.Configuration.Install.dll;"+
-            "System.Data.dll;"+
-            "System.Design.dll;"+
-            "System.DirectoryServices.dll;"+
-            "System.EnterpriseServices.dll;"+
-            "System.dll;"+
-            "System.Drawing.Design.dll;"+
-            "System.Drawing.dll;"+
-            "System.Management.dll;"+
-            "System.Messaging.dll;"+
-            "System.Runtime.Remoting.dll;"+
-            "System.Runtime.Serialization.Formatters.Soap.dll;"+
-            "System.Security.dll;"+
-            "System.ServiceProcess.dll;"+
-            "System.Web.dll;"+
-            "System.Web.RegularExpressions.dll;"+
-            "System.Web.Services.dll;"+
-            "System.Windows.Forms.dll;"+
-            "System.XML.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(File f) {
-        _docFile = 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(File srcDirName){
-        _srcDir = 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(File dirName) {
-        _destDir = 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(File fileName) {
-        _win32icon = 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;
-    }
-    /** icon for incorporation into apps
-     */     
-    protected File _win32res;  
-    
-    /**
-     * Set the win32 icon 
-     * @param fileName path to the file. Can be relative, absolute, whatever.
-     */
-    public void setWin32Res(File fileName) {
-        _win32res = fileName;
-    }
-    
-    /**
-     *  get the argument or null for no argument needed 
-     *
-     * @return    The Win32Icon Parameter to CSC 
-     */
-    protected String getWin32ResParameter() {
-        if (_win32res!=null)
-            return "/win32res:"+_win32res.toString();
-        else
-            return null;
-    }    
-    
-    /** 
-     * utf out flag
-     */
-     
-    protected boolean _utf8output=false;
-    
-    /**
-     * enable generation of utf8 output from the compiler. 
-     */
-    public void setUtf8Output(boolean enabled) {
-        _utf8output=enabled;
-    }
-    
-    protected String getUtf8OutpuParameter() {
-        return _utf8output?"/utf8output":null;
-    }
-    
-    protected boolean _noconfig=false;
-    
-    protected void setNoConfig(boolean enabled) {
-        _noconfig=enabled;
-    }
-    
-    protected String getNoConfigParameter() {
-        return _noconfig?"/noconfig":null;
-    }
-    
-    // /fullpaths
-    protected boolean _fullpaths=false;
-    
-    public void setFullPaths(boolean enabled) {
-        _fullpaths=enabled;
-    }
-    
-    protected String getFullPathsParameter() {
-        return _fullpaths?"/fullpaths":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 File _outputFile;
-    
-    /**
-     * Set the definitions
-     * @param list of definitions split by ; or , or even :
-     */
-    public void setOutputFile(File params) {
-        _outputFile = params;
-    }
-    
-    /** get the argument or null for no argument needed
-    * @return    The OutputFile Parameter to CSC 
-    */
-    protected String getOutputFileParameter() {
-        if (_outputFile != null) {
-            File f = _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;
-        _fullpaths=true;
-    }
-    
-    /**
-     *  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(getWin32ResParameter());
-        command.addArgument(getUtf8OutpuParameter());
-        command.addArgument(getNoConfigParameter());
-        command.addArgument(getFullPathsParameter());
-        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 c612a45..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java
+++ /dev/null
@@ -1,464 +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;
-        _outputFile=null;
-        _failOnError=true;
-        _resourceFile=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(File srcDirName){
-        _srcDir = 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;
-    }   
-        
-    
-    /**
-     *  Sets the Owner attribute 
-     *
-     * @param  s  The new Owner value 
-     */
-    
-    public void setOwner(String s) {
-       log("This option is not supported by ILASM as of Beta-2, and will be ignored",Project.MSG_WARN); 
-        }
-            
-    /** 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 File _outputFile;
-    
-    /**
-     * Set the definitions
-     * @param list of definitions split by ; or , or even :
-     */
-    public void setOutputFile(File 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 = _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(File fileName) {
-        _resourceFile = 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;
-    }   
-
-    /** file containing private key
-    */
-    
-    private File _keyfile;
-    
-    public void setKeyfile(File keyfile) {
-        this._keyfile=keyfile;
-    }
-
-    /** get the argument or null for no argument needed
-    */
-    protected String getKeyfileParameter() {
-        if(_keyfile!=null)
-             return "/keyfile:"+_keyfile.toString();
-         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;
-    } 
-
-        
-    /** 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(getResourceFileParameter());
-        command.addArgument(getVerboseParameter());
-        command.addArgument(getKeyfileParameter());
-        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/BorlandDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java
deleted file mode 100644
index 7383163..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java
+++ /dev/null
@@ -1,463 +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.ejb;
-
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import java.util.jar.*;
-import javax.xml.parsers.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-import org.xml.sax.*;
-
-/**
- * BorlandDeploymentTool is dedicated to the Borland Application Server 4.5 and 4.5.1
- * This task generates and compiles the stubs and skeletons for all ejb described into the
- * Deployement Descriptor, builds the jar file including the support files and verify
- * whether the produced jar is valid or not.
- * The supported options are:
- * <ul>
- * <li>debug  (boolean)    : turn on the debug mode for generation of stubs and skeletons (default:false)</li>
- * <li>verify (boolean)    : turn on the verification at the end of the jar production    (default:true) </li>
- * <li>verifyargs (String) : add optional argument to verify command (see vbj com.inprise.ejb.util.Verify)</li>
- * <li>basdtd (String)     : location of the BAS DTD </li>
- * <li>generateclient (boolean) : turn on the client jar file generation </li>
- * </ul>
- *
- *<PRE>
- *
- *      &lt;ejbjar srcdir=&quot;${build.classes}&quot;  basejarname=&quot;vsmp&quot;  descriptordir=&quot;${rsc.dir}/hrmanager&quot;&gt;
- *        &lt;borland destdir=&quot;tstlib&quot;&gt;
- *          &lt;classpath refid=&quot;classpath&quot; /&gt;
- *        &lt;/borland&gt;      
- *        &lt;include name=&quot;**\ejb-jar.xml&quot;/&gt;
- *        &lt;support dir=&quot;${build.classes}&quot;&gt;
- *          &lt;include name=&quot;demo\smp\*.class&quot;/&gt;
- *          &lt;include name=&quot;demo\helper\*.class&quot;/&gt;
- *         &lt;/support&gt;
- *     &lt;/ejbjar&gt;
- *</PRE>
- * @author     <a href="mailto:benoit.moussaud@criltelecom.com">Benoit Moussaud</a>
- *
- */
-public class BorlandDeploymentTool extends GenericDeploymentTool  implements ExecuteStreamHandler 
-{
-    public static final String PUBLICID_BORLAND_EJB
-    = "-//Inprise Corporation//DTD Enterprise JavaBeans 1.1//EN";
-
-    protected static final String DEFAULT_BAS45_EJB11_DTD_LOCATION 
-    = "/com/inprise/j2ee/xml/dtds/ejb-jar.dtd";
-    
-    protected static final String DEFAULT_BAS_DTD_LOCATION 
-    = "/com/inprise/j2ee/xml/dtds/ejb-inprise.dtd";       
-    
-    protected static final String BAS_DD = "ejb-inprise.xml";    
-
-    /** Java2iiop executable **/
-    protected static final String JAVA2IIOP = "java2iiop";
-
-    /** Verify class */
-    protected static final String VERIFY = "com.inprise.ejb.util.Verify";
-
-    /** Instance variable that stores the suffix for the borland jarfile. */
-    private String jarSuffix = "-ejb.jar";
-
-    /** Instance variable that stores the location of the borland DTD file. */
-    private String borlandDTD;
-        
-    /** Instance variable that determines whether the debug mode is on */
-    private boolean java2iiopdebug = false;
-
-    /** Instance variable that determines whetger the client jar file is generated */
-    private boolean generateclient = false;
-    /** Instance variable that determines whether it is necessary to verify the produced jar */
-    private boolean verify     = true;
-    private String  verifyArgs = "";
-
-    private Hashtable _genfiles = new Hashtable();
-
-    /** 
-     * set the debug mode for java2iiop (default false)
-     **/
-    public void setDebug(boolean debug) {
-        this.java2iiopdebug = debug;
-    }
-
-    /** 
-     * set the verify  mode for the produced jar (default true)
-     **/
-    public void setVerify(boolean verify) {
-        this.verify = verify;
-    }
-
-   
-    /**
-     * Setter used to store the suffix for the generated borland jar file.
-     * @param inString the string to use as the suffix.
-     */
-    public void setSuffix(String inString) {
-        this.jarSuffix = inString;
-    }
-
-
-    /**
-     * sets some additional args to send to verify command
-     * @param args addtions command line parameters
-     */
-    public void setVerifyArgs(String args) {
-        this.verifyArgs = args;
-    }
-        
-    /**
-     * Setter used to store the location of the borland 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 setBASdtd(String inString) {
-        this.borlandDTD = inString;
-    }
-
-        
-    /**
-     * setter used to store whether the task will include the generate client task.
-     * (see : BorlandGenerateClient task)
-     */
-    public void setGenerateclient(boolean b) {
-        this.generateclient = b;
-    }
-
-
-    protected DescriptorHandler getBorlandDescriptorHandler(final File srcDir) {
-        DescriptorHandler handler =
-            new DescriptorHandler(getTask(), 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(srcDir, fileName);
-                       
-                            ejbFiles.put(fileNameWithMETA, descriptorFile);
-                        }
-                    }
-                };
-        handler.registerDTD(PUBLICID_BORLAND_EJB, 
-                            borlandDTD == null ? DEFAULT_BAS_DTD_LOCATION : borlandDTD);
-                            
-        for (Iterator i = getConfig().dtdLocations.iterator(); i.hasNext();) {
-            EjbJar.DTDLocation dtdLocation = (EjbJar.DTDLocation)i.next();
-            handler.registerDTD(dtdLocation.getPublicId(), dtdLocation.getLocation());
-        }
-        return handler;                                    
-    }
-
-    /**
-     * Add any vendor specific files which should be included in the 
-     * EJB Jar.
-     */
-    protected void addVendorFiles(Hashtable ejbFiles, String ddPrefix) {
-
-        File borlandDD = new File(getConfig().descriptorDir,BAS_DD);
-        if (borlandDD.exists()) {
-            log("Borland specific file found "+ borlandDD,  Project.MSG_VERBOSE);
-            ejbFiles.put(META_DIR + BAS_DD, ddPrefix + borlandDD);
-        }
-        else {
-            log("Unable to locate borland deployment descriptor. It was expected to be in " + 
-                borlandDD.getPath(), Project.MSG_WARN);
-            return;
-        }
-    }
-    
-    /**
-     * 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);
-    }
-
-    /**
-     * Verify the produced jar file by invoking the Borland verify tool
-     * @param sourceJar java.io.File representing the produced jar file
-     */
-    private void verifyBorlandJar(File sourceJar) {
-        org.apache.tools.ant.taskdefs.Java javaTask = null;
-        log("verify "+sourceJar,Project.MSG_INFO);
-        try {
-
-            String args = verifyArgs;            
-            args += " "+sourceJar.getPath();
-            
-            javaTask = (Java) getTask().getProject().createTask("java");
-            javaTask.setTaskName("verify");
-            javaTask.setClassname(VERIFY);
-            Commandline.Argument arguments = javaTask.createArg();
-            arguments.setLine(args);
-            Path classpath = getCombinedClasspath();             
-            if (classpath != null) 
-            {
-                javaTask.setClasspath(classpath);
-                javaTask.setFork(true);
-            }
-            
-            log("Calling "+VERIFY+" for " + sourceJar.toString(), Project.MSG_VERBOSE);
-            javaTask.execute();
-        }
-        catch (Exception e) {
-            //TO DO : delete the file if it is not a valid file.
-            String msg = "Exception while calling "+VERIFY+" Details: " + e.toString();
-            throw new BuildException(msg, e);
-        }
-    }
-
-    /**
-     * Generate the client jar corresponding to the jar file passed as paremeter
-     * the method uses the BorlandGenerateClient task.
-     * @param sourceJar java.io.File representing the produced jar file
-     */
-    private void generateClient(File sourceJar) {
-        getTask().getProject().addTaskDefinition("internal_bas_generateclient",
-                                                 org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient.class);
-
-        org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient gentask = null;
-        log("generate client for "+sourceJar,Project.MSG_INFO);
-        try {
-            String args = verifyArgs;            
-            args += " "+sourceJar.getPath();
-            
-            gentask = (BorlandGenerateClient) getTask().getProject().createTask("internal_bas_generateclient");
-            gentask.setEjbjar(sourceJar);
-            gentask.setDebug(java2iiopdebug);            
-            Path classpath = getCombinedClasspath();             
-            if (classpath != null) {
-                gentask.setClasspath(classpath);
-            }
-            gentask.setTaskName("generate client");
-            gentask.execute();
-        }
-        catch (Exception e) {
-            //TO DO : delete the file if it is not a valid file.
-            String msg = "Exception while calling "+VERIFY+" Details: " + e.toString();
-            throw new BuildException(msg, e);
-        }
-    }
-
-    /**
-     * Generate stubs & sketelton for each home found into the DD
-     * Add all the generate class file into the ejb files
-     * @param ithomes : iterator on home class
-     * @param files   : file list , updated by the adding generated files
-     */
-    private void buildBorlandStubs(Iterator ithomes,Hashtable files ) {
-        Execute execTask = null;
-
-        execTask = new Execute(this);
-        Project project = getTask().getProject();
-        execTask.setAntRun(project);
-        execTask.setWorkingDirectory(project.getBaseDir());
-        
-        Commandline commandline = new Commandline();
-        commandline.setExecutable(JAVA2IIOP);
-        //debug ?
-        if ( java2iiopdebug ) {
-            commandline.createArgument().setValue("-VBJdebug");                
-        } // end of if ()
-        //set the classpath 
-        commandline.createArgument().setValue("-VBJclasspath");
-        commandline.createArgument().setPath(getCombinedClasspath());
-        //list file
-        commandline.createArgument().setValue("-list_files");
-        //no TIE classes
-        commandline.createArgument().setValue("-no_tie");
-        //root dir
-        commandline.createArgument().setValue("-root_dir");
-        commandline.createArgument().setValue(getConfig().srcDir.getAbsolutePath());
-        //compiling order
-        commandline.createArgument().setValue("-compile");
-        //add the home class
-        while ( ithomes.hasNext()) {
-            commandline.createArgument().setValue(ithomes.next().toString());                
-        } // end of while ()
-
-        try {
-            log("Calling java2iiop",Project.MSG_VERBOSE);                       
-            log(commandline.toString(),Project.MSG_DEBUG);
-            execTask.setCommandline(commandline.getCommandline());
-            int result = execTask.execute();
-            if ( result != 0 ) {
-                String msg = "Failed executing java2iiop (ret code is "+result+")";
-                throw new BuildException(msg, getTask().getLocation());
-            }                       
-        }
-        catch (java.io.IOException e) {
-            log("java2iiop exception :"+e.getMessage(),Project.MSG_ERR);
-            throw new BuildException(e,getTask().getLocation());
-        }            
-    }
-
-    /**
-     * 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, String publicId) 
-        throws BuildException {
-        //build the home classes list.
-        Vector homes = new Vector();
-        Iterator it = files.keySet().iterator();
-        while ( it.hasNext()) {
-            String clazz = (String) it.next();
-            if ( clazz.endsWith("Home.class") ) {
-                //remove .class extension
-                String home = toClass(clazz);
-                homes.add(home);
-                log(" Home "+home,Project.MSG_VERBOSE);
-            } // end of if ()                                    
-        } // end of while ()
-        
-        buildBorlandStubs(homes.iterator(),files);
-
-        //add the gen files to the collection
-        files.putAll(_genfiles);
-        
-        super.writeJar(baseName, jarFile, files, publicId);
-
-        if ( verify ) {
-            verifyBorlandJar(jarFile);
-        } // end of if ()
-
-        if ( generateclient) {
-            generateClient(jarFile);
-        } // end of if ()                       
-    }
-
-    /**
-     * convert a class file name : A/B/C/toto.class
-     * into    a class name: A.B.C.toto
-     */
-    private String toClass(String filename) {
-        //remove the .class
-        String classname = filename.substring(0,filename.lastIndexOf(".class"));
-        classname = classname.replace('\\','.');
-        return classname;
-    }
-
-    /**
-     * convert a file name : A/B/C/toto.java
-     * into    a class name: A/B/C/toto.class
-     */
-    private  String toClassFile(String filename) {
-        //remove the .class
-        String classfile = filename.substring(0,filename.lastIndexOf(".java"));
-        classfile = classfile+".class";
-        return classfile;
-    }
-
-    // implementation of org.apache.tools.ant.taskdefs.ExecuteStreamHandler interface
-
-    public void start() throws IOException  { }
-    public void stop()  {  }
-    public void setProcessInputStream(OutputStream param1) throws IOException   { }
-
-    /**
-     *
-     * @param param1 <description>
-     * @exception java.io.IOException <description>
-     */
-    public void setProcessOutputStream(InputStream is) throws IOException
-    {
-        try {
-            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-            String javafile;
-            while ( ( javafile = reader.readLine()) != null) {
-                log("buffer:" +javafile,Project.MSG_DEBUG);             
-                if ( javafile.endsWith(".java") ) {
-                    String classfile = toClassFile(javafile);                  
-                    String key = classfile.substring(getConfig().srcDir.getAbsolutePath().length()+1);
-                    log(" generated : "+ classfile ,Project.MSG_DEBUG);
-                    log(" key       : "+ key       ,Project.MSG_DEBUG);
-                    _genfiles.put(key, new File(classfile));                                           
-                } // end of if ()                
-            } // end of while ()
-            reader.close();            
-        }
-        catch(Exception e) {
-            String msg = "Exception while parsing  java2iiop output. Details: " + e.toString();
-            throw new BuildException(msg, e);
-        }
-    }
-
-    /**
-     * @param param1 <description>
-     * @exception java.io.IOException <description>
-     */
-    public void setProcessErrorStream(InputStream is) throws IOException
-    {
-        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-        String s = reader.readLine();
-        if ( s != null) 
-        {
-            log("[java2iiop] "+s,Project.MSG_DEBUG);
-        } // end of if ()        
-    }
-    
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java
deleted file mode 100644
index c2f4437..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java
+++ /dev/null
@@ -1,251 +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.ejb;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import javax.xml.parsers.*;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.ExecTask;
-import org.apache.tools.ant.taskdefs.Java;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.types.Commandline.Argument;
-import org.xml.sax.*;
-
-/**
- * BorlandGenerateClient is dedicated to the Borland Application Server 4.5
- * This task generates the client jar using as input the ejb jar file.
- * Two mode are available: java mode (default) and fork mode. With the fork mode,
- * it is impossible to add classpath to the commmand line.
- * 
- * @author  <a href="mailto:benoit.moussaud@criltelecom.com">Benoit Moussaud</a>
- *
- */
-public class BorlandGenerateClient extends Task
-{
-    static final String JAVA_MODE = "java";
-    static final String FORK_MODE = "fork";
-
-    /** debug the generateclient task */
-    boolean debug = false;
-
-    /** hold the ejbjar file name */
-    File ejbjarfile = null;
-
-    /** hold the client jar file name */
-    File clientjarfile = null;
-
-    /** hold the classpath */
-    Path classpath;
-
-    /** hold the mode (java|fork) */
-    String mode = JAVA_MODE;
-
-    public void setMode(String s) {
-        mode = s;
-    }
-    public void setDebug(boolean debug) {
-        this.debug = debug;
-    }
-
-    public void setEjbjar(File ejbfile) {
-        ejbjarfile = ejbfile;
-    }
-    
-    public void setClientjar(File clientjar) {
-        clientjarfile = clientjar;
-    }
-
-    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);
-    }
-    
-
-    /**
-     * Do the work.
-     *
-     * The work is actually done by creating a separate JVM to run a java task. 
-     *
-     * @exception BuildException if someting goes wrong with the build
-     */
-    public void execute() throws BuildException {
-        if ( ejbjarfile == null ||
-             ejbjarfile.isDirectory()) {
-            throw new BuildException("invalid ejb jar file.");
-        } // end of if ()
-
-        if ( clientjarfile == null ||
-             clientjarfile.isDirectory()) {
-            log("invalid or missing client jar file.",Project.MSG_VERBOSE);
-            String ejbjarname = ejbjarfile.getAbsolutePath();
-            //clientname = ejbjarfile+client.jar
-            String clientname = ejbjarname.substring(0,ejbjarname.lastIndexOf("."));
-            clientname = clientname + "client.jar";
-            clientjarfile = new File(clientname);
-
-        } // end of if ()
-
-        if ( mode == null ) {
-            log("mode is null default mode  is java");
-            setMode(JAVA_MODE);
-        } // end of if ()
-
-        log("client jar file is " + clientjarfile);
-
-        if ( mode.equalsIgnoreCase(FORK_MODE)) {
-            executeFork();
-        } // end of if ()
-        else {            
-            executeJava();
-        } // end of else                       
-    }
-    
-    /** launch the generate client using java api */
-    protected void executeJava() throws BuildException {
-        try {
-            log("mode : java");
-
-            org.apache.tools.ant.taskdefs.Java execTask = null;                
-            execTask = (Java) getProject().createTask("java");
-                       
-            execTask.setDir(new File("."));
-            execTask.setClassname("com.inprise.server.commandline.EJBUtilities");
-            //classpath
-            //add at the end of the classpath
-            //the system classpath in order to find the tools.jar file
-            execTask.setClasspath(classpath.concatSystemClasspath());
-
-            execTask.setFork(true);
-            execTask.createArg().setValue("generateclient");
-            if ( debug ) {
-                execTask.createArg().setValue("-trace");                
-            } // end of if ()
-
-            //
-            execTask.createArg().setValue("-short");
-            execTask.createArg().setValue("-jarfile");
-            // ejb jar file
-            execTask.createArg().setValue(ejbjarfile.getAbsolutePath());
-            //client jar file
-            execTask.createArg().setValue("-single");
-            execTask.createArg().setValue("-clientjarfile");
-            execTask.createArg().setValue(clientjarfile.getAbsolutePath());
-
-            log("Calling EJBUtilities",Project.MSG_VERBOSE);                       
-            execTask.execute();        
-
-        }
-        catch (Exception e) {
-            // Have to catch this because of the semantics of calling main()
-            String msg = "Exception while calling generateclient Details: " + e.toString();
-            throw new BuildException(msg, e);
-        }
-    }
-
-    /** launch the generate client using system api */
-    protected  void executeFork() throws BuildException {
-        try {
-            log("mode : fork");
-
-            org.apache.tools.ant.taskdefs.ExecTask execTask = null;                
-            execTask = (ExecTask) getProject().createTask("exec");
-                       
-            execTask.setDir(new File("."));
-            execTask.setExecutable("iastool");
-            execTask.createArg().setValue("generateclient");
-            if ( debug ){
-                execTask.createArg().setValue("-trace");                
-            } // end of if ()
-
-            //
-            execTask.createArg().setValue("-short");
-            execTask.createArg().setValue("-jarfile");
-            // ejb jar file
-            execTask.createArg().setValue(ejbjarfile.getAbsolutePath());
-            //client jar file
-            execTask.createArg().setValue("-single");
-            execTask.createArg().setValue("-clientjarfile");
-            execTask.createArg().setValue(clientjarfile.getAbsolutePath());
-
-            log("Calling java2iiop",Project.MSG_VERBOSE);                       
-            execTask.execute();        
-        }
-        catch (Exception e) {
-            // Have to catch this because of the semantics of calling main()
-            String msg = "Exception while calling generateclient Details: " + e.toString();
-            throw new BuildException(msg, e);
-        }
-
-    }
-}
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 a1cc123..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreatorHelper.java
+++ /dev/null
@@ -1,181 +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;
-import java.io.FileInputStream;
-import java.io.ObjectInputStream;
-
-import javax.ejb.deployment.DeploymentDescriptor;
-
-/**
- * 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()
-                || regenerateSerializedFile(serFile)) {
-                
-                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);
-                }
-            }
-        }
-    }
-
-    /**
-     * EJBC will fail if the serialized descriptor file does not match the bean classes.
-     * You can test for this by trying to load the deployment descriptor.  If it fails,
-     * the serialized file needs to be regenerated because the associated class files
-     * don't match.
-     */
-    private boolean regenerateSerializedFile(File serFile) {
-        try {
-
-            FileInputStream fis = new FileInputStream(serFile);
-            ObjectInputStream ois = new ObjectInputStream(fis);
-            DeploymentDescriptor dd = (DeploymentDescriptor) ois.readObject();
-            fis.close();
-
-            // Since the descriptor read properly, everything should be o.k.
-            return false;
-
-        } catch (Exception e) {
-            
-            // Weblogic will throw an error if the deployment descriptor does 
-            // not match the class files.
-            return true;
-
-        }
-    }
-}
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 ea8df9a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java
+++ /dev/null
@@ -1,370 +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 java.net.*;
-
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.AttributeList;
-
-import org.apache.tools.ant.*;
-
-/**
- * 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 {
-    static private final int STATE_LOOKING_EJBJAR = 1;
-    static private final int STATE_IN_EJBJAR = 2;
-    static private final int STATE_IN_BEANS = 3;
-    static private final int STATE_IN_SESSION = 4;
-    static private final int STATE_IN_ENTITY = 5;
-    
-    private Task owningTask;
-    
-    private String publicId = null;
-    
-    /**
-     * 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";
-    private static final String EJB_NAME         = "ejb-name";
-    private static final String EJB_JAR          = "ejb-jar";
-    private static final String ENTERPRISE_BEANS = "enterprise-beans";
-    private static final String ENTITY_BEAN      = "entity";
-    private static final String SESSION_BEAN     = "session";
-
-    /**
-     * The state of the parsing
-     */
-    private int parseState = STATE_LOOKING_EJBJAR;
-
-    /**
-     * 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;
-
-    /**
-     * Instance variable that stores the value found in the <ejb-name> element
-     */
-    protected String ejbName = null;
-
-    private Hashtable fileDTDs = new Hashtable();
-    
-    private Hashtable resourceDTDs = new Hashtable();
-
-    private boolean inEJBRef = false;
-
-    private Hashtable urlDTDs = new Hashtable();
-
-    /**
-     * The directory containing the bean classes and interfaces. This is 
-     * used for performing dependency file lookups.
-     */
-    private File srcDir;
-
-    public DescriptorHandler(Task task, File srcDir) {
-        this.owningTask = task;
-        this.srcDir = srcDir;
-    }
-    
-    public void registerDTD(String publicId, String location) {
-        if (location == null) {
-            return;
-        }
-        
-        File fileDTD = new File(location);
-        if (fileDTD.exists()) {
-            if (publicId != null) {
-                fileDTDs.put(publicId, fileDTD);
-                owningTask.log("Mapped publicId " + publicId + " to file " + fileDTD, Project.MSG_VERBOSE);
-            }
-            return;
-        }
-        
-        if (getClass().getResource(location) != null) {
-            if (publicId != null) {
-                resourceDTDs.put(publicId, location);
-                owningTask.log("Mapped publicId " + publicId + " to resource " + location, Project.MSG_VERBOSE);
-            }
-        }
-
-        try {
-            if (publicId != null) {
-                URL urldtd = new URL(location);
-                urlDTDs.put(publicId, urldtd);
-            }            
-        } catch ( java.net.MalformedURLException   e) {
-            //ignored
-        } 
-        
-    }
-
-    public InputSource resolveEntity(String publicId, String systemId)
-        throws SAXException
-    {
-        this.publicId = publicId;
-        
-        File dtdFile = (File) fileDTDs.get(publicId);
-        if (dtdFile != null) {
-            try {
-                owningTask.log("Resolved " + publicId + " to local file " + dtdFile, Project.MSG_VERBOSE);
-                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) {
-                owningTask.log("Resolved " + publicId + " to local resource " + dtdResourceName, Project.MSG_VERBOSE);
-                return new InputSource(is);
-            }
-        }
-
-        URL dtdUrl = (URL) urlDTDs.get(publicId);
-        if ( dtdUrl != null ) {
-            try {
-                InputStream is = dtdUrl.openStream();
-                owningTask.log("Resolved " + publicId + " to url " + dtdUrl, Project.MSG_VERBOSE);
-                return new InputSource(is);
-            } catch ( IOException ioe) {
-                //ignore
-            }            
-        } 
-                
-        owningTask.log("Could not resolve ( publicId: " + publicId + ", systemId: " + systemId + ") to a local entity", 
-                        Project.MSG_INFO);
-        
-        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;
-    }
-
-    /**
-     * Get the publicId of the DTD
-     */
-    public String getPublicId() {
-        return publicId;
-    }
-    
-     /**
-     * Getter method that returns the value of the <ejb-name> element.
-     */
-    public String getEjbName() {
-        return ejbName;
-    }
-
-    /**
-     * 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;
-        }
-        else if (parseState == STATE_LOOKING_EJBJAR && name.equals(EJB_JAR)) {
-            parseState = STATE_IN_EJBJAR;
-        }
-        else if (parseState == STATE_IN_EJBJAR && name.equals(ENTERPRISE_BEANS)) {
-            parseState = STATE_IN_BEANS;
-        }
-        else if (parseState == STATE_IN_BEANS && name.equals(SESSION_BEAN)) {
-            parseState = STATE_IN_SESSION;
-        }
-        else if (parseState == STATE_IN_BEANS && name.equals(ENTITY_BEAN )) {
-            parseState = STATE_IN_ENTITY;
-        }
-    }
-
-
-    /**
-     * 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;
-        }
-        else if (parseState == STATE_IN_ENTITY && name.equals(ENTITY_BEAN )) {
-            parseState = STATE_IN_BEANS;
-        }
-        else if (parseState == STATE_IN_SESSION && name.equals(SESSION_BEAN)) {
-            parseState = STATE_IN_BEANS;
-        }
-        else if (parseState == STATE_IN_BEANS && name.equals(ENTERPRISE_BEANS)) {
-            parseState = STATE_IN_EJBJAR;
-        }
-        else if (parseState == STATE_IN_EJBJAR && name.equals(EJB_JAR)) {
-            parseState = STATE_LOOKING_EJBJAR;
-        }
-    }
-
-    /**
-     * 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 || 
-            (parseState != STATE_IN_ENTITY && parseState != STATE_IN_SESSION)) {
-            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.trim();
-
-            // If it's a primitive wrapper then we shouldn't try and put
-            // it into the jar, so ignore it.
-            if (!className.startsWith("java.") &&
-                !className.startsWith("javax.")) {
-                // 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);
-            }
-        }
-
-	// Get the value of the <ejb-name> tag.  Only the first occurence.
-        if (currentElement.equals(EJB_NAME)) {
-            if ( ejbName == null ) {
-                ejbName = currentText.trim();
-            }
-        }
-    }
-}
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 978abf0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EJBDeploymentTool.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.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. 
-     */
-    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 f1cb549..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbJar.java
+++ /dev/null
@@ -1,548 +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;
-
-// 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 {
-    
-    public static class DTDLocation {
-        private String publicId = null;
-        private String location = null;
-        
-        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 List supportFileSets = new ArrayList();
-        
-        /**
-         * The list of configured DTD locations
-         */
-        public ArrayList dtdLocations = new ArrayList();
-        
-        /**
-         * The naming scheme used to determine the generated jar name
-         * from the descriptor information
-         */
-        public NamingScheme namingScheme;
-        
-        /**
-         * The Manifest file
-         */
-        public File manifest;
-    };
-
-
-    public static class NamingScheme extends EnumeratedAttribute {
-        static public final String EJB_NAME = "ejb-name";
-        static public final String DIRECTORY = "directory";
-        static public final String DESCRIPTOR = "descriptor";
-        static public final String BASEJARNAME = "basejarname";
-        public String[] getValues() {
-            return new String[] {EJB_NAME, DIRECTORY, DESCRIPTOR, BASEJARNAME};
-        }
-    }
-
-    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 Borland nested element used to configure a
-     * deployment tool for Borland server.
-     *
-     * @return the deployment tool instance to be configured.
-     */
-    public BorlandDeploymentTool createBorland() {
-        log("Borland deployment tools",  Project.MSG_VERBOSE);
-
-        BorlandDeploymentTool tool = new BorlandDeploymentTool();
-        tool.setTask(this);
-        deploymentTools.add(tool);
-        return tool;
-    }
-
-    /**
-     * Create a nested element used to configure a deployment tool for iPlanet
-	 * Application Server.
-     *
-     * @return the deployment tool instance to be configured.
-     */
-    public IPlanetDeploymentTool createIplanet() {
-        log("iPlanet Application Server deployment tools", Project.MSG_VERBOSE);
-
-        IPlanetDeploymentTool tool = new IPlanetDeploymentTool();
-        tool.setTask(this);
-        deploymentTools.add(tool);
-        return tool;
-    }
-
-    /**
-     * Create a jboss nested element used to configure a
-     * deployment tool for Jboss server.
-     *
-     * @return the deployment tool instance to be configured.
-     */
-    public JbossDeploymentTool createJboss() {
-        JbossDeploymentTool tool = new JbossDeploymentTool();
-        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() {
-        FileSet supportFileSet = new FileSet();
-        config.supportFileSets.add(supportFileSet);
-        return supportFileSet;
-    }
-    
-
-     /**
-      * Set the Manifest file to use when jarring.
-      *
-      * As of EJB 1.1, manifest files are no longer used to configure the EJB. However, they
-      * still have a vital importance if the EJB is intended to be packaged in an EAR file.
-      * By adding "Class-Path" settings to a Manifest file, the EJB can look for classes inside
-      * the EAR file itself, allowing for easier deployment. This is outlined in the J2EE
-      * specification, and all J2EE components are meant to support it.
-      */
-     public void setManifest(File manifest) {
-         config.manifest = manifest;
-     }
-
-    /**
-     * 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;
-        if (config.namingScheme == null) {
-            config.namingScheme = new NamingScheme();
-            config.namingScheme.setValue(NamingScheme.BASEJARNAME);
-        }
-        else if (!config.namingScheme.getValue().equals(NamingScheme.BASEJARNAME)) {
-            throw new BuildException("The basejarname attribute is not compatible with the " + 
-                                     config.namingScheme.getValue() + " naming scheme");
-        }                                     
-    }
-
-    /**
-     * Set the naming scheme used to determine the name of the generated jars
-     * from the deployment descriptor
-     *
-     * @param NamingScheme the namign scheme to be used
-     */
-    public void setNaming(NamingScheme namingScheme) {
-        config.namingScheme = namingScheme;
-        if (!config.namingScheme.getValue().equals(NamingScheme.BASEJARNAME) &&
-            config.baseJarName != null) {
-            throw new BuildException("The basejarname attribute is not compatible with the " + 
-                                     config.namingScheme.getValue() + " naming scheme");
-        }                                     
-    }
-    
-
-    /**
-     * 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;
-        }
-
-        if (config.namingScheme == null) {
-            config.namingScheme = new NamingScheme();
-            config.namingScheme.setValue(NamingScheme.DESCRIPTOR);
-        }
-        else if (config.namingScheme.getValue().equals(NamingScheme.BASEJARNAME) &&
-                 config.baseJarName == null) {
-            throw new BuildException("The basejarname attribute must be specified " + 
-                                     "with the basejarname naming scheme");
-        }
-    }        
-
-    /**
-     * 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 7b7556d..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.addElement("-noexit");
-        }
-        if (keepGenerated) {
-            v.addElement("-keepgenerated");        
-        }
-        v.addElement("-d");
-        v.addElement(generatedFilesDirectory.getPath());
-        v.addElement(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 c0c20f0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
+++ /dev/null
@@ -1,872 +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;
-
-    /**
-     * Handler used to parse the EJB XML descriptor
-     */
-    private DescriptorHandler handler;
-
-    /**
-     * 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);
-    }
-
-    protected Location getLocation() {
-        return getTask().getLocation();
-    }
-
-
-    /**
-     * 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) {
-            log("WARNING: IOException while adding entry " + 
-                logicalFilename + " to jarfile from " + inputFile.getPath() + " " + 
-                ioe.getClass().getName() + "-" + ioe.getMessage(), Project.MSG_WARN);
-        }
-        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) { 
-        DescriptorHandler handler = new DescriptorHandler(getTask(), srcDir); 
-        
-        registerKnownDTDs(handler);
-        
-        // register any DTDs supplied by the user
-        for (Iterator i = getConfig().dtdLocations.iterator(); i.hasNext();) { 
-            EjbJar.DTDLocation dtdLocation = (EjbJar.DTDLocation)i.next(); 
-            handler.registerDTD(dtdLocation.getPublicId(), dtdLocation.getLocation()); 
-        } 
-        return handler; 
-    } 
-    
-    /**
-     * Register the locations of all known DTDs.
-     *
-     * vendor-specific subclasses should override this method to define
-     * the vendor-specific locations of the EJB DTDs
-     */
-    protected void registerKnownDTDs(DescriptorHandler handler) {
-        // none to register for generic
-    }
-
-    public void processDescriptor(String descriptorFileName, SAXParser saxParser) {
-
-        checkConfiguration(descriptorFileName, saxParser);
-                    
-        try {
-            handler = getDescriptorHandler(config.srcDir);
-
-            // Retrive the files to be added to JAR from EJB descriptor
-            Hashtable ejbFiles = parseEjbFiles(descriptorFileName, saxParser);
-
-            // Add any support classes specified in the build file
-            addSupportClasses(ejbFiles);
-
-            // Determine the JAR filename (without filename extension)
-            String baseName = getJarBaseName(descriptorFileName);
-
-            String ddPrefix = getVendorDDPrefix(baseName, descriptorFileName);
-
-            // 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, ddPrefix);
-
-            // 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);
-            
-            
-            // Check to see if we need a build and start doing the work!
-            if (needToRebuild(ejbFiles, jarFile)) {
-                // 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
-                String publicId = getPublicId();
-                writeJar(baseName, jarFile, ejbFiles, publicId);
-
-            }
-            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);
-        }
-    }
-    
-    /**
-     * This method is called as the first step in the processDescriptor method
-     * to allow vendor-specific subclasses to validate the task configuration
-     * prior to processing the descriptor.  If the configuration is invalid,
-     * a BuildException should be thrown.
-     *
-     * @param descriptorFileName String representing the file name of an EJB
-     *                           descriptor to be processed
-     * @param saxParser          SAXParser which may be used to parse the XML
-     *                           descriptor
-     * @thows BuildException     Thrown if the configuration is invalid
-     */
-    protected void checkConfiguration(String descriptorFileName, 
-                                    SAXParser saxParser) throws BuildException {
-
-        /* 
-         * For the GenericDeploymentTool, do nothing.  Vendor specific 
-         * subclasses should throw a BuildException if the configuration is 
-         * invalid for their server.
-         */
-    }
-
-    /**
-     * This method returns a list of EJB files found when the specified EJB
-     * descriptor is parsed and processed.
-     *
-     * @param descriptorFileName String representing the file name of an EJB
-     *                           descriptor to be processed
-     * @param saxParser          SAXParser which may be used to parse the XML
-     *                           descriptor
-     * @return                   Hashtable of EJB class (and other) files to be
-     *                           added to the completed JAR file
-     * @throws SAXException      Any SAX exception, possibly wrapping another 
-     *                           exception
-     * @throws IOException       An IOException from the parser, possibly from a
-     *                           the byte stream or character stream 
-     */
-    protected Hashtable parseEjbFiles(String descriptorFileName, SAXParser saxParser)
-                            throws IOException, SAXException {
-        FileInputStream descriptorStream = null;
-        Hashtable ejbFiles = null;
-
-        try {
-
-            /* 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);
-                            
-            ejbFiles = handler.getFiles();
-
-        } finally {
-            if (descriptorStream != null) {
-                try {
-                    descriptorStream.close();
-                }
-                catch (IOException closeException) {}
-            }
-        }
-
-        return ejbFiles;
-    }
-
-    /**
-     * Adds any classes the user specifies using <i>support</i> nested elements
-     * to the <code>ejbFiles</code> Hashtable.
-     *
-     * @param ejbFiles Hashtable of EJB classes (and other) files that will be
-     *                 added to the completed JAR file
-     */
-    protected void addSupportClasses(Hashtable ejbFiles) {
-        // add in support classes if any
-        Project project = task.getProject();
-        for (Iterator i = config.supportFileSets.iterator(); i.hasNext();) {
-            FileSet supportFileSet = (FileSet)i.next();
-            File supportBaseDir = supportFileSet.getDir(project);
-            DirectoryScanner supportScanner = supportFileSet.getDirectoryScanner(project);
-            supportScanner.scan();
-            String[] supportFiles = supportScanner.getIncludedFiles();
-            for (int j = 0; j < supportFiles.length; ++j) {
-                ejbFiles.put(supportFiles[j], new File(supportBaseDir, supportFiles[j]));
-            }
-        }            
-    }
-
-
-    /**
-     * Using the EJB descriptor file name passed from the <code>ejbjar</code>
-     * task, this method returns the "basename" which will be used to name the
-     * completed JAR file.
-     *
-     * @param descriptorFileName String representing the file name of an EJB
-     *                           descriptor to be processed
-     * @return                   The "basename" which will be used to name the
-     *                           completed JAR file
-     */
-    protected String getJarBaseName(String descriptorFileName) {
-
-        String baseName = "";
-
-        // Work out what the base name is
-        if (config.namingScheme.getValue().equals(EjbJar.NamingScheme.BASEJARNAME)) {
-            String canonicalDescriptor = descriptorFileName.replace('\\', '/');
-            int index = canonicalDescriptor.lastIndexOf('/');
-            if (index != -1) {
-                baseName = descriptorFileName.substring(0, index + 1);
-            }
-            baseName += config.baseJarName;
-        } else if (config.namingScheme.getValue().equals(EjbJar.NamingScheme.DESCRIPTOR)) {
-            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);
-        } else if (config.namingScheme.getValue().equals(EjbJar.NamingScheme.DIRECTORY)) {
-            int lastSeparatorIndex = descriptorFileName.lastIndexOf(File.separator);
-            String dirName = descriptorFileName.substring(0, lastSeparatorIndex);
-            int dirSeparatorIndex = dirName.lastIndexOf(File.separator);
-            if (dirSeparatorIndex != -1) {
-                dirName = dirName.substring(dirSeparatorIndex + 1);
-            }
-            
-            baseName = dirName;
-        } else if (config.namingScheme.getValue().equals(EjbJar.NamingScheme.EJB_NAME)) {
-            baseName = handler.getEjbName();
-        }
-        return baseName;
-    }
-
-    /**
-     * Get the prefix for vendor deployment descriptors.
-     *
-     * This will contain the path and the start of the descriptor name, 
-     * depending on the naming scheme
-     */
-    public String getVendorDDPrefix(String baseName, String descriptorFileName) {
-        String ddPrefix = null;
-
-        if (config.namingScheme.getValue().equals(EjbJar.NamingScheme.DESCRIPTOR)) {
-            ddPrefix = baseName + config.baseNameTerminator;
-        } else if (config.namingScheme.getValue().equals(EjbJar.NamingScheme.BASEJARNAME) ||
-                   config.namingScheme.getValue().equals(EjbJar.NamingScheme.EJB_NAME) ||
-                   config.namingScheme.getValue().equals(EjbJar.NamingScheme.DIRECTORY)) {
-            String canonicalDescriptor = descriptorFileName.replace('\\', '/');
-            int index = canonicalDescriptor.lastIndexOf('/');
-            if (index == -1) {
-                ddPrefix = "";
-            }
-            else {
-                ddPrefix = descriptorFileName.substring(0, index + 1);
-            }
-        }
-        return ddPrefix;
-    }
-
-    /**
-     * Add any vendor specific files which should be included in the 
-     * EJB Jar.
-     */
-    protected void addVendorFiles(Hashtable ejbFiles, String ddPrefix) {
-        // 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);
-    }
-
-    /**
-     * This method checks the timestamp on each file listed in the <code>
-     * ejbFiles</code> and compares them to the timestamp on the <code>jarFile
-     * </code>.  If the <code>jarFile</code>'s timestamp is more recent than
-     * each EJB file, <code>true</code> is returned.  Otherwise, <code>false
-     * </code> is returned.
-     *
-     * @param ejbFiles Hashtable of EJB classes (and other) files that will be
-     *                 added to the completed JAR file
-     * @param jarFile  JAR file which will contain all of the EJB classes (and
-     *                 other) files
-     * @return         boolean indicating whether or not the <code>jarFile</code>
-     *                 is up to date
-     */
-    protected boolean needToRebuild(Hashtable ejbFiles, File jarFile) {
-        if (jarFile.exists()) {
-            long lastBuild = jarFile.lastModified();
-            if (config.manifest != null && config.manifest.exists() &&
-                config.manifest.lastModified() > lastBuild) {
-                log("Build needed because manifest " + config.manifest + " is out of date",
-                    Project.MSG_VERBOSE);
-                return true;
-            }
-                            
-            
-            Iterator fileIter = ejbFiles.values().iterator();
-
-            // Loop through the files seeing if any has been touched
-            // more recently than the destination jar.
-            while(fileIter.hasNext()) {
-                File currentFile = (File) fileIter.next();
-                if (lastBuild < currentFile.lastModified()) {
-                    log("Build needed because " + currentFile.getPath() + " is out of date",
-                        Project.MSG_VERBOSE);
-                    return true;                        
-                }
-            }
-            return false;
-        }
-        
-        return true;
-    }
-
-    /**
-     * Returns the Public ID of the DTD specified in the EJB descriptor.  Not
-     * every vendor-specific <code>DeploymentTool</code> will need to reference
-     * this value or may want to determine this value in a vendor-specific way.
-     *
-     * @return         Public ID of the DTD specified in the EJB descriptor.
-     */
-    protected String getPublicId() {
-        return handler.getPublicId();
-    }
-
-    /**
-     * 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, 
-                            String publicId) 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();
-            
-            InputStream in = null;
-            Manifest manifest = null;
-            try {
-                if (config.manifest != null) {
-                    in = new FileInputStream(config.manifest);
-                    if ( in == null ) {
-                        throw new BuildException("Could not find manifest file: " + config.manifest, 
-                                                  getLocation());
-                    }
-                }
-                else {
-                    String defaultManifest = "/org/apache/tools/ant/defaultManifest.mf";
-                    in = this.getClass().getResourceAsStream(defaultManifest);
-                    if ( in == null ) {
-                        throw new BuildException("Could not find default manifest: " + defaultManifest,
-                                                  getLocation());
-                    }
-                }
-                            
-                manifest = new Manifest(in);
-            }
-            catch (IOException e) {
-                throw new BuildException ("Unable to read manifest", e, getLocation());
-            }
-            finally {
-                if (in != null) {
-                    in.close();
-                }
-            }
-            
-            // Create the streams necessary to write the jarfile
-            
-            jarStream = new JarOutputStream(new FileOutputStream(jarfile), manifest);
-            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
-                    int entryIndex = entryName.lastIndexOf(entryFile.getName()) -1;
-                    if ( entryIndex < 0) {
-                        entryName = innerfiles[i];
-                    }
-                    else {
-                        entryName = entryName.substring(0, entryIndex) + 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.
-     *
-     * @throws BuildException If the Deployment Tool's configuration isn't
-     *                        valid
-     */
-    public void validateConfigured() throws BuildException {
-        if ((destDir == null) || (!destDir.isDirectory())) {
-            String msg = "A valid destination directory must be specified "
-                            + "using the \"destdir\" attribute.";
-            throw new BuildException(msg, getLocation());
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetDeploymentTool.java
deleted file mode 100644
index 2f1f0d1..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetDeploymentTool.java
+++ /dev/null
@@ -1,422 +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.File;
-import java.io.IOException;
-import java.util.Hashtable;
-
-import javax.xml.parsers.SAXParser;
-import org.xml.sax.SAXException;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildException;
-
-/**
- * This class is used to generate iPlanet Application Server (iAS) 6.0 stubs and 
- * skeletons and build an EJB Jar file.  It is designed to be used with the Ant
- * <code>ejbjar</code> task.  If only stubs and skeletons need to be generated
- * (in other words, if no JAR file needs to be created), refer to the
- * <code>iplanet-ejbc</code> task and the <code>IPlanetEjbcTask</code> class.
- * <p>
- * The following attributes may be specified by the user:
- *   <ul>
- *     <li><i>destdir</i> -- The base directory into which the generated JAR
- *                           files will be written.  Each JAR file is written
- *                           in directories which correspond to their location
- *                           within the "descriptordir" namespace.  This is a
- *                           required attribute.
- *     <li><i>classpath</i> -- The classpath used when generating EJB stubs and
- *                             skeletons.  This is an optional attribute (if 
- *                             omitted, the classpath specified in the "ejbjar"
- *                             parent task will be used).  If specified, the
- *                             classpath elements will be prepended to the
- *                             classpath specified in the parent "ejbjar" task.
- *                             Note that nested "classpath" elements may also be
- *                             used.
- *     <li><i>keepgenerated</i> -- Indicates whether or not the Java source 
- *                                 files which are generated by ejbc will be 
- *                                 saved or automatically deleted.  If "yes", 
- *                                 the source files will be retained.  This is 
- *                                 an optional attribute (if omitted, it 
- *                                 defaults to "no").
- *     <li><i>debug</i> -- Indicates whether or not the ejbc utility should
- *                         log additional debugging statements to the standard
- *                         output.  If "yes", the additional debugging statements
- *                         will be generated (if omitted, it defaults to "no").
- *     <li><i>iashome</i> -- May be used to specify the "home" directory for
- *                           this iPlanet Application server installation.  This
- *                           is used to find the ejbc utility if it isn't 
- *                           included in the user's system path.  This is an 
- *                           optional attribute (if specified, it should refer  
- *                           to the <code>[install-location]/iplanet/ias6/ias
- *                           </code> directory).  If omitted, the ejbc utility 
- *                           must be on the user's system path.
- *     <li><i>suffix</i> -- String value appended to the JAR filename when 
- *                          creating each JAR.  This attribute is not required
- *                          (if omitted, it defaults to ".jar").
- *   </ul>
- * <p>
- * For each EJB descriptor found in the "ejbjar" parent task, this deployment
- * tool will locate the three classes that comprise the EJB.  If these class 
- * files cannot be located in the specified <code>srcdir</code> directory, the 
- * task will fail.  The task will also attempt to locate the EJB stubs and 
- * skeletons in this directory.  If found, the timestamps on the stubs and 
- * skeletons will be checked to ensure they are up to date.  Only if these files 
- * cannot be found or if they are out of date will ejbc be called.
- *
- * @see    IPlanetEjbc
- * @author Greg Nelson <a href="mailto:greg@netscape.com">greg@netscape.com</a>
- */
-public class IPlanetDeploymentTool extends GenericDeploymentTool {
-
-    /* Attributes set by the Ant build file */
-    private File    iashome;
-    private String  jarSuffix     = ".jar";
-    private boolean keepgenerated = false;
-    private boolean debug         = false;
-
-    /*
-     * Filenames of the standard EJB descriptor (which is passed to this class
-     * from the parent "ejbjar" task) and the iAS-specific EJB descriptor
-     * (whose name is determined by this class).  Both filenames are relative
-     * to the directory specified by the "srcdir" attribute in the ejbjar task. 
-     */
-    private String  descriptorName;
-    private String  iasDescriptorName;
-
-    /*
-     * The displayName variable stores the value of the "display-name" element
-     * from the standard EJB descriptor.  As a future enhancement to this task,
-     * we may determine the name of the EJB JAR file using this display-name,
-     * but this has not be implemented yet.
-     */
-    private String  displayName;
-
-    /*
-     * Regardless of the name of the iAS-specific EJB descriptor file, it will
-     * written in the completed JAR file as "ias-ejb-jar.xml".  This is the
-     * naming convention implemented by iAS.
-     */
-    private static final String IAS_DD = "ias-ejb-jar.xml";    
-
-    /**
-     * Setter method used to store the "home" directory of the user's iAS
-     * installation.  The directory specified should typically be
-     * <code>[install-location]/iplanet/ias6/ias</code>.
-     *
-     * @param iashome The home directory for the user's iAS installation.
-     */
-    public void setIashome(File iashome) {
-        this.iashome = iashome;
-    }
-
-    /**
-     * Setter method used to specify whether the Java source files generated by
-     * the ejbc utility should be saved or automatically deleted.
-     *
-     * @param keepgenerated boolean which, if <code>true</code>, indicates that
-     *                      Java source files generated by ejbc for the stubs
-     *                      and skeletons should be kept.
-     */
-    public void setKeepgenerated(boolean keepgenerated) {
-        this.keepgenerated = keepgenerated;
-    }
-
-    /**
-     * Sets whether or not debugging output will be generated when ejbc is
-     * executed.
-     *
-     * @param debug A boolean indicating if debugging output should be generated
-     */
-    public void setDebug(boolean debug) {
-        this.debug = debug;
-    }
-
-    /**
-     * Setter method used to specify the filename suffix (for example, ".jar")
-     * for the JAR files to be created.
-     *
-     * @param jarSuffix The string to use as the JAR filename suffix.
-     */
-    public void setSuffix(String jarSuffix) {
-        this.jarSuffix = jarSuffix;
-    }
-
-    /**
-     * Since iAS doesn't generate a "generic" JAR as part of its processing, 
-     * this attribute is ignored and a warning message is displayed to the user.
-     *
-     * @param inString the string to use as the suffix.  This parameter is
-     *                 ignored.
-     */
-    public void setGenericJarSuffix(String inString) {
-        log("Since a generic JAR file is not created during processing, the "
-                + "iPlanet Deployment Tool does not support the "
-                + "\"genericjarsuffix\" attribute.  It will be ignored.",
-            Project.MSG_WARN);
-    }
-
-    public void processDescriptor(String descriptorName, SAXParser saxParser) {
-        this.descriptorName = descriptorName;
-
-        log("iPlanet Deployment Tool processing: " + descriptorName + " (and " 
-                + getIasDescriptorName() + ")", Project.MSG_VERBOSE);
-
-        super.processDescriptor(descriptorName, saxParser);
-    }
-
-    /**
-     * Verifies that the user selections are valid.
-     *
-     * @param descriptorFileName String representing the file name of an EJB
-     *                           descriptor to be processed
-     * @param saxParser          SAXParser which may be used to parse the XML
-     *                           descriptor
-     * @throws BuildException If the user selections are invalid.
-     */
-    protected void checkConfiguration(String descriptorFileName, 
-                                    SAXParser saxParser) throws BuildException {
-
-        int startOfName = descriptorFileName.lastIndexOf(File.separatorChar) + 1;
-        String stdXml = descriptorFileName.substring(startOfName);
-        if (stdXml.equals(EJB_DD) && (getConfig().baseJarName == null)) {
-            String msg = "No name specified for the completed JAR file.  The EJB"
-                            + " descriptor should be prepended with the JAR "
-                            + "name or it should be specified using the "
-                            + "attribute \"basejarname\" in the \"ejbjar\" task.";
-            throw new BuildException(msg, getLocation());
-        }
-
-        File iasDescriptor = new File(getConfig().descriptorDir,
-                                        getIasDescriptorName());
-        if ((!iasDescriptor.exists()) || (!iasDescriptor.isFile())) {
-            String msg = "The iAS-specific EJB descriptor (" 
-                            + iasDescriptor + ") was not found.";
-            throw new BuildException(msg, getLocation());
-        }
-
-        if ((iashome != null) && (!iashome.isDirectory())) {
-            String msg = "If \"iashome\" is specified, it must be a valid "
-                            + "directory (it was set to " + iashome + ").";
-            throw new BuildException(msg, getLocation());
-        }
-    }
-
-    /**
-     * This method returns a list of EJB files found when the specified EJB
-     * descriptor is parsed and processed.
-     *
-     * @param descriptorFileName String representing the file name of an EJB
-     *                           descriptor to be processed
-     * @param saxParser          SAXParser which may be used to parse the XML
-     *                           descriptor
-     * @return                   Hashtable of EJB class (and other) files to be
-     *                           added to the completed JAR file
-     * @throws IOException       An IOException from the parser, possibly from 
-     *                           the byte stream or character stream 
-     * @throws SAXException      Any SAX exception, possibly wrapping another 
-     *                           exception
-     */
-    protected Hashtable parseEjbFiles(String descriptorFileName, 
-                         SAXParser saxParser) throws IOException, SAXException {
-
-        Hashtable files;
-
-        /* Build and populate an instance of the ejbc utility */
-        IPlanetEjbc ejbc = new IPlanetEjbc(
-                                    new File(getConfig().descriptorDir,
-                                                descriptorFileName),
-                                    new File(getConfig().descriptorDir,
-                                                getIasDescriptorName()),
-                                    getConfig().srcDir,
-                                    getCombinedClasspath().toString(),
-                                    saxParser);
-        ejbc.setRetainSource(keepgenerated);
-        ejbc.setDebugOutput(debug);
-        if (iashome != null) {
-            ejbc.setIasHomeDir(iashome);
-        }
-
-        /* Execute the ejbc utility -- stubs/skeletons are rebuilt, if needed */
-        try {
-            ejbc.execute();
-        } catch (IPlanetEjbc.EjbcException e) {
-            throw new BuildException("An error has occurred while trying to "
-                        + "execute the iAS ejbc utility", e, getLocation());
-        }
-
-        displayName    = ejbc.getDisplayName();
-        files          = ejbc.getEjbFiles();
-
-        /* Add CMP descriptors to the list of EJB files */
-        String[] cmpDescriptors = ejbc.getCmpDescriptors();
-        if (cmpDescriptors.length > 0) {
-            File baseDir = getConfig().descriptorDir;
-
-            int endOfPath = descriptorFileName.lastIndexOf(File.separator);
-            String relativePath = descriptorFileName.substring(0, endOfPath + 1);
-
-            for (int i = 0; i < cmpDescriptors.length; i++) {
-                int endOfCmp = cmpDescriptors[i].lastIndexOf('/');
-                String cmpDescriptor = cmpDescriptors[i].substring(endOfCmp + 1);
-
-                File   cmpFile = new File(baseDir, relativePath + cmpDescriptor);
-                if (!cmpFile.exists()) {
-                    throw new BuildException("The CMP descriptor file ("
-                            + cmpFile + ") could not be found.", getLocation());
-                }
-                files.put(cmpDescriptors[i], cmpFile);
-            }
-        }
-
-        return files;   
-    }
-
-    /**
-     * Add the iAS-specific EJB descriptor to the list of files which will be
-     * written to the JAR file.
-     *
-     * @param ejbFiles Hashtable of EJB class (and other) files to be added to
-     *                 the completed JAR file.
-     * @param baseName String name of the EJB JAR file to be written (without
-     *                 a filename extension).
-     */
-    protected void addVendorFiles(Hashtable ejbFiles, String ddPrefix) {
-        ejbFiles.put(META_DIR + IAS_DD, new File(getConfig().descriptorDir,
-                     getIasDescriptorName()));
-    }
-
-    /**
-     * Get the name of the Jar that will be written. The modification date
-     * of this jar will be checked against the dependent bean classes.
-     *
-     * @param baseName String name of the EJB JAR file to be written (without
-     *                 a filename extension).
-     *
-     * @return File representing the JAR file which will be written.
-     */
-    File getVendorOutputJarFile(String baseName) {
-        File jarFile = new File(getDestDir(), baseName + jarSuffix);
-        log("JAR file name: " + jarFile.toString(), Project.MSG_VERBOSE);
-        return jarFile;
-    }
-
-    /**
-     * The iAS ejbc utility doesn't require the Public ID of the descriptor's
-     * DTD for it to process correctly--this method always returns <code>null
-     * </code>.
-     *
-     * @return <code>null</code>.
-     */
-    protected String getPublicId() {
-        return null;
-    }
-
-    /**
-     * Determines the name of the iAS-specific EJB descriptor using the
-     * specified standard EJB descriptor name.  In general, the standard 
-     * descriptor will be named "[basename]-ejb-jar.xml", and this method will
-     * return "[basename]-ias-ejb-jar.xml".
-     *
-     * @return The name of the iAS-specific EJB descriptor file.
-     */
-    private String getIasDescriptorName() {
-        
-        /* Only calculate the descriptor name once */
-        if (iasDescriptorName != null) {
-            return iasDescriptorName;
-        }
-
-        String path = "";   // Directory path of the EJB descriptor
-        String basename;    // Filename appearing before name terminator
-        String remainder;   // Filename appearing after the name terminator
-
-        /* Find the end of the standard descriptor's relative path */
-        int startOfFileName = descriptorName.lastIndexOf(File.separatorChar);
-        if (startOfFileName != -1) {
-            path = descriptorName.substring(0, startOfFileName + 1);
-        }
-
-        /* Check to see if the standard name is used (there's no basename) */
-        if (descriptorName.substring(startOfFileName + 1).equals(EJB_DD)) {
-            basename = "";
-            remainder = EJB_DD;
-
-        } else {
-            int endOfBaseName = descriptorName.indexOf(
-                                                getConfig().baseNameTerminator,
-                                                startOfFileName);
-            /* 
-             * Check for the odd case where the terminator and/or filename
-             * extension aren't found.  These will ensure "ias-" appears at the
-             * end of the name and before the '.' (if present).
-             */
-            if (endOfBaseName < 0) {
-                endOfBaseName = descriptorName.lastIndexOf('.') - 1;
-                if (endOfBaseName < 0) {
-                    endOfBaseName = descriptorName.length() - 1;
-                }
-            }
-
-            basename = descriptorName.substring(startOfFileName + 1, 
-                                                endOfBaseName + 1);
-            remainder = descriptorName.substring(endOfBaseName + 1);
-        }
-
-        iasDescriptorName = path + basename + "ias-" + remainder;
-        return iasDescriptorName;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java
deleted file mode 100644
index 00da156..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java
+++ /dev/null
@@ -1,1489 +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.File;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import java.util.Properties;
-import java.util.Date;
-import java.util.jar.JarFile;
-import java.util.zip.ZipEntry;
-
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import org.xml.sax.HandlerBase;
-import org.xml.sax.SAXException;
-import org.xml.sax.InputSource;
-import org.xml.sax.AttributeList;
-
-/**
- * Utility class to compile EJB stubs and skeletons for the iPlanet Application 
- * Server (iAS).  The class will read a standard EJB descriptor (as well as an
- * EJB descriptor specific to iPlanet Application Server) to identify one or 
- * more EJBs to process.  It will search for EJB "source" classes (the remote 
- * interface, home interface, and EJB implementation class) and the EJB stubs
- * and skeletons in the specified destination directory.  Only if the stubs and 
- * skeletons cannot be found or if they're out of date will the iPlanet
- * Application Server ejbc utility be run.
- * <p>
- * Because this class (and it's assorted inner classes) may be bundled into the
- * iPlanet Application Server distribution at some point (and removed from the 
- * Ant distribution), the class has been written to be independent of all 
- * Ant-specific classes.  It is also for this reason (and to avoid cluttering 
- * the Apache Ant source files) that this utility has been packaged into a 
- * single source file.
- * <p>
- * For more information on Ant Tasks for iPlanet Application Server, see the 
- * <code>IPlanetDeploymentTool</code> and <code>IPlanetEjbcTask</code> classes.
- *
- * @see    IPlanetDeploymentTool
- * @see    IPlanetEjbcTask
- * @author Greg Nelson <a href="mailto:greg@netscape.com">greg@netscape.com</a>
- */
-public class IPlanetEjbc {
-
-	/* Constants used for the "beantype" attribute */
-	private static final String ENTITY_BEAN       = "entity";
-	private static final String STATELESS_SESSION = "stateless";
-	private static final String STATEFUL_SESSION  = "stateful";
-
-	/* Filenames of the standard EJB descriptor and the iAS-specific descriptor */
-	private File        stdDescriptor;
-	private File        iasDescriptor;
-
-	/* 
-	 * Directory where "source" EJB files are stored and where stubs and
-	 * skeletons will also be written.
-	 */
-	private File        destDirectory;
-
-	/* Classpath used when the iAS ejbc is called */
-	private String      classpath;
-	private String[]    classpathElements;
-
-	/* Options passed to the iAS ejbc */
-	private boolean     retainSource = false;
-	private boolean     debugOutput  = false;
-
-	/* iAS installation directory (used if ejbc isn't on user's PATH) */
-	private File        iasHomeDir;
-
-	/* Parser and handler used to process both EJB descriptor files */
-	private SAXParser   parser;
-	private EjbcHandler handler = new EjbcHandler();
-
-	/*
-	 * This Hashtable maintains a list of EJB class files processed by the ejbc
-	 * utility (both "source" class files as well as stubs and skeletons). The
-	 * key for the Hashtable is a String representing the path to the class file
-	 * (relative to the destination directory).  The value for the Hashtable is
-	 * a File object which reference the actual class file.
-	 */
-	private Hashtable   ejbFiles     = new Hashtable();
-
-	/* Value of the display-name element read from the standard EJB descriptor */
-	private String      displayName;
-
-	/**
-	 * Constructs an instance which may be used to process EJB descriptors and
-	 * generate EJB stubs and skeletons, if needed.
-	 *
-	 * @param stdDescriptor File referencing a standard EJB descriptor.
-	 * @param iasDescriptor File referencing an iAS-specific EJB descriptor.
-	 * @param destDirectory File referencing the base directory where both
-	 *                      EJB "source" files are found and where stubs and
-	 *                      skeletons will be written.
-	 * @param classpath     String representation of the classpath to be used
-	 *                      by the iAS ejbc utility.
-	 * @param parser        SAXParser to be used to process both of the EJB
-	 *                      descriptors.
-	 */
-	public IPlanetEjbc(File stdDescriptor,
-					   File iasDescriptor,
-					   File destDirectory,
-					   String classpath,
-					   SAXParser parser) {
-		this.stdDescriptor = stdDescriptor;
-		this.iasDescriptor      = iasDescriptor;
-		this.destDirectory      = destDirectory;
-		this.classpath          = classpath;
-		this.parser             = parser;
-
-		/*
-		 * Parse the classpath into it's individual elements and store the
-		 * results in the "classpathElements" instance variable.
-		 */
-		List elements = new ArrayList();
-		if (classpath != null) {
-			StringTokenizer st = new StringTokenizer(classpath, 
-														File.pathSeparator);
-			while (st.hasMoreTokens()) {
-				elements.add(st.nextToken());
-			}
-			classpathElements 
-					= (String[])elements.toArray(new String[elements.size()]);
-		}
-	}
-
-    /**
-     * Sets whether or not the Java source files which are generated by the 
-	 * ejbc process should be retained or automatically deleted.
-	 *
-	 * @param retainsource A boolean indicating if the Java source files for
-	 *                     the stubs and skeletons should be retained.
-     */
-	public void setRetainSource(boolean retainSource) {
-		this.retainSource = retainSource;
-	}
-
-    /**
-     * Sets whether or not debugging output will be generated when ejbc is
-	 * executed.
-	 *
-	 * @param debugOutput A boolean indicating if debugging output should be 
-	 *                    generated
-     */
-	public void setDebugOutput(boolean debugOutput) {
-		this.debugOutput = debugOutput;
-	}
-
-    /**
-     * Registers the location of a local DTD file or resource.  By registering
-	 * a local DTD, EJB descriptors can be parsed even when the remote servers
-	 * which contain the "public" DTDs cannot be accessed.
-     *
-     * @param publicID The public DTD identifier found in an XML document.
-	 * @param location The file or resource name for the appropriate DTD stored
-	 *                 on the local machine.
-     */
-	public void registerDTD(String publicID, String location) {
-		handler.registerDTD(publicID, location);
-	}
-
-    /**
-     * Setter method used to store the "home" directory of the user's iAS
-	 * installation.  The directory specified should typically be
-	 * <code>[install-location]/iplanet/ias6/ias</code>.
-	 *
-     * @param iashome The home directory for the user's iAS installation.
-     */
-	public void setIasHomeDir(File iasHomeDir) {
-		this.iasHomeDir = iasHomeDir;
-	}
-
-	/**
-	 * Returns a Hashtable which contains a list of EJB class files processed by
-	 * the ejbc utility (both "source" class files as well as stubs and 
-	 * skeletons). The key for the Hashtable is a String representing the path 
-	 * to the class file (relative to the destination directory).  The value for
-	 * the Hashtable is a File object which reference the actual class file.
-	 *
-	 * @return The list of EJB files processed by the ejbc utility.
-	 */
-	public Hashtable getEjbFiles() {
-		return ejbFiles;
-	}
-
-	/**
-	 * Returns the display-name element read from the standard EJB descriptor.
-	 *
-	 * @return The EJB-JAR display name.
-	 */
-	public String getDisplayName() {
-		return displayName;
-	}
-
-	/**
-	 * Returns the list of CMP descriptors referenced in the EJB descriptors.
-	 *
-	 * @return An array of CMP descriptors.
-	 */
-	public String[] getCmpDescriptors() {
-		List returnList = new ArrayList();
-
-		EjbInfo[] ejbs = handler.getEjbs();
-
-		for (int i = 0; i < ejbs.length ; i++) {
-			List descriptors = (List) ejbs[i].getCmpDescriptors();
-			returnList.addAll(descriptors);
-		}
-
-		return (String[]) returnList.toArray(new String[returnList.size()]);
-	}
-
-	/**
-	 * Main application method for the iPlanet Application Server ejbc utility.
-	 * If the application is run with no commandline arguments, a usage
-	 * statement is printed for the user.
-	 *
-	 * @param args The commandline arguments passed to the application.
-	 */
-	public static void main(String[] args) {
-		File        stdDescriptor;
-		File        iasDescriptor;
-		File        destDirectory = null;
-		String      classpath     = null;
-		SAXParser   parser		  = null;
-		boolean     debug         = false;
-		boolean     retainSource  = false;
-		IPlanetEjbc ejbc;
-		
-		if ((args.length < 2) || (args.length > 8)) {
-			usage();
-			return;
-		}
-
-		stdDescriptor = new File(args[args.length - 2]);
-		iasDescriptor = new File(args[args.length - 1]);
-
-		for (int i = 0; i < args.length - 2; i++) {
-			if (args[i].equals("-classpath")) {
-				classpath = args[++i];
-			} else if (args[i].equals("-d")) {
-				destDirectory = new File(args[++i]);
-			} else if (args[i].equals("-debug")) {
-				debug = true;
-			} else if (args[i].equals("-keepsource")) {
-				retainSource = true;
-			} else {
-				usage();
-				return;
-			}
-		}
-
-		/* If the -classpath flag isn't specified, use the system classpath */
-		if (classpath == null) {
-			Properties props = System.getProperties();
-			classpath = props.getProperty("java.class.path");
-		}
-
-		/* 
-		 * If the -d flag isn't specified, use the working directory as the 
-		 * destination directory
-		 */
-		if (destDirectory == null) {
-			Properties props = System.getProperties();
-			destDirectory = new File(props.getProperty("user.dir"));
-		}
-
-		/* Construct a SAXParser used to process the descriptors */
-		SAXParserFactory parserFactory = SAXParserFactory.newInstance();
-		parserFactory.setValidating(true);
-		try {
-			parser = parserFactory.newSAXParser();
-		} catch (Exception e) {
-			// SAXException or ParserConfigurationException may be thrown
-			System.out.println("An exception was generated while trying to ");
-			System.out.println("create a new SAXParser.");
-			e.printStackTrace();
-			return;
-		}
-
-		/* Build and populate an instance of the ejbc utility */
-		ejbc = new IPlanetEjbc(stdDescriptor, iasDescriptor, destDirectory,
-								classpath, parser);
-		ejbc.setDebugOutput(debug);
-		ejbc.setRetainSource(retainSource);
-
-		/* Execute the ejbc utility -- stubs/skeletons are rebuilt, if needed */
-		try {
-			ejbc.execute();
-		} catch (IOException e) {
-			System.out.println("An IOException has occurred while reading the "
-					+ "XML descriptors (" + e.getMessage() + ").");
-			return;
-		} catch (SAXException e) {
-			System.out.println("A SAXException has occurred while reading the "
-					+ "XML descriptors (" + e.getMessage() + ").");
-			return;
-		} catch (IPlanetEjbc.EjbcException e) {
-			System.out.println("An error has occurred while executing the ejbc "
-					+ "utility (" + e.getMessage() + ").");
-			return;
-		}
-	}
-
-	/**
-	 * Print a usage statement.
-	 */
-	private static void usage() {
-		System.out.println("java org.apache.tools.ant.taskdefs.optional.ejb.IPlanetEjbc \\");
-		System.out.println("  [OPTIONS] [EJB 1.1 descriptor] [iAS EJB descriptor]");
-		System.out.println("");
-		System.out.println("Where OPTIONS are:");
-		System.out.println("  -debug -- for additional debugging output");
-		System.out.println("  -keepsource -- to retain Java source files generated");
-		System.out.println("  -classpath [classpath] -- classpath used for compilation");
-		System.out.println("  -d [destination directory] -- directory for compiled classes");
-		System.out.println("");
-		System.out.println("If a classpath is not specified, the system classpath");
-		System.out.println("will be used.  If a destination directory is not specified,");
-		System.out.println("the current working directory will be used (classes will");
-		System.out.println("still be placed in subfolders which correspond to their");
-		System.out.println("package name).");
-		System.out.println("");
-		System.out.println("The EJB home interface, remote interface, and implementation");
-		System.out.println("class must be found in the destination directory.  In");
-		System.out.println("addition, the destination will look for the stubs and skeletons");
-		System.out.println("in the destination directory to ensure they are up to date.");
-	}
-
-	/**
-     * Compiles the stub and skeletons for the specified EJBs, if they need to 
-	 * be updated.
-	 *
-	 * @throws EjbcException If the ejbc utility cannot be correctly configured
-	 *                       or if one or more of the EJB "source" classes
-	 *                       cannot be found in the destination directory
-     * @throws IOException   If the parser encounters a problem reading the XML
-	 *                       file 
-	 * @throws SAXException  If the parser encounters a problem processing the
-	 *                       XML descriptor (it may wrap another exception)
-     */
-	public void execute() throws EjbcException, IOException, SAXException {
-
-		checkConfiguration();	// Throws EjbcException if unsuccessful
-
-		EjbInfo[] ejbs = getEjbs();	// Returns list of EJBs for processing
-
-		for (int i = 0; i < ejbs.length ; i++) {
-			log("EJBInfo...");
-			log(ejbs[i].toString());
-		}
-		
-		for (int i=0; i < ejbs.length; i++) {
-			EjbInfo ejb = ejbs[i];
-
-			ejb.checkConfiguration(destDirectory);  // Throws EjbcException
-
-			if (ejb.mustBeRecompiled(destDirectory)) {
-				log(ejb.getName() + " must be recompiled using ejbc.");
-
-				String[] arguments = buildArgumentList(ejb);
-				callEjbc(arguments);
-
-			} else {
-				log(ejb.getName() + " is up to date.");
-			}
-		}
-	}
-
-	/**
-     * Executes the iPlanet Application Server ejbc command-line utility.
-	 *
-	 * @param arguments Command line arguments to be passed to the ejbc utility.
-     */
-	private void callEjbc(String[] arguments) {
-		
-		/* Concatenate all of the command line arguments into a single String */
-		StringBuffer args = new StringBuffer();
-		for (int i = 0; i < arguments.length; i++) {
-			args.append(arguments[i]).append(" ");
-		}
-
-		/* If an iAS home directory is specified, prepend it to the commmand */
-		String command;
-		if (iasHomeDir == null) {
-			command = "";
-		} else {
-			command = iasHomeDir.toString() + File.separator + "bin" 
-														+ File.separator;
-		}
-		command += "ejbc ";
-		
-		log(command + args);
-
-		/* 
-		 * Use the Runtime object to execute an external command.  Use the
-		 * RedirectOutput inner class to direct the standard and error output
-		 * from the command to the JRE's standard output
-		 */
-		try {
-			Process p = Runtime.getRuntime().exec(command + args);
-			RedirectOutput output = new RedirectOutput(p.getInputStream());
-			RedirectOutput error  = new RedirectOutput(p.getErrorStream());
-			output.start();
-			error.start();
-			p.waitFor();  
-			p.destroy();
-		} catch (IOException e) {
-			log("An IOException has occurred while trying to execute ejbc.");
-			e.printStackTrace();
-		} catch (InterruptedException e) {
-			// Do nothing
-		}
-	}
-
-    /**
-     * Verifies that the user selections are valid.
-	 *
-	 * @throws EjbcException If the user selections are invalid.
-     */
-	protected void checkConfiguration() throws EjbcException {		
-
-		String msg = "";
-
-		if (stdDescriptor == null) {
-			msg += "A standard XML descriptor file must be specified.  ";
-		}
-		if (iasDescriptor == null) {
-			msg += "An iAS-specific XML descriptor file must be specified.  ";
-		}
-		if (classpath == null) {
-			msg += "A classpath must be specified.    ";
-		}
-		if (parser == null) {
-			msg += "An XML parser must be specified.    ";
-		}
-
-		if (destDirectory == null) {
-			msg += "A destination directory must be specified.  ";
-		} else if (!destDirectory.exists()) {
-			msg += "The destination directory specified does not exist.  ";
-		} else if (!destDirectory.isDirectory()) {
-			msg += "The destination specified is not a directory.  ";
-		}
-
-		if (msg.length() > 0) {
-			throw new EjbcException(msg);
-		}
-	}
-
-    /**
-     * Parses the EJB descriptors and returns a list of EJBs which may need to
-	 * be compiled.
-	 * 
-	 * @return               An array of objects which describe the EJBs to be 
-	 *                       processed.
-     * @throws IOException   If the parser encounters a problem reading the XML
-	 *                       files
-	 * @throws SAXException  If the parser encounters a problem processing the
-	 *                       XML descriptor (it may wrap another exception)
-	 */
-	private EjbInfo[] getEjbs() throws IOException, SAXException {
-		EjbInfo[] ejbs = null;
-
-		/*
-		 * The EJB information is gathered from the standard XML EJB descriptor
-		 * and the iAS-specific XML EJB descriptor using a SAX parser.
-		 */
-
-		parser.parse(stdDescriptor, handler);
-		parser.parse(iasDescriptor, handler);
-		ejbs = handler.getEjbs();
-
-		return ejbs;
-	}
-
-    /**
-     * Based on this object's instance variables as well as the EJB to be
-	 * processed, the correct flags and parameters are set for the ejbc 
-	 * command-line utility.
-	 * @param ejb The EJB for which stubs and skeletons will be compiled.
-	 * @return    An array of Strings which are the command-line parameters for
-	 *            for the ejbc utility.
-	 */
-    private String[] buildArgumentList(EjbInfo ejb) {
-
-		List arguments = new ArrayList();
-
-		/* OPTIONAL COMMAND LINE PARAMETERS */
-
-		if (debugOutput) {
-			arguments.add("-debug"); 
-		}
-
-		/* No beantype flag is needed for an entity bean */
-		if (ejb.getBeantype().equals(STATELESS_SESSION)) {
-			arguments.add("-sl");
-		} else if (ejb.getBeantype().equals(STATEFUL_SESSION)) {
-			arguments.add("-sf");
-		}
-
-		if (ejb.getIiop()) {
-			arguments.add("-iiop");
-		}
-
-		if (ejb.getCmp()) {
-			arguments.add("-cmp");
-		}
-
-		if (retainSource) {
-			arguments.add("-gs");
-		}
-
-		if (ejb.getHasession()) {
-			arguments.add("-fo");
-		}
-
-		/* REQUIRED COMMAND LINE PARAMETERS */
-
-		arguments.add("-classpath");
-		arguments.add(classpath);
-
-		arguments.add("-d");
-		arguments.add(destDirectory.toString());
-
-		arguments.add(ejb.getHome().getQualifiedClassName());
-		arguments.add(ejb.getRemote().getQualifiedClassName());
-		arguments.add(ejb.getImplementation().getQualifiedClassName());
-
-		/* Convert the List into an Array and return it */
-		return (String[])arguments.toArray(new String[arguments.size()]);
-	}
-
-    /**
-     * Convenience method used to print messages to the user if debugging
-	 * messages are enabled.
-	 *
-	 * @param msg The String to print to standard output.
-	 */
-	private void log(String msg) {
-		if (debugOutput) {
-			System.out.println(msg);
-		}
-	}
-
-
-	/* Inner classes follow */
-
-
-	/**
-	 * This inner class is used to signal any problems during the execution of
-	 * the ejbc compiler.
-	 *
-	 * @author Greg Nelson 
-	 *         <a href="mailto:greg@netscape.com">greg@netscape.com</a>
-	 */
-	public class EjbcException extends Exception {
-
-		/**
-		 * Constructs an exception with the given descriptive message.
-		 *
-		 * @param msg Description of the exception which has occurred.
-		 */
-		public EjbcException(String msg) {
-			super(msg);
-		}
-	}  // End of EjbcException inner class
-
-
-	/**
-	 * This inner class is an XML document handler that can be used to parse EJB
-	 * descriptors (both the standard EJB descriptor as well as the iAS-specific
-	 * descriptor that stores additional values for iAS).  Once the descriptors 
-	 * have been processed, the list of EJBs found can be obtained by calling 
-	 * the <code>getEjbs()</code> method.
-	 *
-	 * @see    EjbInfo
-	 * @author Greg Nelson 
-	 *         <a href="mailto:greg@netscape.com">greg@netscape.com</a>
-	 */
-    private class EjbcHandler extends HandlerBase {
-
-		/* 
-		 * Two Maps are used to track local DTDs that will be used in case the
-		 * remote copies of these DTDs cannot be accessed.  The key for the Map
-		 * is the DTDs public ID and the value is the local location for the DTD
-		 */
-		private Map       resourceDtds = new HashMap();
-		private Map       fileDtds = new HashMap();
-
-        private Map       ejbs = new HashMap();	  // List of EJBs found in XML
-        private EjbInfo   currentEjb;			  // One item within the Map
-        private boolean   iasDescriptor = false;  // Is doc iAS or EJB descriptor
-
-        private String    currentLoc = "";		  // Tracks current element
-		private String    currentText;            // Tracks current text data
-        private String    ejbType;				  // "session" or "entity"
-
-		/**
-		 * Constructs a new instance of the handler and registers local copies
-		 * of the standard EJB 1.1 descriptor DTD as well as iAS's EJB
-		 * descriptor DTD.
-		 */
-		public EjbcHandler() {
-			final String PUBLICID_EJB11 =
-				"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN";
-			final String PUBLICID_IPLANET_EJB_60 =
-				"-//Sun Microsystems, Inc.//DTD iAS Enterprise JavaBeans 1.0//EN";
-
-			
-			final String DEFAULT_IAS60_EJB11_DTD_LOCATION = 
-				"ejb-jar_1_1.dtd";
-			final String DEFAULT_IAS60_DTD_LOCATION = 
-				"IASEjb_jar_1_0.dtd";
-
-			registerDTD(PUBLICID_EJB11, DEFAULT_IAS60_EJB11_DTD_LOCATION);
-			registerDTD(PUBLICID_IPLANET_EJB_60, DEFAULT_IAS60_DTD_LOCATION);
-		}
-
-		/**
-		 * Returns the list of EJB objects found during the processing of the 
-		 * standard EJB 1.1 descriptor and iAS-specific EJB descriptor.
-		 *
-		 * @return An array of EJBs which were found during the descriptor
-		 *         parsing.
-		 */
-		public EjbInfo[] getEjbs() {
-			return (EjbInfo[])ejbs.values().toArray(new EjbInfo[ejbs.size()]);
-		}
-
-		/**
-		 * Returns the value of the display-name element found in the standard
-		 * EJB 1.1 descriptor.
-		 *
-		 * @return String display-name value.
-		 */
-		public String getDisplayName() {
-			return displayName;
-		}
-
-		/**
-		 * Registers a local DTD that will be used when parsing an EJB 
-		 * descriptor.  When the DTD's public identifier is found in an XML
-		 * document, the parser will reference the local DTD rather than the
-		 * remote DTD.  This enables XML documents to be processed even when the
-		 * public DTD isn't available.
-		 *
-		 * @param publicID The DTD's public identifier.
-		 * @param location The location of the local DTD copy -- the location
-		 *                 may either be a resource found on the classpath or a
-		 *                 local file.
-		 */
-		public void registerDTD(String publicID, String location) {
-			log("Registering: " + location);
-			if ((publicID == null) || (location == null)) {
-				return;
-			}
-
-			if (ClassLoader.getSystemResource(location) != null) {
-				log("Found resource: " + location);
-				resourceDtds.put(publicID, location);
-			} else {
-				File dtdFile = new File(location);
-				if (dtdFile.exists() && dtdFile.isFile()) {
-					log("Found file: " + location);
-					fileDtds.put(publicID, location);
-				}
-			}
-		}
-
-		/**
-		 * Resolves an external entity found during XML processing.  If a public
-		 * ID is found that has been registered with the handler, an <code>
-		 * InputSource</code> will be returned which refers to the local copy.
-		 * If the public ID hasn't been registered or if an error occurs, the
-		 * superclass implementation is used.
-		 *
-		 * @param publicId The DTD's public identifier.
-		 * @param systemId The location of the DTD, as found in the XML document.
-		 */
-		public InputSource resolveEntity(String publicId, String systemId)
-				throws SAXException {
-			InputStream inputStream = null;
-
-
-			try {
-
-				/* Search the resource Map and (if not found) file Map */
-
-				String location = (String)resourceDtds.get(publicId);
-				if (location != null) {
-					inputStream 
-						= ClassLoader.getSystemResource(location).openStream();
-				} else {
-					location = (String)fileDtds.get(publicId);
-					if (location != null) {
-						inputStream = new FileInputStream(location);
-					}
-				}
-			} catch (IOException e) {
-				return super.resolveEntity(publicId, systemId);
-			}
-
-			if (inputStream == null) {
-				return super.resolveEntity(publicId, systemId);
-			} else {
-				return new InputSource(inputStream);
-			}
-		}
-
-		/**
-		 * Receive notification that the start of an XML element has been found.
-		 *
-		 * @param name String name of the element found.
-		 * @param atts AttributeList of the attributes included with the element
-		 *             (if any).
-		 * @throws SAXException If the parser cannot process the document.
-		 */
-        public void startElement(String name, AttributeList atts) 
-                throws SAXException {
-
-			/*
-			 * I need to "push" the element onto the String (currentLoc) which 
-			 * always represents the current location in the XML document.
-			 */
-			currentLoc += "\\" + name;
-
-			/* A new element has started, so reset the text being captured */
-			currentText = "";
-
-            if (currentLoc.equals("\\ejb-jar")) {
-                iasDescriptor = false;
-            } else if (currentLoc.equals("\\ias-ejb-jar")) {
-                iasDescriptor = true;
-            }
-
-            if ((name.equals("session")) || (name.equals("entity"))) {
-                ejbType = name;
-            }
-        }    
-
-		/**
-		 * Receive notification that character data has been found in the XML
-		 * document
-		 *
-		 * @param ch Array of characters which have been found in the document.
-		 * @param start Starting index of the data found in the document.
-		 * @param len The number of characters found in the document.
-		 * @throws SAXException If the parser cannot process the document.
-		 */
-        public void characters(char[] ch, int start, int len) 
-				throws SAXException {
-
-            currentText += new String(ch).substring(start, start + len);
-        }
-
-		/**
-		 * Receive notification that the end of an XML element has been found.
-		 *
-		 * @param name String name of the element.
-		 * @throws SAXException If the parser cannot process the document.
-		 */
-        public void endElement(String name) throws SAXException {
-			
-			/*
-			 * If this is a standard EJB 1.1 descriptor, we are looking for one
-			 * set of data, while if this is an iAS-specific descriptor, we're
-			 * looking for different set of data.  Hand the processing off to
-			 * the appropriate method.
-			 */
-            if (iasDescriptor) {
-                iasCharacters(currentText);
-            } else {
-                stdCharacters(currentText);
-            }
-
-			/*
-			 * I need to "pop" the element off the String (currentLoc) which 
-			 * always represents my current location in the XML document.
-			 */
-
-            int nameLength = name.length() + 1; // Add one for the "\"
-            int locLength  = currentLoc.length();
-
-            currentLoc = currentLoc.substring(0, locLength - nameLength);
-        }
-
-		/**
-		 * Receive notification that character data has been found in a standard
-		 * EJB 1.1 descriptor.  We're interested in retrieving the home 
-		 * interface, remote interface, implementation class, the type of bean,
-		 * and if the bean uses CMP.
-		 *
-		 * @param value String data found in the XML document.
-		 */
-        private void stdCharacters(String value) {
-
-			if (currentLoc.equals("\\ejb-jar\\display-name")) {
-				displayName = value;
-				return;
-			}
-
-            String base = "\\ejb-jar\\enterprise-beans\\" + ejbType;
-
-            if (currentLoc.equals(base + "\\ejb-name")) {
-                currentEjb = (EjbInfo) ejbs.get(value);
-                if (currentEjb == null) {
-                    currentEjb = new EjbInfo(value);
-                    ejbs.put(value, currentEjb);
-                }
-            } else if (currentLoc.equals(base + "\\home")) {
-                currentEjb.setHome(value);
-            } else if (currentLoc.equals(base + "\\remote")) {
-                currentEjb.setRemote(value);
-            } else if (currentLoc.equals(base + "\\ejb-class")) {
-                currentEjb.setImplementation(value);
-            } else if (currentLoc.equals(base + "\\session-type")) {
-                currentEjb.setBeantype(value);
-            } else if (currentLoc.equals(base + "\\persistence-type")) {
-                currentEjb.setCmp(value);
-            }
-        }
-
-		/**
-		 * Receive notification that character data has been found in an
-		 * iAS-specific descriptor.  We're interested in retrieving data 
-		 * indicating whether the bean must support RMI/IIOP access, whether
-		 * the bean must provide highly available stubs and skeletons (in the
-		 * case of stateful session beans), and if this bean uses additional
-		 * CMP XML descriptors (in the case of entity beans with CMP).
-		 * 
-		 * @param value String data found in the XML document.
-		 */
-        private void iasCharacters(String value) {
-            String base = "\\ias-ejb-jar\\enterprise-beans\\" + ejbType;
-
-            if (currentLoc.equals(base + "\\ejb-name")) {
-                currentEjb = (EjbInfo) ejbs.get(value);
-                if (currentEjb == null) {
-                    currentEjb = new EjbInfo(value);
-                    ejbs.put(value, currentEjb);
-                }
-            } else if (currentLoc.equals(base + "\\iiop")) {
-                currentEjb.setIiop(value);
-            } else if (currentLoc.equals(base + "\\failover-required")) {
-                currentEjb.setHasession(value);
-            } else if (currentLoc.equals(base + "\\persistence-manager"
-											  + "\\properties-file-location")) {
-				currentEjb.addCmpDescriptor(value);
-			}
-        }
-    }  // End of EjbcHandler inner class
-
-
-	/**
-	 * This inner class represents an EJB that will be compiled using ejbc.
-	 *
-	 * @author Greg Nelson 
-	 *         <a href="mailto:greg@netscape.com">greg@netscape.com</a>
-	 */
-    private class EjbInfo {
-        private String     name;			  // EJB's display name
-        private Classname  home;			  // EJB's home interface name
-        private Classname  remote;			  // EJB's remote interface name
-        private Classname  implementation;	  // EJB's implementation class
-        private String  beantype = "entity";  // or "stateful" or "stateless"
-        private boolean cmp       = false;	  // Does this EJB support CMP?
-        private boolean iiop      = false;	  // Does this EJB support IIOP?
-        private boolean hasession = false;	  // Does this EJB require failover?
-		private List cmpDescriptors = new ArrayList();  // CMP descriptor list
-            
-		/**
-		 * Construct a new EJBInfo object with the given name.
-		 *
-		 * @param name The display name for the EJB.
-		 */
-		public EjbInfo(String name) {
-            this.name = name;
-        }
-
-		/**
-		 * Returns the display name of the EJB.  If a display name has not been
-		 * set, it returns the EJB implementation classname (if the
-		 * implementation class is not set, it returns "[unnamed]").
-		 *
-		 * @return The display name for the EJB.
-		 */
-        public String getName() {
-			if (name == null) {
-				if (implementation == null) {
-					return "[unnamed]";
-				} else {
-					return implementation.getClassName();
-				}
-			}
-            return name;
-        }
-
-		/*
-		 * Below are getter's and setter's for each of the instance variables.
-		 * Note that (in addition to supporting setters with the same type as
-		 * the instance variable) a setter is provided with takes a String
-		 * argument -- this are provided so the XML document handler can set
-		 * the EJB values using the Strings it parses.
-		 */
-
-        public void setHome(String home) {
-            setHome(new Classname(home));
-        }
-
-		public void setHome(Classname home) {
-			this.home = home;
-		}
-
-        public Classname getHome() {
-            return home;
-        }
-
-        public void setRemote(String remote) {
-            setRemote(new Classname(remote));
-        }
-
-		public void setRemote(Classname remote) {
-			this.remote = remote;
-		}
-
-        public Classname getRemote() {
-            return remote;
-        }
-
-        public void setImplementation(String implementation) {
-            setImplementation(new Classname(implementation));
-        }
-
-		public void setImplementation(Classname implementation) {
-			this.implementation = implementation;
-		}
-
-        public Classname getImplementation() {
-            return implementation;
-        }
-
-        public void setBeantype(String beantype) {
-            this.beantype = beantype.toLowerCase();
-        }
-
-        public String getBeantype() {
-            return beantype;
-        }
-
-        public void setCmp(boolean cmp) {
-            this.cmp = cmp;
-        }
-
-        public void setCmp(String cmp) {
-            setCmp(cmp.equals("Container"));
-        }
-
-        public boolean getCmp() {
-            return cmp;
-        }
-
-        public void setIiop(boolean iiop) {
-            this.iiop = iiop;
-        }
-
-        public void setIiop(String iiop) {
-            setIiop(iiop.equals("true"));
-        }
-
-        public boolean getIiop() {
-            return iiop;
-        }
-
-        public void setHasession(boolean hasession) {
-            this.hasession = hasession;
-        }
-
-        public void setHasession(String hasession) {
-            setHasession(hasession.equals("true"));
-        }
-
-        public boolean getHasession() {
-            return hasession;
-        }
-
-		public void addCmpDescriptor(String descriptor) {
-			cmpDescriptors.add(descriptor);
-		}
-
-		public List getCmpDescriptors() {
-			return cmpDescriptors;
-		}
-
-		/**
-		 * Verifies that the EJB is valid--if it is invalid, an exception is
-		 * thrown
-		 *
-		 * 
-		 * @param buildDir The directory where the EJB remote interface, home
-		 *                 interface, and implementation class must be found.
-		 * @throws EjbcException If the EJB is invalid.
-		 */
-		private void checkConfiguration(File buildDir) throws EjbcException  {
-
-			/* Check that the specified instance variables are valid */
-			if (home == null) {
-				throw new EjbcException("A home interface was not found "
-							+ "for the " + name + " EJB.");
-			}
-			if (remote == null) {
-				throw new EjbcException("A remote interface was not found "
-							+ "for the " + name + " EJB.");
-			}
-			if (implementation == null) {
-				throw new EjbcException("An EJB implementation class was not "
-							+ "found for the " + name + " EJB.");
-			}
-
-			if ((!beantype.equals(ENTITY_BEAN)) 
-						&& (!beantype.equals(STATELESS_SESSION)) 
-						&& (!beantype.equals(STATEFUL_SESSION))) {
-				throw new EjbcException("The beantype found (" + beantype + ") "
-							+ "isn't valid in the " + name + " EJB.");
-			}
-
-			if (cmp && (!beantype.equals(ENTITY_BEAN))) {
-				System.out.println("CMP stubs and skeletons may not be generated"
-					+ " for a Session Bean -- the \"cmp\" attribute will be"
-					+ " ignoredfor the " + name + " EJB.");
-			}
-
-			if (hasession && (!beantype.equals(STATEFUL_SESSION))) {
-				System.out.println("Highly available stubs and skeletons may "
-					+ "only be generated for a Stateful Session Bean -- the "
-					+ "\"hasession\" attribute will be ignored for the " 
-					+ name + " EJB.");
-			}
-
-			/* Check that the EJB "source" classes all exist */
-			if (!remote.getClassFile(buildDir).exists()) {
-				throw new EjbcException("The remote interface "
-							+ remote.getQualifiedClassName() + " could not be "
-							+ "found.");
-			}
-			if (!home.getClassFile(buildDir).exists()) {
-				throw new EjbcException("The home interface "
-							+ home.getQualifiedClassName() + " could not be "
-							+ "found.");
-			}
-			if (!implementation.getClassFile(buildDir).exists()) {
-				throw new EjbcException("The EJB implementation class "
-							+ implementation.getQualifiedClassName() + " could "
-							+ "not be found.");
-			}
-		}
-
-		/**
-		 * Determines if the ejbc utility needs to be run or not.  If the stubs 
-		 * and skeletons can all be found in the destination directory AND all 
-		 * of their timestamps are more recent than the EJB source classes 
-		 * (home, remote, and implementation classes), the method returns 
-		 * <code>false</code>.  Otherwise, the method returns <code>true</code>.
-		 *
-		 * @param destDir The directory where the EJB source classes, stubs and 
-		 *                skeletons are located.
-		 * @return A boolean indicating whether or not the ejbc utility needs to
-		 *         be run to bring the stubs and skeletons up to date.
-		 */
-		public boolean mustBeRecompiled(File destDir) {
-
-			long sourceModified = sourceClassesModified(destDir);
-
-			long destModified = destClassesModified(destDir);
-
-			return (destModified < sourceModified);
-		}
-
-		/**
-		 * Examines each of the EJB source classes (home, remote, and 
-		 * implementation) and returns the modification timestamp for the 
-		 * "oldest" class.
-		 *
-		 * @param classpath The classpath to be used to find the source EJB
-		 *                  classes.  If <code>null</code>, the system classpath
-		 *                  is used.
-		 * @return The modification timestamp for the "oldest" EJB source class.
-		 * @throws BuildException If one of the EJB source classes cannot be
-		 *                        found on the classpath.
-		 */
-		private long sourceClassesModified(File buildDir) {
-			long latestModified; // The timestamp of the "newest" class
-			long modified;       // Timestamp for a given class
-			File remoteFile;     // File for the remote interface class
-			File homeFile;       // File for the home interface class
-			File implFile;       // File for the EJB implementation class
-
-			/* Check the timestamp on the remote interface */
-			remoteFile = remote.getClassFile(buildDir);
-			modified = remoteFile.lastModified();
-			if (modified == -1) {
-				System.out.println("The class " 
-								+ remote.getQualifiedClassName() + " couldn't "
-								+ "be found on the classpath");
-				return -1;
-			}
-			latestModified = modified;
-			
-			/* Check the timestamp on the home interface */
-			homeFile = home.getClassFile(buildDir);
-			modified = homeFile.lastModified();
-			if (modified == -1) {
-				System.out.println("The class " 
-								+ home.getQualifiedClassName() + " couldn't be "
-								+ "found on the classpath");
-				return -1;
-			}
-			latestModified = Math.max(latestModified, modified);
-			
-			/* Check the timestamp on the EJB implementation class.
-			 *
-			 * Note that if ONLY the implementation class has changed, it's not
-			 * necessary to rebuild the EJB stubs and skeletons.  For this
-			 * reason, we ensure the file exists (using lastModified above), but
-			 * we DON'T compare it's timestamp with the timestamps of the home
-			 * and remote interfaces (because it's irrelevant in determining if
-			 * ejbc must be run)
-			 */
-			implFile = implementation.getClassFile(buildDir);
-			modified = implFile.lastModified();
-			if (modified == -1) {
-				System.out.println("The class " 
-								+ implementation.getQualifiedClassName() 
-								+ " couldn't be found on the classpath");
-				return -1;
-			}
-
-			String pathToFile = remote.getQualifiedClassName();
-			pathToFile = pathToFile.replace('.', File.separatorChar) + ".class";
-			ejbFiles.put(pathToFile, remoteFile);
-
-			pathToFile = home.getQualifiedClassName();
-			pathToFile = pathToFile.replace('.', File.separatorChar) + ".class";
-			ejbFiles.put(pathToFile, homeFile);
-
-			pathToFile = implementation.getQualifiedClassName();
-			pathToFile = pathToFile.replace('.', File.separatorChar) + ".class";
-			ejbFiles.put(pathToFile, implFile);
-			
-			return latestModified;
-		}
-
-		/**
-		 * Examines each of the EJB stubs and skeletons in the destination
-		 * directory and returns the modification timestamp for the "oldest" 
-		 * class. If one of the stubs or skeletons cannot be found, <code>-1
-		 * </code> is returned.
-		 *
-		 * @param dest The directory in which the EJB stubs and skeletons are
-		 *             stored.
-		 * @return The modification timestamp for the "oldest" EJB stub or
-		 *         skeleton.  If one of the classes cannot be found, <code>-1
-		 *         </code> is returned.  
-		 * @throws BuildException If the canonical path of the destination
-		 *                        directory cannot be found.
-		 */
-		private long destClassesModified(File destDir) {
-			String[] classnames = classesToGenerate(); // List of all stubs & skels
-			long destClassesModified = new Date().getTime(); // Earliest mod time
-			boolean allClassesFound  = true;           // Has each been found?
-
-			/*
-			 * Loop through each stub/skeleton class that must be generated, and
-			 * determine (if all exist) which file has the most recent timestamp
-			 */
-			for (int i=0; i < classnames.length; i++) {
-
-				String pathToClass = 
-						classnames[i].replace('.', File.separatorChar) + ".class";
-				File classFile = new File(destDir, pathToClass);
-
-				/* 
-				 * Add each stub/skeleton class to the list of EJB files.  Note
-				 * that each class is added even if it doesn't exist now.
-				 */
-				ejbFiles.put(pathToClass, classFile);
-
-				allClassesFound = allClassesFound && classFile.exists();
-
-				if (allClassesFound) {
-					long fileMod = classFile.lastModified();
-
-					/* Keep track of the oldest modification timestamp */
-					destClassesModified = Math.min(destClassesModified, fileMod);
-				}
-			}
-
-			return (allClassesFound) ? destClassesModified : -1;
-		}
-
-		/**
-		 * Builds an array of class names which represent the stubs and 
-		 * skeletons which need to be generated for a given EJB.  The class 
-		 * names are fully qualified.  Nine classes are generated for all EJBs 
-		 * while an additional six classes are generated for beans requiring 
-		 * RMI/IIOP access.
-		 *
-		 * @return An array of Strings representing the fully-qualified class 
-		 *         names for the stubs and skeletons to be generated.
-		 */
-		private String[] classesToGenerate() {
-			String[] classnames = (iiop) ? new String[15] : new String[9];
-
-			final String remotePkg     = remote.getPackageName() + ".";
-			final String remoteClass   = remote.getClassName();
-			final String homePkg       = home.getPackageName() + ".";
-			final String homeClass     = home.getClassName();
-			final String implPkg       = implementation.getPackageName() + ".";
-			final String implFullClass = implementation.getQualifiedWithUnderscores();
-			int index = 0;
-
-			String fullPath;
-
-			classnames[index++] = implPkg + "ejb_fac_" + implFullClass;
-			classnames[index++] = implPkg + "ejb_home_" + implFullClass;
-			classnames[index++] = implPkg + "ejb_skel_" + implFullClass;
-			classnames[index++] = remotePkg + "ejb_kcp_skel_" + remoteClass;
-			classnames[index++] = homePkg + "ejb_kcp_skel_" + homeClass;
-			classnames[index++] = remotePkg + "ejb_kcp_stub_" + remoteClass;
-			classnames[index++] = homePkg + "ejb_kcp_stub_" + homeClass;
-			classnames[index++] = remotePkg + "ejb_stub_" + remoteClass;
-			classnames[index++] = homePkg + "ejb_stub_" + homeClass;
-
-			if (!iiop) {
-				return classnames;
-			}
-
-			classnames[index++] = remotePkg + "_" + remoteClass + "_Stub";
-			classnames[index++] = homePkg + "_" + homeClass + "_Stub";
-			classnames[index++] = remotePkg + "_ejb_RmiCorbaBridge_" 
-														+ remoteClass + "_Tie";
-			classnames[index++] = homePkg + "_ejb_RmiCorbaBridge_" + homeClass 
-														+ "_Tie";
-			classnames[index++] = remotePkg + "ejb_RmiCorbaBridge_" 
-														+ remoteClass;
-			classnames[index++] = homePkg + "ejb_RmiCorbaBridge_" + homeClass;
-
-			return classnames;
-		}
-
-		/**
-		 * Convenience method which creates a String representation of all the
-		 * instance variables of an EjbInfo object.
-		 *
-		 * @return A String representing the EjbInfo instance.
-		 */
-		public String toString() {
-			String s = "EJB name: " + name
-						+ "\n\r              home:      " + home 
-						+ "\n\r              remote:    " + remote 
-						+ "\n\r              impl:      " + implementation 
-						+ "\n\r              beantype:  " + beantype 
-						+ "\n\r              cmp:       " + cmp 
-						+ "\n\r              iiop:      " + iiop 
-						+ "\n\r              hasession: " + hasession;
-
-			Iterator i = cmpDescriptors.iterator();
-			while (i.hasNext()) {
-				s += "\n\r              CMP Descriptor: " + i.next();
-			}
-
-			return s;
-		}
-
-	} // End of EjbInfo inner class
-
-	/**
-	 * Convenience class used to represent the fully qualified name of a Java 
-	 * class.  It provides an easy way to retrieve components of the class name 
-	 * in a format that is convenient for building iAS stubs and skeletons.
-	 *
-	 * @author Greg Nelson <a href="mailto:greg@netscape.com">greg@netscape.com</a>
-	 */
-	private class Classname {
-		private String qualifiedName;  // Fully qualified name of the Java class
-		private String packageName;    // Name of the package for this class
-		private String className;      // Name of the class without the package
-
-		/**
-		 * This constructor builds an object which represents the name of a Java 
-		 * class.
-		 *
-		 * @param qualifiedName String representing the fully qualified class
-		 *                      name of the Java class.
-		 */
-		public Classname(String qualifiedName) {
-			if (qualifiedName == null) {
-				return;
-			}
-
-			this.qualifiedName = qualifiedName;
-
-			int index = qualifiedName.lastIndexOf('.');
-			if (index == -1) {
-				className = qualifiedName;
-				packageName = "";
-			} else {
-				packageName = qualifiedName.substring(0, index);
-				className   = qualifiedName.substring(index + 1);
-			}
-		}
-
-		/**
-		 * Gets the fully qualified name of the Java class.
-		 *
-		 * @return String representing the fully qualified class name.
-		 */
-		public String getQualifiedClassName() {
-			return qualifiedName;
-		}
-
-		/**
-		 * Gets the package name for the Java class.
-		 *
-		 * @return String representing the package name for the class.
-		 */
-		public String getPackageName() {
-			return packageName;
-		}
-
-		/**
-		 * Gets the Java class name without the package structure.
-		 *
-		 * @return String representing the name for the class.
-		 */
-		public String getClassName() {
-			return className;
-		}
-
-		/**
-		 * Gets the fully qualified name of the Java class with underscores 
-		 * separating the components of the class name rather than periods.  
-		 * This format is used in naming some of the stub and skeleton classes 
-		 * for the iPlanet Application Server.  
-		 *
-		 * @return String representing the fully qualified class name using 
-		 *         underscores instead of periods.
-		 */
-		public String getQualifiedWithUnderscores() {
-			return qualifiedName.replace('.', '_');
-		}
-
-		/**
-		 * Returns a File which references the class relative to the specified
-		 * directory.  Note that the class file may or may not exist.
-		 *
-		 * @param  directory A File referencing the base directory containing
-		 *                   class files.
-		 * @return File referencing this class.
-		 */
-		public File getClassFile(File directory) {
-			String pathToFile = qualifiedName.replace('.', File.separatorChar) 
-											+ ".class";
-			return new File(directory, pathToFile);
-		}
-
-		/**
-		 * String representation of this class name.  It returns the fully
-		 * qualified class name.
-		 *
-		 * @return String representing the fully qualified class name.
-		 */
-		public String toString() {
-			return getQualifiedClassName();
-		}
-	}  // End of Classname inner class
-
-
-	/**
-	 * Thread class used to redirect output from an <code>InputStream</code> to 
-	 * the JRE standard output.  This class may be used to redirect output from
-	 * an external process to the standard output.
-	 *
-	 * @author Greg Nelson <a href="mailto:greg@netscape.com">greg@netscape.com</a>
-	 */
-	private class RedirectOutput extends Thread {
-		InputStream stream;  // Stream to read and redirect to standard output
-
-		/**
-		 * Constructs a new instance that will redirect output from the
-		 * specified stream to the standard output.
-		 *
-		 * @param stream InputStream which will be read and redirected to the
-		 *               standard output.
-		 */
-		public RedirectOutput(InputStream stream) {
-			this.stream = stream;
-		}
-
-		/**
-		 * Reads text from the input stream and redirects it to standard output
-		 * using a separate thread.
-		 */
-		public void run() {
-			BufferedReader reader = new BufferedReader(
-											new InputStreamReader(stream));
-			String text;
-			try {
-				while ((text = reader.readLine()) != null) {
-					System.out.println(text);
-				}
-			} catch (IOException e) {
-				e.printStackTrace();
-			} finally {
-				try {
-					reader.close();
-				} catch (IOException e) {
-					// Do nothing
-				}
-			}
-		}
-	}  // End of RedirectOutput inner class
-
-}        
-        
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbcTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbcTask.java
deleted file mode 100644
index 494abcb..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbcTask.java
+++ /dev/null
@@ -1,353 +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.File;
-import java.io.IOException;
-
-import javax.xml.parsers.SAXParserFactory;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.ParserConfigurationException;
-import org.xml.sax.SAXException;
-
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Task to compile EJB stubs and skeletons for the iPlanet Application Server. 
- * The EJBs to be processed are specified by the EJB 1.1 standard XML
- * descriptor, and additional attributes are obtained from the iPlanet Application 
- * Server-specific XML descriptor.  Since the XML descriptors can include 
- * multiple EJBs, this is a convenient way of specifying many EJBs in a single 
- * Ant task.  The following attributes are allowed:
- *   <ul>
- *     <li><i>ejbdescriptor</i> -- Standard EJB 1.1 XML descriptor (typically
- *                                 titled "ejb-jar.xml").  This attribute is 
- *                                 required.
- *     <li><i>iasdescriptor</i> -- EJB XML descriptor for iPlanet Application
- *                                 Server (typically titled "ias-ejb-jar.xml).  
- *                                 This attribute is required.
- *     <li><i>dest</i> -- The is the base directory where the RMI stubs and 
- *                        skeletons are written.  In addition, the class files
- *                        for each bean (home interface, remote interface, and
- *                        EJB implementation) must be found in this directory.
- *                        This attribute is required.
- *     <li><i>classpath</i> -- The classpath used when generating EJB stubs and
- *                             skeletons.  This is an optional attribute (if 
- *                             omitted, the classpath specified when Ant was 
- *                             started will be used).  Nested "classpath" 
- *                             elements may also be used.
- *     <li><i>keepgenerated</i> -- Indicates whether or not the Java source 
- *                                 files which are generated by ejbc will be 
- *                                 saved or automatically deleted.  If "yes", 
- *                                 the source files will be retained.  This is 
- *                                 an optional attribute (if omitted, it 
- *                                 defaults to "no").
- *     <li><i>debug</i> -- Indicates whether or not the ejbc utility should
- *                         log additional debugging statements to the standard
- *                         output.  If "yes", the additional debugging statements
- *                         will be generated (if omitted, it defaults to "no").
- *     <li><i>iashome</i> -- May be used to specify the "home" directory for
- *                           this iPlanet Application Server installation.  This
- *                           is used to find the ejbc utility if it isn't 
- *                           included in the user's system path.  This is an 
- *                           optional attribute (if specified, it should refer 
- *                           to the <code>[install-location]/iplanet/ias6/ias
- *                           </code> directory).  If omitted, the ejbc utility 
- *                           must be on the user's system path.
- *   </ul>
- * <p>
- * For each EJB specified, this task will locate the three classes that comprise
- * the EJB.  If these class files cannot be located in the <code>dest</code>
- * directory, the task will fail.  The task will also attempt to locate the EJB 
- * stubs and skeletons in this directory.  If found, the timestamps on the 
- * stubs and skeletons will be checked to ensure they are up to date.  Only if
- * these files cannot be found or if they are out of date will ejbc be called
- * to generate new stubs and skeletons.
- *
- * @see    IPlanetEjbc
- * @author Greg Nelson <a href="mailto:greg@netscape.com">greg@netscape.com</a>
- */
-public class IPlanetEjbcTask extends Task {
-
-	/* Attributes set by the Ant build file */
-	private File    ejbdescriptor;
-	private File    iasdescriptor;
-	private File    dest;
-	private Path    classpath;
-	private boolean keepgenerated = false;
-	private boolean debug         = false;
-	private File    iashome;
-
-    /**
-     * Sets the location of the standard XML EJB descriptor.  Typically, this
-	 * file is named "ejb-jar.xml".
-	 *
-	 * @param ejbdescriptor The name and location of the EJB descriptor.
-     */
-	public void setEjbdescriptor(File ejbdescriptor) {
-		this.ejbdescriptor = ejbdescriptor;
-	}
-
-    /**
-     * Sets the location of the iAS-specific XML EJB descriptor.  Typically, 
-	 * this file is named "ias-ejb-jar.xml".
-	 *
-	 * @param iasdescriptor The name and location of the iAS-specific EJB 
-	 *                      descriptor.
-     */
-	public void setIasdescriptor (File iasdescriptor) {
-		this.iasdescriptor = iasdescriptor;
-	}
-
-    /**
-     * Sets the destination directory where the EJB "source" classes must exist
-	 * and where the stubs and skeletons will be written.  The destination 
-	 * directory must exist before this task is executed.
-	 *
-	 * @param dest The directory where the compiled classes will be written.
-     */
-    public void setDest(File dest) {
-        this.dest = dest;
-    }
-
-    /**
-     * Sets the classpath to be used when compiling the EJB stubs and skeletons.
-	 *
-	 * @param classpath The classpath to be used.
-     */
-    public void setClasspath(Path classpath) {
-        if (this.classpath == null) {
-            this.classpath = classpath;
-        } else {
-            this.classpath.append(classpath);
-        }
-    }
-
-    /**
-     * Creates a nested classpath element.
-     */
-    public Path createClasspath() {
-        if (classpath == null) {
-            classpath = new Path(project);
-        }
-        return classpath.createPath();
-    }
-
-    /**
-     * Sets whether or not the Java source files which are generated by the 
-	 * ejbc process should be retained or automatically deleted.
-	 *
-	 * @param keepgenerated A boolean indicating if the Java source files for
-	 *                      the stubs and skeletons should be retained.
-     */
-	public void setKeepgenerated(boolean keepgenerated) {
-		this.keepgenerated = keepgenerated;
-	}
-
-    /**
-     * Sets whether or not debugging output will be generated when ejbc is
-	 * executed.
-	 *
-	 * @param debug A boolean indicating if debugging output should be generated
-     */
-	public void setDebug(boolean debug) {
-		this.debug = debug;
-	}
-	
-    /**
-     * Setter method used to store the "home" directory of the user's iAS
-	 * installation.  The directory specified should typically be
-	 * <code>[install-location]/iplanet/ias6/ias</code>.
-	 *
-     * @param iashome The home directory for the user's iAS installation.
-     */
-	public void setIashome(File iashome) {
-		this.iashome = iashome;
-	}
-
-    /**
-     * Does the work.
-     */
-    public void execute() throws BuildException {
-		checkConfiguration();
-
-		executeEjbc(getParser());
-	}
-	
-    /**
-     * Verifies that the user selections are valid.
-	 *
-	 * @throws BuildException If the user selections are invalid.
-     */
-	private void checkConfiguration() throws BuildException {
-
-		if (ejbdescriptor == null) {
-			String msg = "The standard EJB descriptor must be specified using "
-							+ "the \"ejbdescriptor\" attribute.";
-			throw new BuildException(msg, location);
-		}
-		if ((!ejbdescriptor.exists()) || (!ejbdescriptor.isFile())) {
-			String msg = "The standard EJB descriptor (" + ejbdescriptor 
-							+ ") was not found or isn't a file.";
-			throw new BuildException(msg, location);
-		}
-
-		if (iasdescriptor == null) {
-			String msg = "The iAS-speific XML descriptor must be specified using"
-							+ " the \"iasdescriptor\" attribute.";
-			throw new BuildException(msg, location);
-		}
-		if ((!iasdescriptor.exists()) || (!iasdescriptor.isFile())) {
-			String msg = "The iAS-specific XML descriptor (" + iasdescriptor 
-							+ ") was not found or isn't a file.";
-			throw new BuildException(msg, location);
-		}
-
-		if (dest == null) {
-			String msg = "The destination directory must be specified using "
-							+ "the \"dest\" attribute.";
-			throw new BuildException(msg, location);
-		}
-		if ((!dest.exists()) || (!dest.isDirectory())) {
-			String msg = "The destination directory (" + dest + ") was not "
-							+ "found or isn't a directory.";
-			throw new BuildException(msg, location);
-		}
-
-		if ((iashome != null) && (!iashome.isDirectory())) {
-			String msg = "If \"iashome\" is specified, it must be a valid "
-							+ "directory (it was set to " + iashome + ").";
-			throw new BuildException(msg, getLocation());
-		}
-	}
-
-    /**
-     * Returns a SAXParser that may be used to process the XML descriptors.
-	 *
-	 * @return Parser which may be used to process the EJB descriptors.
-	 * @throws BuildException If the parser cannot be created or configured.
-     */
-	private SAXParser getParser() throws BuildException {
-
-		SAXParser saxParser = null;
-		try {
-            SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
-            saxParserFactory.setValidating(true);
-            saxParser = saxParserFactory.newSAXParser();
-		} catch (SAXException e) {
-            String msg = "Unable to create a SAXParser: " + e.getMessage();
-            throw new BuildException(msg, e, location);
-        }
-        catch (ParserConfigurationException e) {
-            String msg = "Unable to create a SAXParser: " + e.getMessage();
-            throw new BuildException(msg, e, location);
-        }
-
-		return saxParser;
-	}
-
-    /**
-     * Executes the EJBc utility using the SAXParser provided.
-	 *
-	 * @param saxParser SAXParser that may be used to process the EJB
-	 *                  descriptors
-	 * @throws BuildException If there is an error reading or parsing the XML 
-	 *                        descriptors 
-     */
-	private void executeEjbc(SAXParser saxParser) throws BuildException {
-		IPlanetEjbc ejbc = new IPlanetEjbc(ejbdescriptor,
-											iasdescriptor,
-											dest,
-											getClasspath().toString(),
-											saxParser);
-		ejbc.setRetainSource(keepgenerated);
-		ejbc.setDebugOutput(debug);
-		if (iashome != null) {
-			ejbc.setIasHomeDir(iashome);
-		}
-
-		try {
-			ejbc.execute();
-		} catch (IOException e) {
-            String msg = "An IOException occurred while trying to read the XML "
-							+ "descriptor file: " + e.getMessage();
-            throw new BuildException(msg, e, location);
-        } catch (SAXException e) {
-            String msg = "A SAXException occurred while trying to read the XML "
-							+ "descriptor file: " + e.getMessage();
-            throw new BuildException(msg, e, location);
-        } catch (IPlanetEjbc.EjbcException e) {
-            String msg = "An exception occurred while trying to run the ejbc "
-							+ "utility: " + e.getMessage();
-            throw new BuildException(msg, e, location);
-        }
-	}
-
-    /**
-     * Returns the CLASSPATH to be used when calling EJBc.  If no user CLASSPATH
-	 * is specified, the System classpath is returned instead.
-	 *
-	 * @return Path The classpath to be used for EJBc.
-	 */
-	private Path getClasspath() {
-		if (classpath == null) {
-			classpath = Path.systemClasspath;
-		}
-
-		return classpath;
-	}
-}
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/JbossDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/JbossDeploymentTool.java
deleted file mode 100644
index 63e9b40..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/JbossDeploymentTool.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.optional.ejb;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-/**
- * The deployment tool to add the jboss specific deployment descriptor to the ejb jar file.
- * Jboss only requires one additional file jboss.xml and does not require any additional
- * compilation.
- *
- * @author <a href="mailto:p.austin@talk21.com">Paul Austin</a>
- * @version 1.0
- * @see EjbJar#createJboss
- */
-public class JbossDeploymentTool extends GenericDeploymentTool {
-    protected static final String JBOSS_DD = "jboss.xml";
-    protected static final String JBOSS_CMPD = "jaws.xml";
-
-    /** Instance variable that stores the suffix for the jboss jarfile. */
-    private String jarSuffix = ".jar";
-
-    /**
-     * Add any vendor specific files which should be included in the
-     * EJB Jar.
-     */
-    protected void addVendorFiles(Hashtable ejbFiles, String ddPrefix) {
-        File jbossDD = new File(getConfig().descriptorDir, ddPrefix + JBOSS_DD);
-        if (jbossDD.exists()) {
-            ejbFiles.put(META_DIR + JBOSS_DD, jbossDD);
-        } else {
-            log("Unable to locate jboss deployment descriptor. It was expected to be in " + jbossDD.getPath(), Project.MSG_WARN);
-            return;
-        }
-        
-        File jbossCMPD = new File(getConfig().descriptorDir, ddPrefix + JBOSS_CMPD);
-        if (jbossCMPD.exists()) {
-            ejbFiles.put(META_DIR + JBOSS_CMPD, jbossCMPD);
-        }
-    }
-
-    /**
-     * 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);
-    }
-}
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 39077da..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLRun.java
+++ /dev/null
@@ -1,431 +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");
-        }
-
-        File securityPolicyFile = null;
-        if (securityPolicy == null) {
-            securityPolicyFile = new File(weblogicSystemHome, DEFAULT_WL60_POLICY_FILE);
-        }
-        else {
-            securityPolicyFile = new File(weblogicSystemHome, securityPolicy);
-        }
-
-        if (!securityPolicyFile.exists()) {
-            // OK it maybe an absolute path. Use the project to resolve it
-            securityPolicyFile = project.resolveFile(securityPolicy);
-            if (!securityPolicyFile.exists()) {
-                throw new BuildException("Security policy " + securityPolicy +
-                                         " was not found.");
-            }                                         
-        }
-
-
-        if (beaHome != null) {
-            executeWLS6(securityPolicyFile);
-        }
-        else {
-            executeWLS(securityPolicyFile);
-        }
-    }
-    
-    private void executeWLS6(File securityPolicyFile) {
-        
-        if (!beaHome.isDirectory()) {
-            throw new BuildException("BEA home " + beaHome.getPath() + 
-                                     " is not valid");
-        }
-        
-        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 securityPolicyFile) {
-
-        File propertiesFile = null;
-        
-
-        if (weblogicPropertiesFile == null) {
-            weblogicPropertiesFile = DEFAULT_PROPERTIES_FILE;
-        }
-        propertiesFile = new File(weblogicSystemHome, weblogicPropertiesFile);
-        if (!propertiesFile.exists()) {
-            // OK, properties file may be absolute
-            propertiesFile = project.resolveFile(weblogicPropertiesFile);
-            if (!propertiesFile.exists()) {
-                throw new BuildException("Properties file " + weblogicPropertiesFile +
-                                         " not found in weblogic home " + weblogicSystemHome +
-                                         " or as absolute file");
-            }                                         
-        }
-
-        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 f25fe40..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLStop.java
+++ /dev/null
@@ -1,206 +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 Path 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.");
-        }
-        
-        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(classpath);                         
-        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(Path path) {
-        this.classpath = path;
-    }
-    
-    /**
-     * Add the classpath for the user classes
-     */
-    public Path createClasspath() {
-        if (classpath == null) {
-            classpath = new Path(project);
-        }
-        return classpath.createPath();
-    }
-
-    /**
-     * 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 f0a4180..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
+++ /dev/null
@@ -1,729 +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_EJB510
-        = "-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN";
-    public static final String PUBLICID_WEBLOGIC_EJB600
-        = "-//BEA Systems, Inc.//DTD WebLogic 6.0.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_WL51_DTD_LOCATION 
-        = "/weblogic/ejb/deployment/xml/weblogic-ejb-jar.dtd";
-    protected static final String DEFAULT_WL60_51_DTD_LOCATION 
-        = "/weblogic/ejb20/dd/xml/weblogic510-ejb-jar.dtd";
-    protected static final String DEFAULT_WL60_DTD_LOCATION 
-        = "/weblogic/ejb20/dd/xml/weblogic600-ejb-jar.dtd";
-
-    protected static final String DEFAULT_COMPILER = "default"; 
-    
-    protected static final String WL_DD = "weblogic-ejb-jar.xml";
-    protected static final String WL_CMP_DD = "weblogic-cmp-rdbms-jar.xml";
-
-    protected static final String COMPILER_EJB11 = "weblogic.ejbc";
-    protected static final String COMPILER_EJB20 = "weblogic.ejbc20";
-    
-    /** 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;
-
-    /** Instance variable that stores the fully qualified classname of the weblogic EJBC compiler */
-    private String ejbcClass = null;
-
-    private String additionalArgs = "";
-
-    private boolean keepGeneric = false;
-
-    private String compiler = null;
-
-    private boolean alwaysRebuild = true;
-
-    /** controls whether ejbc is run on the generated jar */
-    private boolean noEJBC = false;
-    
-    /**
-     * Indicates if the old CMP location convention is to be used.
-     */
-    private boolean newCMP = false;
-
-    /** The classpath to the weblogic classes. */
-    private Path wlClasspath = null;
-
-    /**
-     * Get the classpath to the weblogic classpaths
-     */
-    public Path createWLClasspath() {
-        if (wlClasspath == null) {
-            wlClasspath = new Path(getTask().getProject());
-        }
-        return wlClasspath.createPath();
-    }
-    
-    public void setWLClasspath(Path wlClasspath) {
-        this.wlClasspath = wlClasspath;
-    }
-
-    /**
-     * 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;
-    }
-    
-    /**
-     * Set the classname of the ejbc compiler
-     */
-    public void setEjbcClass(String ejbcClass)
-    {
-        this.ejbcClass = ejbcClass;
-    }
-    
-    /**
-     * Get the ejbc compiler class
-     */
-    public String getEjbcClass()
-    {
-        return ejbcClass;
-    }
-     
-   
-    /**
-     * 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. This is an antonym for
-     * newCMP
-     */
-    public void setOldCMP(boolean oldCMP) {
-        this.newCMP = !oldCMP;
-    }
-    
-    /**
-     * Set the value of the newCMP scheme. The old CMP 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.
-     *
-     */
-    public void setNewCMP(boolean newCMP) {
-        this.newCMP = newCMP;
-    }
-
-    /**
-     * Do not EJBC the jar after it has been put together.
-     *
-     */
-    public void setNoEJBC(boolean noEJBC) {
-        this.noEJBC = noEJBC;
-    }
-   
-    protected void registerKnownDTDs(DescriptorHandler handler) {
-        // register all the known DTDs
-        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);
-    }
-
-    protected DescriptorHandler getWeblogicDescriptorHandler(final File srcDir) {
-        DescriptorHandler handler = 
-            new DescriptorHandler(getTask(), 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(srcDir, fileName);
-                        
-                        ejbFiles.put(fileNameWithMETA, descriptorFile);
-                    }
-                }
-            };
-
-        handler.registerDTD(PUBLICID_WEBLOGIC_EJB510, DEFAULT_WL51_DTD_LOCATION);
-        handler.registerDTD(PUBLICID_WEBLOGIC_EJB510, DEFAULT_WL60_51_DTD_LOCATION);
-        handler.registerDTD(PUBLICID_WEBLOGIC_EJB600, DEFAULT_WL60_DTD_LOCATION);
-        handler.registerDTD(PUBLICID_WEBLOGIC_EJB510, weblogicDTD);
-        handler.registerDTD(PUBLICID_WEBLOGIC_EJB600, weblogicDTD);
-                            
-        for (Iterator i = getConfig().dtdLocations.iterator(); i.hasNext();) {
-            EjbJar.DTDLocation dtdLocation = (EjbJar.DTDLocation)i.next();
-            handler.registerDTD(dtdLocation.getPublicId(), dtdLocation.getLocation());
-        }
-        return handler;                                    
-    }
-
-    /**
-     * Add any vendor specific files which should be included in the 
-     * EJB Jar.
-     */
-    protected void addVendorFiles(Hashtable ejbFiles, String ddPrefix) {
-        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 (!newCMP) {
-            log("The old method for locating CMP files has been DEPRECATED.", Project.MSG_VERBOSE);
-            log("Please adjust your weblogic descriptor and set newCMP=\"true\" " +
-                "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, String publicId) {
-        org.apache.tools.ant.taskdefs.Java javaTask = null;
-
-        if (noEJBC) {
-            try {
-                getTask().getProject().copyFile(sourceJar, destJar);
-                if (!keepgenerated) {
-                    sourceJar.delete();
-                }
-                return;
-            }
-            catch (IOException e) {
-                throw new BuildException("Unable to write EJB jar", e);
-            }
-        }
-
-        String ejbcClassName = ejbcClass;
-        
-        try {
-            javaTask = (Java) getTask().getProject().createTask("java");
-            javaTask.setTaskName("ejbc");
-            if (ejbcClassName == null) {
-                // try to determine it from publicId
-                if (PUBLICID_EJB11.equals(publicId)) {
-                    ejbcClassName = COMPILER_EJB11;
-                }
-                else if (PUBLICID_EJB20.equals(publicId)) {
-                    ejbcClassName = COMPILER_EJB20;
-                }
-                else {
-                    log("Unrecognized publicId " + publicId + " - using EJB 1.1 compiler", Project.MSG_WARN);
-                    ejbcClassName = COMPILER_EJB11;
-                }
-            }
-                 
-            javaTask.setClassname(ejbcClassName);
-            javaTask.createArg().setLine(additionalArgs);
-            if (keepgenerated) {
-                javaTask.createArg().setValue("-keepgenerated");
-            }
-            if (compiler == null) {
-                // try to use the compiler specified by build.compiler. Right now we are just going
-                // to allow Jikes
-                String buildCompiler = getTask().getProject().getProperty("build.compiler");
-                if (buildCompiler != null && buildCompiler.equals("jikes")) {
-                    javaTask.createArg().setValue("-compiler");
-                    javaTask.createArg().setValue("jikes");
-                }
-            }
-            else {
-                if (!compiler.equals(DEFAULT_COMPILER)) {
-                    javaTask.createArg().setValue("-compiler");
-                    javaTask.createArg().setLine(compiler);
-                }
-            }
-            javaTask.createArg().setValue(sourceJar.getPath());
-            javaTask.createArg().setValue(destJar.getPath());
-            
-            Path classpath = wlClasspath;
-            if (classpath == null) {
-                classpath = getCombinedClasspath();
-            }
-            
-            javaTask.setFork(true);
-            if (classpath != null) {
-                javaTask.setClasspath(classpath);
-            }
-
-            log("Calling " + ejbcClassName + " for " + sourceJar.toString(),
-                          Project.MSG_VERBOSE);
-
-            if (javaTask.executeJava() != 0) {
-                throw new BuildException("Ejbc reported an error");
-            }
-        }
-        catch (Exception e) {
-            // Have to catch this because of the semantics of calling main()
-            String msg = "Exception while calling " + ejbcClassName + ". 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, 
-                            String publicId) throws BuildException {
-        // need to create a generic jar first.
-        File genericJarFile = super.getVendorOutputJarFile(baseName);
-        super.writeJar(baseName, genericJarFile, files, publicId);
-        
-        if (alwaysRebuild || isRebuildRequired(genericJarFile, jarFile))
-        {
-            buildWeblogicJar(genericJarFile, jarFile, publicId);
-        }
-        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
-                            {
-                                // is it the manifest. If so ignore it
-                                if (!genericEntry.getName().equals("META-INF/MANIFEST.MF")) {
-                                    //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 6e1e44a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicTOPLinkDeploymentTool.java
+++ /dev/null
@@ -1,134 +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 ddPrefix) {
-        super.addVendorFiles(ejbFiles, ddPrefix);
-        // Then the toplink deployment descriptor
-
-        // Setup a naming standard here?.
-
-
-        File toplinkDD = new File(getConfig().descriptorDir, ddPrefix + 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 a1f26da..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">vajproject</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 setVajproject(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) {
-            throw 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 4f0fc37..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 createVAJProject() {
-        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 fda6421..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java
+++ /dev/null
@@ -1,227 +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());
-        }
-
-        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());
-        }        
-        if (!outputDirectory.isDirectory() ) {
-            throw new BuildException("'outputdirectory' " + outputDirectory + " is not a directory.");
-        }
-        // convert backslashes to slashes, otherwise jjtree will put this as
-        // comments and this seems to confuse javacc
-        cmdl.createArgument().setValue(
-            "-OUTPUT_DIRECTORY:"+outputDirectory.getAbsolutePath().replace('\\', '/'));
-        
-        String targetName = target.getName();
-        final File javaFile = new File(outputDirectory,
-            targetName.substring(0, targetName.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/jdepend/JDependTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java
deleted file mode 100644
index a32e396..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java
+++ /dev/null
@@ -1,385 +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.jdepend;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Enumeration;
-import java.util.Vector;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.PathTokenizer;
-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.ExecuteWatchdog;
-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 org.apache.tools.ant.types.Reference;
-
-/**
- * Ant task to run JDepend tests.
- *
- * <p>JDepend is a tool to generate design quality metrics for each Java package.
- * It has been initially created by Mike Clark. JDepend can be found at <a
- * href="http://www.clarkware.com/software/JDepend.html">http://www.clarkware.com/software/JDepend.html</a>.
- *
- * The current implementation spawn a new Java VM.
- *
- * @author <a href="mailto:Jerome@jeromelacoste.com">Jerome Lacoste</a>
- */
-public class JDependTask extends Task {
-    private CommandlineJava commandline = new CommandlineJava();       
-        
-    // required attributes
-    private Path _sourcesPath;
-
-    // optional attributes
-    private File _outputFile;
-    private File _dir;
-    private Path _compileClasspath;
-    private boolean _haltonerror = false;
-    private boolean _fork = false;    
-    //private Integer _timeout = null;
-    
-    public JDependTask() {
-        commandline.setClassname("jdepend.textui.JDepend");
-    }
-
-/*
-    public void setTimeout(Integer value) {
-        _timeout = value;
-    }
-    
-    public Integer getTimeout() {
-        return _timeout;
-    }
-*/
-    
-    public void setOutputFile(File outputFile) {
-        _outputFile = outputFile;
-    }
-
-    public File getOutputFile() {
-        return _outputFile;
-    }
-
-    /**
-     * Halt on Failure? default: false.
-     */
-    public void setHaltonerror(boolean value) {
-        _haltonerror = value;
-    }
-
-    public boolean getHaltonerror() {
-        return _haltonerror;
-    }
-
-    /**
-     * Tells whether a JVM should be forked for the task. Default: false.
-     * @param   value   <tt>true</tt> if a JVM should be forked, otherwise <tt>false<tt>
-     */
-    public void setFork(boolean value) {    
-        _fork = value;            
-    }    
-
-    public boolean getFork() {
-        return _fork;
-    }
-
-    /**
-     * Set a new VM to execute the task. 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);
-    }
-    
-    /**
-     * Maybe creates a nested classpath element.
-     */
-    public Path createSourcespath() {
-        if (_sourcesPath == null) {
-            _sourcesPath = new Path(project);
-        }
-        return _sourcesPath.createPath();
-    }
-
-    /** Gets the sourcepath. */
-    public Path getSourcespath() {
-        return _sourcesPath;
-    }
- 
-    /**
-     * 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) {
-        _dir = dir;
-    }
-
-    public File getDir() {
-        return _dir;
-    }
-
-    /**
-     * 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();
-    }
-
-    /**
-     * 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();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-    /**
-     * No problems with this test.
-     */
-    private static final int SUCCESS = 0;    
-    /**
-     * An error occured.
-     */    
-    private static final int ERRORS = 1;
-    
-    public void execute() throws BuildException {
-        if (getSourcespath() == null)
-            throw new BuildException("Missing Sourcepath required argument");
-            
-        // execute the test and get the return code
-        int exitValue = JDependTask.ERRORS;
-        boolean wasKilled = false;
-        if (! getFork()) {
-            exitValue = executeInVM();
-        } else {
-            ExecuteWatchdog watchdog = createWatchdog();                
-            exitValue = executeAsForked(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 errorOccurred = exitValue == JDependTask.ERRORS;
-
-        if (errorOccurred) {
-            if  (getHaltonerror())
-                throw new BuildException("JDepend failed",
-                                         location);
-            else
-                log("JDepend FAILED", Project.MSG_ERR);
-        }
-    }        
-
-
-            
-    // this comment extract from JUnit Task may also apply here
-    // "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.
-     */
-    public int executeInVM() throws BuildException {
-        jdepend.textui.JDepend jdepend = new jdepend.textui.JDepend();
-       
-        if (getOutputFile() != null) {
-            FileWriter fw;
-            try {
-                fw = new FileWriter(getOutputFile().getPath());
-            }
-            catch (IOException e) {
-                String msg = "JDepend Failed when creating the output file: " + e.getMessage();
-                log(msg);
-                throw new BuildException(msg);
-            }
-            jdepend.setWriter(new PrintWriter(fw));
-            log("Ouptut to be stored in " + getOutputFile().getPath());
-        }
-
-        PathTokenizer sourcesPath = new PathTokenizer(getSourcespath().toString());
-        while (sourcesPath.hasMoreTokens()) {
-            File f = new File(sourcesPath.nextToken());
-            
-            // not necessary as JDepend would fail, but why loose some time?                    
-            if (! f.exists() || !f.isDirectory()) {
-                String msg = "\""+ f.getPath() + "\" does not represent a valid directory. JDepend would fail.";
-                log(msg);
-                throw new BuildException(msg);
-            }
-            try {                  
-                jdepend.addDirectory(f.getPath());                  
-            }
-            catch (IOException e) {
-                String msg = "JDepend Failed when adding a source directory: " + e.getMessage();
-                log(msg);
-                throw new BuildException(msg);
-            }
-        }
-        jdepend.analyze();
-        return SUCCESS;
-    }
-    
-
-    /**
-     * Execute the task 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  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.
-     */
-    // JL: comment extracted from JUnitTask (and slightly modified)
-    public int executeAsForked(ExecuteWatchdog watchdog) throws BuildException {      
-        // if not set, auto-create the ClassPath from the project
-        createClasspath();
-
-        // not sure whether this test is needed but cost nothing to put.
-        // hope it will be reviewed by anybody competent
-        if (getClasspath().toString().length() > 0) {
-            createJvmarg().setValue("-classpath");
-            createJvmarg().setValue(getClasspath().toString());
-        }
-
-        if (getOutputFile() != null) {
-            // having a space between the file and its path causes commandline to add quotes "
-            // around the argument thus making JDepend not taking it into account. Thus we split it in two
-            commandline.createArgument().setValue("-file");
-            commandline.createArgument().setValue(_outputFile.getPath());
-            // we have to find a cleaner way to put this output
-        }
-
-        PathTokenizer sourcesPath = new PathTokenizer(getSourcespath().toString());
-        while (sourcesPath.hasMoreTokens()) {
-            File f = new File(sourcesPath.nextToken());
-            
-            // not necessary as JDepend would fail, but why loose some time?
-            if (! f.exists() || !f.isDirectory())
-                throw new BuildException("\""+ f.getPath() + "\" does not represent a valid directory. JDepend would fail.");
-            commandline.createArgument().setValue(f.getPath());
-        }
-        
-        Execute execute = new Execute(new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_WARN), watchdog);        
-        execute.setCommandline(commandline.getCommandline());
-        if (getDir() != null) {
-            execute.setWorkingDirectory(getDir());
-            execute.setAntRun(project);
-        }
-
-        if (getOutputFile() != null) 
-            log("Ouptut to be stored in " + getOutputFile().getPath());
-        log("Executing: "+commandline.toString(), Project.MSG_VERBOSE);
-        try {
-            return execute.execute();
-        } catch (IOException e) {
-            throw new BuildException("Process fork failed.", e, location);
-        }
-    }
-
-    /**
-     * @return <tt>null</tt> if there is a timeout value, otherwise the
-     * watchdog instance.
-     */
-    protected ExecuteWatchdog createWatchdog() throws BuildException {
-
-        return null;
-        /*
-          if (getTimeout() == null){
-          return null;
-          }
-          return new ExecuteWatchdog(getTimeout().intValue());
-        */
-    }
-}
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 3881bd9..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
+++ /dev/null
@@ -1,342 +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 org.apache.tools.ant.types.EnumeratedAttribute;
-
-import java.io.*;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.lang.reflect.Field;
-import java.net.URL;
-
-import org.apache.xalan.xslt.XSLTProcessorFactory;
-import org.apache.xalan.xslt.XSLTProcessor;
-import org.apache.xalan.xslt.XSLTInputSource;
-import org.apache.xalan.xslt.XSLTResultTarget;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Source;
-import javax.xml.transform.Result;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.stream.StreamResult;
-
-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;
-import org.xml.sax.InputSource;
-
-/**
- * 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.
- *
- * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
- */
-public class AggregateTransformer {
-
-    public final static String FRAMES = "frames";
-
-    public final static String NOFRAMES = "noframes";
-
-    public static class Format extends EnumeratedAttribute {
-		public String[] getValues(){
-			return new String[]{FRAMES, 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;
-
-    /** XML Parser factory */
-    protected static final DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
-
-    public AggregateTransformer(Task task){
-        this.task = task;
-    }
-
-    public void setFormat(Format format){
-        this.format = format.getValue();
-    }
-
-    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
-     */
-    protected void setXmlfile(File xmlfile) throws BuildException {
-        try {
-            DocumentBuilder builder = dbfactory.newDocumentBuilder();
-            InputStream in = new FileInputStream(xmlfile);
-            try {
-                Document doc = builder.parse(in);
-                setXmlDocument(doc);
-            } finally {
-                in.close();
-            }
-        } 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){
-        task.log("extension is not used anymore", Project.MSG_WARN);
-    }
-
-    public void transform() throws BuildException {
-        checkOptions();
-        final long t0 = System.currentTimeMillis();
-        try {
-            Element root = document.getDocumentElement();
-            XalanExecutor executor = XalanExecutor.newInstance(this);
-            executor.execute();
-        } catch (Exception e){
-            throw new BuildException("Errors while applying transformations", e);
-        }
-        final long dt = System.currentTimeMillis() - t0;
-        task.log("Transform time: " + dt + "ms");
-    }
-
-    /** check for invalid options */
-    protected void checkOptions() throws BuildException {
-        // 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());
-        }
-    }
-
-    /**
-     * Get the systemid of the appropriate stylesheet based on its
-     * name and styledir. If no styledir is defined it will load
-     * it as a java resource in the xsl child package, otherwise it
-     * will get it from the given directory.
-     * @throws IOException thrown if the requested stylesheet does
-     * not exist.
-     */
-    protected String getStylesheetSystemId() throws IOException {
-        String xslname = "junit-frames.xsl";
-        if (NOFRAMES.equals(format)){
-            xslname = "junit-noframes.xsl";
-        }
-        URL url = null;
-        if (styleDir == null){
-            url = getClass().getResource("xsl/" + xslname);
-            if (url == null){
-                throw new FileNotFoundException("Could not find jar resource " + xslname);
-            }
-        } else {
-            File file = new File(styleDir, xslname);
-            if (!file.exists()){
-                throw new FileNotFoundException("Could not find file '" + file + "'");
-            }
-            url = new URL("file", "", file.getAbsolutePath());
-        }
-        return url.toExternalForm();
-    }
-
-}
-
-/**
- * Command class that encapsulate specific behavior for each
- * Xalan version. The right executor will be instantiated at
- * runtime via class lookup. For instance, it will check first
- * for Xalan2, then for Xalan1.
- */
-abstract class XalanExecutor {
-    /** the transformer caller */
-    protected AggregateTransformer caller;
-
-    /** set the caller for this object. */
-    private final void setCaller(AggregateTransformer caller){
-        this.caller = caller;
-    }
-
-    /** get the appropriate stream based on the format (frames/noframes) */
-    protected OutputStream getOutputStream() throws IOException {
-        if (caller.FRAMES.equals(caller.format)){
-            // dummy output for the framed report
-            // it's all done by extension...
-            return new ByteArrayOutputStream();
-        } else {
-            return new FileOutputStream(new File(caller.toDir, "junit-noframes.html"));
-        }
-    }
-
-    /** override to perform transformation */
-    abstract void execute() throws Exception;
-
-    /**
-     * Create a valid Xalan executor. It checks first if Xalan2 is
-     * present, if not it checks for xalan1. If none is available, it
-     * fails.
-     * @param caller object containing the transformation information.
-     * @throws BuildException thrown if it could not find a valid xalan
-     * executor.
-     */
-    static XalanExecutor newInstance(AggregateTransformer caller) throws BuildException {
-        Class procVersion = null;
-        XalanExecutor executor = null;
-        try {
-            procVersion = Class.forName("org.apache.xalan.processor.XSLProcessorVersion");
-            executor = new Xalan2Executor();
-        } catch (Exception xalan2missing){
-            try {
-                procVersion = Class.forName("org.apache.xalan.xslt.XSLProcessorVersion");
-                executor = new Xalan1Executor();
-            } catch (Exception xalan1missing){
-                throw new BuildException("Could not find xalan2 nor xalan1 in the classpath. Check http://xml.apache.org/xalan-j");
-            }
-        }
-        String version = getXalanVersion(procVersion);
-        caller.task.log("Using Xalan version: " + version);
-        executor.setCaller(caller);
-        return executor;
-    }
-
-    /** pretty useful data (Xalan version information) to display. */
-    private static String getXalanVersion(Class procVersion) {
-        try {
-            Field f = procVersion.getField("S_VERSION");
-            return f.get(null).toString();
-        } catch (Exception e){
-            return "?";
-        }
-    }
-}
-
-/**
- * Xalan executor via JAXP. Nothing special must exists in the classpath
- * besides of course, a parser, jaxp and xalan.
- */
-class Xalan2Executor extends XalanExecutor {
-    void execute() throws Exception {
-        TransformerFactory tfactory = TransformerFactory.newInstance();
-        String system_id = caller.getStylesheetSystemId();
-        Source xsl_src = new StreamSource(system_id);
-        Transformer tformer = tfactory.newTransformer(xsl_src);
-        Source xml_src = new DOMSource(caller.document);
-        OutputStream os = getOutputStream();
-        tformer.setParameter("output.dir", caller.toDir.getAbsolutePath());
-        Result result = new StreamResult(os);
-        tformer.transform(xml_src, result);
-    }
-}
-
-/**
- * Xalan 1 executor. It will need a lot of things in the classpath:
- * xerces for the serialization, xalan and bsf for the extension.
- * @todo do everything via reflection to avoid compile problems ?
- */
-class Xalan1Executor extends XalanExecutor {
-    void execute() throws Exception {
-        XSLTProcessor processor = XSLTProcessorFactory.getProcessor();
-        // need to quote otherwise it breaks because of "extra illegal tokens"
-        processor.setStylesheetParam("output.dir", "'" + caller.toDir.getAbsolutePath() + "'");
-        XSLTInputSource xml_src = new XSLTInputSource(caller.document);
-        String system_id = caller.getStylesheetSystemId();
-        XSLTInputSource xsl_src = new XSLTInputSource(system_id);
-        OutputStream os = getOutputStream();
-        XSLTResultTarget target = new XSLTResultTarget(os);
-        processor.process( xml_src, xsl_src, target);
-    }
-}
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 868955d..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/BaseTest.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.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;
-
-    protected String failureProperty;
-    protected String errorProperty;
-
-    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;
-    }
-
-    public java.lang.String getFailureProperty() {
-        return failureProperty;
-    }
-    
-    public void setFailureProperty(String failureProperty) {
-        this.failureProperty = failureProperty;
-    }
-    
-    public java.lang.String getErrorProperty() {
-        return errorProperty;
-    }
-    
-    public void setErrorProperty(String errorProperty) {
-        this.errorProperty = errorProperty;
-    }
-}
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 e67c3dd..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/BatchTest.java
+++ /dev/null
@@ -1,214 +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;
-
-/**
- * <p> Create then run <code>JUnitTest</code>'s based on the list of files given by the fileset attribute.
- *
- * <p> Every <code>.java</code> or <code>.class</code> file in the fileset is 
- * assumed to be a testcase. 
- * A <code>JUnitTest</code> is created for each of these named classes with basic setup
- * inherited from the parent <code>BatchTest</code>.
- *
- * @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.
-     */
-    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 obviously 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);
-        test.setFailureProperty(failureProperty);
-        test.setErrorProperty(errorProperty);
-        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/BriefJUnitResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatter.java
deleted file mode 100644
index 0a63415..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatter.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.apache.tools.ant.BuildException;
-
-import junit.framework.*;
-
-/**
- * Prints plain text output of the test to a specified Writer.
- * Inspired by the PlainJUnitResultFormatter.
- *
- * @author <a href="mailto:robertdw@bigpond.net.au">Robert Watkins</a>
- *
- * @see FormatterElement
- * @see PlainJUnitResultFormatter
- */
-public class BriefJUnitResultFormatter implements JUnitResultFormatter {
-        
-    /**
-     * Where to write the log to.
-     */
-    private java.io.OutputStream m_out;
-
-    /**
-     * Used for writing the results.
-     */
-    private java.io.PrintWriter m_output;
-    
-    /**
-     * Used as part of formatting the results.
-     */
-    private java.io.StringWriter m_results;
-
-    /**
-     * Used for writing formatted results to.
-     */
-    private java.io.PrintWriter m_resultWriter;
-    
-    /**
-     * Formatter for timings.
-     */
-    private java.text.NumberFormat m_numberFormat = java.text.NumberFormat.getInstance();
-    
-    /**
-     * Output suite has written to System.out
-     */
-    private String systemOutput = null;
-
-    /**
-     * Output suite has written to System.err
-     */
-    private String systemError = null;
-
-    public BriefJUnitResultFormatter() {
-        m_results = new java.io.StringWriter();
-        m_resultWriter = new java.io.PrintWriter(m_results);
-    }
-    
-    /**
-     * Sets the stream the formatter is supposed to write its results to.
-     */
-    public void setOutput(java.io.OutputStream out) { 
-        m_out = out; 
-        m_output = new java.io.PrintWriter(out); 
-    }
-    
-    public void setSystemOutput(String out) {
-        systemOutput = out;
-    }
-
-    public void setSystemError(String err) {
-        systemError = err;
-    }
-
-    protected java.io.PrintWriter output() { return m_output; }
-    
-    protected java.io.PrintWriter resultWriter() { return m_resultWriter; }
-    
-    /**
-     * The whole testsuite started.
-     */
-    public void startTestSuite(JUnitTest suite) throws BuildException {
-    }
-
-    /**
-     * The whole testsuite ended.
-     */
-    public void endTestSuite(JUnitTest suite) throws BuildException {
-        String newLine = System.getProperty("line.separator");
-        StringBuffer sb = new StringBuffer("Testsuite: ");
-        sb.append(suite.getName());
-        sb.append(newLine);
-        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(m_numberFormat.format(suite.getRunTime()/1000.0));
-        sb.append(" sec");
-        sb.append(newLine);
-        sb.append(newLine);
-
-        // append the err and output streams to the log
-        if (systemOutput != null && systemOutput.length() > 0) {
-            sb.append("------------- Standard Output ---------------" )
-                .append(newLine)
-                .append(systemOutput)
-                .append("------------- ---------------- ---------------" )
-                .append(newLine);
-        }
-        
-        if (systemError != null && systemError.length() > 0) {
-            sb.append("------------- Standard Error -----------------" )
-                .append(newLine)
-                .append(systemError)
-                .append("------------- ---------------- ---------------" )
-                .append(newLine);
-        }
-
-        if ( output() != null) {
-            try {
-                output().write(sb.toString());
-                resultWriter().close();
-                output().write(m_results.toString());
-                output().flush();
-            } finally {
-                if (m_out != (Object)System.out &&
-                    m_out != (Object)System.err) {
-                    try {
-                        m_out.close();
-                    } catch (java.io.IOException e) {}
-                }
-            }
-        }
-    }
-    
-    /**
-     * A test started.
-     */
-    public void startTest(Test test) {
-    }
-    
-    /**
-     * A test ended.
-     */
-    public void endTest(Test test) {
-    }
-
-    /**
-     * 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);
-    }
-
-    /**
-     * A test caused an error.
-     */
-    public void addError(Test test, Throwable error) {
-        formatError("\tCaused an ERROR", test, error);
-    }
-    
-    /**
-     * Format the test for printing..
-     */
-    protected String formatTest(Test test) {
-        if (test == null) {
-            return "Null Test: ";
-        }
-        else {
-            return "Testcase: " + test.toString() + ":";
-        }
-    }
-
-    /**
-     * Format an error and print it.
-     */
-    protected void formatError(String type, Test test, Throwable error) {
-        if (test != null) {
-            endTest(test);
-        }
-
-        resultWriter().println(formatTest(test) + ":" + type);
-        resultWriter().println(error.getMessage());
-        error.printStackTrace(resultWriter());
-        resultWriter().println("");
-    }
-}
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 a985a69..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
+++ /dev/null
@@ -1,224 +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;
-
-/**
- * <p> A wrapper for the implementations of <code>JUnitResultFormatter</code>.
- * In particular, used as a nested <code>&lt;formatter&gt;</code> element in a <code>&lt;junit&gt;</code> task.
- * <p> For example, 
- * <code><pre>
- *       &lt;junit printsummary="no" haltonfailure="yes" fork="false"&gt;
- *           &lt;formatter type="plain" usefile="false" /&gt;
- *           &lt;test name="org.apache.ecs.InternationalCharTest" /&gt;
- *       &lt;/junit&gt;</pre></code>
- * adds a <code>plain</code> type implementation (<code>PlainJUnitResultFormatter</code>) to display the results of the test.
- *
- * <p> Either the <code>type</code> or the <code>classname</code> attribute
- * must be set. 
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- *
- * @see JUnitTask
- * @see XMLJUnitResultFormatter
- * @see BriefJUnitResultFormatter
- * @see PlainJUnitResultFormatter
- * @see JUnitResultFormatter
- */
-public class FormatterElement {
-
-    private String classname;
-    private String extension;
-    private OutputStream out = System.out;
-    private File outFile;
-    private boolean useFile = true;
-
-    /**
-     * <p> Quick way to use a standard formatter.
-     *
-     * <p> At the moment, there are three supported standard formatters.
-     * <ul>
-     * <li> The <code>xml</code> type uses a <code>XMLJUnitResultFormatter</code>.
-     * <li> The <code>brief</code> type uses a <code>BriefJUnitResultFormatter</code>.
-     * <li> The <code>plain</code> type (the default) uses a <code>PlainJUnitResultFormatter</code>.
-     * </ul>
-     *
-     * <p> Sets <code>classname</code> attribute - so you can't use that attribute if you use this one.
-     */
-    public void setType(TypeAttribute type) {
-        if ("xml".equals(type.getValue())) {
-            setClassname("org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter");
-            setExtension(".xml");
-        } else {
-            if ("brief".equals(type.getValue())) {
-                setClassname("org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter");
-            } else { // must be plain, ensured by TypeAttribute
-                setClassname("org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter");
-            }
-            setExtension(".txt");
-        }
-    }
-
-    /**
-     * <p> Set name of class to be used as the formatter.
-     *
-     * <p> This class must implement <code>JUnitResultFormatter</code>
-     */
-    public void setClassname(String classname) {
-        this.classname = classname;
-    }
-
-    /**
-     * Get name of class to be used as the formatter.
-     */
-    public String getClassname() {
-        return classname;
-    }
-
-    public void setExtension(String ext) {
-        this.extension = ext;
-    }
-
-    public String getExtension() {
-        return extension;
-    }
-
-    /**
-     * <p> Set the file which the formatte should log to.
-     *
-     * <p> Note that logging to file must be enabled .
-     */
-    void setOutfile(File out) {
-        this.outFile = out;
-    }
-
-    /**
-     * <p> Set output stream for formatter to use.
-     *
-     * <p> Defaults to standard out.
-     */
-    public void setOutput(OutputStream out) {
-        this.out = out;
-    }
-
-    /**
-     * Set whether the formatter should log to file.
-     */
-    public void setUseFile(boolean useFile) {
-        this.useFile = useFile;
-    }
-
-    /**
-     * Get whether the formatter should log to file.
-     */
-    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;
-    }
-
-    /**
-     * <p> Enumerated attribute with the values "plain", "xml" and "brief".
-     * 
-     * <p> Use to enumerate options for <code>type</code> attribute.
-     */
-    public static class TypeAttribute extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"plain", "xml", "brief"};
-        }
-    }
-}
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 8bc0aed..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter.java
+++ /dev/null
@@ -1,92 +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@epost.de">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);
-
-    /**
-     * This is what the test has written to System.out
-     */
-    public void setSystemOutput( String out );
-
-    /**
-     * This is what the test has written to System.err
-     */
-    public void setSystemError( String err );
-
-}
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 cb8ccf5..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
+++ /dev/null
@@ -1,679 +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 org.apache.tools.ant.types.EnumeratedAttribute;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Properties;
-import java.util.Random;
-import java.util.Vector;
-
-import java.net.URL;
-
-/**
- * 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> <code>JUnitTask</code> can run a single specific <code>JUnitTest</code> using the <code>test</code> element. 
- * For example, the following target <code><pre>
- *   &lt;target name="test-int-chars" depends="jar-test"&gt;
- *       &lt;echo message="testing international characters"/&gt;
- *       &lt;junit printsummary="no" haltonfailure="yes" fork="false"&gt;
- *           &lt;classpath refid="classpath"/&gt;
- *           &lt;formatter type="plain" usefile="false" /&gt;
- *           &lt;test name="org.apache.ecs.InternationalCharTest" /&gt;
- *       &lt;/junit&gt;
- *   &lt;/target&gt;
- * </pre></code> runs a single junit test (<code>org.apache.ecs.InternationalCharTest</code>) 
- * in the current VM using the path with id <code>classpath</code> as classpath 
- * and presents the results formatted using the standard <code>plain</code> formatter on the command line.
- *
- * <p> This task can also run batches of tests. 
- * The <code>batchtest</code> element creates a <code>BatchTest</code> based on a fileset. 
- * This allows, for example, all classes found in directory to be run as testcases. 
- * For example, <code><pre>
- * &lt;target name="run-tests" depends="dump-info,compile-tests" if="junit.present"&gt;
- *   &lt;junit printsummary="no" haltonfailure="yes" fork="${junit.fork}"&gt;
- *     &lt;jvmarg value="-classic"/&gt;
- *     &lt;classpath refid="tests-classpath"/&gt;
- *     &lt;sysproperty key="build.tests" value="${build.tests}"/&gt;
- *     &lt;formatter type="brief" usefile="false" /&gt;
- *     &lt;batchtest&gt;
- *       &lt;fileset dir="${tests.dir}"&gt;
- *         &lt;include name="**&#047;*Test*" /&gt;
- *       &lt;/fileset&gt;
- *     &lt;/batchtest&gt;
- *   &lt;/junit&gt;
- * &lt;/target&gt;
- * </pre></code> this target finds any classes with a <code>test</code> directory anywhere in their path
- * (under the top <code>${tests.dir}</code>, of course) and creates <code>JUnitTest</code>'s for each one.
- *
- * <p> Of course, <code>&lt;junit&gt;</code> and <code>&lt;batch&gt;</code> elements can be combined
- * for more complex tests. For an example, see the ant <code>build.xml</code> target <code>run-tests</code> 
- * (the second example is an edited version).
- * 
- * <p> To spawn a new Java VM to prevent interferences between
- * different testcases, you need to enable <code>fork</code>. 
- * A number of attributes and elements allow you to set up how this JVM runs.
- * <ul>
- * <li>{@link #setTimeout} property sets the maximum time allowed before a test is 'timed out'
- * <li>{@link #setMaxmemory} property sets memory assignment for the forked jvm
- * <li>{@link #setJvm} property allows the jvm to be specified
- * <li>The <code>&lt;jvmarg&gt;</code> element sets arguements to be passed to the forked jvm 
- * </ul>
- * @author Thomas Haas
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- * @author <a href="mailto:Gerrit.Riessen@web.de">Gerrit Riessen</a>
- * @author <a href="mailto:erik@hatcher.net">Erik Hatcher</a>
- *
- * @see JUnitTest
- * @see BatchTest
- */
-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;
-    private String summaryValue = "";
-    private JUnitTestRunner runner = null;
-    
-    /**
-     * 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 set the named property to "true" when there is a error in a test.
-     * This property is applied on all BatchTest (batchtest) and JUnitTest (test),
-     * however, it can possibly be overriden by their own properties.
-     * @param  value  the name of the property to set in the event of an error.
-     */
-    public void setErrorProperty(String propertyName) {
-        Enumeration enum = allTests();
-        while (enum.hasMoreElements()) {
-            BaseTest test = (BaseTest) enum.nextElement();
-            test.setErrorProperty(propertyName);
-        }
-    }
-
-    /**
-     * 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 this task to set the named property to "true" when there is a failure in a test.
-     * This property is applied on all BatchTest (batchtest) and JUnitTest (test),
-     * however, it can possibly be overriden by their own properties.
-     * @param  value  the name of the property to set in the event of an failure.
-     */
-    public void setFailureProperty(String propertyName) {
-        Enumeration enum = allTests();
-        while (enum.hasMoreElements()) {
-            BaseTest test = (BaseTest) enum.nextElement();
-            test.setFailureProperty(propertyName);
-        }
-    }
-
-    /**
-     * 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
-     */
-    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>withOutAndErr</tt> to include the test&apos;s output as
-     *   well, <tt>false</tt> otherwise.
-     * @see SummaryJUnitResultFormatter
-     */
-    public void setPrintsummary(SummaryAttribute value) {
-        summaryValue = value.getValue();
-        summary = value.asBoolean();
-    }
-
-    /** 
-     * Print summary enumeration values.
-     */
-    public static class SummaryAttribute extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"true", "yes", "false", "no", 
-                                 "on", "off", "withOutAndErr"};
-        }
-
-        public boolean asBoolean() {
-            return "true".equals(value)
-                || "on".equals(value)
-                || "yes".equals(value)
-                || "withOutAndErr".equals(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)
-     */
-    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);
-    }
-    
-    /**
-     * <code>&lt;classpath&gt;</code> allows classpath to be set for tests.
-     */
-    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");
-    }
-
-    /**
-     * Adds the jars or directories containing Ant, this task and
-     * JUnit to the classpath - this should make the forked JVM work
-     * without having to specify the directly.
-     */
-    public void init() {
-        addClasspathEntry("/junit/framework/TestCase.class");
-        addClasspathEntry("/org/apache/tools/ant/Task.class");
-        addClasspathEntry("/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.class");
-    }
-
-    /**
-     * 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);
-            }
-        }
-    }
-
-    /**
-     * Run the tests.
-     */
-    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) {
-                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 || failureOccurredHere) {
-            if (errorOccurredHere && test.getHaltonerror()
-                || failureOccurredHere && test.getHaltonfailure()) {
-                throw new BuildException("Test "+test.getName()+" failed"
-                                         +(wasKilled ? " (timeout)" : ""),
-                                         location);
-            } else {
-                log("TEST "+test.getName()+" FAILED" 
-                    + (wasKilled ? " (timeout)" : ""), Project.MSG_ERR);
-                if (errorOccurredHere && test.getErrorProperty() != null) {
-                    project.setProperty(test.getErrorProperty(), "true");
-                }
-                if (failureOccurredHere && test.getFailureProperty() != null) {
-                    project.setProperty(test.getFailureProperty(), "true");
-                }
-            }
-        }
-    }
-
-    /**
-     * 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);
-        }
-
-        // Create a temporary file to pass the Ant properties to the forked test
-        File propsFile = new File("junit" + (new Random(System.currentTimeMillis())).nextLong() + ".properties");
-        cmd.createArgument().setValue("propsfile=" + propsFile.getAbsolutePath());
-        Hashtable p = project.getProperties(); 
-        Properties props = new Properties();
-        for (Enumeration enum = p.keys(); enum.hasMoreElements(); ) {
-            Object key = enum.nextElement();
-            props.put(key, p.get(key));
-        }
-        try {
-            FileOutputStream outstream = new FileOutputStream(propsFile);
-            props.save(outstream,"Ant JUnitTask generated properties file");
-            outstream.close();
-        } catch (java.io.IOException e) {
-            throw new BuildException("Error creating temporary properties file.", e, location);
-        }
-
-        Execute execute = new Execute(new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_WARN), watchdog);
-        execute.setCommandline(cmd.getCommandline());
-        execute.setAntRun(project);
-        if (dir != null) {
-            execute.setWorkingDirectory(dir);
-        }
-
-        log("Executing: "+cmd.toString(), Project.MSG_VERBOSE);
-        int retVal; 
-        try {
-            retVal = execute.execute();
-        } catch (IOException e) {
-            throw new BuildException("Process fork failed.", e, location);
-        } finally {
-          if (! propsFile.delete()) throw new BuildException("Could not delete temporary properties file.");
-        }
-
-        return retVal;
-    }
-
-    // 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)
-        
-
-    protected void handleOutput(String line) {
-        if (runner != null) {
-            runner.handleOutput(line);
-        }
-        else {
-            super.handleOutput(line);
-        }
-    }
-    
-    protected void handleErrorOutput(String line) {
-        if (runner != null) {
-            runner.handleErrorOutput(line);
-        }
-        else {
-            super.handleErrorOutput(line);
-        }
-    }
-    
-    /**
-     * Execute inside VM.
-     */
-    private int executeInVM(JUnitTest test) throws BuildException {
-        test.setProperties(project.getProperties());
-        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(null, 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");
-            }
-            runner = new JUnitTestRunner(test, test.getHaltonerror(), test.getHaltonfailure(), cl);
-
-            if (summary) {
-                log("Running " + test.getName(), Project.MSG_INFO);
-
-                SummaryJUnitResultFormatter f = 
-                  new SummaryJUnitResultFormatter();
-                f.setWithOutAndErr( "withoutanderr".equalsIgnoreCase( summaryValue ));
-                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;
-    }
-
-    /**
-     * Search for the given resource and add the directory or archive
-     * that contains it to the classpath.
-     *
-     * <p>Doesn't work for archives in JDK 1.1 as the URL returned by
-     * getResource doesn't contain the name of the archive.</p>
-     */
-    protected void addClasspathEntry(String resource) {
-        URL url = getClass().getResource(resource);
-        if (url != null) {
-            String u = url.toString();
-            if (u.startsWith("jar:file:")) {
-                int pling = u.indexOf("!");
-                String jarName = u.substring(9, pling);
-                log("Implicitly adding "+jarName+" to classpath", 
-                    Project.MSG_DEBUG);
-                createClasspath().setLocation(new File((new File(jarName)).getAbsolutePath()));
-            } else if (u.startsWith("file:")) {
-                int tail = u.indexOf(resource);
-                String dirName = u.substring(5, tail);
-                log("Implicitly adding "+dirName+" to classpath", 
-                    Project.MSG_DEBUG);
-                createClasspath().setLocation(new File((new File(dirName)).getAbsolutePath()));
-            } else {
-                log("Don\'t know how to handle resource URL "+u, 
-                    Project.MSG_DEBUG);
-            }
-        } else {
-            log("Couldn\'t find "+resource, Project.MSG_DEBUG);
-        }
-    }
-
-}
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 3646b9b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.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.junit;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.Commandline;
-
-import java.io.File;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Properties;
-import java.util.Vector;
-
-/**
- * <p> Run a single JUnit test.
- *
- * <p> The JUnit test is actually run by {@link JUnitTestRunner}.
- * So read the doc comments for that class :)
- *
- * @author Thomas Haas
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>,
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- *
- * @see JUnitTask
- * @see JUnitTestRunner
- */
-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;
-
-    // Snapshot of the system properties
-    private Properties props = null;
-
-    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;
-    }
-
-    /** 
-     * Set the name of the test class.
-     */
-    public void setName(String value) {
-        name = value;
-    }
-
-    /**
-     * Set the name of the output file.
-     */
-    public void setOutfile(String value) {
-        outfile = value;
-    }
-
-    /** 
-     * Get the name of the test class.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Get the name of the output file
-     * 
-     * @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 Properties getProperties() { return props;}
-    public void setProperties(Hashtable p) { 
-        props = new Properties();  
-        for (Enumeration enum = p.keys(); enum.hasMoreElements(); ) {
-            Object key = enum.nextElement();
-            props.put(key, p.get(key));
-        }
-    }
-
-    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 5d57aa4..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
+++ /dev/null
@@ -1,437 +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.*;
-
-import junit.framework.*;
-import java.lang.reflect.*;
-import java.io.*;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Properties;
-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. So, the signature should be 
- * <pre><code>
- *     public static junit.framework.Test suite()
- * </code></pre>
- *
- * <p> If no such method exists, 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>
- * @author <a href="mailto:erik@hatcher.net">Erik Hatcher</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;
-
-    /** output written during the test */
-    private PrintStream systemError;
-    
-    /** Error output during the test */
-    private PrintStream systemOut;    
-    
-    /**
-     * 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());
-                AntClassLoader.initializeClass(testClass);
-            }
-            
-            Method suiteMethod = null;
-            try {
-                // check if there is a suite method
-                suiteMethod= testClass.getMethod("suite", new Class[0]);
-            } catch(Exception e) {
-                // no appropriate suite method found. We don't report any
-                // error here since it might be perfectly normal. We don't
-                // know exactly what is the cause, but we're doing exactly
-                // the same as JUnit TestRunner do. We swallow the exceptions.
-            }
-            if (suiteMethod != null){
-                // if there is a suite method available, then try
-                // to extract the suite from it. If there is an error
-                // here it will be caught below and reported.
-                suite = (Test)suiteMethod.invoke(null, new Class[0]);
-            } else {
-                // 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 {
-
-
-            ByteArrayOutputStream errStrm = new ByteArrayOutputStream();
-            systemError = new PrintStream(errStrm);
-            
-            ByteArrayOutputStream outStrm = new ByteArrayOutputStream();
-            systemOut = new PrintStream(outStrm);
-
-            try {
-                suite.run(res);
-            } finally {
-                systemError.close();
-                systemError = null;
-                systemOut.close();
-                systemOut = null;
-                sendOutAndErr(new String(outStrm.toByteArray()),
-                              new String(errStrm.toByteArray()));
-
-                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();
-        }
-    }
-
-    protected void handleOutput(String line) {
-        if (systemOut != null) {
-            systemOut.println(line);
-        }
-    }
-    
-    protected void handleErrorOutput(String line) {
-        if (systemError != null) {
-            systemError.println(line);
-        }
-    }
-    
-    private void sendOutAndErr(String out, String err) {
-        for (int i=0; i<formatters.size(); i++) {
-            JUnitResultFormatter formatter = 
-                ((JUnitResultFormatter)formatters.elementAt(i));
-            
-            formatter.setSystemOutput(out);
-            formatter.setSystemError(err);
-        }
-    }
-
-    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;
-        Properties props = new Properties();
-
-        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);
-                }
-            } else if (args[i].startsWith("propsfile=")) {
-                FileInputStream in = new FileInputStream(args[i].substring(10));
-                props.load(in);
-                in.close();
-            }
-        }
-        
-        JUnitTest t = new JUnitTest(args[0]);
-
-        // Add/overlay system properties on the properties from the Ant project
-        Hashtable p = System.getProperties();
-        for (Enumeration enum = p.keys(); enum.hasMoreElements(); ) {
-            Object key = enum.nextElement();
-            props.put(key, p.get(key));
-        }
-        t.setProperties(props);
-
-        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 851f9cf..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
+++ /dev/null
@@ -1,243 +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;
-
-    private String systemOutput = null;
-    private String systemError = null;
-
-    public PlainJUnitResultFormatter() {
-        inner = new StringWriter();
-        wri = new PrintWriter(inner);
-    }
-
-    public void setOutput(OutputStream out) {
-        this.out = out;
-    }
-
-    public void setSystemOutput(String out) {
-        systemOutput = out;
-    }
-
-    public void setSystemError(String err) {
-        systemError = err;
-    }
-
-    /**
-     * Empty.
-     */
-    public void startTestSuite(JUnitTest suite) {
-    }
-
-    /**
-     * The whole testsuite ended.
-     */
-    public void endTestSuite(JUnitTest suite) throws BuildException {
-        String newLine = System.getProperty("line.separator");
-        StringBuffer sb = new StringBuffer("Testsuite: ");
-        sb.append(suite.getName());
-        sb.append(newLine);
-        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(newLine);
-        
-        // append the err and output streams to the log
-        if (systemOutput != null && systemOutput.length() > 0) {
-            sb.append("------------- Standard Output ---------------" )
-                .append(newLine)
-                .append(systemOutput)
-                .append("------------- ---------------- ---------------" )
-                .append(newLine);
-        }
-        
-        if (systemError != null && systemError.length() > 0) {
-            sb.append("------------- Standard Error -----------------" )
-                .append(newLine)
-                .append(systemError)
-                .append("------------- ---------------- ---------------" )
-                .append(newLine);
-        }
-
-        sb.append(newLine);
-
-        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 96bf22a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatter.java
+++ /dev/null
@@ -1,180 +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;
-
-    private boolean withOutAndErr = false;
-    private String systemOutput = null;
-    private String systemError = null;
-
-    /**
-     * 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;
-    }
-
-    public void setSystemOutput( String out ) {
-        systemOutput = out;
-    }
-
-    public void setSystemError( String err ) {
-        systemError = err;
-    }
-
-    /**
-     * Should the output to System.out and System.err be written to
-     * the summary.
-     */
-    public void setWithOutAndErr( boolean value ) {
-        withOutAndErr = value;
-    }
-
-    /**
-     * The whole testsuite ended.
-     */
-    public void endTestSuite(JUnitTest suite) throws BuildException {
-        String newLine = System.getProperty("line.separator");
-        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(newLine);
-
-        if (withOutAndErr) {
-            if (systemOutput != null && systemOutput.length() > 0) {
-                sb.append( "Output:" ).append(newLine).append(systemOutput)
-                    .append(newLine);
-            }
-            
-            if (systemError != null && systemError.length() > 0) {
-                sb.append( "Error: " ).append(newLine).append(systemError)
-                    .append(newLine);
-            }
-        }
-
-        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 ede4502..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLConstants.java
+++ /dev/null
@@ -1,124 +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;
-
-/**
- * <p> Interface groups XML constants.
- * 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:
- * <code><pre>
- * <----------------- @todo describe DTDs ---------------------->
- *
- * </pre></code>
- * @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";
-
-    /** the system-err element */
-    public final static String SYSTEM_ERR = "system-err";
-
-    /** the system-out element */
-    public final static String SYSTEM_OUT = "system-out";
-
-    /** package attribute for the aggregate document */
-    public final static String ATTR_PACKAGE = "package";
-
-    /** name attribute for property, 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";
-
-    /** the properties element */
-    public final static String PROPERTIES = "properties";
-
-    /** the property element */
-    public final static String PROPERTY = "property";
-
-    /** value attribute for property elements */
-    public final static String ATTR_VALUE = "value";
-
-}
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 b936423..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormatter.java
+++ /dev/null
@@ -1,259 +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.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>
- * @author <a href="mailto:erik@hatcher.net">Erik Hatcher</a>
- *
- * @see FormatterElement 
- */
-
-public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstants {
-
-    private static DocumentBuilder getDocumentBuilder() {
-        try {
-            return DocumentBuilderFactory.newInstance().newDocumentBuilder();
-        }
-        catch(Exception exc) {
-            throw new ExceptionInInitializerError(exc);
-        }
-    }
-
-    /**
-     * 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;
-    }
-
-    public void setSystemOutput(String out) {
-        formatOutput(SYSTEM_OUT, out);
-    }
-
-    public void setSystemError(String out) {
-        formatOutput(SYSTEM_ERR, out);
-    }
-
-    /**
-     * The whole testsuite started.
-     */
-    public void startTestSuite(JUnitTest suite) {
-        doc = getDocumentBuilder().newDocument();
-        rootElement = doc.createElement(TESTSUITE);
-        rootElement.setAttribute(ATTR_NAME, suite.getName());
-
-        // Output properties
-        Element propsElement = doc.createElement(PROPERTIES);
-        rootElement.appendChild(propsElement);
-        Properties props = suite.getProperties();
-        if (props != null) {
-            Enumeration e = props.propertyNames();
-            while (e.hasMoreElements()) {
-                String name = (String) e.nextElement();
-                Element propElement = doc.createElement(PROPERTY);
-                propElement.setAttribute(ATTR_NAME, name);
-                propElement.setAttribute(ATTR_VALUE, props.getProperty(name));
-                propsElement.appendChild(propElement);
-            }
-        }
-    }
-
-    /**
-     * 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, ""+(suite.getRunTime()/1000.0));
-        if (out != null) {
-            Writer wri = null;
-            try {
-                wri = new OutputStreamWriter(out, "UTF8");
-                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,
-                                 ""+((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);
-    }
-
-    private void formatOutput(String type, String output) {
-        Element nested = doc.createElement(type);
-        rootElement.appendChild(nested);
-        Text content = doc.createTextNode(output);
-        nested.appendChild(content);
-    }
-
-} // 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 9cd3b38..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java
+++ /dev/null
@@ -1,322 +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.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-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;
-
-
-/**
- * <p> 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.
- *
- * <p> 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.addElement(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);
-    }
-    
-    /**
-     * Get all <code>.xml</code> files in the fileset.
-     *
-     * @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(new OutputStreamWriter(out, "UTF8"));
-        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");
-        }
-    }
-    
-    /**
-     * <p> Create a DOM tree. 
-     * Has 'testsuites' as firstchild 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);
-                //XXX there seems to be a bug in xerces 1.3.0 that doesn't like file object
-                // will investigate later. It does not use the given directory but
-                // the vm dir instead ? Works fine with crimson.
-                Document testsuiteDoc = builder.parse( "file:///" + files[i].getAbsolutePath() );
-                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);
-                StringWriter sw = new StringWriter();
-                e.printStackTrace(new PrintWriter(sw));
-                log(sw.toString(), Project.MSG_DEBUG);
-            } catch (IOException e){
-                log("Error while accessing file " + files[i] + ": " + e.getMessage(), Project.MSG_ERR);
-            }
-        }
-        return rootElement;
-    }
-    
-    /**
-     * <p> 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.
-     * <p> For example: <tt>org.apache.Whatever</tt> will be split into
-     * <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/metamata/AbstractMetamataTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java
deleted file mode 100644
index 8dffd42..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java
+++ /dev/null
@@ -1,315 +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", "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.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.*;
-import org.apache.tools.ant.DirectoryScanner;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * Somewhat abstract framework to be used for other metama 2.0 tasks.
- * This should include, audit, metrics, cover and mparse.
- *
- * For more information, visit the website at
- * <a href="http://www.metamata.com">www.metamata.com</a>
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public abstract class AbstractMetamataTask extends Task{
-
-    //--------------------------- ATTRIBUTES -----------------------------------
-
-    /**
-     * The user classpath to be provided. It matches the -classpath of the
-     * command line. The classpath must includes both the <tt>.class</tt> and the
-     * <tt>.java</tt> files for accurate audit.
-     */
-    protected Path classPath = null;
-
-    /** the path to the source file */
-    protected Path sourcePath = null;
-
-    /**
-     * Metamata home directory. It will be passed as a <tt>metamata.home</tt> property
-     * and should normally matches the environment property <tt>META_HOME</tt>
-     * set by the Metamata installer.
-     */
-    protected File metamataHome = null;
-
-    /** the command line used to run MAudit */
-    protected CommandlineJava cmdl = new CommandlineJava();
-
-    /** the set of files to be audited */
-    protected Vector fileSets = new Vector();
-
-    /** the options file where are stored the command line options */
-    protected File optionsFile = null;
-
-    // this is used to keep track of which files were included. It will
-    // be set when calling scanFileSets();
-    protected Hashtable includedFiles = null;
-
-    public AbstractMetamataTask(){
-    }
-
-    /** initialize the task with the classname of the task to run */
-    protected AbstractMetamataTask(String className) {
-        cmdl.setVm("java");
-        cmdl.setClassname(className);
-    }
-
-    /** the metamata.home property to run all tasks. */
-    public void setMetamatahome(final File metamataHome){
-        this.metamataHome = metamataHome;
-    }
-
-    /** user classpath */
-    public Path createClasspath() {
-        if (classPath == null) {
-            classPath = new Path(project);
-        }
-        return classPath;
-    }
-
-    /** create the source path for this task */
-    public Path createSourcepath(){
-        if (sourcePath == null){
-            sourcePath = new Path(project);
-        }
-        return sourcePath;
-    }
-
-    /** Creates a nested jvmarg element. */
-    public Commandline.Argument createJvmarg() {
-        return cmdl.createVmArgument();
-    }
-
-    /**  -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);
-        }
-    }
-
-
-    /** The java files or directory to be audited */
-    public void addFileSet(FileSet fs) {
-        fileSets.addElement(fs);
-    }
-
-    /** execute the command line */
-    public void execute() throws BuildException {
-        try {
-            setUp();
-            ExecuteStreamHandler handler = createStreamHandler();
-            execute0(handler);
-        } finally {
-            cleanUp();
-        }
-    }
-
-    //--------------------- PRIVATE/PROTECTED METHODS --------------------------
-
-    /** check the options and build the command line */
-    protected void setUp() throws BuildException {
-        checkOptions();
-
-        // set the classpath as the jar file
-        File jar = getMetamataJar(metamataHome);
-        final Path classPath = cmdl.createClasspath(project);
-        classPath.createPathElement().setLocation(jar);
-
-        // set the metamata.home property
-        final Commandline.Argument vmArgs = cmdl.createVmArgument();
-        vmArgs.setValue("-Dmetamata.home=" + metamataHome.getAbsolutePath() );
-
-        // retrieve all the files we want to scan
-        includedFiles = scanFileSets();
-        log(includedFiles.size() + " files added for audit", Project.MSG_VERBOSE);
-
-        // write all the options to a temp file and use it ro run the process
-        Vector options = getOptions();
-        optionsFile = createTmpFile();
-        generateOptionsFile(optionsFile, options);
-        Commandline.Argument args = cmdl.createArgument();
-        args.setLine("-arguments " + optionsFile.getAbsolutePath());
-    }
-
-    /**
-     * create a stream handler that will be used to get the output since
-     * metamata tools do not report with convenient files such as XML.
-     */
-    protected abstract ExecuteStreamHandler createStreamHandler();
-
-
-    /** execute the process with a specific handler */
-    protected void execute0(ExecuteStreamHandler handler) throws BuildException {
-        final Execute process = new Execute(handler);
-        log(cmdl.toString(), Project.MSG_VERBOSE);
-        process.setCommandline(cmdl.getCommandline());
-        try {
-            if (process.execute() != 0) {
-                throw new BuildException("Metamata task failed.");
-            }
-        } catch (IOException e){
-            throw new BuildException("Failed to launch Metamata task: " + e);
-        }
-    }
-
-    /** clean up all the mess that we did with temporary objects */
-    protected void cleanUp(){
-        if (optionsFile != null){
-            optionsFile.delete();
-            optionsFile = null;
-        }
-    }
-
-    /** return the location of the jar file used to run */
-    protected final File getMetamataJar(File home){
-        return new File(new File(home.getAbsolutePath()), "lib/metamata.jar");
-    }
-
-    /** validate options set */
-    protected void checkOptions() throws BuildException {
-        // do some validation first
-        if (metamataHome == null || !metamataHome.exists()){
-            throw new BuildException("'metamatahome' must point to Metamata home directory.");
-        }
-        metamataHome = project.resolveFile(metamataHome.getPath());
-        File jar = getMetamataJar(metamataHome);
-        if (!jar.exists()){
-            throw new BuildException( jar + " does not exist. Check your metamata installation.");
-        }
-    }
-
-    /** return all options of the command line as string elements */
-    protected abstract Vector getOptions();
-
-
-    protected void generateOptionsFile(File tofile, Vector options) throws BuildException {
-        FileWriter fw = null;
-        try {
-            fw = new FileWriter(tofile);
-            PrintWriter pw = new PrintWriter(fw);
-            final int size = options.size();
-            for (int i = 0; i < size; i++){
-                pw.println( options.elementAt(i) );
-            }
-            pw.flush();
-        } catch (IOException e){
-            throw new BuildException("Error while writing options file " + tofile, e);
-        } finally {
-            if (fw != null){
-                try {
-                    fw.close();
-                } catch (IOException ignored){}
-            }
-        }
-    }
-
-
-    protected Hashtable getFileMapping(){
-        return includedFiles;
-    }
-    /**
-     * convenient method for JDK 1.1. Will copy all elements from src to dest
-     */
-    protected static final void addAllVector(Vector dest, Enumeration files){
-        while (files.hasMoreElements()) {
-            dest.addElement( files.nextElement() );
-        }
-    }
-    
-    protected final static File createTmpFile(){
-        // must be compatible with JDK 1.1 !!!!
-        final long rand = (new Random(System.currentTimeMillis())).nextLong();
-        File file = new File("metamata" + rand + ".tmp");
-        return file;
-    }
-
-    /**
-     * @return the list of .java files (as their absolute path) that should
-     *         be audited.
-     */
-    protected Hashtable scanFileSets(){
-        Hashtable files = new Hashtable();
-        for (int i = 0; i < fileSets.size(); i++){
-            FileSet fs = (FileSet) fileSets.elementAt(i);
-            DirectoryScanner ds = fs.getDirectoryScanner(project);
-            ds.scan();
-            String[] f = ds.getIncludedFiles();
-            log(i + ") Adding " + f.length + " files from directory " + ds.getBasedir(), Project.MSG_VERBOSE);
-            for (int j = 0; j < f.length; j++){
-                String pathname = f[j];
-                if ( pathname.endsWith(".java") ){
-                    File file = new File( ds.getBasedir(), pathname);
-//                  file = project.resolveFile(file.getAbsolutePath());
-                    String classname = pathname.substring(0, pathname.length()-".java".length());
-                    classname = classname.replace(File.separatorChar, '.');
-                   files.put( file.getAbsolutePath(), classname ); // it's a java file, add it.
-                }
-            }
-        }
-        return files;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java
deleted file mode 100644
index 2867392..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java
+++ /dev/null
@@ -1,255 +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.*;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.util.regexp.*;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * Metamata Audit evaluates Java code for programming errors, weaknesses, and
- * style violation.
- * <p>
- * Metamata Audit exists in three versions:
- * <ul>
- *  <li>The Lite version evaluates about 15 built-in rules.</li>
- *  <li>The Pro version evaluates about 50 built-in rules.</li>
- *  <li>The Enterprise version allows you to add your own customized rules via the API.</li>
- * <ul>
- * For more information, visit the website at
- * <a href="http://www.metamata.com">www.metamata.com</a>
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class MAudit extends AbstractMetamataTask {
-
-    /* As of Metamata 2.0, the command line of MAudit is as follows:
-    Usage
-        maudit <option>... <path>... [-unused <search-path>...]
-
-    Parameters
-        path               File or directory to audit.
-        search-path        File or directory to search for declaration uses.
-
-    Options
-        -arguments  -A     <file>     Includes command line arguments from file.
-        -classpath  -cp    <path>     Sets class path (also source path unless one
-                                      explicitly set). Overrides METAPATH/CLASSPATH.
-        -exit       -x                Exits after the first error.
-        -fix        -f                Automatically fixes certain errors.
-        -fullpath                     Prints full path for locations.
-        -help       -h                Prints help and exits.
-        -list       -l                Creates listing file for each audited file.
-        -offsets    -off              Offset and length for locations.
-        -output     -o     <file>     Prints output to file.
-        -quiet      -q                Suppresses copyright and summary messages.
-        -sourcepath        <path>     Sets source path. Overrides SOURCEPATH.
-        -tab        -t                Prints a tab character after first argument.
-        -unused     -u                Finds declarations unused in search paths.
-        -verbose    -v                Prints all messages.
-        -version    -V                Prints version and exits.
-    */
-
-    //---------------------- PUBLIC METHODS ------------------------------------
-
-    /** pattern used by maudit to report the error for a file */
-    /** RE does not seems to support regexp pattern with comments so i'm stripping it*/
-    // (?:file:)?((?#filepath).+):((?#line)\\d+)\\s*:\\s+((?#message).*)
-    static final String AUDIT_PATTERN = "(?:file:)?(.+):(\\d+)\\s*:\\s+(.*)";
-
-    protected File outFile = null;
-    
-    protected Path searchPath = null;
-    
-    protected boolean fix = false;
-    
-    protected boolean list = false;
-    
-    protected boolean unused = false;
-
-    /** default constructor */
-    public MAudit() {
-        super("com.metamata.gui.rc.MAudit");
-    }
-
-    /** set the destination file which should be an xml file */
-    public void setTofile(File outFile){
-        this.outFile = outFile;
-    }
-
-    public void setFix(boolean flag){
-        this.fix = flag;
-    }
-
-    public void setList(boolean flag){
-        this.list = flag;
-    }
-
-    public void setUnused(boolean flag){
-        this.unused = flag;
-    }
-
-    public Path createSearchpath(){
-        if (searchPath == null){
-            searchPath = new Path(project);
-        }
-        return searchPath;
-    }
-
-    protected Vector getOptions(){
-        Vector options = new Vector(512);
-        // there is a bug in Metamata 2.0 build 37. The sourcepath argument does
-        // not work. So we will use the sourcepath prepended to classpath. (order
-        // is important since Metamata looks at .class and .java)
-        if (sourcePath != null){
-            sourcePath.append(classPath); // srcpath is prepended
-            classPath = sourcePath;
-            sourcePath = null; // prevent from using -sourcepath
-        }        
-        
-        // don't forget to modify the pattern if you change the options reporting
-        if (classPath != null){
-            options.addElement("-classpath");
-            options.addElement(classPath.toString());
-        }
-        // suppress copyright msg when running, we will let it so that this
-        // will be the only output to the console if in xml mode
-//      options.addElement("-quiet");
-        if (fix){
-            options.addElement("-fix");
-        }
-        options.addElement("-fullpath");
-
-        // generate .maudit files much more detailed than the report
-        // I don't like it very much, I think it could be interesting
-        // to get all .maudit files and include them in the XML.
-        if (list){
-            options.addElement("-list");
-        }
-        if (sourcePath != null){
-            options.addElement("-sourcepath");
-            options.addElement(sourcePath.toString());
-        }
-        
-        if (unused){
-            options.addElement("-unused");
-            options.addElement(searchPath.toString());
-        }
-        addAllVector(options, includedFiles.keys());
-        return options;
-    }
-
-    protected void checkOptions() throws BuildException {
-        super.checkOptions();
-        if (unused && searchPath == null){
-            throw new BuildException("'searchpath' element must be set when looking for 'unused' declarations.");
-        }
-        if (!unused && searchPath != null){
-            log("'searchpath' element ignored. 'unused' attribute is disabled.", Project.MSG_WARN);
-        }
-    }
-    
-    protected ExecuteStreamHandler createStreamHandler() throws BuildException {
-        ExecuteStreamHandler handler = null;
-        // if we didn't specify a file, then use a screen report
-        if (outFile == null){
-           handler = new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_INFO);
-        } else {
-            try {
-                //XXX
-                OutputStream out = new FileOutputStream( outFile );
-                handler = new MAuditStreamHandler(this, out);
-            } catch (IOException e){
-                throw new BuildException(e);
-            }
-        }
-        return handler;
-    }
-
-    protected void cleanUp() throws BuildException {
-        super.cleanUp();
-        // at this point if -list is used, we should move
-        // the .maudit file since we cannot choose their location :(
-        // the .maudit files match the .java files
-        // we'll use includedFiles to get the .maudit files.
-
-        /*if (out != null){
-            // close it if not closed by the handler...
-        }*/
-    }
-
-    /** the inner class used to report violation information */
-    static final class Violation {
-        int line;
-        String error;
-    }
-
-    /** handy factory to create a violation */
-    static final Violation createViolation(int line, String msg){
-        Violation violation = new Violation();
-        violation.line = line;
-        violation.error = msg;
-        return violation;
-    }
-
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MAuditStreamHandler.java b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MAuditStreamHandler.java
deleted file mode 100644
index 6717e4b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MAuditStreamHandler.java
+++ /dev/null
@@ -1,241 +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.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.util.regexp.*;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.util.DOMElementWriter;
-
-import org.w3c.dom.*;
-
-import java.io.*;
-import java.util.*;
-import javax.xml.parsers.*;
-
-
-/**
- * This is a very bad stream handler for the MAudit task.
- * All report to stdout that does not match a specific report pattern is dumped
- * to the Ant output as warn level. The report that match the pattern is stored
- * in a map with the key being the filepath that caused the error report.
- * <p>
- * The limitation with the choosen implementation is clear:
- * <ul>
- * <li>it does not handle multiline report( message that has \n ). the part until
- * the \n will be stored and the other part (which will not match the pattern)
- * will go to Ant output in Warn level.
- * <li>it does not report error that goes to stderr.
- * </ul>
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-class MAuditStreamHandler implements ExecuteStreamHandler {
-
-    protected MAudit task;
-
-    /** reader for stdout */
-    protected BufferedReader br;
-
-    /** matcher that will be used to extract the info from the line */
-    protected RegexpMatcher matcher;
-
-    /**
-     * this is where the XML output will go, should mostly be a file
-     * the caller is responsible for flushing and closing this stream
-     */
-    protected OutputStream xmlOut = null;
-
-    /**
-     * the multimap. The key in the map is the filepath that caused the audit
-     * error and the value is a vector of MAudit.Violation entries.
-     */
-    protected Hashtable auditedFiles = new Hashtable();
-
-    MAuditStreamHandler(MAudit task, OutputStream xmlOut){
-        this.task = task;
-        this.xmlOut = xmlOut;
-        /** the matcher should be the Oro one. I don't know about the other one */
-        matcher = (new RegexpMatcherFactory()).newRegexpMatcher();
-        matcher.setPattern(MAudit.AUDIT_PATTERN);
-    }
-
-    /** 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. This will block until the end :-(*/
-    public void start() throws IOException {
-        parseOutput(br);
-    }
-
-    /**
-     * Pretty dangerous business here. It serializes what was extracted from
-     * the MAudit output and write it to the output.
-     */
-    public void stop() {
-        // serialize the content as XML, move this to another method
-        // this is the only code that could be needed to be overrided
-        Document doc = getDocumentBuilder().newDocument();
-        Element rootElement = doc.createElement("classes");
-        Enumeration keys = auditedFiles.keys();
-        Hashtable filemapping = task.getFileMapping();
-        rootElement.setAttribute("audited", String.valueOf(filemapping.size()));
-        rootElement.setAttribute("reported", String.valueOf(auditedFiles.size()));
-        int errors = 0;
-        while (keys.hasMoreElements()){
-            String filepath = (String)keys.nextElement();
-            Vector v = (Vector)auditedFiles.get(filepath);
-            String fullclassname = (String)filemapping.get(filepath);
-            if (fullclassname == null) {
-                task.getProject().log("Could not find class mapping for " + filepath, Project.MSG_WARN);
-                continue;
-            }
-            int pos = fullclassname.lastIndexOf('.');
-            String pkg = (pos == -1) ? "" : fullclassname.substring(0, pos);
-            String clazzname = (pos == -1) ? fullclassname : fullclassname.substring(pos + 1);
-            Element clazz = doc.createElement("class");
-            clazz.setAttribute("package", pkg);
-            clazz.setAttribute("name", clazzname);
-            clazz.setAttribute("violations", String.valueOf(v.size()));
-            errors += v.size();
-            for (int i = 0; i < v.size(); i++){
-                MAudit.Violation violation = (MAudit.Violation)v.elementAt(i);
-                Element error = doc.createElement("violation");
-                error.setAttribute("line", String.valueOf(violation.line));
-                error.setAttribute("message", violation.error);
-                clazz.appendChild(error);
-            }
-            rootElement.appendChild(clazz);
-        }
-        rootElement.setAttribute("violations", String.valueOf(errors));
-
-        // now write it to the outputstream, not very nice code
-        if (xmlOut != null) {
-            Writer wri = null;
-            try {
-                wri = new OutputStreamWriter(xmlOut, "UTF-8");
-                wri.write("<?xml version=\"1.0\"?>\n");
-                (new DOMElementWriter()).write(rootElement, wri, 0, "  ");
-                wri.flush();
-            } catch(IOException exc) {
-                task.log("Unable to write log file", Project.MSG_ERR);
-            } finally {
-                if (xmlOut != System.out && xmlOut != System.err) {
-                    if (wri != null) {
-                        try {
-                            wri.close();
-                        } catch (IOException e) {}
-                    }
-                }
-            }
-        }
-
-    }
-
-    protected static DocumentBuilder getDocumentBuilder() {
-        try {
-            return DocumentBuilderFactory.newInstance().newDocumentBuilder();
-        }
-        catch(Exception exc) {
-            throw new ExceptionInInitializerError(exc);
-        }
-    }
-
-    /** read each line and process it */
-    protected void parseOutput(BufferedReader br) throws IOException {
-        String line = null;
-        while ( (line = br.readLine()) != null ){
-            processLine(line);
-        }
-    }
-
-    // we suppose here that there is only one report / line.
-    // There will obviouslly be a problem if the message is on several lines...
-    protected void processLine(String line){
-        Vector matches = matcher.getGroups(line);
-        if (matches != null) {
-            String file = (String)matches.elementAt(1);
-            int lineNum = Integer.parseInt((String)matches.elementAt(2));
-            String msg = (String)matches.elementAt(3);
-            addViolationEntry(file, MAudit.createViolation(lineNum, msg) );
-        } else {
-            // this doesn't match..report it as info, it could be
-            // either the copyright, summary or a multiline message (damn !)
-            task.log(line, Project.MSG_INFO);
-        }
-    }
-
-    /** add a violation entry for the file */
-    protected void addViolationEntry(String file, MAudit.Violation entry){
-            Vector violations = (Vector)auditedFiles.get(file);
-            // if there is no decl for this file yet, create it.
-            if (violations == null){
-                violations = new Vector();
-                auditedFiles.put(file, violations);
-            }
-            violations.add( entry );
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java
deleted file mode 100644
index 20049ad..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java
+++ /dev/null
@@ -1,291 +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", "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.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.*;
-
-
-
-import java.io.*;
-import java.util.*;
-
-/**
- * Calculates global complexity and quality metrics on Java source code.
- *
- * You will not be able to use this task with the evaluation version since
- * as of Metamata 2.0, Metrics does not support command line :-(
- *
- * For more information, visit the website at
- * <a href="http://www.metamata.com">www.metamata.com</a>
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class MMetrics extends AbstractMetamataTask {
-/*
-    The command line options as of Metamata 2.0 are as follows:
-
-Usage
-    mmetrics <option>... <path>...
-
-Parameters
-    path              File or directory to measure.
-
-Options
-    -arguments   -A   <file>      Includes command line arguments from file.
-    -classpath   -cp  <path>      Sets class path (also source path unless one
-                                  explicitly set). Overrides METAPATH/CLASSPATH.
-    -compilation-units            Measure compilation units.
-    -files                        Measure compilation units.
-    -format      -f   <format>    Sets output format, default output file type.
-    -help        -h               Prints help and exits.
-    -indent      -i   <string>    Sets string used to indent labels one level.
-    -methods                      Measure methods, types, and compilation units.
-    -output      -o   <file>      Sets output file name.
-    -quiet       -q               Suppresses copyright message.
-    -sourcepath       <path>      Sets source path. Overrides SOURCEPATH.
-    -types                        Measure types and compilation units.
-    -verbose     -v               Prints all messages.
-    -version     -V               Prints version and exits.
-
-Format Options
-    comma csv                     Format output as comma-separated text.
-    html htm                      Format output as an HTML table.
-    tab tab-separated tsv         Format output as tab-separated text.
-    text txt                      Format output as space-aligned text.
-*/
-
-    /** the granularity mode. Should be one of 'files', 'methods' and 'types'. */
-    protected String granularity = null;
-
-    /** the XML output file */
-    protected File outFile = null;
-    
-    /** the location of the temporary txt report */
-    protected File tmpFile = createTmpFile();
-
-    protected Path path = null;
-
-    //--------------------------- PUBLIC METHODS -------------------------------
-
-    /** default constructor */
-    public MMetrics() {
-        super("com.metamata.sc.MMetrics");
-    }
-
-    /**
-     * set the granularity of the audit. Should be one of 'files', 'methods'
-     * or 'types'.
-     * @param granularity   the audit reporting mode.
-     */
-    public void setGranularity(String granularity){
-        this.granularity = granularity;
-    }
-
-    /**
-     * Set the output XML file
-     * @param file the xml file to write the XML report to.
-     */
-    public void setTofile(File file){
-        this.outFile = file;
-    }
-
-    /**
-     * Set a new path (directory) to measure metrics from.
-     * @return the path instance to use.
-     */
-    public Path createPath(){
-        if (path == null) {
-            path = new Path(project);
-        }
-        return path;
-
-    }
-
-    //------------------- PROTECTED / PRIVATE METHODS --------------------------
-
-
-    // check for existing options and outfile, all other are optional
-    protected void checkOptions() throws BuildException {
-        super.checkOptions();
-
-        if ( !"files".equals(granularity) && !"methods".equals(granularity)
-           && !"types".equals(granularity) ){
-            throw new BuildException("Metrics reporting granularity is invalid. Must be one of 'files', 'methods', 'types'");
-        }
-        if (outFile == null){
-            throw new BuildException("Output XML file must be set via 'tofile' attribute.");
-        }
-        if (path == null && fileSets.size() == 0){
-            throw new BuildException("Must set either paths (path element) or files (fileset element)");
-        }
-        // I don't accept dirs and files at the same time, I cannot recognize the semantic in the result
-        if (path != null && fileSets.size() > 0){
-            throw new BuildException("Cannot set paths (path element) and files (fileset element) at the same time");
-        }
-    }
-
-    protected void execute0(ExecuteStreamHandler handler) throws BuildException {
-        super.execute0(handler);
-        transformFile();
-    }
-    
-    /**
-     * transform the generated file via the handler
-     * This function can either be called if the result is written to the output
-     * file via -output or we could use the handler directly on stdout if not.
-     * @see #createStreamHandler()
-     */
-    protected void transformFile() throws BuildException {
-        FileInputStream tmpStream = null;
-        try {
-            tmpStream = new FileInputStream( tmpFile );
-        } catch (IOException e){
-            throw new BuildException("Error reading temporary file: " + tmpFile, e);
-        }
-        FileOutputStream xmlStream = null;
-        try {
-            xmlStream = new FileOutputStream(outFile);
-            ExecuteStreamHandler xmlHandler = new MMetricsStreamHandler(this, xmlStream);
-            xmlHandler.setProcessOutputStream(tmpStream);
-            xmlHandler.start();
-            xmlHandler.stop();
-        } catch (IOException e){
-            throw new BuildException("Error creating output file: " + outFile, e);
-        } finally {
-            if (xmlStream != null){
-                try {
-                    xmlStream.close();
-                } catch (IOException ignored){}
-            }
-            if (tmpStream != null){
-                try {
-                    tmpStream.close();
-                } catch (IOException ignored){}
-            }
-        }
-    }
-    
-
-    /** cleanup the temporary txt report */
-    protected void cleanUp() throws BuildException {
-        try {
-            super.cleanUp();
-        } finally {
-            if (tmpFile != null){
-                tmpFile.delete();
-                tmpFile = null;
-            }
-        }
-    }
-
-    /**
-     * if the report is transform via a temporary txt file we should use a
-     * a normal logger here, otherwise we could use the metrics handler
-     * directly to capture and transform the output on stdout to XML.
-     */
-    protected ExecuteStreamHandler createStreamHandler(){
-        // write the report directtly to an XML stream
-        // return new MMetricsStreamHandler(this, xmlStream);
-        return new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_INFO);
-    }
-
-
-    protected Vector getOptions(){
-        Vector options = new Vector(512);
-        // there is a bug in Metamata 2.0 build 37. The sourcepath argument does
-        // not work. So we will use the sourcepath prepended to classpath. (order
-        // is important since Metamata looks at .class and .java)
-        if (sourcePath != null){
-            sourcePath.append(classPath); // srcpath is prepended
-            classPath = sourcePath;
-            sourcePath = null; // prevent from using -sourcepath
-        }
-                
-        // don't forget to modify the pattern if you change the options reporting
-        if (classPath != null){
-            options.addElement("-classpath");
-            options.addElement(classPath);
-        }
-        options.addElement( "-output" );
-        options.addElement( tmpFile.toString() );
-        
-        options.addElement( "-" + granularity);
-        
-        // display the metamata copyright
-        // options.addElement( "-quiet");
-        options.addElement( "-format");
-        
-        // need this because that's what the handler is using, it's
-        // way easier to process than any other separator
-        options.addElement( "tab");
-        
-        // specify a / as the indent character, used by the handler.
-        options.addElement( "-i");
-        options.addElement( "/");
-        
-        // directories
-        String[] dirs = path.list();
-        for (int i = 0; i < dirs.length; i++){
-            options.addElement( dirs[i] );
-        }
-        // files next. 
-        addAllVector(options, includedFiles.keys());
-        return options;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MMetricsStreamHandler.java b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MMetricsStreamHandler.java
deleted file mode 100644
index a5ad561..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MMetricsStreamHandler.java
+++ /dev/null
@@ -1,420 +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.xml.sax.*;
-import org.xml.sax.helpers.*;
-import javax.xml.transform.*;
-import javax.xml.transform.stream.*;
-import javax.xml.transform.sax.*;
-import java.util.*;
-import java.io.*;
-import java.text.*;
-
-import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.Project;
-
-/**
- * A handy metrics handler. Most of this code was done only with the
- * screenshots on the documentation since the evaluation version as
- * of this writing does not allow to save metrics or to run it via
- * command line. 
- * <p>
- * This class can be used to transform a text file or to process the
- * output stream directly.
- *
- * @author  <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class MMetricsStreamHandler implements ExecuteStreamHandler {
-
-    /** CLASS construct, it should be named something like 'MyClass' */
-    protected final static String CLASS = "class";
-    
-    /** package construct, it should be look like 'com.mycompany.something' */
-    protected final static String PACKAGE = "package";
-    
-    /** FILE construct, it should look like something 'MyClass.java' or 'MyClass.class' */
-    protected final static String FILE = "file";
-    
-    /** METHOD construct, it should looke like something 'doSomething(...)' or 'doSomething()' */
-    protected final static String METHOD = "method";
-    
-    protected final static String[] ATTRIBUTES = { "name", "vg", "loc",
-    "dit", "noa", "nrm", "nlm", "wmc", "rfc", "dac", "fanout", "cbo", "lcom", "nocl"
-    };
-    
-    /** reader for stdout */
-    protected InputStream metricsOutput;
-    
-    /**
-     * this is where the XML output will go, should mostly be a file
-     * the caller is responsible for flushing and closing this stream
-     */
-    protected OutputStream xmlOutputStream;
-
-    /** metrics handler */
-    protected TransformerHandler metricsHandler;
-    
-    /** the task */
-    protected Task task;
-
-    /**
-     * the stack where are stored the metrics element so that they we can
-     * know if we have to close an element or not.
-     */
-    protected Stack stack = new Stack();
-          
-    /** initialize this handler */
-    MMetricsStreamHandler(Task task, OutputStream xmlOut){
-        this.task = task;
-        this.xmlOutputStream = xmlOut;
-    }
-
-    /** Ignore. */
-    public void setProcessInputStream(OutputStream p1) throws IOException {
-    }
-
-    /** Ignore. */
-    public void setProcessErrorStream(InputStream p1) throws IOException {
-    }
-
-    /** Set the inputstream */
-    public void setProcessOutputStream(InputStream is) throws IOException {
-            metricsOutput = is;
-    }
-
-    public void start() throws IOException {
-        // create the transformer handler that will be used to serialize
-        // the output.
-        TransformerFactory factory = TransformerFactory.newInstance();
-        if ( !factory.getFeature(SAXTransformerFactory.FEATURE) ){
-            throw new IllegalStateException("Invalid Transformer factory feature");
-        }
-        try {
-            metricsHandler = ((SAXTransformerFactory)factory).newTransformerHandler();
-            metricsHandler.setResult( new StreamResult( new OutputStreamWriter(xmlOutputStream, "UTF-8")) );
-            Transformer transformer = metricsHandler.getTransformer();
-            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-            
-            // start the document with a 'metrics' root
-            metricsHandler.startDocument();
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("", "company", "company", "CDATA", "metamata");
-            metricsHandler.startElement("", "metrics", "metrics", attr);
-
-            // now parse the whole thing
-            parseOutput();
-
-        } catch (Exception e){
-            e.printStackTrace();
-            throw new IOException(e.getMessage());
-        }
-    }
-
-    /**
-     * Pretty dangerous business here. 
-     */
-    public void stop() {
-        try {
-            // we need to pop everything and close elements that have not been
-            // closed yet.
-            while ( stack.size() > 0){
-                ElementEntry elem = (ElementEntry)stack.pop();
-                metricsHandler.endElement("", elem.getType(), elem.getType());
-            }
-            // close the root
-            metricsHandler.endElement("", "metrics", "metrics");
-            // document is finished for good
-            metricsHandler.endDocument();
-        } catch (SAXException e){
-            e.printStackTrace();
-            throw new IllegalStateException(e.getMessage());
-        }
-    }  
-
-    /** read each line and process it */
-    protected void parseOutput() throws IOException, SAXException {
-        BufferedReader br = new BufferedReader(new InputStreamReader(metricsOutput));
-        String line = null;
-        while ( (line = br.readLine()) != null ){
-            processLine(line);
-        }
-    }
-
-    /**
-     * Process a metrics line. If the metrics is invalid and that this is not
-     * the header line, it is display as info.
-     * @param line the line to process, it is normally a line full of metrics.
-     */
-    protected void processLine(String line) throws SAXException {
-        if ( line.startsWith("Construct\tV(G)\tLOC\tDIT\tNOA\tNRM\tNLM\tWMC\tRFC\tDAC\tFANOUT\tCBO\tLCOM\tNOCL") ){
-            return;
-        }
-        try {
-            MetricsElement elem = MetricsElement.parse(line);
-            startElement(elem);
-        } catch (ParseException e) {
-        	e.printStackTrace();
-            // invalid lines are sent to the output as information, it might be anything,
-           task.log(line, Project.MSG_INFO);
-        }
-    }
-    
-    /**
-     * Start a new construct. Elements are popped until we are on the same
-     * parent node, then the element type is guessed and pushed on the
-     * stack.
-     * @param elem the element to process.
-     * @throws SAXException thrown if there is a problem when sending SAX events.
-     */
-    protected void startElement(MetricsElement elem) throws SAXException {
-        // if there are elements in the stack we possibly need to close one or
-        // more elements previous to this one until we got its parent
-        int indent = elem.getIndent();
-        if ( stack.size() > 0 ){
-            ElementEntry previous = (ElementEntry)stack.peek();
-            // close nodes until you got the parent.
-            try {
-                while ( indent <= previous.getIndent() && stack.size() > 0){
-                    stack.pop();
-                    metricsHandler.endElement("", previous.getType(), previous.getType());
-                        previous = (ElementEntry)stack.peek();
-                }
-            } catch (EmptyStackException ignored){}
-        }
-        
-        // ok, now start the new construct
-        String type = getConstructType(elem);
-        Attributes attrs = createAttributes(elem);
-        metricsHandler.startElement("", type, type, attrs);
-
-        // make sure we keep track of what we did, that's history
-        stack.push( new ElementEntry(type, indent) );
-    }
-
-    /**
-     * return the construct type of the element. We can hardly recognize the
-     * type of a metrics element, so we are kind of forced to do some black
-     * magic based on the name and indentation to recognize the type.
-     * @param elem  the metrics element to guess for its type.
-     * @return the type of the metrics element, either PACKAGE, FILE, CLASS or
-     * METHOD.
-     */
-    protected String getConstructType(MetricsElement elem){
-        // ok no doubt, it's a file
-        if ( elem.isCompilationUnit() ){
-            return FILE;
-        }
-        
-        // same, we're sure it's a method
-        if ( elem.isMethod() ){
-            return METHOD;
-        }
-
-        // if it's empty, and none of the above it should be a package
-        if ( stack.size() == 0 ){
-            return PACKAGE;
-        }
-        
-        // ok, this is now black magic time, we will guess the type based on
-        // the previous type and its indent...
-        final ElementEntry previous = (ElementEntry)stack.peek();
-        final String prevType = previous.getType();
-        final int prevIndent = previous.getIndent();
-        final int indent = elem.getIndent();
-        // we're just under a file with a bigger indent so it's a class
-        if ( prevType.equals(FILE) && indent > prevIndent ){
-            return CLASS;
-        }
-
-        // we're just under a class with a greater or equals indent, it's a class
-        // (there might be several classes in a compilation unit and inner classes as well)
-        if ( prevType.equals(CLASS) && indent >= prevIndent ){
-            return CLASS;
-        }
-        
-        // we assume the other are package
-        return PACKAGE;
-    }    
-    
-    
-    /**
-     * Create all attributes of a MetricsElement skipping those who have an
-     * empty string
-     * @param   elem    
-     */
-    protected Attributes createAttributes(MetricsElement elem){
-        AttributesImpl impl = new AttributesImpl();
-        int i = 0;
-        String name = ATTRIBUTES[i++];
-        impl.addAttribute("", name, name, "CDATA", elem.getName());
-        Enumeration metrics = elem.getMetrics();
-        for (; metrics.hasMoreElements(); i++){
-            String value = (String)metrics.nextElement();
-            if ( value.length() > 0 ){
-                name = ATTRIBUTES[i];
-                impl.addAttribute("", name, name, "CDATA", value);
-            }
-        }
-        return impl;
-    }
-    
-    /**
-     * helper class to keep track of elements via its type and indent
-     * that's all we need to guess a type.
-     */
-    private final static class ElementEntry {
-        private String type;
-        private int indent;
-        ElementEntry(String type, int indent){
-            this.type = type;
-            this.indent = indent;
-        }
-        public String getType(){
-            return type;
-        }
-        public int getIndent() {
-            return indent;
-        }
-    }
-}
-
-class MetricsElement {
-
-	private final static NumberFormat METAMATA_NF;
-	
-	private final static NumberFormat NEUTRAL_NF;
-	static {
-        METAMATA_NF = NumberFormat.getInstance();
-        METAMATA_NF.setMaximumFractionDigits(1);
-        NEUTRAL_NF = NumberFormat.getInstance();
-		if (NEUTRAL_NF instanceof DecimalFormat) {
-			((DecimalFormat) NEUTRAL_NF).applyPattern("###0.###;-###0.###");
-		}
-        NEUTRAL_NF.setMaximumFractionDigits(1);
-	}
-    
-    private int indent;
-    
-    private String construct;
-    
-    private Vector metrics;
-    
-    MetricsElement(int indent, String construct, Vector metrics){
-        this.indent = indent;
-        this.construct = construct;
-        this.metrics = metrics;
-    }
-    
-    public int getIndent(){
-        return indent;
-    }
-    
-    public String getName(){
-        return construct;
-    }
-
-    public Enumeration getMetrics(){
-        return metrics.elements();
-    }
-    
-    public boolean isCompilationUnit(){
-        return ( construct.endsWith(".java") || construct.endsWith(".class") );
-    }
-        
-    public boolean isMethod(){
-        return ( construct.endsWith("(...)") || construct.endsWith("()") );
-    }
-    
-    public static MetricsElement parse(String line) throws ParseException {
-        final Vector metrics = new Vector();
-        int pos;
-        
-        // i'm using indexOf since I need to know if there are empty strings
-        // between tabs and I find it easier than with StringTokenizer
-        while ( (pos = line.indexOf('\t')) != -1 ){
-            String token = line.substring(0, pos);
-            // only parse what coudl be a valid number. ie not constructs nor no value
-            /*if (metrics.size() != 0 || token.length() != 0){
-	            Number num = METAMATA_NF.parse(token); // parse with Metamata NF
-	            token = NEUTRAL_NF.format(num.doubleValue()); // and format with a neutral NF
-	        }*/
-            metrics.addElement( token );
-            line = line.substring(pos + 1);
-        }
-        metrics.addElement( line );
-        
-        // there should be exactly 14 tokens (1 name + 13 metrics), if not, there is a problem !
-        if ( metrics.size() != 14 ){
-            throw new ParseException("Could not parse the following line as a metrics: -->" + line +"<--", -1);
-        }
-        
-        // remove the first token it's made of the indentation string and the
-        // construct name, we'll need all this to figure out what type of
-        // construct it is since we lost all semantics :(
-        // (#indent[/]*)(#construct.*)
-        String name = (String)metrics.elementAt(0);
-        metrics.removeElementAt(0);
-        int indent = 0;
-        pos = name.lastIndexOf('/');
-        if (pos != -1){
-            name = name.substring(pos + 1);
-            indent = pos + 1; // indentation is last position of token + 1
-        }
-        return new MetricsElement(indent, name, metrics);
-    }
-}
-
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 038935f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java
+++ /dev/null
@@ -1,351 +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.*;
-import java.util.*;
-
-/**
- * Simple Metamata MParse task based on the original written by
- * <a href="mailto:thomas.haas@softwired-inc.com">Thomas Haas</a>
- * 
- * This version was written for Metamata 2.0 available at
- * <a href="http://www.metamata.com">http://www.metamata.com</a>
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class MParse extends Task {
-
-    private Path classpath = null;
-    private Path sourcepath = null;
-    private File metahome = null;
-    private File target = null;
-    private boolean verbose = false;
-    private boolean debugparser = false;
-    private boolean debugscanner = false;    
-    private boolean cleanup = false;
-    private CommandlineJava cmdl = new CommandlineJava();
-    private File optionsFile = null;
-
-    /** location of metamata dev environment */
-    public void setMetamatahome(File metamatahome) {
-        this.metahome = metamatahome;
-    }
-
-    /** the .jj file to process */
-    public void setTarget(File target) {
-        this.target = target;
-    }
-
-    /** create a classpath entry */
-    public Path createClasspath() {
-        if (classpath == null) {
-            classpath = new Path(project);
-        }        
-        return classpath;
-    }
-
-    /** creates a sourcepath entry */
-    public Path createSourcepath() {
-        if (sourcepath == null) {
-            sourcepath = new Path(project);
-        }        
-        return sourcepath;
-    }
-
-    /** set verbose mode */
-    public void setVerbose(boolean flag){
-        verbose = flag;
-    }
-
-    /** set scanner debug mode */
-    public void setDebugscanner(boolean flag){
-        debugscanner = flag;
-    }
-
-    /** set parser debug mode */
-    public void setDebugparser(boolean flag){
-        debugparser = flag;
-    }
-
-    /** set the hack to cleanup the temp file */
-    public void setCleanup(boolean value) {
-        cleanup = value;
-    }
-
-    /** Creates a nested jvmarg element. */
-    public Commandline.Argument createJvmarg() {
-        return cmdl.createVmArgument();
-    }
-
-    /**  -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);
-        }
-    }
-
-    public MParse() {
-        cmdl.setVm("java");
-        cmdl.setClassname("com.metamata.jj.MParse");
-    }
-
-   
-    /** execute the command line */
-    public void execute() throws BuildException {
-        try {
-            setUp();
-            ExecuteStreamHandler handler = createStreamHandler();
-            _execute(handler);
-        } finally {
-            cleanUp();
-        }
-    }
-    
-    /** return the default stream handler for this task */
-    protected ExecuteStreamHandler createStreamHandler(){
-        return new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_INFO);
-    }
-    
-    /**
-     * check the options and build the command line
-     */
-    protected void setUp() throws BuildException {
-        checkOptions();
-
-        // set the classpath as the jar files
-        File[] jars = getMetamataLibs();
-        final Path classPath = cmdl.createClasspath(project);
-        for (int i = 0; i < jars.length; i++){
-            classPath.createPathElement().setLocation(jars[i]);
-        }
-
-        // set the metamata.home property
-        final Commandline.Argument vmArgs = cmdl.createVmArgument();
-        vmArgs.setValue("-Dmetamata.home=" + metahome.getAbsolutePath() );
-
-
-        // write all the options to a temp file and use it ro run the process
-        String[] options = getOptions();
-        optionsFile = createTmpFile();
-        generateOptionsFile(optionsFile, options);
-        Commandline.Argument args = cmdl.createArgument();
-        args.setLine("-arguments " + optionsFile.getAbsolutePath());
-    }    
-
-    
-    /** execute the process with a specific handler */
-    protected void _execute(ExecuteStreamHandler handler) throws BuildException {
-        // target has been checked as a .jj, see if there is a matching
-        // java file and if it is needed to run to process the grammar
-        String pathname = target.getAbsolutePath();
-        int pos = pathname.length() - ".jj".length();
-        pathname = pathname.substring(0, pos) + ".java";
-        File javaFile = new File(pathname);
-        if (javaFile.exists() && target.lastModified() < javaFile.lastModified()) {
-            project.log("Target is already build - skipping (" + target + ")");
-            return;
-        }
-        
-        final Execute process = new Execute(handler);
-        log(cmdl.toString(), Project.MSG_VERBOSE);
-        process.setCommandline(cmdl.getCommandline());
-        try {
-            if (process.execute() != 0) {
-                throw new BuildException("Metamata task failed.");
-            }
-        } catch (IOException e){
-            throw new BuildException("Failed to launch Metamata task: " + e);
-        }
-    }    
-    
-    /** clean up all the mess that we did with temporary objects */
-    protected void cleanUp(){
-        if (optionsFile != null){
-            optionsFile.delete();
-            optionsFile = null;
-        }
-        if (cleanup) {
-            String name = target.getName();
-            int pos = name.length() - ".jj".length();
-            name = "__jj" + name.substring(0, pos) + ".sunjj";
-            final File sunjj = new File(target.getParent(), name);
-            if (sunjj.exists()) {
-                project.log("Removing stale file: " + sunjj.getName());
-                sunjj.delete();
-            }
-        }
-    }
-    
-    /**
-     * return an array of files containing the path to the needed
-     * libraries to run metamata. The file are not checked for
-     * existence. You should do this yourself if needed or simply let the
-     * forked process do it for you.
-     * @return array of jars/zips needed to run metamata.
-     */
-    protected File[] getMetamataLibs(){
-        Vector files = new Vector();
-        files.addElement( new File(metahome, "lib/metamata.jar") );
-        files.addElement( new File(metahome, "bin/lib/JavaCC.zip") );
-        
-        File[] array = new File[ files.size() ];
-        files.copyInto(array);
-        return array;
-    }
-    
-    
-    /**
-     * validate options set and resolve files and paths
-     * @throws BuildException thrown if an option has an incorrect state.
-     */
-    protected void checkOptions() throws BuildException {       
-        // check that the home is ok.
-        if (metahome == null || !metahome.exists()){
-            throw new BuildException("'metamatahome' must point to Metamata home directory.");
-        }
-        metahome = project.resolveFile(metahome.getPath());
-        
-        // check that the needed jar exists.
-        File[] jars = getMetamataLibs();
-        for (int i = 0; i < jars.length; i++){
-            if (!jars[i].exists()){
-                throw new BuildException( jars[i] + " does not exist. Check your metamata installation.");
-            }           
-        }
-        
-        // check that the target is ok and resolve it.
-        if (target == null || !target.isFile() || !target.getName().endsWith(".jj") ) {
-            throw new BuildException("Invalid target: " + target);
-        }
-        target = project.resolveFile(target.getPath());
-    }    
-    
-    /**
-     * return all options of the command line as string elements
-     * @param an array of options corresponding to the setted options.
-     */
-    protected String[] getOptions(){
-        Vector options = new Vector();
-        if (verbose){
-            options.addElement("-verbose");
-        }
-        if (debugscanner){
-            options.addElement("-ds");
-        }
-        if (debugparser){
-            options.addElement("-dp");
-        }
-        if (classpath != null){
-            options.addElement("-classpath");
-            options.addElement(classpath.toString());
-        }
-        if (sourcepath != null){
-            options.addElement("-sourcepath");
-            options.addElement(sourcepath.toString());
-        }
-        options.addElement(target.getAbsolutePath());
-        
-        String[] array = new String[options.size()];
-        options.copyInto(array);
-        return array;
-    }
-    
-    /**
-     * write all options to a file with one option / line
-     * @param tofile the file to write the options to.
-     * @param options the array of options element to write to the file.
-     * @throws BuildException thrown if there is a problem while writing
-     * to the file.
-     */
-    protected void generateOptionsFile(File tofile, String[] options) throws BuildException {
-        FileWriter fw = null;
-        try {
-            fw = new FileWriter(tofile);
-            PrintWriter pw = new PrintWriter(fw);
-            for (int i = 0; i < options.length; i++){
-                pw.println( options[i] );
-            }
-            pw.flush();
-        } catch (IOException e){
-            throw new BuildException("Error while writing options file " + tofile, e);
-        } finally {
-            if (fw != null){
-                try {
-                    fw.close();
-                } catch (IOException ignored){}
-            }
-        }
-    }
-    
-    /** create a temporary file in the current directory */
-    protected final static File createTmpFile(){
-        // must be compatible with JDK 1.1 !!!!
-        final long rand = (new Random(System.currentTimeMillis())).nextLong();
-        File file = new File("metamata" + rand + ".tmp");
-        return file;
-    }
-
-}
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 e9fa549..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
+++ /dev/null
@@ -1,928 +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>
- *
- * <strong>Note:</strong>
- * Some FTP servers - notably the Solaris server - seem to hold data ports
- * open after a "retr" operation, allowing them to timeout instead of
- * shutting them down cleanly.  This happens in active or passive mode,
- * and the ports will remain open even after ending the FTP session.
- * FTP "send" operations seem to close ports immediately.  This behavior
- * may cause problems on some systems when downloading large sets of files.
- *
- * @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;
-    protected final static int MK_DIR       = 4;
-
-    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;
-    private boolean skipFailedTransfers=false;
-    private int skipped=0;
-    private boolean ignoreNoncriticalErrors=false;
-
-    protected final static String[] ACTION_STRS = {
-        "sending",
-        "getting",
-        "deleting",
-        "listing",
-        "making directory"
-    };
-
-    protected final static String[] COMPLETED_ACTION_STRS = {
-        "sent",
-        "retrieved",
-        "deleted",
-        "listed",
-        "created directory"
-    };
-
-    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) {
-                    ftp.changeToParentDirectory();
-                    return;
-                }
-
-                for (int i = 0; i < newfiles.length; i++) {
-                    FTPFile file = newfiles[i];
-                    if (!file.getName().equals(".") && !file.getName().equals("..")) {
-                        if (file.isDirectory()) {
-                            String name = file.getName();
-                            if (isIncluded(name)) {
-                                if (!isExcluded(name)) {
-                                    dirsIncluded.addElement(name);
-                                    if (fast) {
-                                        scandir(name, vpath + name + File.separator, fast);
-                                    }
-                                } else {
-                                    dirsExcluded.addElement(name);
-                                }
-                            } else {
-                                dirsNotIncluded.addElement(name);
-                                if (fast && couldHoldIncluded(name)) {
-                                    scandir(name, vpath + name + File.separator, fast);
-                                }
-                            }
-                            if (!fast) {
-                                scandir(name, vpath + name + File.separator, fast);
-                            }
-                        } else {
-                            if (file.isFile()) {
-                                String name = vpath + file.getName();
-                                if (isIncluded(name)) {
-                                    if (!isExcluded(name)) {
-                                        filesIncluded.addElement(name);
-                                    } else {
-                                        filesExcluded.addElement(name);
-                                    }
-                                } else {
-                                    filesNotIncluded.addElement(name);
-                                }
-                            }
-                        }
-                    }
-                }
-                ftp.changeToParentDirectory();
-            } 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 if (action.toLowerCase().equals("mkdir"))
-        {
-            this.action = MK_DIR;
-        }
-        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;
-    }
-
-
-    /**
-     * set the failed transfer flag
-     */
-    public void setSkipFailedTransfers(boolean skipFailedTransfers) {
-        this.skipFailedTransfers=skipFailedTransfers;
-    }
-
-    /**
-     * set the flag to skip errors on dir creation (and maybe later other
-     * server specific errors)
-     */
-     public void setIgnoreNoncriticalErrors(boolean ignoreNoncriticalErrors) {
-         this.ignoreNoncriticalErrors=ignoreNoncriticalErrors;
-     }
-
-    /**
-     * 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!");
-        }
-
-        if( action == MK_DIR && remotedir == null ) {
-            throw new BuildException("remotedir attribute must be set for mkdir 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;
-        skipped=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]);
-        if(skipped!=0) {
-            log(skipped + " files were not successfully "+ 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.
-                int result=ftp.getReplyCode();
-                if (!FTPReply.isPositiveCompletion(result) &&
-                     (result != 550) && (result!= 553)   &&
-                     !ignoreNoncriticalErrors)
-                {
-                    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 (files == null)
-        {
-            // If we are sending files, then assume out of date.
-            // If we are getting files, then throw an error
-
-            if( action == SEND_FILES ) {
-                log("Could not date test remote file: " + remoteFile
-                    + "assuming out of date.", Project.MSG_VERBOSE);
-                return false;
-            } else {
-                throw new BuildException("could not date test remote file: " +
-                                         ftp.getReplyString());
-            }
-        }
-
-        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);
-            boolean success=FTPReply.isPositiveCompletion(ftp.getReplyCode());
-            if (!success)
-            {
-                String s="could not put file: " + ftp.getReplyString();
-                if(skipFailedTransfers==true) {
-                    log(s,Project.MSG_WARN);
-                    skipped++;
-                }
-                else {
-                    throw new BuildException(s);
-                }
-
-            }
-            else {
-
-                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))) {
-            String s="could not delete file: " + ftp.getReplyString();
-            if(skipFailedTransfers==true) {
-                log(s,Project.MSG_WARN);
-                skipped++;
-            }
-            else {
-                throw new BuildException(s);
-            }
-        }
-        else {
-            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()))
-            {
-                String s="could not get file: " + ftp.getReplyString();
-                if(skipFailedTransfers==true) {
-                    log(s,Project.MSG_WARN);
-                    skipped++;
-                }
-                else {
-                    throw new BuildException(s);
-                }
-
-            }
-            else {
-                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++;
-    }
-
-    /**
-     * Create the specified directory on the remote host.
-     * @param ftp The FTP client connection
-     * @param dir The directory to create (format must be correct for host type)
-     */
-    protected void makeRemoteDir( FTPClient ftp, String dir )
-        throws IOException, BuildException
-    {
-        if (verbose) {
-            log("creating directory: " + dir);
-        }
-
-        if( ! ftp.makeDirectory( dir ) ) {
-            // 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.
-
-            int rc = ftp.getReplyCode();
-            if( rc != 550 && rc != 553 && !ignoreNoncriticalErrors) {
-                throw new BuildException( "could not create directory: " +
-                                          ftp.getReplyString() );
-            }
-
-            if( verbose ) {
-                log( "directory already exists" );
-            }
-        } else {
-            if( verbose ) {
-                log( "directory created OK" );
-            }
-        }
-    }
-
-    /**
-     * 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 the action is MK_DIR, then the specified remote directory is the
-            // directory to create.
-
-            if( action == MK_DIR ) {
-
-                makeRemoteDir( ftp, remotedir );
-
-            } else {
-                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
-                {
-                    log("disconnecting", Project.MSG_VERBOSE);
-                    ftp.logout();
-                    ftp.disconnect();
-                }
-                catch(IOException ex)
-                {
-                    // ignore it
-                }
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/MimeMail.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/MimeMail.java
deleted file mode 100644
index 251096f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/MimeMail.java
+++ /dev/null
@@ -1,432 +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.net;
-
-
-// Standard SDK imports
-import java.util.Properties;
-import java.util.Vector;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-
-//imported for the mail api
-import javax.mail.Address;
-import javax.mail.Session;
-import javax.mail.Message;
-import javax.mail.BodyPart;
-import javax.mail.Multipart;
-import javax.mail.SendFailedException;
-import javax.mail.MessagingException;
-import javax.mail.Transport;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMultipart;
-import javax.mail.internet.AddressException;
-
-//imported for data source and handler
-import javax.activation.DataHandler;
-import javax.activation.FileDataSource;
-
-// Ant imports
-import org.apache.tools.ant.Task;
-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 org.apache.tools.ant.types.EnumeratedAttribute;
-import org.apache.tools.ant.types.FileSet;
-
-
-
-/**
- * A task to send SMTP email. This version has near identical syntax to
- * the SendEmail task, but is MIME aware. It also requires Sun's mail.jar and
- * activation.jar to compile and execute, which puts it clearly into the
- * very optional category.
- *
- * @author glenn_twiggs@bmc.com
- * @author steve_l@iseran.com steve loughran
- * @author erik@hatcher.net Erik Hatcher
- * @author paulo.gaspar@krankikom.de Paulo Gaspar
- * @created 01 May 2001
- */
-public class MimeMail extends Task {
-    /**
-     * failure flag
-     */
-    private boolean failOnError = true;
-
-    /**
-     * sender
-     */
-    private String from = null;
-
-    /**
-     * host running SMTP
-     */
-    private String mailhost = "localhost";
-
-    /**
-     * any text
-     */
-    private String message = null;
-
-
-    /**
-     *  message file (mutually exclusive from message)
-     */
-    private File messageFile = null;
-
-    /**
-     * TO recipients
-     */
-    private String toList = null;
-
-    /**
-     * CC (Carbon Copy) recipients
-     */
-    protected String   ccList  = null;
-
-    /**
-     * BCC (Blind Carbon Copy) recipients
-     */
-    protected String   bccList  = null;
-
-    /**
-     * subject field
-     */
-    private String subject = null;
-
-    /**
-     * file list
-     */
-    private Vector filesets = new Vector();
-
-    /**
-     * type of the text message, plaintext by default but text/html or
-     * text/xml is quite feasible
-     */
-    private String messageMimeType = "text/plain";
-
-    /**
-     * Creates new instance
-     */
-    public MimeMail() {
-    }
-
-
-    /**
-     * Sets the FailOnError attribute of the MimeMail object
-     *
-     * @param failOnError The new FailOnError value
-     */
-    public void setFailOnError(boolean failOnError) {
-        this.failOnError = failOnError;
-    }
-
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
-
-    /**
-     * 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 toList parameter of this build task.
-     *
-     * @param toList Comma-separated list of email recipient addreses.
-     */
-    public void setCcList(String ccList) {
-        this.ccList = ccList;
-    }
-
-    /**
-     * Sets the toList parameter of this build task.
-     *
-     * @param toList Comma-separated list of email recipient addreses.
-     */
-    public void setBccList(String bccList) {
-        this.bccList = bccList;
-    }
-
-
-    /**
-     * 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;
-    }
-
-    public void setMessageFile(File messageFile) {
-        this.messageFile = messageFile;
-    }
-
-
-    /**
-     * set type of the text message, plaintext by default but text/html
-     * or text/xml is quite feasible
-     *
-     * @param type The new MessageMimeType value
-     */
-    public void setMessageMimeType(String type) {
-        this.messageMimeType = type;
-    }
-
-    /**
-     * Sets the subject parameter of this build task.
-     *
-     * @param subject Subject of this email.
-     */
-    public void setSubject(String subject) {
-        this.subject = subject;
-    }
-
-
-    /**
-     * verify parameters
-     *
-     * @throws BuildException if something is invalid
-     */
-    public void validate() {
-        if (from == null) {
-            throw new BuildException("Attribute \"from\" is required.");
-        }
-
-        if ((toList == null) && (ccList == null) && (bccList == null)) {
-            throw new BuildException("Attribute \"toList\", \"ccList\" or \"bccList\" is required.");
-        }
-
-        if (message == null && filesets.isEmpty() && messageFile == null) {
-            throw new BuildException("FileSet, \"message\", or \"messageFile\" is required.");
-        }
-
-        if (message != null && messageFile != null) {
-            throw new BuildException("Only one of \"message\" or \"messageFile\" may be specified.");
-        }
-    }
-
-
-    /**
-     * Executes this build task. throws org.apache.tools.ant.BuildException
-     * if there is an error during task execution.
-     *
-     * @exception BuildException Description of Exception
-     */
-    public void execute()
-        throws BuildException {
-        try {
-            validate();
-            doMail();
-        }
-        catch (Exception e) {
-            if (failOnError) {
-                throw new BuildException(e);
-            }
-            else {
-                String text = e.toString();
-                log(text, Project.MSG_ERR);
-            }
-        }
-    }
-
-
-    // helper method to add recipients
-    private static void addRecipients( MimeMessage msg,
-                                       Message.RecipientType recipType,
-                                       String addrUserName,
-                                       String addrList
-                                     ) throws MessagingException, BuildException {
-        if ((null == addrList) || (addrList.trim().length() <= 0))
-            return;
-
-        try {
-            InternetAddress[] addrArray = InternetAddress.parse(addrList);
-
-            if ((null == addrArray) || (0 == addrArray.length))
-                throw new BuildException("Empty " + addrUserName + " recipients list was specified");
-
-            msg.setRecipients(recipType, addrArray);
-        }
-        catch(AddressException ae) {
-            throw new BuildException("Invalid " + addrUserName + " recipient list");
-        }
-    }
-
-    /**
-     * here is where the mail is sent
-     *
-     * @exception MessagingException Description of Exception
-     * @exception AddressException Description of Exception
-     * @exception BuildException Description of Exception
-     */
-    public void doMail()
-        throws MessagingException, AddressException, BuildException {
-        Properties props = new Properties();
-        props.put("mail.smtp.host", mailhost);
-
-        //Aside, the JDK is clearly unaware of the scottish 'session', which
-        //involves excessive quantities of alcohol :-)
-        Session sesh = Session.getDefaultInstance(props, null);
-
-        //create the message
-        MimeMessage msg = new MimeMessage(sesh);
-
-        //set the sender
-        log("message sender: " + from, Project.MSG_VERBOSE);
-        msg.setFrom(new InternetAddress(from));
-
-        // add recipient lists
-        addRecipients(msg, Message.RecipientType.TO,  "To",  toList);
-        addRecipients(msg, Message.RecipientType.CC,  "Cc",  ccList);
-        addRecipients(msg, Message.RecipientType.BCC, "Bcc", bccList);
-
-        if (subject != null) {
-            log("subject: " + subject, Project.MSG_VERBOSE);
-            msg.setSubject(subject);
-        }
-
-        //now the complex bit; adding multiple mime objects. And guessing
-        //the file type
-        MimeMultipart attachments = new MimeMultipart();
-
-        //first a message
-        if (messageFile != null) {
-            int size = (int)messageFile.length();
-            byte data[] = new byte[size];
-
-            try {
-                FileInputStream inStream = new FileInputStream(messageFile);
-                inStream.read(data);
-                inStream.close();
-                message = new String(data);
-            } catch (IOException e) {
-                throw new BuildException(e);
-            }
-        }
-
-        if (message != null) {
-            MimeBodyPart textbody = new MimeBodyPart();
-            textbody.setContent(message, messageMimeType);
-            attachments.addBodyPart(textbody);
-        }
-
-        for (int i = 0; i < filesets.size(); i++)
-        {
-            FileSet fs = (FileSet) filesets.elementAt(i);
-            if (fs != null)
-            {
-                DirectoryScanner ds = fs.getDirectoryScanner(project);
-                String[] dsfiles = ds.getIncludedFiles();
-                File baseDir = ds.getBasedir();
-
-                for (int j = 0; j < dsfiles.length; j++)
-                {
-                    File file = new File(baseDir, dsfiles[j]);
-                    MimeBodyPart body;
-                    body = new MimeBodyPart();
-                    if (!file.exists() || !file.canRead()) {
-                        throw new BuildException("File \"" + file.getAbsolutePath()
-                                 + "\" does not exist or is not readable.");
-                    }
-                    log("Attaching " + file.toString()+" - " +file.length()+" bytes",
-                        Project.MSG_VERBOSE);
-                    FileDataSource fileData = new FileDataSource(file);
-                    DataHandler fileDataHandler = new DataHandler(fileData);
-                    body.setDataHandler(fileDataHandler);
-                    body.setFileName(file.getName());
-                    attachments.addBodyPart(body);
-                } // for j
-            } // if (fs != null)
-        } // for i
-
-        msg.setContent(attachments);
-        log("sending email ");
-        Transport.send(msg);
-    }
-}
-
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 6450cf2..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Base.java
+++ /dev/null
@@ -1,183 +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...
-            if (P4Port != null && P4Port.length() != 0) {
-                commandline.createArgument().setValue(P4Port);
-            }
-            if (P4User != null && P4User.length() != 0) {
-                commandline.createArgument().setValue(P4User);
-            }
-            if (P4Client != null && P4Client.length() != 0) {
-                commandline.createArgument().setValue(P4Client);
-            }
-            commandline.createArgument().setLine(command);
-
-
-            String[] cmdline = commandline.getCommandline() ;
-            String cmdl = "";
-            for (int i=0 ; i < cmdline.length ; i++) {
-                cmdl += cmdline[i] + " ";
-            }
-    
-            log("Execing "+cmdl, 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 a576482..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Change.java
+++ /dev/null
@@ -1,143 +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;
-    protected String description = "AutoSubmit By Ant";
-
-    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>/" + description + "/", line);
-                                        
-                        } else if(util.match("/\\/\\//", line)) {
-                            //Match "//" for begining of depot filespec
-                            return;
-                        }
-                                    
-                        stringbuf.append(line);
-                        stringbuf.append("\n");
-                                
-                    }
-                }});
-                
-        return stringbuf.toString();
-    }
-
-    /* Set Description Variable. */
-    public void setDescription(String desc){
-        this.description = desc;
-    }
-
-} //EoF
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Counter.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Counter.java
deleted file mode 100644
index de6c296..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Counter.java
+++ /dev/null
@@ -1,138 +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/>.
- *
- * 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.*;
-
-/** P4Counter - Obtain or set the value of a counter.
- * P4Counter can be used to either print the value of a counter
- * to the output stream for the project (by setting the "name"
- * attribute only), to set a property based on the value of
- * a counter (by setting the "property" attribute) or to set the counter
- * on the perforce server (by setting the "value" attribute). 
- *
- * Example Usage:<br>
- * &lt;p4counter name="${p4.counter}" property=${p4.change}"/&gt;
- * @author <a href="mailto:kirk@radik.com">Kirk Wylie</a>
- */
- 
-public class P4Counter extends P4Base {
-    public String counter = null;
-    public String property = null;
-    public boolean shouldSetValue = false;
-    public boolean shouldSetProperty = false;
-    public int value = 0;
-
-    public void setName(String counter) {
-        this.counter = counter;
-    }
-
-    public void setValue(int value) {
-        this.value = value;
-        shouldSetValue = true;
-    }
-
-    public void setProperty(String property) {
-        this.property = property;
-        shouldSetProperty = true;
-    }
-
-    public void execute() throws BuildException {
-
-        if((counter == null) || counter.length() == 0) {
-            throw new BuildException("No counter specified to retrieve");
-        }
-
-        if(shouldSetValue && shouldSetProperty) {
-            throw new BuildException("Cannot both set the value of the property and retrieve the value of the property.");
-        }
-
-        String command = "counter " + P4CmdOpts + " " + counter;
-        if(!shouldSetProperty) {
-            // NOTE kirk@radik.com 04-April-2001 -- If you put in the -s, you
-            // have to start running through regular expressions here. Much easier
-            // to just not include the scripting information than to try to add it
-            // and strip it later.
-            command = "-s " + command;
-        }
-        if(shouldSetValue) {
-            command += " " + value;
-        }
-
-        if(shouldSetProperty) {
-            final Project myProj = project;
-
-            P4Handler handler = new P4HandlerAdapter() {
-                public void process(String line) {
-                    log("P4Counter retrieved line \""+ line + "\"", Project.MSG_VERBOSE);
-                    try {
-                        value = Integer.parseInt(line);
-                        myProj.setProperty(property, ""+value);
-                    } catch (NumberFormatException nfe) {
-                        throw new BuildException("Perforce error. Could not retrieve counter value.");
-                    }
-                }
-            };
-
-            execP4Command(command, handler);
-        } else {
-            execP4Command(command, new SimpleP4OutputHandler(this));
-        }
-    }
-}
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 ef86dc7..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.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/>.
- *
- * 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;
-    protected String lock;
-    
-    public void setName(String name) {
-        this.name = name;
-    }
-    
-    public void setDesc(String desc) {
-        this.desc = desc;
-    }
-   
- 	public void setLock(String lock)  {
-    	this.lock = lock;
- 	}
-        
-    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(lock != null && !lock.equalsIgnoreCase("locked")) {
-        	log("lock attribute invalid - ignoring",Project.MSG_WARN);
-		}
-        
-        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);
-        }
-        
-        
-        //We have to create a unlocked label first
-        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);
-
-        //Now lock if required
-        if (lock != null && lock.equalsIgnoreCase("locked"))  {
-        
-        	log("Modifying lock status to 'locked'",Project.MSG_INFO);
-
-        	final StringBuffer labelSpec = new StringBuffer();
-            
-			//Read back the label spec from perforce, 
-            //Replace Options
-            //Submit back to Perforce
-            
-        	handler = new P4HandlerAdapter()  {
-           		public void process(String line)  {
-                	log(line, Project.MSG_VERBOSE);
-                    
-					if(util.match("/^Options:/",line)) {
-   	                	line = "Options: "+lock;
-					}
-                    
-                    labelSpec.append(line+"\n");
-           		}
-        	};
-        
-        	
-            
-			execP4Command("label -o "+name, handler);
-            log(labelSpec.toString(),Project.MSG_DEBUG);
-
-            log("Now locking label...",Project.MSG_VERBOSE);
-			handler = new P4HandlerAdapter() {
-				public void process(String line) {
-					log(line, Project.MSG_VERBOSE);
-				}
-        	};
-
-            handler.setOutput(labelSpec.toString());
-			execP4Command("label -i", handler);
-        }
-        
-        
-    }
-
-}
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/P4Reopen.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Reopen.java
deleted file mode 100644
index 8663f66..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Reopen.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/>.
- *
- * 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.*;
-
-/* P4Reopen - move files to a new changelist
- *
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- */
-public class P4Reopen extends P4Base {
-
-    private String toChange = "";
-
-    public void setToChange(String toChange) throws BuildException {
-        if(toChange == null && !toChange.equals(""))
-            throw new BuildException("P4Reopen: tochange cannot be null or empty");
-
-        this.toChange = toChange;
-    }
-
-    public void execute() throws BuildException {
-        if(P4View == null) if(P4View == null) throw new BuildException("No view specified to reopen");
-        execP4Command("-s reopen -c "+toChange+" "+P4View, new SimpleP4OutputHandler(this));
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Revert.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Revert.java
deleted file mode 100644
index 57b2629..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Revert.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/>.
- *
- * 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.*;
-
-/* P4Revert - revert open files or files in a changelist
- *
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- */
-public class P4Revert extends P4Base {
-
-    private String revertChange = null;
-    private boolean onlyUnchanged = false;
-
-    public void setChange(String revertChange) throws BuildException {
-        if(revertChange == null && !revertChange.equals(""))
-            throw new BuildException("P4Revert: change cannot be null or empty");
-
-        this.revertChange = revertChange;
-
-    }
-
-    public void setRevertOnlyUnchanged(boolean onlyUnchanged)  {
-        this.onlyUnchanged = onlyUnchanged;
-    }
-
-    public void execute() throws BuildException {
-
-        /* Here we can either revert any unchanged files in a changelist
-         * or
-         * any files regardless of whether they have been changed or not
-         *
-         *
-         * The whole process also accepts a p4 filespec
-         */
-        String p4cmd = "-s revert";
-        if(onlyUnchanged) p4cmd+=" -a";
-
-        if (revertChange != null) p4cmd += " -c "+revertChange;
-
-        execP4Command(p4cmd+" "+P4View, new SimpleP4OutputHandler(this));
-    }
-}
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 125fc2a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/package.html
+++ /dev/null
@@ -1,26 +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
-@see org.apache.tools.ant.taskdefs.optional.perforce.P4Counter
-
-
-
-@author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
-
-
-</body>
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java b/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java
deleted file mode 100644
index 1ea3516..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java
+++ /dev/null
@@ -1,484 +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", "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/>.
- *
- * [Additional notices, if required by prior licensing conditions]
- *
- */
-package org.apache.tools.ant.taskdefs.optional.pvcs;
-
-import java.io.*;
-import java.util.Enumeration;
-import java.util.Vector;
-import java.text.*;
-import java.util.Random;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.LogOutputStream;
-import org.apache.tools.ant.taskdefs.LogStreamHandler;
-import org.apache.tools.ant.taskdefs.PumpStreamHandler;
-import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
-import org.apache.tools.ant.types.Commandline;
-
-/**
- * A task that fetches source files from a PVCS archive
- *
- * <b>19-04-2001</b> <p>The task now has a more robust
- * parser. It allows for platform independant file paths
- * and supports file names with <i>()</i>. Thanks to Erik Husby for
- * bringing the bug to my attention.
- *
- * <b>27-04-2001</b> <p>UNC paths are now handled properly. 
- * Fix provided by Don Jeffery. He also added an <i>UpdateOnly</i> flag
- * that, when true, conditions the PVCS get using the -U option to only 
- * update those files that have a modification time (in PVCS) that is newer 
- * than the existing workfile.
- *
- * @author Thomas Christensen <tchristensen@nordija.com>
- * @author Don Jeffery <donj@apogeenet.com>
- */
-public class Pvcs extends org.apache.tools.ant.Task {
-    private String pvcsbin;
-    private String repository;
-    private String pvcsProject;
-    private Vector pvcsProjects;
-    private String workspace;
-    private String force;
-    private String promotiongroup;
-    private String label;
-    private boolean ignorerc;
-    private boolean updateOnly;
-
-    /**
-     * Constant for the thing to execute
-     */
-    private static final String PCLI_EXE = "pcli";
-
-    /**
-     * Constant for the PCLI listversionedfiles recursive i a format "get" understands
-     */
-    private static final String PCLI_LVF_ARGS = "lvf -z -aw";
-
-    /**
-     * Constant for the thing to execute
-     */
-    private static final String GET_EXE = "get";
-
-
-    protected int runCmd(Commandline cmd, ExecuteStreamHandler out) {
-        try {
-            Project aProj = getProject();
-            Execute exe = new Execute(out);
-            exe.setAntRun(aProj);
-            exe.setWorkingDirectory(aProj.getBaseDir());
-            exe.setCommandline(cmd.getCommandline());
-            return exe.execute();
-        }
-        catch (java.io.IOException e) {
-            String msg = "Failed executing: " + cmd.toString() + ". Exception: "+e.getMessage();
-            throw new BuildException(msg, location);
-        }
-    }
-
-    private String getExecutable(String exe) {
-        StringBuffer correctedExe = new StringBuffer();
-        if(getPvcsbin()!=null)
-            if(pvcsbin.endsWith(File.separator))
-                correctedExe.append(pvcsbin);
-            else
-                correctedExe.append(pvcsbin).append(File.separator);
-        return correctedExe.append(exe).toString();
-    }
-
-    /**
-     * @exception org.apache.tools.ant.BuildException Something is stopping the build...
-     */
-    public void execute() throws org.apache.tools.ant.BuildException {
-        Project aProj = getProject();
-        int result = 0;
-
-        if(repository == null || repository.trim().equals("")) 
-            throw new BuildException("Required argument repository not specified");
-
-        // Check workspace exists
-        // Launch PCLI listversionedfiles -z -aw
-        // Capture output
-        // build the command line from what we got the format is
-        Commandline commandLine = new Commandline();
-        commandLine.setExecutable(getExecutable(PCLI_EXE));
-
-        commandLine.createArgument().setValue("lvf");
-        commandLine.createArgument().setValue("-z");
-        commandLine.createArgument().setValue("-aw");
-        if(getWorkspace()!=null)
-            commandLine.createArgument().setValue("-sp"+getWorkspace());
-        commandLine.createArgument().setValue("-pr"+getRepository());
-
-        // default pvcs project is "/"
-        if(getPvcsproject() == null && getPvcsprojects().isEmpty())
-            pvcsProject = "/";
-
-        if(getPvcsproject()!=null)
-            commandLine.createArgument().setValue(getPvcsproject());
-        if(!getPvcsprojects().isEmpty()) {
-            Enumeration e = getPvcsprojects().elements();
-            while (e.hasMoreElements()) {
-                String projectName = ((PvcsProject)e.nextElement()).getName();
-                if (projectName == null || (projectName.trim()).equals(""))
-                    throw new BuildException("name is a required attribute of pvcsproject");
-                commandLine.createArgument().setValue(projectName);
-            }
-        }
-
-        File tmp = null;
-        File tmp2 = null;
-        try {
-            Random rand = new Random(System.currentTimeMillis());
-            tmp = new File("pvcs_ant_"+rand.nextLong()+".log");
-            tmp2 = new File("pvcs_ant_"+rand.nextLong()+".log");
-            log("Executing " + commandLine.toString(), Project.MSG_VERBOSE);
-            result = runCmd(commandLine, new PumpStreamHandler(new FileOutputStream(tmp), new LogOutputStream(this,Project.MSG_WARN)));
-            if ( result != 0 && !ignorerc) {
-                String msg = "Failed executing: " + commandLine.toString();
-                throw new BuildException(msg, location);
-            }
-
-            if(!tmp.exists())
-                throw new BuildException("Communication between ant and pvcs failed. No output generated from executing PVCS commandline interface \"pcli\" and \"get\"");
-
-            // Create folders in workspace
-            log("Creating folders", Project.MSG_INFO);
-            createFolders(tmp);
-
-            // Massage PCLI lvf output transforming '\' to '/' so get command works appropriately
-            massagePCLI(tmp, tmp2);
-
-            // Launch get on output captured from PCLI lvf
-            commandLine.clearArgs();
-            commandLine.setExecutable(getExecutable(GET_EXE));
-
-            if(getForce()!=null && getForce().equals("yes"))
-                commandLine.createArgument().setValue("-Y");
-            else
-                commandLine.createArgument().setValue("-N");
-
-            if(getPromotiongroup()!=null)
-                commandLine.createArgument().setValue("-G"+getPromotiongroup());
-            else {
-                if(getLabel()!=null)
-                    commandLine.createArgument().setValue("-r"+getLabel());
-            }
-
-            if (updateOnly) {
-                commandLine.createArgument().setValue("-U");
-            }
-
-            commandLine.createArgument().setValue("@"+tmp2.getAbsolutePath());
-            log("Getting files", Project.MSG_INFO);
-            log("Executing " + commandLine.toString(), Project.MSG_VERBOSE);
-            result = runCmd(commandLine, new LogStreamHandler(this,Project.MSG_INFO, Project.MSG_WARN));
-            if ( result != 0 && !ignorerc) {
-                String msg = "Failed executing: " + commandLine.toString() + ". Return code was "+result;
-                throw new BuildException(msg, location);
-            }
-
-        } catch(FileNotFoundException e) {
-            String msg = "Failed executing: " + commandLine.toString() + ". Exception: "+e.getMessage();
-            throw new BuildException(msg,location);
-        } catch(IOException e) {
-            String msg = "Failed executing: " + commandLine.toString() + ". Exception: "+e.getMessage();
-            throw new BuildException(msg,location);
-        } catch(ParseException e) {
-            String msg = "Failed executing: " + commandLine.toString() + ". Exception: "+e.getMessage();
-            throw new BuildException(msg,location);
-        } finally {
-            if (tmp != null) {
-                tmp.delete();
-            }
-            if (tmp2 != null) {
-                tmp2.delete();
-            }
-        }
-    }
-
-    /**
-     * Parses the file and creates the folders specified in the output section
-     */
-    private void createFolders(File file) throws IOException, ParseException {
-        BufferedReader in = new BufferedReader(new FileReader(file));
-        MessageFormat mf = new MessageFormat("{0}-arc({1})");
-        String line = in.readLine();
-        while(line != null) {
-            log("Considering \""+line+"\"", Project.MSG_VERBOSE);
-            if(line.startsWith("\"\\") || line.startsWith("\"/")) {
-                Object[] objs = mf.parse(line);
-                String f = (String)objs[1];
-                // Extract the name of the directory from the filename
-                int index = f.lastIndexOf(File.separator);
-                if (index > -1) {
-                    File dir = new File(f.substring(0, index));
-                    if(!dir.exists()) {
-                        log("Creating "+dir.getAbsolutePath(), Project.MSG_VERBOSE);
-                        if(dir.mkdirs()) {
-                            log("Created "+dir.getAbsolutePath(), Project.MSG_INFO);
-                        } else {
-                            log("Failed to create "+dir.getAbsolutePath(), Project.MSG_INFO);
-                        }
-                    } else {
-                        log(dir.getAbsolutePath() + " exists. Skipping", Project.MSG_VERBOSE);
-                    }
-                } else {
-                    log("File separator problem with " + line, 
-                        Project.MSG_WARN);
-                }
-            } else {
-                log("Skipped \""+line+"\"", Project.MSG_VERBOSE);
-            }
-            line = in.readLine();
-        }
-    }
-
-    /**
-     * Simple hack to handle the PVCS command-line tools botch when handling UNC notation.
-     */
-    private void massagePCLI(File in, File out) throws FileNotFoundException, IOException
-    {
-        BufferedReader inReader = new BufferedReader(new FileReader(in));
-        BufferedWriter outWriter = new BufferedWriter(new FileWriter(out));
-        String s = null;
-        while ((s = inReader.readLine()) != null) {
-            String sNormal = s.replace('\\', '/');
-            outWriter.write(sNormal);
-            outWriter.newLine();
-        }
-        inReader.close();
-        outWriter.close();
-    }
-
-    /**
-     * Get network name of the PVCS repository
-     * @return String
-     */
-    public String getRepository() {
-        return repository;
-    }
-
-    /**
-     * Specifies the network name of the PVCS repository
-     * @param repo String
-     */
-    public void setRepository(String repo) {
-        repository = repo;
-    }
-
-    /**
-     * Get name of the project in the PVCS repository
-     * @return String
-     */
-    public String getPvcsproject() {
-        return pvcsProject;
-    }
-
-    /**
-     * Specifies the name of the project in the PVCS repository
-     * @param prj String
-     */
-    public void setPvcsproject(String prj) {
-        pvcsProject = prj;
-    }
-
-    /**
-     * Get name of the project in the PVCS repository
-     * @return Vector
-     */
-    public Vector getPvcsprojects() {
-        return pvcsProjects;
-    }
-
-    /**
-     * Get name of the workspace to store the retrieved files
-     * @return String
-     */
-    public String getWorkspace() {
-        return workspace;
-    }
-
-    /**
-     * Specifies the name of the workspace to store retrieved files
-     * @param ws String
-     */
-    public void setWorkspace(String ws) {
-        workspace = ws;
-    }
-
-    /**
-     * Get name of the PVCS bin directory 
-     * @return String
-     */
-    public String getPvcsbin() {
-        return pvcsbin;
-    }
-
-    /**
-     * Specifies the location of the PVCS bin directory
-     * @param ws String
-     */
-    public void setPvcsbin(String bin) {
-        pvcsbin = bin;
-    }
-
-    /**
-     * Get value of force
-     * @return String
-     */
-    public String getForce() {
-        return force;
-    }
-
-    /**
-     * Specifies the value of the force argument
-     * @param repo String (yes/no)
-     */
-    public void setForce(String f) {
-        if(f!=null && f.equalsIgnoreCase("yes"))
-            force="yes";
-        else
-            force = "no";
-    }
-
-    /**
-     * Get value of promotiongroup
-     * @return String
-     */
-    public String getPromotiongroup() {
-        return promotiongroup;
-    }
-
-    /**
-     * Specifies the name of the promotiongroup argument
-     * @param repo String 
-     */
-    public void setPromotiongroup(String w) {
-        promotiongroup=w;
-    }
-
-    /**
-     * Get value of label
-     * @return String
-     */
-    public String getLabel() {
-        return label;
-    }
-
-    /**
-     * Specifies the name of the label argument
-     * @param repo String 
-     */
-    public void setLabel(String l) {
-        label=l;
-    }
-
-    /**
-     * Get value of ignorereturncode
-     * @return String
-     */
-    public boolean getIgnoreReturnCode() {
-        return ignorerc;
-    }
-
-    /**
-     * If set to true the return value from executing the pvcs 
-     * commands are ignored.
-     */
-    public void setIgnoreReturnCode(boolean b) {
-        ignorerc = b;
-    }
-
-    /**
-     * handles &lt;pvcsproject&gt; subelements
-     * @param PvcsProject
-     */
-    public void addPvcsproject(PvcsProject p) {
-        pvcsProjects.addElement(p);
-    }
-
-    public boolean getUpdateOnly() {
-        return updateOnly;
-    }
-
-    /**
-     * If set to true files are gotten only if newer
-     * than existing local files.
-     */
-    public void setUpdateOnly(boolean l) {
-        updateOnly = l;
-    }
-
-    /**
-     * Creates a Pvcs object
-     */
-    public Pvcs() {
-        super();
-        pvcsProject = null;
-        pvcsProjects = new Vector();
-        workspace = null;
-        repository = null;
-        pvcsbin = null;
-        force=null;
-        promotiongroup=null;
-        label=null;
-        ignorerc=false;
-        updateOnly = false;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/PvcsProject.java b/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/PvcsProject.java
deleted file mode 100644
index aceb5b8..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/PvcsProject.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", "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.tools.ant.taskdefs.optional.pvcs;
-
-import org.apache.tools.ant.Project;
-
-/**
- * class to handle &lt;pvcsprojec&gt; elements
- */
-public class PvcsProject {
-    private String name;
-    
-    public PvcsProject() {
-        super();
-    }
-    
-    public void setName(String name) {
-        PvcsProject.this.name = name;
-    }
-    public String getName() {
-        return name;
-    }
-}
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/sitraka/CovMerge.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java
deleted file mode 100644
index a1f0df2..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java
+++ /dev/null
@@ -1,227 +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.sitraka;
-
-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 org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.DirectoryScanner;
-import java.util.Vector;
-import java.util.Random;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.io.IOException;
-
-/**
- * Convenient task to run the snapshot merge utility for JProbe Coverage.
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class CovMerge extends Task {
-
-	/** coverage home, it is mandatory */
-    private File home = null;
-    
-	/** the name of the output snapshot */
-    private File tofile = null;
-    
-	/** the filesets that will get all snapshots to merge */
-    private Vector filesets = new Vector();
-    
-	private boolean verbose;
-
-	/**
-	 * set the coverage home. it must point to JProbe coverage
-	 * directories where are stored native librairies and jars
-	 */
-    public void setHome(File value) {
-        this.home = value;
-    }
-
-	/**
-	 * Set the output snapshot file
-	 */
-    public void setTofile(File value) {
-        this.tofile = value;
-    }
-
-	/** run the merging in verbose mode */
-	public void setVerbose(boolean flag){
-		this.verbose = flag;
-	}
-
-	/** add a fileset containing the snapshots to include/exclude */
-	public void addFileset(FileSet fs){
-		filesets.addElement(fs);
-	}
-
-	//---------------- the tedious job begins here
-
-	public CovMerge() {
-    }
-
-	/** execute the jpcovmerge by providing a parameter file */
-    public void execute() throws BuildException {
-		checkOptions();
-
-		File paramfile = createParamFile();
-		try{
-			Commandline cmdl = new Commandline();
-			cmdl.setExecutable( new File(home, "jpcovmerge").getAbsolutePath() );
-			if (verbose) {
-				cmdl.createArgument().setValue("-v");
-			}
-			cmdl.createArgument().setValue("-jp_paramfile=" + paramfile.getAbsolutePath());
-	
-			LogStreamHandler handler = new LogStreamHandler(this,Project.MSG_INFO,Project.MSG_WARN);
-			Execute exec = new Execute(handler);
-			log(cmdl.toString(), Project.MSG_VERBOSE);
-			exec.setCommandline(cmdl.getCommandline());
-
-			// JProbe process always return 0 so  we will not be
-			// able to check for failure ! :-(
-			int exitValue = exec.execute();
-			if (exitValue!=0) {
-				throw new BuildException("JProbe Coverage Merging failed (" + exitValue + ")");
-			}
-        } catch (IOException e) {
-            throw new BuildException("Failed to run JProbe Coverage Merge: " + e);
-        } finally {
-			//@todo should be removed once switched to JDK1.2
-			paramfile.delete();
-		}
-    }
-
-	/** check for mandatory options */
-	protected void checkOptions() throws BuildException {
-		if (tofile == null) {
-			throw new BuildException("'tofile' attribute must be set.");
-		}
-		if (home == null) {
-			throw new BuildException("'home' attribute must be set to JProbe Coverage home directory");
-		}
-		File jar = new File(home, "coverage.jar");
-		if (!jar.exists()) {
-			throw new BuildException("'home' attribute is not set to Coverage home directory: " + home);
-		}
-		
-	}
-
-	/** get the snapshots from the filesets */
-	protected File[] getSnapshots() {
-		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(getProject());
-			ds.scan();
-			String[] f = ds.getIncludedFiles();
-			for (int j = 0; j < f.length; j++) {
-				String pathname = f[j];
-				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;
-	}
-
-
-	/**
-	 * create the parameters file that contains all file to merge
-	 * and the output filename.
-	 */
-	protected File createParamFile() throws BuildException {
-		File[] snapshots = getSnapshots();
-		File file = createTmpFile();
-		FileWriter fw = null;
-		try {
-			fw = new FileWriter(file);
-			PrintWriter pw = new PrintWriter(fw);
-			for (int i = 0; i < snapshots.length; i++) {
-				pw.println(snapshots[i].getAbsolutePath());
-			}
-			// last file is the output snapshot
-			pw.println(project.resolveFile(tofile.getPath()));
-			pw.flush();
-			return file;
-		} catch (IOException e){
-			if (fw != null) {
-				try {
-					fw.close();
-				} catch (IOException ignored){
-				}
-			}
-			throw new BuildException("I/O error while writing to " + file, e);
-		}
-	}
-
-	/** create a temporary file in the current dir (For JDK1.1 support) */
-	protected File createTmpFile(){
-		final long rand = (new Random(System.currentTimeMillis())).nextLong();
-		File file = new File("jpcovmerge" + rand + ".tmp");
-		return file;
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java
deleted file mode 100644
index 248f4ff..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java
+++ /dev/null
@@ -1,386 +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.sitraka;
-
-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 org.apache.tools.ant.types.EnumeratedAttribute;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.DirectoryScanner;
-import java.util.Vector;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-
-import javax.xml.transform.*;
-import javax.xml.transform.stream.*;
-import javax.xml.transform.dom.*;
-import org.w3c.dom.Document;
-
-import org.apache.tools.ant.taskdefs.optional.depend.*;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.*;
-import java.io.*;
-
-/**
- * Convenient task to run the snapshot merge utility for JProbe Coverage 3.0.
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class CovReport extends Task {
-/*
-jpcoverport [options] -output=file -snapshot=snapshot.jpc
-jpcovreport [options] [-paramfile=file] -output=<fileName> -snapshot=<fileName>
-
-		Generate a report based on the indicated snapshot
-
-		-paramfile=file
-						A text file containing the report generation options.
-
-		-format=(html|text|xml) defaults to html
-						The format of the generated report.
-
-		-type=(executive|summary|detailed|verydetailed) defaults to detailed
-						The type of report to be generated. For -format=xml,
-						use -type=verydetailed to include source code lines.
-
-						Note: A very detailed report can be VERY large.
-
-		-percent=num            Min 1 Max 101 Default 101
-						An integer representing a percentage of coverage.
-						Only methods with test case coverage less than the
-						percentage are included in reports.
-
-		-filters=string
-						A comma-separated list of filters in the form
-						<package>.<class>:V, where V can be I for Include or
-						E for Exclude. For the default package, omit <package>.
-
-		-filters_method=string
-						Optional. A comma-separated list of methods that
-						correspond one-to-one with the entries in -filters.
-
-		-output=string  Must be specified
-						The absolute path and file name for the generated
-						report file.
-
-		-snapshot=string        Must be specified
-						The absolute path and file name of the snapshot file.
-
-		-inc_src_text=(on|off)  defaults to on
-						Include text of the source code lines.
-						Only applies for -format=xml and -type=verydetailed.
-
-		-sourcepath=string      defaults to .
-						A semicolon-separated list of source paths.
-
-/*
-
-	/** coverage home,  mandatory */
-	private File home = null;
-
-	/** format of generated report, optional */
-	private String format = null;
-
-	/** the name of the output snapshot, mandatory */
-	private File tofile = null;
-
-	/** type of report, optional */
-	private String type = null;
-
-	/** threshold value for printing methods, optional */
-	private Integer percent = null;
-
-	/** comma separated list of filters (???)*/
-	private String filters = null;
-
-	/** name of the snapshot file to create report from */
-	private File snapshot = null;
-
-	/** sourcepath to use */
-	private Path sourcePath = null;
-
-	/** include the text for each line of code (xml report verydetailed)*/
-	private boolean includeSource = true;
-
-	private Path coveragePath = null;
-
-	/** */
-	private Reference reference = null;
-
-
-	/**
-	 * Set the coverage home. it must point to JProbe coverage
-	 * directories where are stored native libraries and jars.
-	 */
-	public void setHome(File value) {
-		this.home = value;
-	}
-
-	public static class ReportFormat extends EnumeratedAttribute {
-		public String[] getValues(){
-			return new String[]{"html", "text", "xml"};
-		}
-	}
-	/** set the format of the report html|text|xml*/
-	public void setFormat(ReportFormat value){
-		this.format = value.getValue();
-	}
-
-	public static class ReportType extends EnumeratedAttribute {
-		public String[] getValues(){
-			return new String[]{"executive", "summary", "detailed", "verydetailed"};
-		}
-	}
-	/** sets the report type executive|summary|detailed|verydetailed */
-	public void setType(ReportType value){
-		this.type =  value.getValue();
-	}
-
-	/** include source code lines. XML report only */
-	public void setIncludesource(boolean value){
-		this.includeSource = value;
-	}
-
-	/** sets the threshold printing method 0-100*/
-	public void setPercent(Integer value){
-		this.percent = value;
-	}
-
-	/** set the filters */
-	public void setFilters(String values){
-		this.filters = values;
-	}
-
-	public Path createSourcepath(){
-		if (sourcePath == null) {
-			sourcePath = new Path(project);
-		}
-		return sourcePath.createPath();
-	}
-
-	public void setSnapshot(File value){
-		this.snapshot = value;
-	}
-
-	/**
-	 * Set the output snapshot file
-	 */
-	public void setTofile(File value) {
-		this.tofile = value;
-	}
-
-	//@todo to remove
-	public Path createCoveragepath(){
-		if (coveragePath == null) {
-			coveragePath = new Path(project);
-		}
-		return coveragePath.createPath();
-	}
-
-	public Reference createReference(){
-		if (reference == null){
-			reference = new Reference();
-		}
-		return reference;
-	}
-
-
-	public CovReport() {
-	}
-
-	/** check for mandatory options */
-	protected void checkOptions() throws BuildException {
-		if (tofile == null) {
-			throw new BuildException("'tofile' attribute must be set.");
-		}
-		if (snapshot == null) {
-			throw new BuildException("'snapshot' attribute must be set.");
-		}
-		if (home == null) {
-			throw new BuildException("'home' attribute must be set to JProbe home directory");
-		}
-		home = new File(home,"Coverage");
-		File jar = new File(home, "coverage.jar");
-		if (!jar.exists()) {
-			throw new BuildException("Cannot find Coverage directory: " + home);
-		}
-		if (reference != null && !"xml".equals(format)){
-			log("Ignored reference. It cannot be used in non XML report.");
-			reference = null; // nullify it so that there is no ambiguity
-		}
-
-	}
-
-	public void execute() throws BuildException {
-		checkOptions();
-		try {
-			Commandline cmdl = new Commandline();
-			// we need to run Coverage from his directory due to dll/jar issues
-			cmdl.setExecutable( new File(home, "jpcovreport").getAbsolutePath() );
-			String[] params = getParameters();
-			for (int i = 0; i < params.length; i++) {
-				cmdl.createArgument().setValue(params[i]);
-			}
-
-			// use the custom handler for stdin issues
-			LogStreamHandler handler = new LogStreamHandler(this,Project.MSG_INFO,Project.MSG_WARN);
-			Execute exec = new Execute( handler );
-			log(cmdl.toString(), Project.MSG_VERBOSE);
-			exec.setCommandline(cmdl.getCommandline());
-			int exitValue = exec.execute();
-			if (exitValue != 0) {
-				throw new BuildException("JProbe Coverage Report failed (" + exitValue + ")");
-			}
-			log("coveragePath: " + coveragePath, Project.MSG_VERBOSE);
-			log("format: " + format, Project.MSG_VERBOSE);
-			if (reference != null && "xml".equals(format)){
-				reference.createEnhancedXMLReport();
-			}
-
-		} catch (IOException e){
-			throw new BuildException("Failed to execute JProbe Coverage Report.", e);
-		}
-	}
-
-
-	protected String[] getParameters(){
-		Vector v = new Vector();
-		if (format != null) {
-			v.addElement("-format=" + format);
-		}
-		if (type != null) {
-			v.addElement("-type=" + type);
-		}
-		if (percent != null) {
-			v.addElement("-percent=" + percent);
-		}
-		if (filters != null) {
-			v.addElement("-filters=" + filters);
-		}
-		v.addElement("-output=" + project.resolveFile(tofile.getPath()));
-		v.addElement("-snapshot=" + project.resolveFile(snapshot.getPath()));
-		// as a default -sourcepath use . in JProbe, so use project .
-		if (sourcePath == null) {
-			sourcePath = new Path(project);
-			sourcePath.createPath().setLocation(project.resolveFile("."));
-		}
-		v.addElement("-sourcepath=" + sourcePath);
-
-		if ("verydetailed".equalsIgnoreCase(format) && "xml".equalsIgnoreCase(type)) {
-			v.addElement("-inc_src_text=" + (includeSource ? "on" : "off"));
-		}
-
-		String[] params = new String[v.size()];
-		v.copyInto(params);
-		return params;
-	}
-
-
-	public class Reference {
-		protected Path classPath;
-		protected ReportFilters filters;
-		public Path createClasspath(){
-			if (classPath == null) {
-				classPath = new Path(project);
-			}
-			return classPath.createPath();
-		}
-		public ReportFilters createFilters(){
-			if (filters == null){
-				filters = new ReportFilters();
-			}
-			return filters;
-		}
-		protected void createEnhancedXMLReport() throws BuildException {
-			// we need a classpath element
-			if (classPath == null){
-				throw new BuildException("Need a 'classpath' element.");
-			}
-			// and a valid one...
-			String[] paths = classPath.list();
-			if (paths.length == 0){
-				throw new BuildException("Coverage path is invalid. It does not contain any existing path.");
-			}
-			// and we need at least one filter include/exclude.
-			if (filters == null || filters.size() == 0){
-				createFilters();
-				log("Adding default include filter to *.*()", Project.MSG_VERBOSE);
-				ReportFilters.Include include = new ReportFilters.Include();
-				filters.addInclude( include );
-			}
-			try {
-				log("Creating enhanced XML report", Project.MSG_VERBOSE);
-				XMLReport report = new XMLReport(CovReport.this, tofile);
-				report.setReportFilters(filters);
-				report.setJProbehome( new File(home.getParent()) );
-				Document doc = report.createDocument(paths);
-				TransformerFactory tfactory = TransformerFactory.newInstance();
-				Transformer transformer = tfactory.newTransformer();
-				transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-				transformer.setOutputProperty(OutputKeys.METHOD, "xml");
-				Source src = new DOMSource(doc);
-				Result res = new StreamResult( "file:///" + tofile.toString() );
-				transformer.transform(src, res);
-			} catch (Exception e){
-				throw new BuildException("Error while performing enhanced XML report from file " + tofile, e);
-			}
-		}
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java
deleted file mode 100644
index 7b7e74d..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java
+++ /dev/null
@@ -1,461 +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.sitraka;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.FileWriter;
-import java.io.File;
-import java.io.OutputStream;
-import java.io.IOException;
-import java.util.Vector;
-import java.util.Random;
-import java.util.Hashtable;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.types.CommandlineJava;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.EnumeratedAttribute;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.LogStreamHandler;
-
-/**
- * Convenient task to run Sitraka JProbe Coverage from Ant.
- * Options are pretty numerous, you'd better check the manual for a full
- * descriptions of options. (not that simple since they differ from the online
- * help, from the usage command line and from the examples...)
- * <p>
- * For additional information, visit <a href="http://www.sitraka.com">www.sitraka.com</a>
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class Coverage extends Task {
-
-	protected File home;
-
-	protected Commandline cmdl = new Commandline();
-
-	protected CommandlineJava cmdlJava = new CommandlineJava();
-
-	protected String function = "coverage";
-
-	protected String seedName;
-
-	protected File inputFile;
-
-	protected File javaExe;
-
-	protected String vm;
-
-	protected boolean applet = false;
-
-	/** this is a somewhat annoying thing, set it to never */
-	protected String exitPrompt = "never";
-
-	protected Filters filters = new Filters();
-
-	protected Triggers triggers;
-
-	protected String finalSnapshot = "coverage";
-
-	protected String recordFromStart = "coverage";
-
-	protected File snapshotDir;
-
-	protected File workingDir;
-
-	protected boolean trackNatives = false;
-
-	protected Socket socket;
-
-	protected int warnLevel = 0;
-
-	protected Vector filesets = new Vector();
-
-	//--------- setters used via reflection --
-
-	/** set the coverage home directory where are libraries, jars and jplauncher */
-	public void setHome(File value){
-		home = value;
-	}
-
-	/** seed name for snapshot file. can be null, default to snap */
-	public void setSeedname(String value){
-		seedName = value;
-	}
-
-	public void setInputfile(File value){
-		inputFile = value;
-	}
-
-	public void setJavaexe(File value){
-		javaExe = value;
-	}
-
-	public static class Javavm extends EnumeratedAttribute {
-		public String[] getValues(){
-			return new String[]{"java2", "jdk118", "jdk117"};
-		}
-	}
-	/** jdk117, jdk118 or java2, can be null, default to java2 */
-	public void setVm(Javavm value) {
-		vm = value.getValue();
-	}
-
-	/** default to false unless file is htm or html */
-	public void setApplet(boolean value){
-		applet = value;
-	}
-
-	/** always, error, never */
-	public void setExitprompt(String value){
-		exitPrompt = value;
-	}
-
-	public Filters createFilters(){
-		return filters;
-	}
-
-	public Triggers createTriggers(){
-		if (triggers == null) {
-			triggers = new Triggers();
-		}
-		return triggers;
-	}
-
-	public Socket createSocket(){
-		if (socket == null ) {
-			socket = new Socket();
-		}
-		return socket;
-	}
-
-	public static class Finalsnapshot extends EnumeratedAttribute {
-		public String[] getValues(){
-			return new String[]{"coverage", "none", "all"};
-		}
-	}
-
-	/** none, coverage, all. can be null, default to none */
-	public void setFinalsnapshot(String value){
-		finalSnapshot = value;
-	}
-
-	public static class Recordfromstart extends EnumeratedAttribute {
-		public String[] getValues(){
-			return new String[]{"coverage", "none", "all"};
-		}
-	}
-	/** all, coverage, none */
-	public void setRecordfromstart(Recordfromstart value) {
-		recordFromStart = value.getValue();
-	}
-
-	public void setWarnlevel(Integer value){
-		warnLevel = value.intValue();
-	}
-
-	public void setSnapshotdir(File value){
-		snapshotDir = value;
-	}
-
-	public void setWorkingdir(File value){
-		workingDir = value;
-	}
-
-	public void setTracknatives(boolean value){
-		trackNatives = value;
-	}
-
-	//
-
-	/** the jvm arguments */
-    public Commandline.Argument createJvmarg() {
-        return cmdlJava.createVmArgument();
-    }
-
-	/** the command arguments */
-    public Commandline.Argument createArg() {
-        return cmdlJava.createArgument();
-    }
-
-	/** classpath to run the files */
-    public Path createClasspath() {
-        return cmdlJava.createClasspath(project).createPath();
-    }
-
-	/** classname to run as standalone or runner for filesets */
-	public void setClassname(String value){
-		cmdlJava.setClassname(value);
-	}
-
-	/** the classnames to execute */
-	public void addFileset(FileSet fs){
-		filesets.addElement(fs);
-	}
-
-
-	//---------------- the tedious job begins here
-
-	public Coverage(){
-	}
-
-	/** execute the jplauncher by providing a parameter file */
-	public void execute() throws BuildException {
-		File paramfile = null;	
-		// if an input file is used, all other options are ignored...	
-		if (inputFile == null){
-			checkOptions();
-			paramfile = createParamFile();
-		} else {
-			paramfile = inputFile;
-		}
-		try {
-			// we need to run Coverage from his directory due to dll/jar issues
-			cmdl.setExecutable( new File(home, "jplauncher").getAbsolutePath() );
-			cmdl.createArgument().setValue("-jp_input=" + paramfile.getAbsolutePath());
-			
-			// use the custom handler for stdin issues
-			LogStreamHandler handler = new CoverageStreamHandler(this);
-			Execute exec = new Execute( handler );
-			log(cmdl.toString(), Project.MSG_VERBOSE);
-			exec.setCommandline(cmdl.getCommandline());
-			int exitValue = exec.execute();
-			if (exitValue != 0) {
-				throw new BuildException("JProbe Coverage failed (" + exitValue + ")");
-			}
-		} catch (IOException e){
-			throw new BuildException("Failed to execute JProbe Coverage.", e);
-		} finally {
-			//@todo should be removed once switched to JDK1.2
-			if (inputFile == null && paramfile != null){
-				paramfile.delete();
-			}
-		}
-	}
-
-	/** wheck what is necessary to check, Coverage will do the job for us */
-	protected void checkOptions() throws BuildException {
-		// check coverage home
-		if (home == null || !home.isDirectory() ) {
-			throw new BuildException("Invalid home directory. Must point to JProbe home directory");
-		}
-		home = new File(home,"Coverage");
-		File jar = new File(home, "coverage.jar");
-		if (!jar.exists()) {
-			throw new BuildException("Cannot find Coverage directory: " + home);
-		}
-
-		// make sure snapshot dir exists and is resolved
-		if (snapshotDir == null) {
-			snapshotDir = new File(".");
-		}
-		snapshotDir = project.resolveFile(snapshotDir.getPath());
-		if (!snapshotDir.isDirectory() || !snapshotDir.exists()) {
-			throw new BuildException("Snapshot directory does not exists :" + snapshotDir);
-		}
-		if (workingDir == null) {
-			workingDir = new File(".");
-		}
-		workingDir = project.resolveFile(workingDir.getPath());
-
-		// check for info, do your best to select the java executable.
-		// JProbe 3.0 fails if there is no javaexe option. So
-		if (javaExe == null && ( vm == null || "java2".equals(vm) ) ) {
-			String version = System.getProperty("java.version");
-			// make we are using 1.2+, if it is, then do your best to
-			// get a javaexe
-			if ( !version.startsWith("1.1") ){
-				if (vm == null){
-					vm = "java2";
-				}
-				// if we are here obviously it is java2
-				String home = System.getProperty("java.home");
-				boolean isUnix = File.separatorChar == '/';
-				javaExe = isUnix ? new File(home, "bin/java") : new File(home,"/bin/java.exe");
-			}			
-		}		
-	}
-
-	/**
-	 * return the command line parameters. Parameters can either be passed
-	 * to the command line and stored to a file (then use the -jp_input=<filename>)
-	 * if they are too numerous.
-	 */
-	protected String[] getParameters(){
-		Vector params = new Vector();
-		params.addElement("-jp_function=" + function);
-		if (vm != null) {
-			params.addElement("-jp_vm=" + vm);
-		}
-		if (javaExe != null) {
-			params.addElement("-jp_java_exe=" + project.resolveFile(javaExe.getPath()));
-		}
-		params.addElement("-jp_working_dir=" + workingDir.getPath() );
-		params.addElement("-jp_snapshot_dir=" + snapshotDir.getPath() );
-		params.addElement("-jp_record_from_start=" + recordFromStart);
-		params.addElement("-jp_warn=" + warnLevel);
-		if (seedName != null) {
-			params.addElement("-jp_output_file=" + seedName);
-		}
-		params.addElement("-jp_filter=" + filters.toString() );
-		if (triggers != null) {
-			params.addElement("-jp_trigger=" + triggers.toString() );
-		}
-		if (finalSnapshot != null) {
-			params.addElement("-jp_final_snapshot=" + finalSnapshot);
-		}
-        params.addElement("-jp_exit_prompt=" + exitPrompt);
-		//params.addElement("-jp_append=" + append);
-		params.addElement("-jp_track_natives=" + trackNatives);
-		//.... now the jvm
-		// arguments
-		String[] vmargs = cmdlJava.getVmCommand().getArguments();
-		for (int i = 0; i < vmargs.length; i++) {
-			params.addElement(vmargs[i]);
-		}
-		// classpath
-		Path classpath = cmdlJava.getClasspath();
-		if (classpath != null && classpath.size() > 0) {
-			params.addElement("-classpath " + classpath.toString());
-		}
-		// classname (runner or standalone)
-		if (cmdlJava.getClassname() != null) {
-			params.addElement(cmdlJava.getClassname());
-		}
-		// arguments for classname
-		String[] args = cmdlJava.getJavaCommand().getArguments();
-		for (int i = 0; i < args.length; i++) {
-			params.addElement(args[i]);
-		}
-		
-		String[] array = new String[params.size()];
-		params.copyInto(array);
-		return array;
-	}
-	
-	
-	/**
-	 * create the parameter file from the given options. The file is
-	 * created with a random name in the current directory.
-	 * @return the file object where are written the configuration to run
-	 * JProbe Coverage
-	 * @throws BuildException thrown if something bad happens while writing
-	 * the arguments to the file.
-	 */
-	protected File createParamFile() throws BuildException {
-		//@todo change this when switching to JDK 1.2 and use File.createTmpFile()
-		File file = createTmpFile();
-		log("Creating parameter file: " + file, Project.MSG_VERBOSE);
-		
-		// options need to be one per line in the parameter file
-		// so write them all in a single string
-		StringWriter sw = new StringWriter();
-		PrintWriter pw = new PrintWriter(sw);
-		String[] params = getParameters();
-		for (int i = 0; i < params.length; i++){
-			pw.println(params[i]);
-		}
-		pw.flush();
-		log("JProbe Coverage parameters:\n" + sw.toString(), Project.MSG_VERBOSE);
-		
-		// now write them to the file
-		FileWriter fw = null;
-		try {
-			fw = new FileWriter(file);
-			fw.write(sw.toString());
-			fw.flush();
-		} catch (IOException e){
-			throw new BuildException("Could not write parameter file " + file, e);
-		} finally {
-			if (fw != null) {
-				try {
-					fw.close();
-				} catch (IOException ignored){}
-			}
-		}
-		return file;
-	}
-
-	/** create a temporary file in the current dir (For JDK1.1 support) */
-	protected File createTmpFile(){
-		final long rand = (new Random(System.currentTimeMillis())).nextLong();
-		File file = new File("jpcoverage" + rand + ".tmp");
-		return file;
-	}
-
-	/** specific pumper to avoid those nasty stdin issues */
-	static class CoverageStreamHandler extends LogStreamHandler {
-		CoverageStreamHandler(Task task){
-			super(task, Project.MSG_INFO, Project.MSG_WARN);
-		}
-		/**
-		 * there are some issues concerning all JProbe executable
-		 * In our case a 'Press ENTER to close this window..." will
-		 * be displayed in the current window waiting for enter.
-		 * So I'm closing the stream right away to avoid problems.
-		 */
-	    public void setProcessInputStream(OutputStream os) {
-	    	try {
-	    		os.close();
-	    	} catch (IOException ignored){
-	    	}
-	    }
-	}
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Filters.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Filters.java
deleted file mode 100644
index fd2eae1..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Filters.java
+++ /dev/null
@@ -1,143 +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.sitraka;
-
-import java.util.Vector;
-
-/**
- * Filters information from coverage, somewhat similar to a <tt>FileSet</tt>.
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class Filters {
-
-    /** default regexp to exclude everything */
-    public final static String DEFAULT_EXCLUDE = "*.*():E";
-
-    /** say whether we should use the default excludes or not */
-    protected boolean defaultExclude = true;
-
-    /** user defined filters */
-    protected Vector filters = new Vector();
-
-    public Filters(){
-    }
-
-    public void setDefaultExclude(boolean value){
-        defaultExclude = value;
-    }
-
-    public void addInclude(Include incl){
-        filters.addElement(incl);
-    }
-
-    public void addExclude(Exclude excl){
-        filters.addElement(excl);
-    }
-
-    public String toString(){
-        StringBuffer buf = new StringBuffer();
-        final int size = filters.size();
-        if (defaultExclude) {
-            buf.append(DEFAULT_EXCLUDE);
-            if (size > 0) {
-                buf.append(',');
-            }
-        }
-        for (int i = 0; i < size; i++) {
-            buf.append(filters.elementAt(i).toString());
-            if ( i < size - 1) {
-                buf.append(',');
-            }
-        }
-        return buf.toString();
-    }
-
-    public static abstract class FilterElement {
-        protected String clazz;
-        protected String method = "*"; // default is all methods
-        protected boolean enabled = true; // default is enable
-        public void setName(String value){ // this one is deprecated.
-            clazz = value;
-        }
-        public void setClass(String value){
-            clazz  = value;
-        }
-        public void setMethod(String value){
-            method = value;
-        }
-        public void setEnabled(boolean value){
-            enabled = value;
-        }
-        public String toString(){
-            return clazz + "." + method + "()";
-        }
-    }
-
-    public static class Include extends FilterElement {
-        public String toString(){
-            return super.toString() + ":I" + (enabled ? "" : "#");
-        }
-    }
-
-    public static class Exclude extends FilterElement {
-        public String toString() {
-            return super.toString() + ":E" + (enabled ? "" : "#");
-        }
-    }
-}
-
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/ReportFilters.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/ReportFilters.java
deleted file mode 100644
index 4ded331..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/ReportFilters.java
+++ /dev/null
@@ -1,165 +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.sitraka;
-
-import java.util.Vector;
-import java.util.Enumeration;
-import org.apache.tools.ant.util.regexp.*;
-
-/**
- * Filters information from coverage, somewhat similar to a <tt>FileSet</tt>.
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class ReportFilters {
-
-	/** user defined filters */
-	protected Vector filters = new Vector();
-
-	/** cached matcher for each filter */
-	protected Vector matchers = null;
-
-	public ReportFilters(){
-	}
-
-	public void addInclude(Include incl){
-		filters.addElement(incl);
-	}
-
-	public void addExclude(Exclude excl){
-		filters.addElement(excl);
-	}
-
-	public int size(){
-		return filters.size();
-	}
-
-	/**
-	 * Check whether a given &lt;classname&gt;&lt;method&gt;() is accepted by the list
-	 * of filters or not.
-	 * @param methodname the full method name in the format &lt;classname&gt;&lt;method&gt;()
-	 */
-	public boolean accept(String methodname){
-		// I'm deferring matcher instantiations at runtime to avoid computing
-		// the filters at parsing time
-		if (matchers == null){
-			createMatchers();
-		}
-		boolean result = false;
-		// assert filters.size() == matchers.size()
-		final int size = filters.size();
-		for (int i = 0; i < size; i++){
-			FilterElement filter = (FilterElement)filters.elementAt(i);
-			RegexpMatcher matcher = (RegexpMatcher)matchers.elementAt(i);
-			if (filter instanceof Include){
-				result = result || matcher.matches(methodname);
-			} else if (filter instanceof Exclude){
-				result = result && !matcher.matches(methodname);
-			} else{
-				//not possible
-				throw new IllegalArgumentException("Invalid filter element: " + filter.getClass().getName());
-			}
-		}
-		return result;
-	}
-
-	/** should be called only once to cache matchers */
-	protected void createMatchers(){
-		RegexpMatcherFactory factory = new RegexpMatcherFactory();
-		final int size = filters.size();
-		matchers = new Vector();
-		for (int i = 0; i < size; i++){
-			FilterElement filter = (FilterElement)filters.elementAt(i);
-			RegexpMatcher matcher = factory.newRegexpMatcher();
-			String pattern = filter.getAsPattern();
-			matcher.setPattern(pattern);
-			matchers.addElement(matcher);
-		}
-	}
-
-
-	/** default abstract filter element class */
-	public static abstract class FilterElement {
-		protected String clazz = "*"; // default is all classes
-		protected String method = "*"; // default is all methods
-
-		public void setClass(String value){
-			clazz  = value;
-		}
-		public void setMethod(String value){
-			method = value;
-		}
-
-		public String getAsPattern(){
-			StringBuffer buf = new StringBuffer(toString());
-			StringUtil.replace(buf, ".", "\\.");
-			StringUtil.replace(buf, "*", ".*");
-			StringUtil.replace(buf, "(", "\\(");
-			StringUtil.replace(buf, ")", "\\)");
-			return buf.toString();
-		}
-
-		public String toString(){
-			return clazz + "." + method + "()";
-		}
-	}
-
-	/** concrete include class */
-	public static class Include extends FilterElement {}
-
-	/** concrete exclude class */
-	public static class Exclude extends FilterElement {}
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Socket.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Socket.java
deleted file mode 100644
index 4478dfd..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Socket.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.taskdefs.optional.sitraka;
-
-/**
- * Socket element for connection.
- * <tt>&lt;socket/&gt;</tt> defaults to host 127.0.0.1 and port 4444
- *
- * Otherwise it requires the host and port attributes to be set:
- * <tt>
- * &lt;socket host=&quote;175.30.12.1&quote; port=&quote;4567&quote;/&gt;
- * </tt>
- */
-public class Socket {
-
-	/** default to localhost */
-	private String host = "127.0.0.1";
-
-	/** default to 4444 */
-	private int port = 4444;
-
-	public void setHost(String value){
-		host = value;
-	}
-
-	public void setPort(Integer value){
-		port = value.intValue();
-	}
-
-	/** if no host is set, returning ':<port>', will take localhost */
-	public String toString(){
-		return host + ":" + port;
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/StringUtil.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/StringUtil.java
deleted file mode 100644
index c8d73b9..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/StringUtil.java
+++ /dev/null
@@ -1,84 +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.sitraka;
-
-/**
- * String utilities method.
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public final class StringUtil {
-	/** private constructor, it's a utility class */
-	private StringUtil() {
-	}
-
-	/**
-	 * Replaces all occurences of <tt>find</tt> with <tt>replacement</tt> in the
-	 * source StringBuffer.
-	 * @param src the original string buffer to modify.
-	 * @param find the string to be replaced.
-	 * @param replacement the replacement string for <tt>find</tt> matches.
-	 */
-	public static void replace(StringBuffer src, String find, String replacement){
-		int index = 0;
-		while (index < src.length() ){
-			index = src.toString().indexOf(find, index);
-			if (index == -1){
-				break;
-			}
-			src.delete(index, index + find.length());
-			src.insert(index, replacement);
-			index += replacement.length() + 1;
-		}
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Triggers.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Triggers.java
deleted file mode 100644
index 69fa2a2..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Triggers.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.sitraka;
-
-import java.util.Vector;
-import java.util.Hashtable;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Trigger information. It will return as a command line argument by calling
- * the <tt>toString()</tt> method.
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class Triggers {
-
-	protected Vector triggers = new Vector();
-	
-	public Triggers(){
-	}
-
-	public void addMethod(Method method){
-		triggers.addElement(method);
-	}
-
-	// -jp_trigger=ClassName.*():E:S,ClassName.MethodName():X:X 
-	public String toString(){
-		StringBuffer buf = new StringBuffer();
-		final int size = triggers.size();
-		for(int i = 0; i < size;  i++) {
-			buf.append( triggers.elementAt(i).toString() );
-			if (i < size - 1) {
-				buf.append(',');
-			}
-		}
-		return buf.toString();
-	}
-
-    
-	public static class Method {
-		protected String name;
-		protected String event;
-		protected String action;
-		protected String param;
-		public void setName(String value){
-			name = value;
-		}
-		public void setEvent(String value){
-			if (eventMap.get(value) == null) {
-				throw new BuildException("Invalid event, must be one of " + eventMap);
-			}
-			event = value;
-		}
-		public void setAction(String value) throws BuildException {
-			if (actionMap.get(value) == null) {
-				throw new BuildException("Invalid action, must be one of " + actionMap);
-			}
-			action = value;
-		}
-		public void setParam(String value){
-			param = value;
-		}
-
-		// return <name>:<event>:<action>[:param]
-		public String toString(){
-			StringBuffer buf = new StringBuffer();
-			buf.append(name).append(":"); //@todo name must not be null, check for it
-			buf.append(eventMap.get(event)).append(":");
-			buf.append(actionMap.get(action));
-			if (param != null) {
-				buf.append(":").append(param);
-			}
-			return buf.toString();
-		}
-	}
-
-	/** mapping of actions to cryptic command line mnemonics */
-	private final static Hashtable actionMap = new Hashtable(3);
-	
-	/** mapping of events to cryptic command line mnemonics */
-	private final static Hashtable eventMap = new Hashtable(3);
-
-	static {
-		actionMap.put("enter", "E");
-		actionMap.put("exit", "X");
-		// clear|pause|resume|snapshot|suspend|exit
-		eventMap.put("clear", "C");
-		eventMap.put("pause", "P");
-		eventMap.put("resume", "R");
-		eventMap.put("snapshot", "S");
-		eventMap.put("suspend", "A");
-		eventMap.put("exit", "X");
-	}
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/XMLReport.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/XMLReport.java
deleted file mode 100644
index 416eb56..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/XMLReport.java
+++ /dev/null
@@ -1,573 +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.sitraka;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.*;
-import javax.xml.transform.dom.*;
-import javax.xml.transform.stream.*;
-
-import org.w3c.dom.*;
-import org.xml.sax.*;
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.taskdefs.optional.sitraka.bytecode.*;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.Project;
-
-/**
- * Little hack to process XML report from JProbe. It will fix
- * some reporting errors from JProbe 3.0 and makes use of a reference
- * classpath to add classes/methods that were not reported by JProbe
- * as being used (ie loaded)
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class XMLReport {
-	/** task caller, can be null, used for logging purpose */
-	protected Task task;
-
-	/** the XML file to process just from CovReport */
-	protected File file;
-
-	/** jprobe home path. It is used to get the DTD */
-	protected File jprobeHome;
-
-	/** parsed document */
-	protected Document report;
-
-	/** mapping package name / package node for faster access */
-	protected Hashtable pkgMap;
-
-	/** mapping classname / class node for faster access */
-	protected Hashtable classMap;
-
-	/** method filters */
-	protected ReportFilters filters;
-
-	/** create a new XML report, logging will be on stdout */
-	public XMLReport(File file){
-		this(null, file);
-	}
-
-	/** create a new XML report, logging done on the task */
-	public XMLReport(Task task, File file){
-		this.file = file;
-		this.task = task;
-	}
-
-	/** set the JProbe home path. Used to get the DTD */
-	public void setJProbehome(File home){
-		jprobeHome = home;
-	}
-
-	/** set the  */
-	public void setReportFilters(ReportFilters filters){
-		this.filters = filters;
-	}
-
-
-
-	/** create node maps so that we can access node faster by their name */
-	protected void createNodeMaps(){
-		pkgMap = new Hashtable();
-		classMap = new Hashtable();
-		// create a map index of all packages by their name
-		// @todo can be done faster by direct access.
-		NodeList packages = report.getElementsByTagName("package");
-		final int pkglen = packages.getLength();
-		log("Indexing " + pkglen + " packages");
-		for (int i = pkglen-1; i > -1 ; i--){
-			Element pkg = (Element)packages.item(i);
-			String pkgname = pkg.getAttribute("name");
-
-			int nbclasses = 0;
-			// create a map index of all classes by their fully
-			// qualified name.
-			NodeList classes = pkg.getElementsByTagName("class");
-			final int classlen = classes.getLength();
-			log("Indexing " + classlen + " classes in package " + pkgname);
-			for (int j = classlen-1; j > -1 ; j--){
-				Element clazz = (Element)classes.item(j);
-				String classname = clazz.getAttribute("name");
-				if (pkgname != null && pkgname.length() != 0){
-					classname = pkgname + "." + classname;
-				}
-
-				int nbmethods = 0;
-				NodeList methods = clazz.getElementsByTagName("method");
-				final int methodlen = methods.getLength();
-				for (int k = methodlen-1; k > -1; k--){
-					Element meth = (Element)methods.item(k);
-					StringBuffer methodname = new StringBuffer(meth.getAttribute("name"));
-					methodname.delete(methodname.toString().indexOf("(") , methodname.toString().length());
-					String signature = classname + "." + methodname + "()";
-					if (filters.accept(signature)){
-						log("keeped method:" + signature);
-						nbmethods++;
-					}
-					else {
-						clazz.removeChild(meth);
-					}
-				}
-				// if we don't keep any method, we don't keep the class
-				if (nbmethods != 0){
-					log("Adding class '" + classname + "'");
-					classMap.put(classname, clazz);
-					nbclasses++;
-				}
-				else {
-					pkg.removeChild(clazz);
-				}
-			}
-			if (nbclasses != 0){
-				log("Adding package '" + pkgname + "'");
-				pkgMap.put(pkgname, pkg);
-			}
-			else {
-				pkg.getParentNode().removeChild(pkg);
-			}
-		}
-		log("Indexed " + classMap.size() + " classes in " + pkgMap.size() + " packages");
-	}
-
-	/** create the whole new document */
-	public Document createDocument(String[] classPath) throws Exception {
-
-		DocumentBuilder dbuilder = newBuilder();
-		InputSource is = new InputSource( new FileInputStream(file) );
-		if (jprobeHome != null){
-			File dtdDir = new File(jprobeHome, "Dtd/snapshot.dtd");
-			is.setSystemId( "file:///" + dtdDir.getAbsolutePath() );
-		}
-		report = dbuilder.parse( is );
-		report.normalize();
-
-		// create maps for faster node access
-		createNodeMaps();
-
-		// iterate over the classpath...
-		ClassPathLoader cpl = new ClassPathLoader(classPath);
-		Enumeration enum = cpl.loaders();
-		while ( enum.hasMoreElements() ){
-			ClassPathLoader.FileLoader fl = (ClassPathLoader.FileLoader)enum.nextElement();
-			ClassFile[] classes = fl.getClasses();
-			log("Processing " + classes.length + " classes in " + fl.getFile());
-			// process all classes
-			for (int i = 0; i < classes.length; i++){
-				serializeClass(classes[i]);
-			}
-		}
-		// update the document with the stats
-		update();
-		return report;
-	}
-
-	/**
-	 * JProbe does not put the java.lang prefix for classes
-	 * in this package, so used this nice method so that
-	 * I have the same signature for methods
-	 */
-	protected String getMethodSignature(MethodInfo method){
-		StringBuffer buf = new StringBuffer(method.getName());
-		buf.append("(");
-		String[] params = method.getParametersType();
-		for (int i = 0; i < params.length; i++){
-			String type = params[i];
-			int pos =  type.lastIndexOf('.');
-			if (pos != -1){
-				String pkg = type.substring(0, pos);
-				if ("java.lang".equals(pkg)){
-					params[i] = type.substring(pos + 1);
-				}
-			}
-			buf.append(params[i]);
-			if (i != params.length - 1){
-				buf.append(", ");
-			}
-		}
-		buf.append(")");
-		return buf.toString();
-	}
-
-	/**
-	 * Convert to a CovReport-like signature ie, <classname>.<method>()
-	 */
-	protected String getMethodSignature(ClassFile clazz, MethodInfo method){
-		StringBuffer buf = new StringBuffer(clazz.getFullName());
-		buf.append(".");
-		buf.append(method.getName());
-		buf.append("()");
-		return buf.toString();
-	}
-
-	/**
-	 * Do additional work on an element to remove abstract methods that
-	 * are reported by JProbe 3.0
-	 */
-	protected void removeAbstractMethods(ClassFile classFile, Element classNode){
-		MethodInfoList methods = classFile.getMethods();
-		Hashtable methodNodeList = getMethods(classNode);
-		// assert xmlMethods.size() == methods.length()
-		final int size = methods.length();
-		for (int i = 0; i < size; i++){
-			MethodInfo method = methods.getMethod(i);
-			String methodSig = getMethodSignature(method);
-			Element methodNode = (Element)methodNodeList.get(methodSig);
-			if ( methodNode != null &&
-				Utils.isAbstract(method.getAccessFlags())) {
-				log("\tRemoving method " + methodSig);
-				classNode.removeChild(methodNode);
-			}
-		}
-	}
-
-	/** create an empty method element with its cov.data values */
-	protected Element createMethodElement(MethodInfo method){
-		String methodsig = getMethodSignature(method);
-		Element  methodElem = report.createElement("method");
-		methodElem.setAttribute("name", methodsig);
-		// create the method cov.data element
-		Element methodData = report.createElement("cov.data");
-		methodElem.appendChild(methodData);
-		methodData.setAttribute("calls", "0");
-		methodData.setAttribute("hit_lines", "0");
-		methodData.setAttribute("total_lines", String.valueOf(method.getNumberOfLines()));
-		return methodElem;
-	}
-
-	/** create an empty package element with its default cov.data (0) */
-	protected Element createPackageElement(String pkgname){
-		Element pkgElem = report.createElement("package");
-		pkgElem.setAttribute("name", pkgname);
-		// create the package cov.data element / default
-		// must be updated at the end of the whole process
-		Element pkgData = report.createElement("cov.data");
-		pkgElem.appendChild(pkgData);
-		pkgData.setAttribute("calls", "0");
-		pkgData.setAttribute("hit_methods", "0");
-		pkgData.setAttribute("total_methods", "0");
-		pkgData.setAttribute("hit_lines", "0");
-		pkgData.setAttribute("total_lines", "0");
-		return pkgElem;
-	}
-
-	/** create an empty class element with its default cov.data (0) */
-	protected Element createClassElement(ClassFile classFile){
-		// create the class element
-		Element classElem = report.createElement("class");
-		classElem.setAttribute("name", classFile.getName());
-		classElem.setAttribute("source", classFile.getSourceFile());
-		// create the cov.data elem
-		Element classData = report.createElement("cov.data");
-		classElem.appendChild(classData);
-		// create the class cov.data element
-		classData.setAttribute("calls", "0");
-		classData.setAttribute("hit_methods", "0");
-		classData.setAttribute("total_methods", "0");
-		classData.setAttribute("hit_lines", "0");
-		classData.setAttribute("total_lines", "0");
-		return classElem;
-	}
-
-	/** serialize a classfile into XML */
-	protected void serializeClass(ClassFile classFile){
-		// the class already is reported so ignore it
-		String fullclassname = classFile.getFullName();
-		log("Looking for '" + fullclassname + "'");
-		Element clazz = (Element)classMap.get(fullclassname);
-
-		// ignore classes that are already reported, all the information is
-		// already there.
-		if ( clazz != null ){
-			log("Ignoring " + fullclassname);
-			removeAbstractMethods(classFile, clazz);
-			return;
-		}
-
-		// ignore interfaces files, there is no code in there to cover.
-		if (Utils.isInterface(classFile.getAccess())){
-			return;
-		}
-
-		Vector methods = getFilteredMethods(classFile);
-		// no need to process, there are no methods to add for this class.
-		if (methods.size() == 0){
-			return;
-		}
-
-		String pkgname = classFile.getPackage();
-		// System.out.println("Looking for package " + pkgname);
-		Element pkgElem = (Element)pkgMap.get(pkgname);
-		if (pkgElem == null){
-			pkgElem = createPackageElement(pkgname);
-			report.getDocumentElement().appendChild(pkgElem);
-			pkgMap.put(pkgname, pkgElem); // add the pkg to the map
-		}
-		// this is a brand new class, so we have to create a new node
-
-		// create the class element
-		Element classElem = createClassElement(classFile);
-		pkgElem.appendChild(classElem);
-
-		int total_lines = 0;
-		int total_methods = 0;
-		for (int i = 0; i < methods.size(); i++){
-			// create the method element
-			MethodInfo method = (MethodInfo)methods.elementAt(i);
-			if ( Utils.isAbstract(method.getAccessFlags() ) ){
-				continue; // no need to report abstract methods
-			}
-			Element methodElem = createMethodElement(method);
-			classElem.appendChild(methodElem);
-			total_lines += method.getNumberOfLines();
-			total_methods++;
-		}
-		// create the class cov.data element
-		Element classData = getCovDataChild(classElem);
-		classData.setAttribute("total_methods", String.valueOf(total_methods));
-		classData.setAttribute("total_lines", String.valueOf(total_lines));
-
-		// add itself to the node map
-		classMap.put(fullclassname, classElem);
-	}
-
-	protected Vector getFilteredMethods(ClassFile classFile){
-		Vector methods = new Vector();
-		MethodInfoList methodlist = classFile.getMethods();
-		for (int i = 0; i < methodlist.length(); i++){
-			MethodInfo method = methodlist.getMethod(i);
-			String signature = getMethodSignature(classFile, method);
-			if (filters.accept(signature)){
-				methods.addElement(method);
-				log("keeping " + signature);
-			} else {
-//				log("discarding " + signature);
-			}
-		}
-		return methods;
-	}
-
-
-	/** update the count of the XML, that is accumulate the stats on
-	 * methods, classes and package so that the numbers are valid
-	 * according to the info that was appended to the XML.
-	 */
-	protected void update(){
-		int calls = 0;
-		int hit_methods = 0;
-		int total_methods = 0;
-		int hit_lines = 0;
-		int total_lines = 0;
-
-		// use the map for access, all nodes should be there
-		Enumeration enum = pkgMap.elements();
-		while ( enum.hasMoreElements() ){
-			Element pkgElem = (Element)enum.nextElement();
-			String pkgname = pkgElem.getAttribute("name");
-			Element[] classes = getClasses(pkgElem);
-			int pkg_calls = 0;
-			int pkg_hit_methods = 0;
-			int pkg_total_methods = 0;
-			int pkg_hit_lines = 0;
-			int pkg_total_lines = 0;
-			//System.out.println("Processing package '" + pkgname + "': " + classes.length + " classes");
-			for (int j = 0; j < classes.length; j++){
-				Element clazz = classes[j];
-				String classname = clazz.getAttribute("name");
-				if (pkgname != null && pkgname.length() != 0){
-					classname = pkgname + "." + classname;
-				}
-				// there's only cov.data as a child so bet on it
-				Element covdata = getCovDataChild(clazz);
-				try {
-					pkg_calls += Integer.parseInt(covdata.getAttribute("calls"));
-					pkg_hit_methods += Integer.parseInt(covdata.getAttribute("hit_methods"));
-					pkg_total_methods += Integer.parseInt(covdata.getAttribute("total_methods"));
-					pkg_hit_lines += Integer.parseInt(covdata.getAttribute("hit_lines"));
-					pkg_total_lines += Integer.parseInt(covdata.getAttribute("total_lines"));
-				} catch (NumberFormatException e){
-					System.err.println("Error parsing '" + classname + "' (" + j + "/" + classes.length + ") in package '" + pkgname + "'");
-					throw e;
-				}
-			}
-			Element covdata = getCovDataChild(pkgElem);
-			covdata.setAttribute("calls", String.valueOf(pkg_calls));
-			covdata.setAttribute("hit_methods", String.valueOf(pkg_hit_methods));
-			covdata.setAttribute("total_methods", String.valueOf(pkg_total_methods));
-			covdata.setAttribute("hit_lines", String.valueOf(pkg_hit_lines));
-			covdata.setAttribute("total_lines", String.valueOf(pkg_total_lines));
-			calls += pkg_calls;
-			hit_methods += pkg_hit_methods;
-			total_methods += pkg_total_methods;
-			hit_lines += pkg_hit_lines;
-			total_lines += pkg_total_lines;
-		}
-		Element covdata = getCovDataChild(report.getDocumentElement());
-		covdata.setAttribute("calls", String.valueOf(calls));
-		covdata.setAttribute("hit_methods", String.valueOf(hit_methods));
-		covdata.setAttribute("total_methods", String.valueOf(total_methods));
-		covdata.setAttribute("hit_lines", String.valueOf(hit_lines));
-		covdata.setAttribute("total_lines", String.valueOf(total_lines));
-	}
-
-	protected Element getCovDataChild(Element parent){
-		NodeList children = parent.getChildNodes();
-		int len = children.getLength();
-		for (int i = 0; i < len; i++){
-			Node child = children.item(i);
-			if (child.getNodeType() == Node.ELEMENT_NODE){
-				Element elem = (Element)child;
-				if ("cov.data".equals(elem.getNodeName())){
-					return elem;
-				}
-			}
-		}
-		throw new NoSuchElementException("Could not find 'cov.data' element in parent '" + parent.getNodeName() + "'");
-	}
-
-	protected Hashtable getMethods(Element clazz){
-		Hashtable map = new Hashtable();
-		NodeList children = clazz.getChildNodes();
-		int len = children.getLength();
-		for (int i = 0; i < len; i++){
-			Node child = children.item(i);
-			if (child.getNodeType() == Node.ELEMENT_NODE){
-				Element elem = (Element)child;
-				if ("method".equals(elem.getNodeName())){
-					String name = elem.getAttribute("name");
-					map.put(name, elem);
-				}
-			}
-		}
-		return map;
-	}
-
-	protected Element[] getClasses(Element pkg){
-		Vector v = new Vector();
-		NodeList children = pkg.getChildNodes();
-		int len = children.getLength();
-		for (int i = 0; i < len; i++){
-			Node child = children.item(i);
-			if (child.getNodeType() == Node.ELEMENT_NODE){
-				Element elem = (Element)child;
-				if ("class".equals(elem.getNodeName())){
-					v.addElement(elem);
-				}
-			}
-		}
-		Element[] elems = new Element[v.size()];
-		v.copyInto(elems);
-		return elems;
-
-	}
-
-	protected Element[] getPackages(Element snapshot){
-		Vector v = new Vector();
-		NodeList children = snapshot.getChildNodes();
-		int len = children.getLength();
-		for (int i = 0; i < len; i++){
-			Node child = children.item(i);
-			if (child.getNodeType() == Node.ELEMENT_NODE){
-				Element elem = (Element)child;
-				if ("package".equals(elem.getNodeName())){
-					v.addElement(elem);
-				}
-			}
-		}
-		Element[] elems = new Element[v.size()];
-		v.copyInto(elems);
-		return elems;
-	}
-
-	private static DocumentBuilder newBuilder() {
-		try {
-			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-			factory.setIgnoringComments(true);
-			factory.setValidating(false);
-			return factory.newDocumentBuilder();
-		} catch (Exception e){
-			throw new ExceptionInInitializerError(e);
-		}
-	}
-
-	public void log(String message){
-		if (task == null){
-			//System.out.println(message);
-		} else {
-			task.log(message, Project.MSG_DEBUG);
-		}
-	}
-
-	public static void main(String[] args) throws Exception {
-		File reportFile = new File( XMLReport.class.getResource("covreport-test.xml").getFile() );
-		XMLReport report = new XMLReport( reportFile );
-		report.setJProbehome(new File("d:/Program Files/JProbe"));
-		ReportFilters filters = new ReportFilters();
-		ReportFilters.Include incl = new ReportFilters.Include();
-		incl.setClass("*");
-		incl.setMethod("set*");
-		filters.addInclude(incl);
-		report.setReportFilters(filters);
-		Document doc = report.createDocument( new String[]{"Z:/imediation/ichannel/sources/toolkit/lib/imtoolkit.jar"} );
-		TransformerFactory tfactory = TransformerFactory.newInstance();
-		Transformer transformer = tfactory.newTransformer();
-		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-		transformer.setOutputProperty(OutputKeys.METHOD, "xml");
-		transformer.transform(new DOMSource(doc), new StreamResult( new FileOutputStream( "d:/tmp/snapshot_merge.xml")));
-	}
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/ClassFile.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/ClassFile.java
deleted file mode 100644
index 4635bea..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/ClassFile.java
+++ /dev/null
@@ -1,200 +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.sitraka.bytecode;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ClassCPInfo;
-import org.apache.tools.ant.taskdefs.optional.sitraka.bytecode.attributes.*;
-
-
-/**
- * Object representing a class.
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class ClassFile {
-	
-	protected ConstantPool constantPool;
-	
-	protected InterfaceList interfaces;
-	
-	protected FieldInfoList fields;
-	
-	protected MethodInfoList methods;
-		
-	protected String sourceDir;
-	
-	protected String sourceFile;
-	
-	protected int access_flags;
-	
-	protected int this_class;
-	
-	protected int super_class;
-	
-	protected boolean isSynthetic;
-	
-	protected boolean isDeprecated;
-	
-	public ClassFile(InputStream is) throws IOException {
-		DataInputStream dis = new DataInputStream(is);
-		constantPool = new ConstantPool();
-			
-		int magic = dis.readInt(); // 0xCAFEBABE
-		int minor = dis.readShort();
-		int major = dis.readShort();
-				
-		constantPool.read(dis);
-		constantPool.resolve();
-		
-		access_flags = dis.readShort();
-		this_class = dis.readShort();
-		super_class = dis.readShort();
-		
-		interfaces = new InterfaceList(constantPool);
-		interfaces.read(dis);
-		//System.out.println(interfaces.toString());
-		
-		fields = new FieldInfoList(constantPool);
-		fields.read(dis);
-		//System.out.println(fields.toString());
-		
-		methods = new MethodInfoList(constantPool);
-		methods.read(dis);
-		//System.out.println(methods.toString());
-		
-		AttributeInfoList attributes = new AttributeInfoList(constantPool);
-		attributes.read(dis);
-		SourceFile srcFile = (SourceFile)attributes.getAttribute(AttributeInfo.SOURCE_FILE);
-		if (srcFile != null){
-			sourceFile = srcFile.getValue();
-		}
-		SourceDir srcDir = (SourceDir)attributes.getAttribute(AttributeInfo.SOURCE_DIR);
-		if (srcDir != null){
-			sourceDir = srcDir.getValue();
-		}
-		isSynthetic = attributes.getAttribute(AttributeInfo.SYNTHETIC) != null;
-		isDeprecated = attributes.getAttribute(AttributeInfo.DEPRECATED) != null;
-	}
-	
-	public int getAccess(){
-		return access_flags;
-	}
-	public InterfaceList getInterfaces(){
-		return interfaces;
-	}
-	public String getSourceFile(){
-		return sourceFile;
-	}
-	public String getSourceDir(){
-		return sourceDir;
-	}
-	public boolean isSynthetic() {
-		return isSynthetic;
-	}
-	public boolean isDeprecated() {
-		return isDeprecated;
-	}
-	public MethodInfoList getMethods(){
-		return methods;
-	}
-	public FieldInfoList getFields(){
-		return fields;
-	}
-	public String getSuperName(){
-		return Utils.getUTF8Value(constantPool, super_class);
-	}
-	public String getFullName(){
-		return ((ClassCPInfo)constantPool.getEntry(this_class)).getClassName().replace('/','.');
-	}
-	public String getName(){
-		String name = getFullName();
-		int pos = name.lastIndexOf('.');
-		if (pos == -1){
-			return "";
-		}
-		return name.substring(pos + 1);
-	}
-	public String getPackage(){
-		String name = getFullName();
-		int pos = name.lastIndexOf('.');
-		if (pos == -1){
-			return "";
-		}
-		return name.substring(0, pos);
-	}
-	
-	/** dirty test method, move it into a testcase */
-	public static void main(String[] args) throws Exception {
-		System.out.println("loading classfile...");
-		InputStream is = ClassLoader.getSystemResourceAsStream("java/util/Vector.class");
-		ClassFile clazzfile = new ClassFile(is);
-		System.out.println("Class name: " + clazzfile.getName());
-		MethodInfoList methods = clazzfile.getMethods();
-		for (int i = 0; i < methods.length(); i++){
-			MethodInfo method = methods.getMethod(i);
-			System.out.println("Method: " + method.getFullSignature());
-			System.out.println("line: " +  method.getNumberOfLines());
-			LineNumberTable lnt = method.getCode().getLineNumberTable();
-		}
-	}
-	
-}
-
-
- 
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/ClassPathLoader.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/ClassPathLoader.java
deleted file mode 100644
index bd270fa..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/ClassPathLoader.java
+++ /dev/null
@@ -1,351 +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.sitraka.bytecode;
-
-import java.io.*;
-import java.util.*;
-import java.util.zip.*;
-
-/**
- * Core of the bytecode analyzer. It loads classes from a given classpath.
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class ClassPathLoader {
-	
-	public final static FileLoader NULL_LOADER = new NullLoader();
-	
-	/** the list of files to look for */
-	protected File[] files;
-	
-	/**
-	 * create a new instance with a given classpath. It must be urls
-	 * separated by the platform specific path separator.
-	 * @param classPath the classpath to load all the classes from.
-	 */
-	public ClassPathLoader(String classPath){
-		StringTokenizer st = new StringTokenizer(classPath, File.pathSeparator);
-		Vector entries = new Vector();
-		while (st.hasMoreTokens()){
-			File file = new File(st.nextToken());
-			entries.addElement(file);
-		}
-		files = new File[entries.size()];
-		entries.copyInto(files);
-	}
-	
-	/**
-	 * create a new instance with a given set of urls.
-	 * @param entries valid file urls (either .jar, .zip or directory)
-	 */
-	public ClassPathLoader(String[] entries){
-		files = new File[entries.length];
-		for (int i = 0; i < entries.length; i++){
-			files[i] = new File(entries[i]);
-		}
-	}
-	
-	/**
-	 * create a new instance with a given set of urls
-	 * @param entries file urls to look for classes (.jar, .zip or directory)
-	 */
-	public ClassPathLoader(File[] entries){
-		files = entries;
-	}
-	
-	/** the interface to implement to look up for specific resources */
-	public interface FileLoader {
-		/** the file url that is looked for .class files */
-		public File getFile();
-		/** return the set of classes found in the file */
-		public ClassFile[] getClasses() throws IOException;
-	}
-	
-	/**
-	 * @return the set of <tt>FileLoader</tt> loaders matching the given classpath.
-	 */
-	public Enumeration loaders(){
-		return new LoaderEnumeration();
-	}
-	
-	/**
-	 * return the whole set of classes in the classpath. Note that this method
-	 * can be very resource demanding since it must load all bytecode from
-	 * all classes in all resources in the classpath at a time.
-	 * To process it in a less resource demanding way, it is maybe better to
-	 * use the <tt>loaders()</tt> that will return loader one by one.
-	 *
-	 * @return the hashtable containing ALL classes that are found in the given
-	 * classpath. Note that the first entry of a given classname will shadow
-	 * classes with the same name (as a classloader does)
-	 */
-	public Hashtable getClasses() throws IOException {
-		Hashtable map = new Hashtable();
-		Enumeration enum = loaders();
-		while ( enum.hasMoreElements() ){
-			FileLoader loader = (FileLoader)enum.nextElement();
-			System.out.println("Processing " + loader.getFile());
-			long t0 = System.currentTimeMillis();
-			ClassFile[] classes = loader.getClasses();
-			long dt = System.currentTimeMillis() - t0;
-			System.out.println("" + classes.length + " loaded in " + dt + "ms");
-			for (int j = 0; j < classes.length; j++){
-				String name = classes[j].getName();
-				// do not allow duplicates entries to preserve 'classpath' behavior
-				// first class in wins
-				if ( !map.contains(name) ){
-					map.put(name, classes[j]);
-				}
-			}
-		}
-		return map;
-	}
-	
-	/** dirty little test, should be moved to a testcase */
-	public static void main(String[] args) throws Exception {
-		ClassPathLoader cl = new ClassPathLoader("e:/jdk/jdk1.3.1/lib/tools.jar;e:/jdk/jdk1.3.1/jre/lib/rt.jar");
-		Hashtable map = cl.getClasses();
-		System.out.println("Loaded classes: " + map.size());
-	}
-	
-	/** the loader enumeration that will return loaders */
-	protected class LoaderEnumeration implements Enumeration {
-		protected int index = 0;
-		public boolean hasMoreElements(){
-			return index < files.length;
-		}
-		public Object nextElement(){
-			if (index >= files.length){
-				throw new NoSuchElementException();
-			}
-			File file = files[index++];
-			if ( !file.exists() ){
-				return new NullLoader(file);
-			}
-			if ( file.isDirectory() ){
-				// it's a directory
-				return new DirectoryLoader(file);
-			} else if ( file.getName().endsWith(".zip") || file.getName().endsWith(".jar") ){
-				// it's a jar/zip file
-				return new JarLoader(file);
-			}
-			return new NullLoader(file);
-			
-		}
-	}
-	
-	/**
-	 * useful methods to read the whole input stream in memory so that
-	 * it can be accessed faster. Processing rt.jar and tools.jar from JDK 1.3.1
-	 * brings time from 50s to 7s.
-	 */
-    public static InputStream getCachedStream(InputStream is) throws IOException {
-		is = new BufferedInputStream(is);
-		byte[] buffer = new byte[8192];
-		ByteArrayOutputStream baos = new ByteArrayOutputStream(2048);
-		int n;
-		baos.reset();
-		while ((n = is.read(buffer, 0, buffer.length)) != -1) {
-			baos.write(buffer, 0, n);
-		}
-		is.close();
-		return new ByteArrayInputStream(baos.toByteArray());
-    }
-}
-
-/** a null loader to return when the file is not valid */
-class NullLoader implements ClassPathLoader.FileLoader {
-	private File file;
-	NullLoader(){
-		this(null);
-	}
-	NullLoader(File file){
-		this.file = file;
-	}
-	public File getFile(){
-		return file;
-	}
-	public ClassFile[] getClasses() throws IOException {
-		return new ClassFile[0];
-	}
-}
-
-/**
- * jar loader specified in looking for classes in jar and zip
- * @todo read the jar manifest in case there is a Class-Path
- * entry.
- */
-class JarLoader implements ClassPathLoader.FileLoader {
-	private File file;
-	JarLoader(File file){
-		this.file = file;
-	}
-	public File getFile(){
-		return file;
-	}
-	public ClassFile[] getClasses() throws IOException {
-		ZipFile zipFile = new ZipFile(file);
-		Vector v = new Vector();
-		Enumeration entries = zipFile.entries();
-		while (entries.hasMoreElements()){
-			ZipEntry entry = (ZipEntry)entries.nextElement();
-			if (entry.getName().endsWith(".class")){
-				InputStream is = ClassPathLoader.getCachedStream(zipFile.getInputStream(entry));
-				ClassFile classFile = new ClassFile(is);
-				is.close();
-				v.addElement(classFile);
-			}
-		}
-		ClassFile[] classes = new ClassFile[v.size()];
-		v.copyInto(classes);
-		return classes;
-	}
-}
-
-/**
- * directory loader that will look all classes recursively
- * @todo should discard classes which package name does not
- * match the directory ?
- */
-class DirectoryLoader implements ClassPathLoader.FileLoader {
-	private File directory;
-	
-	DirectoryLoader(File dir){
-		directory = dir;
-	}
-	public File getFile(){
-		return directory;
-	}
-	public ClassFile[] getClasses() throws IOException {
-		Vector v = new Vector();
-		Vector files = listFiles( directory, new ClassFilter(), true);
-		for (int i = 0; i < files.size(); i++){
-			File file = (File)files.elementAt(i);
-			InputStream is = null;
-			try {
-				is = ClassPathLoader.getCachedStream(new FileInputStream(file));
-				ClassFile classFile = new ClassFile(is);
-				is.close();
-				is = null;
-				v.addElement(classFile);
-			} finally {
-				if (is != null){
-					try {
-						is.close();
-					} catch (IOException ignored){}
-				}
-			}
-		}
-		ClassFile[] classes = new ClassFile[v.size()];
-		v.copyInto(classes);
-		return classes;
-	}
-
-	/**
-	 * List files that obeys to a specific filter recursively from a given base
-	 * directory.
-	 * @param   directory   the directory where to list the files from.
-	 * @param   filter      the file filter to apply
-	 * @param   recurse     tells whether or not the listing is recursive.
-	 * @return  the list of <tt>File</tt> objects that applies to the given
-	 *          filter.
-	 */
-	public static Vector listFiles(File directory, FilenameFilter filter, boolean recurse){
-		if (!directory.isDirectory()){
-			 throw new IllegalArgumentException(directory + " is not a directory");
-		}
-		Vector list = new Vector();
-		listFilesTo(list, directory, filter, recurse);
-		return list;
-	}
-
-	/**
-	 * List and add files to a given list. As a convenience it sends back the
-	 * instance of the list given as a parameter.
-	 * @param   list    the list of files where the filtered files should be added
-	 * @param   directory   the directory where to list the files from.
-	 * @param   filter      the file filter to apply
-	 * @param   recurse     tells whether or not the listing is recursive.
-	 * @return  the list instance that was passed as the <tt>list</tt> argument.
-	 */
-	private static Vector listFilesTo(Vector list, File directory, FilenameFilter filter, boolean recurse){
-		String[] files = directory.list(filter);
-		for (int i = 0; i < files.length; i++){
-			list.addElement( new File(directory, files[i]) );
-		}
-		files = null;   // we don't need it anymore
-		if (recurse){
-			String[] subdirs = directory.list( new DirectoryFilter() );
-			for (int i = 0; i < subdirs.length; i++){
-				listFilesTo(list, new File(directory, subdirs[i]), filter, recurse);
-			}
-		}
-		return list;
-	}
-
-}
-
-/** Convenient filter that accepts only directory <tt>File</tt> */
-class DirectoryFilter implements FilenameFilter {
-	public boolean accept(File directory, String name){
-		File pathname = new File(directory, name);
-		return pathname.isDirectory();
-	}
-}
-/** convenient filter to accept only .class files */
-class ClassFilter implements FilenameFilter {
-	public boolean accept(File dir, String name){
-		return name.endsWith(".class");
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/FieldInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/FieldInfo.java
deleted file mode 100644
index 3510169..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/FieldInfo.java
+++ /dev/null
@@ -1,132 +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.sitraka.bytecode;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-import org.apache.tools.ant.taskdefs.optional.sitraka.bytecode.attributes.*;
-
-/**
- * field structure
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class FieldInfo {
-	
-	protected ConstantPool constantPool;
-	protected int access_flags;
-	protected int name_index;
-	protected int descriptor_index;
-	protected AttributeInfoList attributes;
-	protected boolean synthetic;
-	protected boolean deprecated;
-	protected boolean constant;
-	
-	public FieldInfo(ConstantPool pool){
-		constantPool = pool;
-	}
-	
-	public void read(DataInputStream dis) throws IOException {
-		access_flags = dis.readShort();
-		name_index = dis.readShort();
-		descriptor_index = dis.readShort();
-		attributes = new AttributeInfoList(constantPool);
-		attributes.read(dis);
-		constant = attributes.getAttribute(AttributeInfo.CONSTANT_VALUE) != null;
-		deprecated = attributes.getAttribute(AttributeInfo.DEPRECATED) != null;
-		synthetic = attributes.getAttribute(AttributeInfo.SYNTHETIC) != null;
-	}
-	
-	public int getAccessFlags(){
-		return access_flags;
-	}
-	
-	public String getName(){
-		return Utils.getUTF8Value(constantPool, name_index);
-	}
-	
-	public String getDescriptor(){
-		return Utils.getUTF8Value(constantPool, descriptor_index);
-	}
-	
-	public boolean isDeprecated(){
-		return deprecated;
-	}
-	
-	public boolean isSynthetic(){
-		return synthetic;
-	}
-	
-	public boolean isConstant(){
-		return constant;
-	}
-
-	public String getAccess(){
-		return Utils.getFieldAccess(access_flags);
-	}
-	
-	public String toString(){
-		StringBuffer sb = new StringBuffer();
-		sb.append("Field: ");
-		sb.append(getAccess()).append(" ");
-		Utils.descriptor2java(getDescriptor(),0,sb);
-		sb.append(" ").append(getName());
-		return sb.toString();
-	}
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/FieldInfoList.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/FieldInfoList.java
deleted file mode 100644
index a89620f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/FieldInfoList.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.sitraka.bytecode;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * field structure list
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class FieldInfoList {
-	
-	protected ConstantPool constantPool;
-	
-	protected FieldInfo[] fields;
-	
-	public FieldInfoList(ConstantPool pool){
-		constantPool = pool;
-	}
-	
-	public void read(DataInputStream dis) throws IOException {
-		int numFields = dis.readShort();
-		fields = new FieldInfo[numFields];
-		for (int i = 0; i < fields.length; i++){
-			fields[i] = new FieldInfo(constantPool);
-			fields[i].read(dis);
-		}
-	}
-	
-	public String getFieldName(int index){
-		return getField(index).getName();
-	}
-	
-	public FieldInfo getField(int index){
-		return fields[index];
-	}
-	
-	public int length(){
-		return fields.length;
-	}
-	public String toString(){
-		StringBuffer sb = new StringBuffer();
-		sb.append("Fields: ").append(fields.length).append("\n");
-		for (int i = 0; i < fields.length; i++){
-			sb.append("\t");
-			sb.append(getField(i).toString());
-		}
-		return sb.toString();
-	}
-	
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/InterfaceList.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/InterfaceList.java
deleted file mode 100644
index 0469a31..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/InterfaceList.java
+++ /dev/null
@@ -1,105 +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.sitraka.bytecode;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.*;
-
-/**
- * list of interfaces implemented in a class.
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class InterfaceList {
-	protected ConstantPool constantPool;
-	protected int[] interfaces;
-	
-	public InterfaceList(ConstantPool pool){
-		constantPool = pool;
-	}
-	public void read(DataInputStream dis) throws IOException {
-		int count = dis.readShort();
-		interfaces = new int[count];
-		for (int i = 0; i < count; i++){
-			interfaces[i] = dis.readShort();
-		}
-	}
-	public int length(){
-		return interfaces.length;
-	}
-	public String getInterface(int i){
-		int index = interfaces[i];
-		ClassCPInfo cp = (ClassCPInfo)constantPool.getEntry(index);
-		return cp.getClassName().replace('/','.');
-	}
-	public String[] getInterfaces(){
-		String[] classes = new String[interfaces.length];
-		for (int i = 0; i < classes.length; i++){
-			classes[i] = getInterface(i);
-		}
-		return classes;
-	}
-	public String toString(){
-		StringBuffer sb = new StringBuffer("Interfaces: ");
-		String[] names = getInterfaces();
-		for (int i = 0; i < names.length; i++){
-			sb.append(names[i]);
-			if (i != names.length - 1){
-				sb.append(", ");
-			}
-		}
-		return sb.toString();
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/MethodInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/MethodInfo.java
deleted file mode 100644
index 4bdf1b9..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/MethodInfo.java
+++ /dev/null
@@ -1,167 +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.sitraka.bytecode;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.*;
-import org.apache.tools.ant.taskdefs.optional.sitraka.bytecode.attributes.*;
-
-/**
- * Method info structure.
- * @todo give a more appropriate name to methods.
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class MethodInfo {
-	protected ConstantPool constantPool;
-	protected int access_flags;
-	protected int name_index;
-	protected int descriptor_index;
-	protected Code code;
-	protected boolean deprecated;
-	protected boolean synthetic;
-	protected Exceptions exceptions;
-	public MethodInfo(ConstantPool pool){
-		constantPool = pool;
-	}
-	
-	public void read(DataInputStream dis) throws IOException {
-		access_flags = dis.readShort();
-		name_index = dis.readShort();
-		descriptor_index = dis.readShort();
-		AttributeInfoList attrlist = new AttributeInfoList(constantPool);
-		attrlist.read(dis);
-		code = (Code)attrlist.getAttribute(AttributeInfo.CODE);
-		synthetic = attrlist.getAttribute(AttributeInfo.SYNTHETIC) != null;
-		deprecated = attrlist.getAttribute(AttributeInfo.DEPRECATED) != null;
-		exceptions = (Exceptions)attrlist.getAttribute(AttributeInfo.EXCEPTIONS);
-	}
-	
-	public int getAccessFlags(){
-		return access_flags;
-	}
-	
-	public String getName(){
-		return Utils.getUTF8Value(constantPool, name_index);
-	}
-	
-	public String getDescriptor(){
-		return Utils.getUTF8Value(constantPool, descriptor_index);
-	}
-	
-	public String getFullSignature(){
-		return getReturnType() + " " + getShortSignature();
-	}
-	
-	public String getShortSignature(){
-		StringBuffer buf = new StringBuffer(getName());
-		buf.append("(");
-		String[] params = getParametersType();
-		for (int i = 0; i < params.length; i++){
-			buf.append(params[i]);
-			if (i != params.length - 1){
-				buf.append(", ");
-			}
-		}
-		buf.append(")");
-		return buf.toString();
-	}
-	
-	public String getReturnType(){
-		return Utils.getMethodReturnType(getDescriptor());
-	}
-	
-	public String[] getParametersType(){
-		return Utils.getMethodParams(getDescriptor());
-	}
-	
-	public Code getCode(){
-		return code;
-	}
-	
-	public int getNumberOfLines(){
-		int len = -1;
-		if (code != null){
-			LineNumberTable lnt = code.getLineNumberTable();
-			if (lnt != null){
-				len = lnt.length();
-			}
-		}
-		return len;
-	}
-	
-	public boolean isDeprecated(){
-		return deprecated;
-	}
-	
-	public boolean isSynthetic(){
-		return synthetic;
-	}
-    
-	public String getAccess(){
-		return Utils.getMethodAccess(access_flags);
-	}
-	
-	public String toString(){
-		StringBuffer sb = new StringBuffer();
-		sb.append("Method: ").append(getAccess()).append(" ");
-		sb.append(getFullSignature());
-		sb.append(" synthetic:").append(synthetic);
-		sb.append(" deprecated:").append(deprecated);
-		return sb.toString();
-	}
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/MethodInfoList.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/MethodInfoList.java
deleted file mode 100644
index 5afd256..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/MethodInfoList.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.taskdefs.optional.sitraka.bytecode;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * A list of method_info structures.
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class MethodInfoList {
-	/** pool containing all the information */
-	protected ConstantPool constantPool;
-	
-	/** methods in this list */
-	protected MethodInfo[] methods;
-	
-	
-	public MethodInfoList(ConstantPool pool){
-		constantPool = pool;
-	}
-	
-	/** read the bytecode from the stream */
-	public void read(DataInputStream dis) throws IOException {
-		int count = dis.readShort();
-		methods = new MethodInfo[count];
-		for (int i = 0; i < count; i++){
-			methods[i] = new MethodInfo(constantPool);
-			methods[i].read(dis);
-		}
-	}
-	
-	/** the size of the list */
-	public int length(){
-		return methods.length;
-	}
-	
-	/**
-	 * get a method in the list.
-	 * @param i the index of the method to retrieve
-	 * @return the method matching the index.
-	 */
-	public MethodInfo getMethod(int i){
-		return methods[i];
-	}
-	
-	/**
-	 * return the set of methods in this list. Mostly as a debugging purpose.
-	 */
-	public String toString(){
-		StringBuffer sb = new StringBuffer();
-		sb.append("Methods: ").append(methods.length).append("\n");
-		for (int i = 0; i < methods.length; i++){
-			sb.append("\t");
-			sb.append(getMethod(i).toString());
-			sb.append("\n");
-		}
-		return sb.toString();
-	}
-	
-}
-
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/Utils.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/Utils.java
deleted file mode 100644
index 82a771b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/Utils.java
+++ /dev/null
@@ -1,385 +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.sitraka.bytecode;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.*;
-import java.util.Vector;
-
-/**
- * Utilities mostly to manipulate methods and access flags.
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class Utils {
-	/** public access flag */
-    public static final short ACC_PUBLIC = 1;
-	/** private access flag */
-    public static final short ACC_PRIVATE = 2;
-	/** protected access flag */
-    public static final short ACC_PROTECTED = 4;
-	/** static access flag */
-    public static final short ACC_STATIC = 8;
-	/** final access flag */
-    public static final short ACC_FINAL = 16;
-	/** super access flag */
-    public static final short ACC_SUPER = 32;
-	/** synchronized access flag */
-    public static final short ACC_SYNCHRONIZED = 32;
-	/** volatile access flag */
-    public static final short ACC_VOLATILE = 64;
-	/** transient access flag */
-    public static final short ACC_TRANSIENT = 128;
-	/** native access flag */
-    public static final short ACC_NATIVE = 256;
-	/** interface access flag */
-    public static final short ACC_INTERFACE = 512;
-	/** abstract access flag */
-    public static final short ACC_ABSTRACT = 1024;
-	/** strict access flag */
-    public static final short ACC_STRICT = 2048;
-
-	/** private constructor */
-	private Utils(){
-	}
-	
-	/**
-	 * return an UTF8 value from the pool located a a specific index.
-	 * @param pool the constant pool to look at
-	 * @param index index of the UTF8 value in the constant pool
-	 * @return the value of the string if it exists
-	 * @throws ClassCastException if the index is not an UTF8 constant.
-	 */
-	public static String getUTF8Value(ConstantPool pool, int index){
-		return ((Utf8CPInfo)pool.getEntry(index)).getValue();
-	}
-	
-	/**
-	 * parse all parameters from a descritor into fields of java name.
-	 * @param descriptor of a method.
-	 * @return the parameter list of a given method descriptor. Each string
-	 * represent a java object with its fully qualified classname or the
-	 * primitive name such as int, long, ...
-	 */
-	public static String[] getMethodParams(String descriptor){
-		int i = 0;
-		if (descriptor.charAt(i) != '('){
-			throw new IllegalArgumentException("Method descriptor should start with a '('");
-		}
-		Vector params = new Vector();
-		StringBuffer param = new StringBuffer();
-        i++;
-        while ( (i = descriptor2java(descriptor, i, param)) < descriptor.length() ){
-			params.add(param.toString());
-			param.setLength(0); // reset
-			if (descriptor.charAt(i) == ')'){
-				i++;
-				break;
-			}
-		}
-		String[] array = new String[params.size()];
-		params.copyInto(array);
-		return array;
-	}
-	
-	/**
-	 * return the object type of a return type.
-	 * @param descriptor
-	 * @return get the return type objet of a given descriptor
-	 */
-	public static String getMethodReturnType(String descriptor){
-		int pos = descriptor.indexOf(')');
-		StringBuffer rettype = new StringBuffer();
-		descriptor2java(descriptor, pos + 1, rettype);
-		return rettype.toString();
-    }
-	
-	/**
-	 * Parse a single descriptor symbol and returns it java equivalent.
-	 * @param descriptor the descriptor symbol.
-	 * @param i the index to look at the symbol in the descriptor string
-	 * @param sb the stringbuffer to return the java equivalent of the symbol
-	 * @return the index after the descriptor symbol
-	 */
-	public static int descriptor2java(String descriptor, int i, StringBuffer sb){
-		// get the dimension
-		StringBuffer dim = new StringBuffer();
-		for (;descriptor.charAt(i) == '['; i++){
-			dim.append("[]");
-		}
-		// now get the type
-		switch (descriptor.charAt(i)){
-			case 'B': sb.append("byte"); break;
-			case 'C': sb.append("char"); break;
-			case 'D': sb.append("double"); break;
-			case 'F': sb.append("float"); break;
-			case 'I': sb.append("int"); break;
-			case 'J': sb.append("long"); break;
-			case 'S': sb.append("short"); break;
-			case 'Z': sb.append("boolean"); break;
-			case 'V': sb.append("void"); break;
-			case 'L':
-				// it is a class
-				int pos = descriptor.indexOf(';', i + 1);
-				String classname = descriptor.substring(i + 1, pos).replace('/', '.');
-				sb.append(classname);
-				i = pos;
-				break;
-			default:
-				//@todo, yeah this happens because I got things like:
-				// ()Ljava/lang/Object; and it will return and ) will be here
-				// think about it.
-				
-				//ooooops should never happen
-				//throw new IllegalArgumentException("Invalid descriptor symbol: '" + i + "' in '" + descriptor + "'");
-		}
-		sb.append(dim.toString());
-		return ++i;
-	}
-	
-	/**
-	 * check for abstract access
-	 * @param access_flags access flags
-	 */
-    public static boolean isAbstract(int access_flags) {
-        return (access_flags & ACC_ABSTRACT) != 0;
-    }
-	/**
-	 * check for public access
-	 * @param access_flags access flags
-	 */
-    public static boolean isPublic(int access_flags) {
-        return (access_flags & ACC_PUBLIC) != 0;
-    }
-	/**
-	 * check for a static access
-	 * @param access_flags access flags
-	 */
-    public static boolean isStatic(int access_flags) {
-        return (access_flags & ACC_STATIC) != 0;
-    }
-	/**
-	 *  check for native access
-	 * @param access_flags access flags
-	 */
-    public static boolean isNative(int access_flags) {
-        return (access_flags & ACC_NATIVE) != 0;
-    }
-	/**
-	 * check for class access
-	 * @param access_flags access flags
-	 */
-    public static boolean isClass(int access_flags) {
-        return !isInterface(access_flags);
-    }
-	/**
-	 * check for strict access
-	 * @param access_flags access flags
-	 */
-    public static boolean isStrict(int access_flags) {
-        return (access_flags & ACC_STRICT) != 0;
-    }
-	/**
-	 * check for interface access
-	 * @param access_flags access flags
-	 */
-    public static boolean isInterface(int access_flags) {
-        return (access_flags & ACC_INTERFACE) != 0;
-    }
-	/**
-	 * check for private access
-	 * @param access_flags access flags
-	 */
-    public static boolean isPrivate(int access_flags) {
-        return (access_flags & ACC_PRIVATE) != 0;
-    }
-	/**
-	 * check for transient flag
-	 * @param access_flags access flags
-	 */
-    public static boolean isTransient(int access_flags) {
-        return (access_flags & ACC_TRANSIENT) != 0;
-    }
-	/**
-	 * check for volatile flag
-	 * @param access_flags access flags
-	 */
-    public static boolean isVolatile(int access_flags){
-        return (access_flags & ACC_VOLATILE) != 0;
-    }
-	/**
-	 * check for super flag
-	 * @param access_flags access flag
-	 */
-    public static boolean isSuper(int access_flags) {
-        return (access_flags & ACC_SUPER) != 0;
-    }
-	/**
-	 * check for protected flag
-	 * @param access_flags access flags
-	 */
-    public static boolean isProtected(int access_flags) {
-        return (access_flags & ACC_PROTECTED) != 0;
-    }
-	/**
-	 * chck for final flag
-	 * @param access_flags access flags
-	 */
-    public static boolean isFinal(int access_flags) {
-        return (access_flags & ACC_FINAL) != 0;
-    }
-	/**
-	 * check for synchronized flag
-	 * @param access_flags access flags
-	 */
-    public static boolean isSynchronized(int access_flags) {
-        return (access_flags & ACC_SYNCHRONIZED) != 0;
-    }
-	
-	/**
-	 * return the method access flag as java modifiers
-	 * @param access_flags access flags
-	 * @return the access flags as modifier strings
-	 */
-    public static String getMethodAccess(int access_flags) {
-        StringBuffer sb = new StringBuffer();
-        if(isPublic(access_flags)){
-            sb.append("public ");
-		} else if(isPrivate(access_flags)){
-            sb.append("private ");
-		} else if(isProtected(access_flags)){
-            sb.append("protected ");
-		}
-		if(isFinal(access_flags)){
-            sb.append("final ");
-		}
-        if(isStatic(access_flags)){
-            sb.append("static ");
-		}
-        if(isSynchronized(access_flags)){
-            sb.append("synchronized ");
-		}
-        if(isNative(access_flags)){
-            sb.append("native ");
-		}
-        if(isAbstract(access_flags)){
-            sb.append("abstract ");
-		}
-        return sb.toString().trim();
-    }
-
-	/**
-	 * return the field access flag as java modifiers
-	 * @param access_flags access flags
-	 * @return the access flags as modifier strings
-	 */
-    public static String getFieldAccess(int access_flags) {
-        StringBuffer sb = new StringBuffer();
-        if(isPublic(access_flags)){
-            sb.append("public ");
-		} else if(isPrivate(access_flags)){
-            sb.append("private ");
-		} else if (isProtected(access_flags)){
-            sb.append("protected ");
-		}
-        if(isFinal(access_flags)){
-            sb.append("final ");
-		}
-        if(isStatic(access_flags)){
-            sb.append("static ");
-		}
-        if(isVolatile(access_flags)){
-            sb.append("volatile ");
-		}
-        if(isTransient(access_flags)){
-            sb.append("transient ");
-		}
-        return sb.toString().trim();
-    }
-
-	/**
-	 * return the class access flag as java modifiers
-	 * @param access_flags access flags
-	 * @return the access flags as modifier strings
-	 */
-    public static String getClassAccess(int access_flags) {
-        StringBuffer sb = new StringBuffer();
-        if(isPublic(access_flags)){
-            sb.append("public ");
-		} else if (isProtected(access_flags)){
-			sb.append("protected ");
-		} else if (isPrivate(access_flags)){
-			sb.append("private ");
-		}
-		if(isFinal(access_flags)){
-            sb.append("final ");
-		}
-        if(isSuper(access_flags)){
-            sb.append("/*super*/ ");
-		}
-        if(isInterface(access_flags)){
-            sb.append("interface ");
-		}
-        if(isAbstract(access_flags)){
-            sb.append("abstract ");
-		}
-        if(isClass(access_flags)){
-            sb.append("class ");
-		}
-        return sb.toString().trim();
-    }
-}
-
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/AttributeInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/AttributeInfo.java
deleted file mode 100644
index 035a91b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/AttributeInfo.java
+++ /dev/null
@@ -1,146 +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.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.*;
-import org.apache.tools.ant.taskdefs.optional.sitraka.bytecode.*;
-
-/**
- * Attribute info structure that provides base methods
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public abstract class AttributeInfo {
-
-	public final static String SOURCE_FILE = "SourceFile";
-
-	public final static String CONSTANT_VALUE = "ConstantValue";
-
-	public final static String CODE = "Code";
-
-	public final static String EXCEPTIONS = "Exceptions";
-
-	public final static String LINE_NUMBER_TABLE = "LineNumberTable";
-
-	public final static String LOCAL_VARIABLE_TABLE = "LocalVariableTable";
-
-	public final static String INNER_CLASSES = "InnerClasses";
-
-	public final static String SOURCE_DIR = "SourceDir";
-
-	public final static String SYNTHETIC = "Synthetic";
-
-	public final static String DEPRECATED = "Deprecated";
-
-	public final static String UNKNOWN = "Unknown";
-	
-	protected int name_index;
-	
-	protected ConstantPool constantPool;
-	
-	protected AttributeInfo(int attr_index, ConstantPool pool){
-		name_index = attr_index;
-		constantPool = pool;
-	}
-	
-	/**
-	 * @param dis
-	 * @throws IOException
-	 */
-	protected void read(DataInputStream dis) throws IOException {
-		int len = dis.readInt();
-		dis.skipBytes(len);
-	}
-	
-	public String getName(){
-		return Utils.getUTF8Value(constantPool, name_index);
-	}
-	
-	/**
-	 * @param attr_index
-	 * @param dis
-	 * @param pool
-	 */
-	public static AttributeInfo newAttribute(int attr_index, DataInputStream dis, ConstantPool pool) throws IOException {
-		AttributeInfo attr = null;
-		final String name = Utils.getUTF8Value(pool, attr_index);
-		if (SOURCE_FILE.equals(name)){
-			attr = new SourceFile(attr_index, pool);
-		} else if (CONSTANT_VALUE.equals(name)){
-			attr = new ConstantValue(attr_index, pool);
-		} else if (CODE.equals(name)){
-			attr = new Code(attr_index, pool);
-		} else if (EXCEPTIONS.equals(name)){
-			attr = new Exceptions(attr_index, pool);
-		} else if (LINE_NUMBER_TABLE.equals(name)){
-			attr = new LineNumberTable(attr_index, pool);
-		} else if (LOCAL_VARIABLE_TABLE.equals(name)){
-			attr = new LocalVariableTable(attr_index, pool);
-		} else if (INNER_CLASSES.equals(name)){
-			attr = new InnerClasses(attr_index, pool);
-		} else if (SOURCE_DIR.equals(name)){
-			attr = new SourceDir(attr_index, pool);
-		} else if (SYNTHETIC.equals(name)){
-			attr = new Synthetic(attr_index, pool);
-		} else if (DEPRECATED.equals(name)){
-			attr = new Deprecated(attr_index, pool);
-		} else {
-			attr = new Unknown(attr_index, pool);
-		}
-		attr.read(dis);
-		return attr;
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/AttributeInfoList.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/AttributeInfoList.java
deleted file mode 100644
index d9a4854..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/AttributeInfoList.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.taskdefs.optional.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * list of attributes
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class AttributeInfoList {
-	
-	protected AttributeInfo[] attributes;
-	
-	protected ConstantPool constantPool;
-	
-	public AttributeInfoList(ConstantPool pool){
-		constantPool = pool;
-	}
-	
-	public void read(DataInputStream dis) throws IOException {
-		final int attributes_count = dis.readUnsignedShort();
-		attributes = new AttributeInfo[attributes_count];
-		for (int i = 0; i < attributes_count; i++){
-			int attr_id = dis.readShort();
-			attributes[i] = AttributeInfo.newAttribute(attr_id, dis, constantPool);
-		}
-	}
-	
-	public AttributeInfo[] getAttributes(){
-		return attributes;
-	}
-	
-	public AttributeInfo getAttribute(String name){
-		for (int i = 0; i < attributes.length; i++){
-			if (name.equals(attributes[i].getName())){
-				return attributes[i];
-			}
-		}
-		return null;
-	}
-	
-	public int size(){
-		return attributes.length;
-	}
-	
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Code.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Code.java
deleted file mode 100644
index b8e0a34..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Code.java
+++ /dev/null
@@ -1,160 +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.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * Code structure.
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class Code extends AttributeInfo {
-	
-	protected int length;
-	
-	protected int max_stack;
-	
-	protected int max_locals;
-	
-	protected byte[] code;
-	
-	protected ExceptionInfo[] exceptions;
-		
-	protected LineNumberTable lineNumberTable;
-	
-	public Code(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-	
-	public void read(DataInputStream dis) throws IOException {
-		length = dis.readInt();
-		max_stack = dis.readShort();
-		max_locals = dis.readShort();
-		
-		// read bytecode...
-		int bytecode_len = dis.readInt();
-		//code = new byte[bytecode_len];
-		//dis.readFully(code);
-		dis.skip(bytecode_len);
-		
-		// read exceptions...
-		int exception_count = dis.readShort();
-		exceptions = new ExceptionInfo[exception_count];
-		for (int i = 0; i < exception_count; i++){
-			exceptions[i] = new ExceptionInfo(constantPool);
-			exceptions[i].read(dis);
-		}
-		
-		// read attributes...
-		AttributeInfoList attributes = new AttributeInfoList(constantPool);
-		attributes.read(dis);
-		lineNumberTable = (LineNumberTable)attributes.getAttribute(AttributeInfo.LINE_NUMBER_TABLE);
-	}
-	
-	public int getMaxStack(){
-		return max_stack;
-	}
-	
-	public int getMaxLocals(){
-		return max_locals;
-	}
-	
-	public byte[] getCode(){
-		return code;
-	}
-	
-	public ExceptionInfo[] getExceptions(){
-		return exceptions;
-	}
-	
-	public LineNumberTable getLineNumberTable(){
-		return lineNumberTable;
-	}
-	
-	public static class ExceptionInfo {
-		protected ConstantPool constantPool;
-		protected int startPC;
-		protected int endPC;
-		protected int handlerPC;
-		protected int catchType;
-		public ExceptionInfo(ConstantPool pool){
-			constantPool = pool;
-		}
-		public void read(DataInputStream dis) throws IOException {
-			startPC = dis.readShort();
-			endPC = dis.readShort();
-			handlerPC = dis.readShort();
-			catchType = dis.readShort();
-		}
-		public int getStartPC(){
-			return startPC;
-		}
-		public int getEndPC(){
-			return endPC;
-		}
-		public int getHandlerPC(){
-			return handlerPC;
-		}
-		public int getCatchType(){
-			return catchType;
-		}
-	}
-	
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/ConstantValue.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/ConstantValue.java
deleted file mode 100644
index 0b60b74..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/ConstantValue.java
+++ /dev/null
@@ -1,85 +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.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * constant value structure
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class ConstantValue extends AttributeInfo {
-	
-	protected int name_index;
-	
-	public ConstantValue(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-	protected void read(DataInputStream dis) throws IOException {
-		int len = dis.readInt(); // assert 2 == len : len
-		if (len != 2){
-			throw new IllegalStateException("Constant value length should be 2 but was " + len);
-		}
-		name_index = dis.readShort();
-	}
-	
-	public String getValue(){
-		return ((Utf8CPInfo)constantPool.getEntry(name_index)).getValue();
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Deprecated.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Deprecated.java
deleted file mode 100644
index 55540b5..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Deprecated.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.taskdefs.optional.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * deprecated structure
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class Deprecated extends AttributeInfo {
-	public Deprecated(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Exceptions.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Exceptions.java
deleted file mode 100644
index 7f1645e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Exceptions.java
+++ /dev/null
@@ -1,71 +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.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * exceptions structure
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class Exceptions extends AttributeInfo {
-	public Exceptions(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/InnerClasses.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/InnerClasses.java
deleted file mode 100644
index 5a23667..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/InnerClasses.java
+++ /dev/null
@@ -1,72 +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.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * inner classes structure
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class InnerClasses extends AttributeInfo {
-	
-	public InnerClasses(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-	
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/LineNumberTable.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/LineNumberTable.java
deleted file mode 100644
index 0389de4..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/LineNumberTable.java
+++ /dev/null
@@ -1,97 +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.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * line number table structure
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class LineNumberTable extends AttributeInfo {
-	
-	protected int count;
-	
-	protected int[] varTable;
-	
-	public LineNumberTable(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-	
-	protected void read(DataInputStream dis) throws IOException {
-		int len = dis.readInt();
-		count = dis.readShort();
-		varTable = new int[ count * 2 ];
-		for (int i = 0; i < varTable.length; i++){
-			varTable[i] = dis.readShort();
-		}
-	}
-	
-	public int getStartPC(int i){
-		return varTable[2*i];
-	}
-	
-	public int getLineNumber(int i){
-		return varTable[2*i + 1];
-	}
-	
-	public int length(){
-		return count;
-	}
-	
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/LocalVariableTable.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/LocalVariableTable.java
deleted file mode 100644
index 2b11b22..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/LocalVariableTable.java
+++ /dev/null
@@ -1,105 +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.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * local variable table.
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class LocalVariableTable extends AttributeInfo {
-	
-	protected int count;
-	
-	protected int[] varTable;
-	
-	public LocalVariableTable(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-	
-	protected void read(DataInputStream dis) throws IOException {
-		int len = dis.readInt();
-		count = dis.readShort();
-		varTable = new int[count * 5];
-		for (int i = 0; i < varTable.length; i++){
-			varTable[i] = dis.readShort();
-		}
-	}
-	
-	public int getStartPC(int index){
-		return varTable[5*index];
-	}
-	public int getEndPC(int index){
-		return varTable[5*index] + varTable[5*index + 1];
-	}
-	public String getVariableName(int index){
-		int i = varTable[5*index + 2];
-		return ((Utf8CPInfo)constantPool.getEntry(i)).getValue();
-	}
-	public String getType(int index){
-		int i = varTable[5*index + 3];
-		return ((Utf8CPInfo)constantPool.getEntry(i)).getValue();
-	}
-	public int getSlot(int index){
-		return varTable[5*index + 4];
-	}
-	public int length(){
-		return count;
-	}
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/SourceDir.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/SourceDir.java
deleted file mode 100644
index c80d80c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/SourceDir.java
+++ /dev/null
@@ -1,84 +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.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * source directory structure.
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class SourceDir extends AttributeInfo {
-	
-	protected int name_index;
-	
-	public SourceDir(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-	
-	protected void read(DataInputStream dis) throws IOException {
-		int len = dis.readInt();
-		// assert len == 2
-		name_index = dis.readShort();
-	}
-	
-	public String getValue(){
-		return ((Utf8CPInfo)constantPool.getEntry(name_index)).getValue();
-	}
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/SourceFile.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/SourceFile.java
deleted file mode 100644
index 31c44b1..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/SourceFile.java
+++ /dev/null
@@ -1,84 +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.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * source file structure
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class SourceFile extends AttributeInfo {
-	
-	protected int name_index;
-	
-	public SourceFile(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-	
-	protected void read(DataInputStream dis) throws IOException {
-		int len = dis.readInt();
-		// assert len == 2
-		name_index = dis.readShort();
-	}
-	
-	public String getValue(){
-		return ((Utf8CPInfo)constantPool.getEntry(name_index)).getValue();
-	}
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Synthetic.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Synthetic.java
deleted file mode 100644
index 83c79ee..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Synthetic.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.taskdefs.optional.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.Utf8CPInfo;
-
-/**
- * synthetic structure
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class Synthetic extends AttributeInfo {
-	public Synthetic(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Unknown.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Unknown.java
deleted file mode 100644
index 1e649f4..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/attributes/Unknown.java
+++ /dev/null
@@ -1,69 +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.sitraka.bytecode.attributes;
-
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool;
-
-/**
- * unknown structure attribute
- *
- * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class Unknown extends AttributeInfo {
-	public Unknown(int attr_index, ConstantPool pool){
-		super(attr_index, pool);
-	}
-}
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 c483c22..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.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.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;
-    private String m_serverPath = 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;
-    }
-
-    /**
-     * Set the path to the location of the ss.ini
-     *
-     * @param serverPath
-     */
-    public final void setServerpath(String serverPath) {
-        m_serverPath = serverPath;
-    }
-
-    protected int run(Commandline cmd) {
-        try {
-            Execute exe = new Execute(new LogStreamHandler(this, 
-                                                           Project.MSG_INFO,
-                                                           Project.MSG_WARN));
-
-            // If location of ss.ini is specified we need to set the 
-            // environment-variable SSDIR to this value
-            if (m_serverPath != null) {
-                String[] env = exe.getEnvironment();
-                if( env == null ) {
-                    env = new String[0];
-                }
-                String[] newEnv = new String[env.length+1];
-                for( int i=0;i<env.length;i++ ) {
-                    newEnv[i] = env[i];
-                }
-                newEnv[env.length] = "SSDIR=" + m_serverPath;
-
-                exe.setEnvironment(newEnv);
-            }
-            
-            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 'Checkin' command
-     */
-    public static final String COMMAND_CHECKIN = "Checkin";
-    /**
-     * 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";
-    /** */
-    public static final String FLAG_QUIET = "-O-";
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSCHECKIN.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSCHECKIN.java
deleted file mode 100644
index e605c87..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSCHECKIN.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.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 CheckIn commands to Microsoft Visual Source Safe.
- *
- * @author Martin Poeschl
- */
-public class MSVSSCHECKIN extends MSVSS {
-
-    private String m_LocalPath = null;
-    private boolean m_Recursive = false;
-    private boolean m_Writable = false;
-    private String m_AutoResponse = null;
-    private String m_Comment = "-";
-
-    /**
-     * 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 Checkin VSS items [-H] [-C] [-I-] [-N] [-O] [-R] [-W] [-Y] [-?]
-        // as specified in the SS.EXE help
-        commandLine.setExecutable(getSSCommand());
-        commandLine.createArgument().setValue(COMMAND_CHECKIN);
-
-        // VSS items
-        commandLine.createArgument().setValue(getVsspath());
-        // -GL
-        getLocalpathCommand(commandLine);
-        // -I- or -I-Y or -I-N
-        getAutoresponse(commandLine);
-        // -R
-        getRecursiveCommand(commandLine);
-        // -W
-        getWritableCommand(commandLine);
-        // -Y
-        getLoginCommand(commandLine);
-        // -C
-        commandLine.createArgument().setValue("-C"+getComment());
-
-        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);
-        }
-    }
-
-    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
-
-    }
-
-    /**
-     * Set the comment to apply in SourceSafe
-     * <p>
-     * If this is null or empty, it will be replaced with "-" which
-     * is what SourceSafe uses for an empty comment.
-     */
-    public void setComment(String comment) {
-        if ( comment.equals("") || comment.equals("null") ) {
-            m_Comment = "-";
-        } else {
-            m_Comment = comment;
-        }
-    }
-
-    /**
-     * Gets the comment to be applied.
-     * @return the comment to be applied.
-     */
-    public String getComment() {
-        return m_Comment;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSCHECKOUT.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSCHECKOUT.java
deleted file mode 100644
index 9c81e4f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSCHECKOUT.java
+++ /dev/null
@@ -1,264 +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 CheckOut commands to Microsoft Visual Source Safe.
- *
- * @author Martin Poeschl
- */
-public class MSVSSCHECKOUT extends MSVSS {
-
-    private String m_LocalPath = null;
-    private boolean m_Recursive = 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 Checkout VSS items [-G] [-C] [-H] [-I-] [-N] [-O] [-R] [-V] [-Y] [-?]
-        // as specified in the SS.EXE help
-        commandLine.setExecutable(getSSCommand());
-        commandLine.createArgument().setValue(COMMAND_CHECKOUT);
-
-        // VSS items
-        commandLine.createArgument().setValue(getVsspath());
-        // -GL
-        getLocalpathCommand(commandLine);
-        // -I- or -I-Y or -I-N
-        getAutoresponse(commandLine);
-        // -R
-        getRecursiveCommand(commandLine);
-        // -V
-        getVersionCommand(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 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/MSVSSGET.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSGET.java
deleted file mode 100644
index 81e7f5d..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSGET.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.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>
- *   <tr>
- *      <td>quiet</td>
- *      <td>suppress output (off by default)</td>
- *      <td>No</td>
- *   </tr>
- *   <tr>
- *      <td>autoresponse</td>
- *      <td>What to respond with (sets the -I option). By default, -I- is
- *      used; values of Y or N will be appended to this.</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;
-    private boolean m_Quiet = false;
-
-    /**
-     * 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);
-        // -O-
-        getQuietCommand(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 " +
-                        "successful 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);
-        }
-    }
-
-    /**
-     * Sets/clears quiet mode
-     */
-    public final void setQuiet (boolean quiet) {
-        this.m_Quiet=quiet;
-    }
-    
-    public void getQuietCommand (Commandline cmd) {
-        if (m_Quiet) {
-            cmd.createArgument().setValue (FLAG_QUIET);
-        }
-    }
-    
-    /**
-     * 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/MSVSSHISTORY.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSHISTORY.java
deleted file mode 100644
index b34caa0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSHISTORY.java
+++ /dev/null
@@ -1,375 +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.EnumeratedAttribute;
-import java.io.File;
-import java.util.*;
-import java.text.*;
-/**
- * Task to perform HISTORY commands to Microsoft Visual Source Safe.
- *
- * @author Balazs Fejes 2
- * @author Glenn_Twiggs@bmc.com
- */
-
-public class MSVSSHISTORY extends MSVSS {
-
-    private String m_FromDate = null;
-    private String m_ToDate = null;
-    private DateFormat m_DateFormat =
-        DateFormat.getDateInstance(DateFormat.SHORT);
-    
-    private String m_FromLabel = null;
-    private String m_ToLabel = null;
-    private String m_OutputFileName = null;
-    private String m_User = null;
-    private int m_NumDays = Integer.MIN_VALUE;
-    private String m_Style = "";
-    private boolean m_Recursive = false;
-    
-    public static final String VALUE_FROMDATE = "~d";
-    public static final String VALUE_FROMLABEL = "~L";
-
-    public static final String FLAG_OUTPUT = "-O";
-    public static final String FLAG_USER = "-U";
-
-    /**
-     * 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);
-        }
-
-        // now look for illegal combinations of things ...
-
-        // build the command line from what we got the format is
-        // ss History elements [-H] [-L] [-N] [-O] [-V] [-Y] [-#] [-?]
-        // as specified in the SS.EXE help
-        commandLine.setExecutable(getSSCommand());
-        commandLine.createArgument().setValue(COMMAND_HISTORY);
-
-        // VSS items
-        commandLine.createArgument().setValue(getVsspath());
-
-        // -I-
-        commandLine.createArgument().setValue("-I-");  // ignore all errors
-
-        // -V
-        // Label an existing file or project version
-        getVersionDateCommand(commandLine);
-        getVersionLabelCommand(commandLine);
-
-        // -R   
-        if (m_Recursive) {
-            commandLine.createArgument().setValue(FLAG_RECURSION);
-        }
-
-        // -B / -D / -F-
-        if (m_Style.length() > 0) {
-            commandLine.createArgument().setValue(m_Style);
-        }
-
-        // -Y
-        getLoginCommand(commandLine);
-                
-        // -O
-        getOutputCommand(commandLine);
-
-        System.out.println("***: " + commandLine);
-        
-        result = run(commandLine);
-        if ( result != 0 ) {
-            String msg = "Failed executing: " + commandLine.toString();
-            throw new BuildException(msg, location);
-        }
-
-    }
-
-    /**
-     * Set the Start Date for the Comparison of two versions in SourceSafe History
-     */
-    public void setFromDate(String fromDate) {
-        if ( fromDate.equals("") || fromDate == null ) {
-            m_FromDate = null;
-        } else {
-            m_FromDate = fromDate;
-        }
-    }
-
-    /**
-     * Set the Start Label 
-     */
-    public void setFromLabel(String fromLabel) {
-        if ( fromLabel.equals("") || fromLabel == null ) {
-            m_FromLabel = null;
-        } else {
-            m_FromLabel = fromLabel;
-        }
-    }
-
-    /**
-     * Set the End Label 
-     */
-    public void setToLabel(String toLabel) {
-        if ( toLabel.equals("") || toLabel == null ) {
-            m_ToLabel = null;
-        } else {
-            m_ToLabel = toLabel;
-        }
-    }
-
-    /**
-     * Set the End Date for the Comparison of two versions in SourceSafe History
-     */
-    public void setToDate(String toDate) {
-        if ( toDate.equals("") || toDate == null ) {
-            m_ToDate = null;
-        } else {
-            m_ToDate = toDate;
-        }
-    }
-
-    /**
-     * Set the number of days to go back for Comparison
-     * <p>
-     * The default value is 2 days. 
-     */
-    public void setNumdays(int numd) {
-        m_NumDays = numd;
-    }
-    
-    /**
-     * Set the output file name for SourceSafe output
-     */
-    public void setOutput(File outfile) {
-        if ( outfile == null ) {
-            m_OutputFileName = null;
-        } else {
-            m_OutputFileName = outfile.getAbsolutePath();
-        }
-    }
-
-    /**
-     * Set the Start Date for the Comparison of two versions in SourceSafe History
-     */
-    public void setDateFormat(String dateFormat) {
-        if ( !(dateFormat.equals("") || dateFormat == null) ) {
-            m_DateFormat = new SimpleDateFormat(dateFormat);
-        }
-    }
-
-    /**
-     * Builds the version date command.
-     * @param cmd the commandline the command is to be added to
-     */
-    private void getVersionDateCommand(Commandline cmd) throws BuildException {
-        if ( m_FromDate == null && m_ToDate == null && m_NumDays == Integer.MIN_VALUE) {
-            return;
-        }
-        
-        if ( m_FromDate != null && m_ToDate != null) {
-            cmd.createArgument().setValue(FLAG_VERSION_DATE + m_ToDate + VALUE_FROMDATE + m_FromDate);
-        } else if (m_ToDate != null && m_NumDays != Integer.MIN_VALUE) {
-            String startDate = null;
-            try {
-                startDate = calcDate(m_ToDate, m_NumDays);
-            } catch (ParseException ex) {
-                String msg = "Error parsing date: " + m_ToDate;
-                throw new BuildException(msg, location);
-            }
-            cmd.createArgument().setValue(FLAG_VERSION_DATE + m_ToDate + VALUE_FROMDATE + startDate);
-        } else if (m_FromDate != null && m_NumDays != Integer.MIN_VALUE) {
-            String endDate = null;
-            try {
-                endDate = calcDate(m_FromDate, m_NumDays);
-            } catch (ParseException ex) {
-                String msg = "Error parsing date: " + m_FromDate;
-                throw new BuildException(msg, location);
-            }
-            cmd.createArgument().setValue(FLAG_VERSION_DATE + endDate + VALUE_FROMDATE + m_FromDate);
-        } else {
-            if (m_FromDate != null) {
-                cmd.createArgument().setValue(FLAG_VERSION + VALUE_FROMDATE + m_FromDate);
-            } else {
-                cmd.createArgument().setValue(FLAG_VERSION_DATE + m_ToDate);
-            }
-        }
-    }
-
-    /**
-     * Builds the version date command.
-     * @param cmd the commandline the command is to be added to
-     */
-    private void getVersionLabelCommand(Commandline cmd) throws BuildException {
-        if ( m_FromLabel == null && m_ToLabel == null ) {
-            return;
-        }
-        
-        if ( m_FromLabel != null && m_ToLabel != null) {
-            cmd.createArgument().setValue(FLAG_VERSION_LABEL + m_ToLabel + VALUE_FROMLABEL + m_FromLabel);
-        } else if (m_FromLabel != null) {
-            cmd.createArgument().setValue(FLAG_VERSION + VALUE_FROMLABEL + m_FromLabel);
-        } else {
-            cmd.createArgument().setValue(FLAG_VERSION_LABEL + m_ToLabel);
-        }
-    }
-    
-    /**
-     * Builds the version date command.
-     * @param cmd the commandline the command is to be added to
-     */
-    private void getOutputCommand(Commandline cmd) {
-        if ( m_OutputFileName != null) {
-            cmd.createArgument().setValue(FLAG_OUTPUT + m_OutputFileName);
-        }
-    }
-
-    /**
-     * Builds the User command.
-     * @param cmd the commandline the command is to be added to
-     */
-    private void getUserCommand(Commandline cmd) {
-        if ( m_User != null) {
-            cmd.createArgument().setValue(FLAG_USER + m_User);
-        }
-    }
-
-     /**
-     * Calculates the start date for version comparison.
-     * <p>
-     * Calculates the date numDay days earlier than startdate.
-     */
-    private String calcDate(String fromDate, int numDays) throws ParseException {
-        String toDate = null;
-        Date currdate = new Date();
-        Calendar calend= new GregorianCalendar();
-        currdate = m_DateFormat.parse(fromDate); 
-        calend.setTime(currdate);
-        calend.add(Calendar.DATE, numDays);
-        toDate = m_DateFormat.format(calend.getTime());
-        return toDate;
-    }
-
-    /**
-     * Set behaviour recursive or non-recursive
-     */
-    public void setRecursive(boolean recursive) {
-        m_Recursive = recursive;
-    }
-
-    /**
-     * Set the Username of the user whose changes we would like to see.
-     */
-    public void setUser(String user) {
-        m_User = user;
-    }
-
-    /**
-     * @return the 'recursive' command if the attribute was 'true', otherwise an empty string
-     */
-    private void getRecursiveCommand(Commandline cmd) {
-        if ( !m_Recursive ) {
-            return;
-        } else {
-            cmd.createArgument().setValue(FLAG_RECURSION);
-        }
-    }
-
-    /**
-     * Specify the detail of output
-     *
-     * @param option valid values:
-     * <ul>
-     * <li>brief:    -B Display a brief history. 
-     * <li>codediff: -D Display line-by-line file changes. 
-     * <li>nofile:   -F- Do not display individual file updates in the project history. 
-     * <li>default:  No option specified. Display in Source Safe's default format.
-     * </ul>
-     */
-    public void setStyle(BriefCodediffNofile attr) {
-        String option = attr.getValue();
-        if (option.equals("brief")) {
-            m_Style = "-B";
-        } else if (option.equals("codediff")) {
-            m_Style = "-D";
-        } else if (option.equals("default")) {
-            m_Style = "";
-        } else if (option.equals("nofile")) {
-            m_Style = "-F-";
-        } else {
-            throw new BuildException("Style " + attr + " unknown.");
-        }
-    }
-
-    public static class BriefCodediffNofile extends EnumeratedAttribute {
-       public String[] getValues() {
-           return new String[] {"brief", "codediff", "nofile", "default"};
-       }
-   }
-
-
-}
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 7852ec8..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSLABEL.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.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>
- *   <tr>
- *      <td>autoresponse</td>
- *      <td>What to respond with (sets the -I option). By default, -I- is
- *      used; values of Y or N will be appended to this.</td>
- *      <td>No</td>
- *   </tr>
- *   <tr>
- *      <td>comment</td>
- *      <td>The comment to use for this label. Empty or '-' for no comment.</td>
- *      <td>No</td>
- *   </tr>
- *      
- * </table>
- *
- * @author Phillip Wells
- */
-public class MSVSSLABEL extends MSVSS
-{
-    private String m_AutoResponse = null;
-    private String m_Label = null;
-    private String m_Version = null;
-    private String m_Comment = "-";
-
-    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
-        commandLine.createArgument().setValue("-C"+getComment());
-
-        // -I- or -I-Y or -I-N
-        getAutoresponse(commandLine);
-
-        // -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;
-    }
-
-    /**
-     * Set the comment to apply in SourceSafe
-     * <p>
-     * If this is null or empty, it will be replaced with "-" which
-     * is what SourceSafe uses for an empty comment.
-     */
-    public void setComment(String comment) {
-        if ( comment.equals("") || comment.equals("null") ) {
-            m_Comment = "-";
-        } else {
-            m_Comment = comment;
-        }
-    }
-
-    /**
-     * Gets the comment to be applied.
-     * @return the comment to be applied.
-     */
-    public String getComment() {
-        return m_Comment;
-    }
-    
-    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/rmic/DefaultRmicAdapter.java b/src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java
deleted file mode 100644
index ce68e33..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java
+++ /dev/null
@@ -1,466 +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.rmic;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.util.*;
-
-import java.io.File;
-import java.util.Random;
-import java.util.Vector;
-
-/**
- * This is the default implementation for the RmicAdapter interface.
- * Currently, this is a cut-and-paste of the original rmic task and
- * DefaultCopmpilerAdapter.
- *
- * @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> 
- * @author Takashi Okamoto <tokamoto@rd.nttdata.co.jp>
- */
-public abstract class DefaultRmicAdapter implements RmicAdapter {
-
-    private Rmic attributes;
-    private FileNameMapper mapper;
-
-    public DefaultRmicAdapter() {
-    }
-
-    public void setRmic( Rmic attributes ) {
-        this.attributes = attributes;
-        mapper = new RmicFileNameMapper();
-    }
-
-    public Rmic getRmic() {
-        return attributes;
-    }
-
-    protected String getStubClassSuffix() {
-        return "_Stub";
-    }        
-
-    protected String getSkelClassSuffix() {
-        return "_Skel";
-    }        
-
-    protected String getTieClassSuffix() {
-        return "_Tie";
-    }        
-
-    /**
-     * This implementation maps *.class to *getStubClassSuffix().class and - if
-     * stubversion is not 1.2 - to *getSkelClassSuffix().class.
-     */
-    public FileNameMapper getMapper() {
-        return mapper;
-    }
-
-    /**
-     * The CLASSPATH this rmic process will use.
-     */
-    public Path getClasspath() {
-        return getCompileClasspath();
-    }
-
-    /**
-     * Builds the compilation classpath.
-     */
-    protected Path getCompileClasspath() {
-        // add dest dir to classpath so that previously compiled and
-        // untouched classes are on classpath
-        Path classpath = new Path(attributes.getProject());
-        classpath.setLocation(attributes.getBase());
-
-        // Combine the build classpath with the system classpath, in an 
-        // order determined by the value of build.classpath
-
-        if (attributes.getClasspath() == null) {
-            if ( attributes.getIncludeantruntime() ) {
-                classpath.addExisting(Path.systemClasspath);
-            }
-        } else {
-            if ( attributes.getIncludeantruntime() ) {
-                classpath.addExisting(attributes.getClasspath().concatSystemClasspath("last"));
-            } else {
-                classpath.addExisting(attributes.getClasspath().concatSystemClasspath("ignore"));
-            }
-        }
-
-        if (attributes.getIncludejavaruntime()) {
-            // XXX move this stuff to a separate class, code is identical to
-            //     code in ../compiler/DefaultCompilerAdapter
-
-            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 if(System.getProperty("java.vm.name").equals("Kaffe")) {
-                FileSet kaffeJarFiles = new FileSet();
-                kaffeJarFiles.setDir(new File(System.getProperty("java.home") 
-                                              + File.separator + "share"
-                                              + File.separator + "kaffe"));
-                
-                kaffeJarFiles.setIncludes("*.jar");
-                classpath.addFileset(kaffeJarFiles);
-            } 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"));
-
-                // Added for MacOS X
-                classpath.addExisting(new Path(null,
-                                               System.getProperty("java.home")
-                                               + File.separator + ".."
-                                               + File.separator + "Classes"
-                                               + File.separator + "classes.jar"));
-                classpath.addExisting(new Path(null,
-                                               System.getProperty("java.home")
-                                               + File.separator + ".."
-                                               + File.separator + "Classes"
-                                               + File.separator + "ui.jar"));
-            }
-        }
-        return classpath;
-    }
-
-    /**
-     * setup rmic argument for rmic.
-     */
-    protected Commandline setupRmicCommand() {
-        return setupRmicCommand(null);
-    }
-
-    /**
-     * setup rmic argument for rmic.
-     *
-     * @param options additional parameters needed by a specific
-     *                implementation.
-     */
-    protected Commandline setupRmicCommand(String[] options) {
-        Commandline cmd = new Commandline();
-
-        if (options != null) {
-            for (int i=0; i<options.length; i++) {
-                cmd.createArgument().setValue(options[i]);
-            }
-        }
-
-        Path classpath = getCompileClasspath();
-
-        cmd.createArgument().setValue("-d");
-        cmd.createArgument().setFile(attributes.getBase());
-
-        if (attributes.getExtdirs() != null) {
-            if (Project.getJavaVersion().startsWith("1.1")) {
-                /*
-                 * XXX - This doesn't mix very well with build.systemclasspath,
-                 */
-                addExtdirsToClasspath(classpath);
-            } else {
-                cmd.createArgument().setValue("-extdirs");
-                cmd.createArgument().setPath(attributes.getExtdirs());
-            }
-        }
-
-        cmd.createArgument().setValue("-classpath");
-        cmd.createArgument().setPath(classpath);
-
-        String stubVersion = attributes.getStubVersion();
-        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 != attributes.getSourceBase()) {
-            cmd.createArgument().setValue("-keepgenerated");
-        }
-
-        if( attributes.getIiop() ) {
-            attributes.log("IIOP has been turned on.", Project.MSG_INFO);
-            cmd.createArgument().setValue("-iiop");
-            if( attributes.getIiopopts() != null ) {
-                attributes.log("IIOP Options: " + attributes.getIiopopts(),
-                               Project.MSG_INFO );
-                cmd.createArgument().setValue(attributes.getIiopopts());
-            }
-        }
-
-        if( attributes.getIdl() )  {
-            cmd.createArgument().setValue("-idl");
-            attributes.log("IDL has been turned on.", Project.MSG_INFO);
-            if( attributes.getIdlopts() != null ) {
-                cmd.createArgument().setValue(attributes.getIdlopts());
-                attributes.log("IDL Options: " + attributes.getIdlopts(),
-                               Project.MSG_INFO );
-            }
-        }
-
-        if( attributes.getDebug())  {
-            cmd.createArgument().setValue("-g");
-        }
-
-        logAndAddFilesToCompile(cmd);
-        return cmd;
-     }
-
-    /**
-     * Logs the compilation parameters, adds the files to compile and logs the 
-     * &qout;niceSourceList&quot;
-     */
-    protected void logAndAddFilesToCompile(Commandline cmd) {
-        Vector compileList = attributes.getCompileList();
-
-        attributes.log("Compilation args: " + cmd.toString(),
-                       Project.MSG_VERBOSE);
-
-        StringBuffer niceSourceList = new StringBuffer("File");
-        if (compileList.size() != 1) {
-            niceSourceList.append("s");
-        }
-        niceSourceList.append(" to be compiled:");
-
-        for (int i=0; i < compileList.size(); i++) {
-            String arg = (String)compileList.elementAt(i);
-            cmd.createArgument().setValue(arg);
-            niceSourceList.append("    " + arg);
-        }
-
-        attributes.log(niceSourceList.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) {
-        Path extdirs = attributes.getExtdirs();
-        if (extdirs == null) {
-            String extProp = System.getProperty("java.ext.dirs");
-            if (extProp != null) {
-                extdirs = new Path(attributes.getProject(), 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 = attributes.getProject().resolveFile(dirs[i]);
-            FileSet fs = new FileSet();
-            fs.setDir(dir);
-            fs.setIncludes("*");
-            classpath.addFileset(fs);
-        }
-    }
-
-    private final static Random rand = new Random();
-
-    /**
-     * Mapper that possibly returns two file names, *_Stub and *_Skel.
-     */
-    private class RmicFileNameMapper implements FileNameMapper {
-
-        RmicFileNameMapper() {}
-
-        /**
-         * Empty implementation.
-         */
-        public void setFrom(String s) {}
-        /**
-         * Empty implementation.
-         */
-        public void setTo(String s) {}
-
-        public String[] mapFileName(String name) {
-            if (name == null
-                || !name.endsWith(".class")
-                || name.endsWith(getStubClassSuffix()+".class") 
-                || name.endsWith(getSkelClassSuffix()+".class") 
-                || name.endsWith(getTieClassSuffix()+".class")) {
-                // Not a .class file or the one we'd generate
-                return null;
-            }
-
-            String base = name.substring(0, name.indexOf(".class"));
-            String classname = base.replace(File.separatorChar, '.');
-            if (attributes.getVerify() &&
-                !attributes.isValidRmiRemote(classname)) {
-                return null;
-            }
-
-            /*
-             * fallback in case we have trouble loading the class or
-             * don't know how to handle it (there is no easy way to
-             * know what IDL mode would generate.
-             *
-             * This is supposed to make Ant always recompile the
-             * class, as a file of that name should not exist.
-             */
-            String[] target = new String[] {name+".tmp."+rand.nextLong()};
-
-            if (!attributes.getIiop() && !attributes.getIdl()) {
-                // JRMP with simple naming convention
-                if ("1.2".equals(attributes.getStubVersion())) {
-                    target = new String[] {
-                        base + getStubClassSuffix() + ".class"
-                    };
-                } else {
-                    target = new String[] {
-                        base + getStubClassSuffix() + ".class",
-                        base + getSkelClassSuffix() + ".class",
-                    };
-                }
-            } else if (!attributes.getIdl()) {
-                int lastSlash = base.lastIndexOf(File.separatorChar);
-
-                String dirname = "";
-                /*
-                 * I know, this is not necessary, but I prefer it explicit (SB)
-                 */
-                int index = -1;
-                if (lastSlash == -1) {
-                    // no package
-                    index = 0;
-                } else {
-                    index = lastSlash + 1;
-                    dirname = base.substring(0, index);
-                }
-
-                String filename = base.substring(index);
-
-                try {
-                    Class c = attributes.getLoader().loadClass(classname);
-
-                    if (c.isInterface()) {
-                        // only stub, no tie
-                        target = new String[] {
-                            dirname + "_" + filename + getStubClassSuffix() 
-                            + ".class"
-                        };
-                    } else {
-                        /*
-                         * stub is derived from implementation, 
-                         * tie from interface name.
-                         */
-                        Class interf = attributes.getRemoteInterface(c);
-                        String iName = interf.getName();
-                        String iDir = "";
-                        int iIndex = -1;
-                        int lastDot = iName.lastIndexOf(".");
-                        if (lastDot == -1) {
-                            // no package
-                            iIndex = 0;
-                        } else {
-                            iIndex = lastDot + 1;
-                            iDir = iName.substring(0, iIndex);
-                            iDir = iDir.replace('.', File.separatorChar);
-                        }
-                        
-                        target = new String[] {
-                            dirname + "_" + filename + getTieClassSuffix() 
-                            + ".class",
-                            iDir + "_" + iName.substring(iIndex) 
-                            + getStubClassSuffix() + ".class"
-                        };
-                    }
-                } catch (ClassNotFoundException e) {
-                    attributes.log("Unable to verify class " + classname
-                                   + ". It could not be found.", 
-                                   Project.MSG_WARN);
-                } catch (NoClassDefFoundError e) {
-                    attributes.log("Unable to verify class " + classname
-                                   + ". It is not defined.", Project.MSG_WARN);
-                } catch (Throwable t) {
-                    attributes.log("Unable to verify class " + classname
-                                   + ". Loading caused Exception: "
-                                   + t.getMessage(), Project.MSG_WARN);
-                }
-            }
-            return target;
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/rmic/KaffeRmic.java b/src/main/org/apache/tools/ant/taskdefs/rmic/KaffeRmic.java
deleted file mode 100644
index 4f38554..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/rmic/KaffeRmic.java
+++ /dev/null
@@ -1,100 +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.rmic;
-
-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 rmic for Kaffe
- *
- * @author Takashi Okamoto <tokamoto@rd.nttdata.co.jp>
- */
-public class KaffeRmic extends DefaultRmicAdapter {
-
-    public boolean execute() throws BuildException {
-        getRmic().log("Using Kaffe rmic", Project.MSG_VERBOSE);
-        Commandline cmd = setupRmicCommand();
-
-        try {
-
-            Class c = Class.forName("kaffe.rmi.rmic.RMIC");
-            Constructor cons = c.getConstructor(new Class[] { String[].class });
-            Object rmic = cons.newInstance(new Object[] { cmd.getArguments() });
-            Method doRmic = c.getMethod("run", null);
-            String str[] = cmd.getArguments();
-            Boolean ok = (Boolean)doRmic.invoke(rmic, null);
-
-            return ok.booleanValue();
-        } catch (ClassNotFoundException ex) {
-            throw new BuildException("Cannot use Kaffe rmic, as it is not available"+
-                                     " A common solution is to set the environment variable"+
-                                     " JAVA_HOME or CLASSPATH.", getRmic().getLocation() );
-        }
-        catch (Exception ex) {
-            if (ex instanceof BuildException) {
-                throw (BuildException) ex;
-            } else {
-                throw new BuildException("Error starting Kaffe rmic: ", ex, getRmic().getLocation());
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapter.java b/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapter.java
deleted file mode 100644
index 7e044b0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapter.java
+++ /dev/null
@@ -1,100 +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.rmic;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.taskdefs.Rmic;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.util.FileNameMapper;
-
-/**
- * The interface that all rmic adapters must adher to.  
- *
- * <p>A rmic adapter is an adapter that interprets the rmic's
- * parameters in preperation to be passed off to the compiler this
- * adapter represents.  As all the necessary values are stored in the
- * Rmic task itself, the only thing all adapters need is the rmic
- * task, the execute command and a parameterless constructor (for
- * reflection).</p>
- *
- * @author Takashi Okamoto <tokamoto@rd.nttdata.co.jp>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-
-public interface RmicAdapter {
-
-    /**
-     * Sets the rmic attributes, which are stored in the Rmic task.
-     */
-    public void setRmic( Rmic attributes );
-
-    /**
-     * Executes the task.
-     *
-     * @return has the compilation been successful
-     */
-    public boolean execute() throws BuildException;
-
-    /**
-     * Maps source class files to the files generated by this rmic
-     * implementation.
-     */
-    public FileNameMapper getMapper();
-
-    /**
-     * The CLASSPATH this rmic process will use.
-     */
-    public Path getClasspath();
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java b/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java
deleted file mode 100644
index fe69476..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java
+++ /dev/null
@@ -1,146 +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.rmic;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.Project;
-
-/**
- * Creates the necessary rmic adapter, given basic criteria.
- *
- * @author Takashi Okamoto <tokamoto@rd.nttdata.co.jp>
- * @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
- */
-public class RmicAdapterFactory {
-
-    /** This is a singlton -- can't create instances!! */
-    private RmicAdapterFactory() {
-    }
-
-    /**
-     * Based on the parameter passed in, this method creates the necessary
-     * factory desired.
-     *
-     * The current mapping for rmic names are as follows:
-     * <ul><li>sun = SUN's rmic
-     * <li>kaffe = Kaffe's rmic
-     * <li><i>a fully quallified classname</i> = the name of a rmic
-     * adapter
-     * </ul>
-     *
-     * @param rmicType either the name of the desired rmic, or the
-     * full classname of the rmic's adapter.
-     * @param task a task to log through.
-     * @throws BuildException if the rmic type could not be resolved into
-     * a rmic adapter.
-     */
-    public static RmicAdapter getRmic( String rmicType, Task task ) 
-        throws BuildException {
-        if( rmicType == null){
-            /* 
-             * When not specified rmicType, search SUN's rmic and
-             * Kaffe's rmic.
-             */
-            try {
-                Class.forName("sun.rmi.rmic.Main");
-                rmicType = "sun";
-            } catch (ClassNotFoundException cnfe) {
-                try {
-                    Class.forName("kaffe.rmi.rmic.RMIC");
-                    Class.forName("kaffe.tools.compiler.Compiler");
-                    rmicType = "kaffe";
-                } catch (ClassNotFoundException cnfk) {
-                    throw new BuildException("Couldn\'t guess rmic implementation");
-                }
-            }
-        }
-
-        if ( rmicType.equalsIgnoreCase("sun") ) {
-            return new SunRmic();
-        } else if ( rmicType.equalsIgnoreCase("kaffe") ) {
-            return new KaffeRmic();
-        } else if ( rmicType.equalsIgnoreCase("weblogic") ) {
-            return new WLRmic();
-        }
-        return resolveClassName( rmicType );
-    }
-
-    /**
-     * Tries to resolve the given classname into a rmic 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 RmicAdapter.
-     */
-    private static RmicAdapter resolveClassName( String className )
-        throws BuildException {
-        try {
-            Class c = Class.forName( className );
-            Object o = c.newInstance();
-            return (RmicAdapter) 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 rmic 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/rmic/SunRmic.java b/src/main/org/apache/tools/ant/taskdefs/rmic/SunRmic.java
deleted file mode 100644
index 9eeaa7e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/rmic/SunRmic.java
+++ /dev/null
@@ -1,111 +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.rmic;
-
-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 rmic for SUN's JDK.
- *
- * @author Takashi Okamoto <tokamoto@rd.nttdata.co.jp>
- */
-public class SunRmic extends DefaultRmicAdapter {
-
-    public boolean execute() throws BuildException {
-        getRmic().log("Using SUN rmic compiler", Project.MSG_VERBOSE);
-        Commandline cmd = setupRmicCommand();
-
-        // Create an instance of the rmic, redirecting output to
-        // the project log
-        LogOutputStream logstr = new LogOutputStream(getRmic(), Project.MSG_WARN);
-
-        try {
-            Class c = Class.forName("sun.rmi.rmic.Main");
-            Constructor cons = c.getConstructor(new Class[] 
-                { OutputStream.class, String.class });
-            Object rmic = cons.newInstance(new Object[] { logstr, "rmic" });
-
-            Method doRmic = c.getMethod("compile", 
-                                        new Class [] { String[].class });
-            Boolean ok = (Boolean)doRmic.invoke(rmic, 
-                                                (new Object[] {cmd.getArguments()} ));
-            return ok.booleanValue();
-        } catch (ClassNotFoundException ex) {
-            throw new BuildException("Cannot use SUN rmic, as it is not available"+
-                                     " A common solution is to set the environment variable"+
-                                     " JAVA_HOME or CLASSPATH.", getRmic().getLocation() );
-        }
-        catch (Exception ex) {
-            if (ex instanceof BuildException) {
-                throw (BuildException) ex;
-            } else {
-                throw new BuildException("Error starting SUN rmic: ", ex, getRmic().getLocation());
-            }
-        } finally {
-            try {
-                logstr.close();
-            } catch (IOException e) {
-                throw new BuildException(e);
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java b/src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java
deleted file mode 100644
index 47caa9c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java
+++ /dev/null
@@ -1,112 +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.rmic;
-
-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 org.apache.tools.ant.types.Path;
-
-import java.io.*;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-/**
- * The implementation of the rmic for WebLogic
- *
- * @author Takashi Okamoto <tokamoto@rd.nttdata.co.jp>
- */
-public class WLRmic extends DefaultRmicAdapter {
-
-    public boolean execute() throws BuildException {
-        getRmic().log("Using WebLogic rmic", Project.MSG_VERBOSE);
-        Commandline cmd = setupRmicCommand(new String[] {"-noexit"});
-
-        try {
-            // Create an instance of the rmic
-            Class c = Class.forName("weblogic.rmic");
-            Method doRmic = c.getMethod("main", 
-                                        new Class [] { String[].class });
-            doRmic.invoke(null, new Object[] {  });
-            return true;
-        } catch (ClassNotFoundException ex) {
-            throw new BuildException("Cannot use WebLogic rmic, as it is not available"+
-                                     " A common solution is to set the environment variable"+
-                                     " CLASSPATH.", getRmic().getLocation() );
-        }
-        catch (Exception ex) {
-            if (ex instanceof BuildException) {
-                throw (BuildException) ex;
-            } else {
-                throw new BuildException("Error starting WebLogic rmic: ", ex, getRmic().getLocation());
-            }
-        }
-    }
-
-    /**
-     * Get the suffix for the rmic stub classes
-     */
-    public String getStubClassSuffix() {
-        return "_WLStub";
-    }
-
-    /**
-     * Get the suffix for the rmic skeleton classes
-     */
-    public String getSkelClassSuffix() {
-        return "_WLSkel";
-    }
-}
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 52071c1..0000000
--- a/src/main/org/apache/tools/ant/types/CommandlineJava.java
+++ /dev/null
@@ -1,366 +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;
-
-/**
- * A representation of a Java command line that is nothing more
- * than a composite of 2 <tt>Commandline</tt>. 1 for the vm/options and
- * 1 for the classname/arguments. It provides specific methods for
- * a java command line.
- *
- * @author thomas.haas@softwired-inc.com
- * @author <a href="sbailliez@apache.org>Stephane Bailliez</a>
- */
-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;
-    private String maxMemory = null;
-
-    /**
-     * Indicate whether it will execute a jar file or not, in this case
-     * the first vm option must be a -jar and the 'executable' is a jar file.
-     */
-     private boolean executeJar  = false;
-
-    /**
-     * 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(getJavaExecutableName());
-        setVmversion(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;
-    }
-
-    /**
-     * set a jar file to execute via the -jar option.
-     * @param the pathname of the jar to execute
-     */
-    public void setJar(String jarpathname){
-        javaCommand.setExecutable(jarpathname);
-        executeJar = true;
-    }
-
-    /**
-     * @return the pathname of the jar file to run via -jar option
-     * or <tt>null</tt> if there is no jar to run.
-     * @see #getClassname()
-     */
-    public String getJar(){
-        if (executeJar){
-            return javaCommand.getExecutable();
-        }
-        return null;
-    }
-
-    /**
-     * set the classname to execute
-     * @param classname the fully qualified classname.
-     */
-    public void setClassname(String classname) {
-        javaCommand.setExecutable(classname);
-        executeJar = false;
-    }
-
-    /**
-     * @return the name of the class to run or <tt>null</tt> if there is no class.
-     * @see #getJar()
-     */
-    public String getClassname() {
-        if (!executeJar) {
-            return javaCommand.getExecutable();
-        }
-        return null;
-    }
-
-    public Path createClasspath(Project p) {
-        if (classpath == null) {
-            classpath = new Path(p);
-        }
-        return classpath;
-    }
-
-    public String getVmversion() {
-        return vmVersion;
-    }
-
-    /**
-     * get the command line to run a java vm.
-     * @return the list of all arguments necessary to run the vm.
-     */
-    public String[] getCommandline() {
-       String[] result = new String[size()];
-        int pos = 0;
-        String[] vmArgs = getActualVMCommand().getCommandline();
-        // first argument is the java.exe path...
-        result[pos++] = vmArgs[0];
-        
-        // -jar must be the first option in the command line.
-        if (executeJar){
-            result[pos++] = "-jar";
-        }
-        // next follows the vm options
-        System.arraycopy(vmArgs, 1, result, pos, vmArgs.length - 1);
-        pos += vmArgs.length - 1;
-        // properties are part of the vm options...
-        if (sysProperties.size() > 0) {
-            System.arraycopy(sysProperties.getVariables(), 0,
-                             result, pos, sysProperties.size());
-            pos += sysProperties.size();
-        }
-        // classpath is a vm option too..
-        Path fullClasspath = classpath != null ? classpath.concatSystemClasspath("ignore") : null;
-        if (fullClasspath != null && fullClasspath.toString().trim().length() > 0) {
-            result[pos++] = "-classpath";
-            result[pos++] = fullClasspath.toString();
-        }
-        // this is the classname to run as well as its arguments.
-        // in case of 'executeJar', the executable is a jar file.
-        System.arraycopy(javaCommand.getCommandline(), 0, 
-                         result, pos, javaCommand.size());
-        return result;
-    }
-
-    /**
-     * -mx or -Xmx depending on VM version
-     */
-    public void setMaxmemory(String max){
-        this.maxMemory = max;
-    }
-
-
-    public String toString() {
-        return Commandline.toString(getCommandline());
-    }
-
-    private Commandline getActualVMCommand() {
-        Commandline actualVMCommand = (Commandline)vmCommand.clone();
-        if (maxMemory != null) {
-            if (vmVersion.startsWith("1.1")) {
-                actualVMCommand.createArgument().setValue("-mx" + maxMemory);
-            } else {
-                actualVMCommand.createArgument().setValue("-Xmx" + maxMemory);
-            }
-        }
-        return actualVMCommand;
-    }        
-
-    /**
-     * The size of the java command line.
-     * @return the total number of arguments in the java command line.
-     * @see #getCommandline()
-     */
-    public int size() {
-        int size = getActualVMCommand().size() + javaCommand.size() + sysProperties.size();
-        // classpath is "-classpath <classpath>" -> 2 args
-        if (classpath != null && classpath.size() > 0) {
-            size += 2;
-        }
-        // jar execution requires an additional -jar option
-        if (executeJar){
-            size++ ;
-        }
-        return size;
-    }
-
-    public Commandline getJavaCommand() {
-        return javaCommand;
-    }
-
-    public Commandline getVmCommand() {
-        return getActualVMCommand();
-    }
-
-    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.maxMemory = maxMemory;
-        if (classpath != null) {
-            c.classpath = (Path) classpath.clone();
-        }
-        c.vmVersion = vmVersion;
-        c.executeJar = executeJar;
-        return c;
-    }
-
-    /**
-     * Clear out the java arguments.
-     */
-    public void clearJavaArgs() {
-        javaCommand.clearArgs();
-    }
-
-    private String getJavaExecutableName() {
-	// This is the most common extension case - exe for windows and OS/2, 
-        // nothing for *nix.
-        String os = System.getProperty("os.name").toLowerCase();
-        boolean dosBased = 
-            os.indexOf("windows") >= 0 || os.indexOf("os/2") >= 0;
-	String extension =  dosBased? ".exe" : "";
-
-	// Look for java in the java.home/../bin directory.  Unfortunately
-	// on Windows java.home doesn't always refer to the correct location, 
-	// so we need to fall back to assuming java is somewhere on the
-	// PATH.
-	java.io.File jExecutable = 
-            new java.io.File(System.getProperty("java.home") +
-                             "/../bin/java" + extension );
-
-	if (jExecutable.exists()) {
-	    return jExecutable.getAbsolutePath();
-	} else {
-	    return "java";
-	}
-    }
-    
-}
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 f237638..0000000
--- a/src/main/org/apache/tools/ant/types/DataType.java
+++ /dev/null
@@ -1,209 +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;
-import org.apache.tools.ant.ProjectComponent;
-
-/**
- * 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 extends ProjectComponent {
-    /**
-     * 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;
-    }
-
-    /**
-     * Performs the check for circular references and returns the
-     * referenced object.  
-     */
-    protected Object getCheckedRef(Class requiredClass, String dataTypeName) {
-        if (!checked) {
-            Stack stk = new Stack();
-            stk.push(this);
-            dieOnCircularReference(stk, getProject());
-        }
-        
-        Object o = ref.getReferencedObject(getProject());
-        if (!(requiredClass.isAssignableFrom(o.getClass()))) {
-            String msg = ref.getRefId()+" doesn\'t denote a " + dataTypeName;
-            throw new BuildException(msg);
-        } else {
-            return o;
-        }
-    }
-
-    /**
-     * 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/Description.java b/src/main/org/apache/tools/ant/types/Description.java
deleted file mode 100644
index d343b47..0000000
--- a/src/main/org/apache/tools/ant/types/Description.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.types;
-
-import org.apache.tools.ant.Project;
-
-/**
- * Description is used to provide a project-wide description element
- * (that is, a description that applies to a buildfile as a whole).
- * If present, the <description> element is printed out before the
- * target descriptions.
- * 
- * Description has no attributes, only text.  There can only be one
- * project description per project.  A second description element will
- * overwrite the first.
- *
- * @author <a href="mailto:cstrong@arielpartners.com">Craeg Strong</a>
- * @version $Revision$ $Date$
- */
-public class Description extends DataType {
-   
-   private Project project;
-   
-   public Description(Project project) {
-      this.project = project;
-   }
-
-    /**
-     * Adds descriptive text to the project.
-     */
-   public void addText(String text) {
-      project.setDescription(text);
-   }
-}
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 104633e..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@epost.de">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/FileList.java b/src/main/org/apache/tools/ant/types/FileList.java
deleted file mode 100644
index 5c9b77d..0000000
--- a/src/main/org/apache/tools/ant/types/FileList.java
+++ /dev/null
@@ -1,172 +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.types;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-
-import java.io.File;
-
-import java.util.StringTokenizer;
-import java.util.Enumeration;
-import java.util.Stack;
-import java.util.Vector;
-
-/**
- * FileList represents an explicitly named list of files.  FileLists
- * are useful when you want to capture a list of files regardless of
- * whether they currently exist.  By contrast, FileSet operates as a
- * filter, only returning the name of a matched file if it currently
- * exists in the file system.
- * 
- * @author <a href="mailto:cstrong@arielpartners.com">Craeg Strong</a>
- * @version $Revision$ $Date$
- */
-public class FileList extends DataType {
-    
-    private Vector filenames = new Vector();
-    private File dir;
-
-    public FileList() {
-        super();
-    }
-
-    protected FileList(FileList filelist) {
-        this.dir       = filelist.dir;
-        this.filenames = filelist.filenames;
-    }
-
-    /**
-     * Makes this instance in effect a reference to another FileList
-     * 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) || (filenames.size() != 0)) {
-            throw tooManyAttributes();
-        }
-        super.setRefid(r);
-    }
-
-    public void setDir(File dir) throws BuildException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        this.dir = dir;
-    }
-
-    public File getDir(Project p) {
-        if (isReference()) {
-            return getRef(p).getDir(p);
-        }
-        return dir;
-    }
-
-    public void setFiles(String filenames) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        if (filenames != null && filenames.length() > 0) {
-            StringTokenizer tok = new StringTokenizer(filenames, ", \t\n\r\f", false);
-            while (tok.hasMoreTokens()) {
-               this.filenames.addElement(tok.nextToken());
-            }
-        }
-    }
-
-    /**
-     * Returns the list of files represented by this FileList.
-     */
-    public String[] getFiles(Project p) {
-        if (isReference()) {
-            return getRef(p).getFiles(p);
-        }
-
-        if (dir == null) {
-            throw new BuildException("No directory specified for filelist.");
-        }
-
-        if (filenames.size() == 0) {
-            throw new BuildException("No files specified for filelist.");
-        }
-
-        String result[] = new String[filenames.size()];
-        filenames.copyInto(result);
-        return result;
-    }
-    
-    /**
-     * Performs the check for circular references and returns the
-     * referenced FileList.  
-     */
-    protected FileList getRef(Project p) {
-        if (!checked) {
-            Stack stk = new Stack();
-            stk.push(this);
-            dieOnCircularReference(stk, p);
-        }
-        
-        Object o = ref.getReferencedObject(p);
-        if (!(o instanceof FileList)) {
-            String msg = ref.getRefId()+" doesn\'t denote a filelist";
-            throw new BuildException(msg);
-        } else {
-            return (FileList) o;
-        }
-    }
-
-} //-- FileList.java
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 85868e4..0000000
--- a/src/main/org/apache/tools/ant/types/FileSet.java
+++ /dev/null
@@ -1,312 +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();
-        }
-
-        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 include files list
-     */
-    public PatternSet.NameEntry createIncludesFile() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return defaultPatterns.createIncludesFile();
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public PatternSet.NameEntry createExclude() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return defaultPatterns.createExclude();
-    }
-
-    /**
-     * add a name entry on the include files list
-     */
-    public PatternSet.NameEntry createExcludesFile() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return defaultPatterns.createExcludesFile();
-    }
-    
-    /**
-     * 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.");
-        }
-
-        if (!dir.exists()) {
-            throw new BuildException(dir.getAbsolutePath()+" not found.");
-        }
-        if (!dir.isDirectory()) {
-            throw new BuildException(dir.getAbsolutePath()+" is not a directory.");
-        }
-
-        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);
-        }
-
-        p.log( "FileSet: Setup file scanner in dir " + dir + 
-            " with " + defaultPatterns, p.MSG_DEBUG );
-        
-        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/FilterSet.java b/src/main/org/apache/tools/ant/types/FilterSet.java
deleted file mode 100644
index 9b87db7..0000000
--- a/src/main/org/apache/tools/ant/types/FilterSet.java
+++ /dev/null
@@ -1,439 +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;
-
-// java io classes
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-
-// java util classes
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Properties;
-import java.util.Vector;
-
-// ant classes
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-
-/**
- * A set of filters to be applied to something.
- *
- * A filter set may have starttoken and endtokens defined.
- *
- * @author     <A href="mailto:gholam@xtra.co.nz">  Michael McCallum  </A>
- * @created   14 March 2001
- */
-public class FilterSet extends DataType {
-    
-    /**
-     * Individual filter component of filterset
-     *
-     * @author    Michael McCallum
-     * @created   14 March 2001
-     */
-    public static class Filter {
-        /** Token which will be replaced in the filter operation */
-        String token;
-        
-        /** The value which will replace the token in the filtering operation */
-        String value;
-        
-        /**
-         * Constructor for the Filter object
-         *
-         * @param token  The token which will be replaced when filtering
-         * @param value  The value which will replace the token when filtering
-         */
-        public Filter(String token, String value) {
-           this.token = token;
-           this.value = value;
-        }
-        
-        /**
-         * No argument conmstructor
-         */
-        public Filter() {
-        }
-        
-        /**
-         * Sets the Token attribute of the Filter object
-         *
-         * @param token  The new Token value
-         */
-        public void setToken( String token ) {
-           this.token = token;
-        }
-        
-        /**
-         * Sets the Value attribute of the Filter object
-         *
-         * @param value  The new Value value
-         */
-        public void setValue( String value ) {
-           this.value = value;
-        }
-        
-        /**
-         * Gets the Token attribute of the Filter object
-         *
-         * @return   The Token value
-         */
-        public String getToken() {
-           return token;
-        }
-        
-        /**
-         * Gets the Value attribute of the Filter object
-         *
-         * @return   The Value value
-         */
-        public String getValue() {
-           return value;
-        }
-     }
-    
-    /**
-     * The filtersfile nested element.
-     *
-     * @author    Michael McCallum
-     * @created   Thursday, April 19, 2001
-     */
-    public class FiltersFile {
-        
-        /**
-         * Constructor for the Filter object
-         */
-        public FiltersFile() {
-        }
-        
-        /**
-         * Sets the file from which filters will be read.
-         *
-         * @param file the file from which filters will be read.
-         */
-        public void setFile(File file) {
-           readFiltersFromFile(file);
-        }
-    }
-    
-    /** The default token start string */
-    public static final String DEFAULT_TOKEN_START = "@";
-    
-    /** The default token end string */
-    public static final String DEFAULT_TOKEN_END = "@";
-    
-    private String startOfToken = DEFAULT_TOKEN_START;
-    private String endOfToken = DEFAULT_TOKEN_END;
-    
-    /**
-     * List of ordered filters and filter files.
-     */
-    private Vector filters = new Vector();
-    
-    public FilterSet() {
-    }
-    
-    /**
-     * Create a Filterset from another filterset
-     *
-     * @param filterset the filterset upon which this filterset will be based.
-     */
-    protected FilterSet(FilterSet filterset) {
-        super();
-        this.filters = (Vector)filterset.getFilters().clone();
-    }
-
-    protected Vector getFilters() {
-        if (isReference()) {
-            return getRef().getFilters();
-        }
-        return filters;
-    }
-
-    protected FilterSet getRef() {
-        return (FilterSet)getCheckedRef(FilterSet.class, "filterset");
-    }
-    
-    /**
-     * Gets the filter hash of the FilterSet.
-     *
-     * @return   The hash of the tokens and values for quick lookup.
-     */
-    public Hashtable getFilterHash() {
-        int filterSize = getFilters().size();
-        Hashtable filterHash = new Hashtable(filterSize);
-        for (Enumeration e = getFilters().elements(); e.hasMoreElements();) {
-           Filter filter = (Filter) e.nextElement();
-           filterHash.put(filter.getToken(), filter.getValue());
-        }
-        return filterHash;
-    }
-    
-    /**
-     * set the file containing the filters for this filterset.
-     *
-     * @param filtersFile sets the filter fil to read filters for this filter set from.
-     * @exception BuildException if there is a problem reading the filters
-     */
-    public void setFiltersfile(File filtersFile) throws BuildException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        readFiltersFromFile(filtersFile);
-    }
-    
-    /**
-     * The string used to id the beginning of a token.
-     *
-     * @param startOfToken  The new Begintoken value
-     */
-    public void setBeginToken(String startOfToken) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        this.startOfToken = startOfToken;
-    }
-
-    public String getBeginToken() {
-        if (isReference()) {
-            return getRef().getBeginToken();
-        }
-        return startOfToken;
-    }
-    
-    
-    /**
-     * The string used to id the end of a token.
-     *
-     * @param endOfToken  The new Endtoken value
-     */
-    public void setEndToken( String endOfToken ) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        this.endOfToken = endOfToken;
-    }
-
-    public String getEndToken() {
-        if (isReference()) {
-            return getRef().getEndToken();
-        }
-        return endOfToken;
-    }
-    
-    
-    /**
-     * Read the filters from the given file.
-     *
-     * @param filtersFile         the file from which filters are read
-     * @exception BuildException  Throw a build exception when unable to read the
-     * file.
-     */
-    public void readFiltersFromFile(File filtersFile) throws BuildException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-
-        if (filtersFile.isFile()) {
-           log("Reading filters from " + filtersFile, Project.MSG_VERBOSE );
-           FileInputStream in = null;
-           try {
-              Properties props = new Properties();
-              in = new FileInputStream(filtersFile);
-              props.load(in);
-              
-              Enumeration enum = props.propertyNames();
-              Vector filters = getFilters();
-              while (enum.hasMoreElements()) {
-                 String strPropName = (String) enum.nextElement();
-                 String strValue = props.getProperty(strPropName);
-                 filters.addElement(new Filter(strPropName, strValue));
-              }
-           }
-           catch (Exception e) {
-              throw new BuildException( "Could not read filters from file: " + filtersFile );
-           }
-           finally {
-              if ( in != null ) {
-                 try {
-                    in.close();
-                 }
-                 catch (IOException ioex) {
-                 }
-              }
-           }
-        }
-        else {
-           throw new BuildException( "Must specify a file not a directory in the filtersfile attribute:" + filtersFile );
-        }
-    }
-    
-    /**
-     * Does replacement on the given string with token matching.
-     * This uses the defined starttoken and endtoken values which default to @ for both.
-     *
-     * @param line  The line to process the tokens in.
-     * @return      The string with the tokens replaced.
-     */
-    public String replaceTokens(String line) {
-        String beginToken = getBeginToken();
-        String endToken = getEndToken();
-        int index = line.indexOf(beginToken);
-        
-        if (index > -1) {
-            Hashtable tokens = getFilterHash();
-            try {
-                StringBuffer b = new StringBuffer();
-                int i = 0;
-                String token = null;
-                String value = null;
-                
-                do {
-                    int endIndex = line.indexOf(endToken, index + beginToken.length() + 1 );
-                    if (endIndex == -1) {
-                        break;
-                    }
-                    token = line.substring(index + beginToken.length(), endIndex );
-                    b.append(line.substring(i, index));
-                    if (tokens.containsKey(token)) {
-                        value = (String)tokens.get(token);
-                        log( "Replacing: " + beginToken + token + endToken + " -> " + value, Project.MSG_VERBOSE );
-                        b.append(value);
-                        i = index + beginToken.length() + token.length() + endToken.length();
-                    }
-                    else {
-                        // just append beginToken and search further
-                        b.append(beginToken);
-                        i = index + beginToken.length();
-                    }
-                } while ((index = line.indexOf( beginToken, i )) > -1 );
-                
-                b.append(line.substring(i));
-                return b.toString();
-            }
-            catch (StringIndexOutOfBoundsException e) {
-                return line;
-            }
-        }
-        else {
-           return line;
-        }
-    }
-    
-    /**
-     * Create a new filter
-     *
-     * @param  the filter to be added
-     */
-    public void addFilter(Filter filter) {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        filters.addElement(filter);
-    }
-    
-    /**
-     * Create a new FiltersFile
-     *
-     * @return   The filter that was created.
-     */
-    public FiltersFile createFiltersfile() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return new FiltersFile();
-    }
-    
-    /**
-    * Add a new filter made from the given token and value.
-    *
-    * @param token  The token for the new filter.
-    * @param value  The value for the new filter.
-    */
-    public void addFilter(String token, String value) {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        filters.addElement(new Filter(token, value));
-    }
-    
-    /**
-    * Add a Filterset to this filter set
-    *
-    * @param filterSet the filterset to be added to this filterset
-    */
-    public void addFilterSet(FilterSet filterSet) {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        for (Enumeration e = filterSet.getFilters().elements(); e.hasMoreElements();) {
-            filters.addElement((Filter)e.nextElement());
-        }
-    }
-    
-    /**
-    * Test to see if this filter set it empty.
-    *
-    * @return   Return true if there are filter in this set otherwise false.
-    */
-    public boolean hasFilters() {
-        return getFilters().size() > 0;
-    }
-}
- 
-
-
diff --git a/src/main/org/apache/tools/ant/types/FilterSetCollection.java b/src/main/org/apache/tools/ant/types/FilterSetCollection.java
deleted file mode 100644
index 6568bf0..0000000
--- a/src/main/org/apache/tools/ant/types/FilterSetCollection.java
+++ /dev/null
@@ -1,127 +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;
-
-// java io classes
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-
-// java util classes
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Properties;
-import java.util.Vector;
-
-// ant classes
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-
-/**
- * A FilterSetCollection is a collection of filtersets each of which may have
- * a different start/end token settings.
- *
- * @author     <A href="mailto:conor@apache.org">Conor MacNeill</A>
- */
-public class FilterSetCollection {
-    
-    private Vector filterSets = new Vector();
-
-    public FilterSetCollection() {
-    }
-    
-    public FilterSetCollection(FilterSet filterSet) {
-        addFilterSet(filterSet);
-    }
-    
-    
-    public void addFilterSet(FilterSet filterSet) {
-        filterSets.addElement(filterSet);
-    }
-    
-    /**
-     * Does replacement on the given string with token matching.
-     * This uses the defined starttoken and endtoken values which default to @ for both.
-     *
-     * @param line  The line to process the tokens in.
-     * @return      The string with the tokens replaced.
-     */
-    public String replaceTokens(String line) {
-        String replacedLine = line;
-        for (Enumeration e = filterSets.elements(); e.hasMoreElements();) {
-            FilterSet filterSet = (FilterSet)e.nextElement();
-            replacedLine = filterSet.replaceTokens(replacedLine);
-        }
-        return replacedLine;
-    }
-    
-    /**
-    * Test to see if this filter set it empty.
-    *
-    * @return   Return true if there are filter in this set otherwise false.
-    */
-    public boolean hasFilters() {
-        for (Enumeration e = filterSets.elements(); e.hasMoreElements();) {
-            FilterSet filterSet = (FilterSet)e.nextElement();
-            if (filterSet.hasFilters()) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
- 
-
-
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 af107dd..0000000
--- a/src/main/org/apache/tools/ant/types/Mapper.java
+++ /dev/null
@@ -1,272 +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);
-                AntClassLoader.initializeClass(c);
-            }
-            
-            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);
-        } finally {
-            if (type != null) {
-                classname = null;
-            }
-        }
-    }
-        
-    /**
-     * 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 d8a842b..0000000
--- a/src/main/org/apache/tools/ant/types/Path.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.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@epost.de">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 <code>&lt;pathelement&gt;</code> values.
-     */
-    public class PathElement {
-        private String[] parts;
-
-        public void setLocation(File loc) {
-            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();
-    }
-
-    public void setProject(Project p) {
-        this.project = p;
-    }
-    public Project getProject() {return project;}
-
-    /**
-     * 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 <code>&lt;pathelement&gt;</code> element.
-     */
-    public PathElement createPathElement() throws BuildException {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        PathElement pe = new PathElement();
-        elements.addElement(pe);
-        return pe;
-    }
-
-    /**
-     * Adds a nested <code>&lt;fileset&gt;</code> element.
-     */
-    public void addFileset(FileSet fs) throws BuildException {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        elements.addElement(fs);
-        checked = false;
-    }
-
-    /**
-     * Creates a nested <code>&lt;path&gt;</code> 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) {
-                Path p = (Path) o;
-                if (p.getProject() == null) {
-                    p.setProject(project);
-                }
-                String[] parts = p.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++) {
-                    File f = new File(dir, s[j]);
-                    String absolutePath = f.getAbsolutePath();
-                    addUnlessPresent(result, translateFile(absolutePath));
-                } 
-            }
-        }
-        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);
-            String pathElement = tok.nextToken();
-            try {
-                element.append(resolveFile(project, pathElement));
-            }
-            catch (BuildException e) {
-                project.log("Dropping path element " + pathElement + " as it is not valid relative to the project", 
-                            Project.MSG_VERBOSE);
-            }
-            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);
-            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 = defValue;
-        if (project != null) {
-            String o = project.getProperty("build.sysclasspath");
-            if (o != null) {
-                order = o;
-            }
-        }
-        
-        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 282910c..0000000
--- a/src/main/org/apache/tools/ant/types/PatternSet.java
+++ /dev/null
@@ -1,443 +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@epost.de">Stefan Bodewig</a>
- */
-public class PatternSet extends DataType {
-    private Vector includeList = new Vector();
-    private Vector excludeList = new Vector();
-    private Vector includesFileList = new Vector();
-    private Vector excludesFileList = new Vector();
-
-    /**
-     * 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 String toString() {
-            StringBuffer buf = new StringBuffer(name);
-            if ((ifCond != null) || (unlessCond != null)) {
-                buf.append(":");
-                String connector = "";
-                
-                if (ifCond != null) {
-                    buf.append("if->");
-                    buf.append(ifCond);
-                    connector = ";";
-                }
-                if (unlessCond != null) {
-                    buf.append(connector);
-                    buf.append("unless->");
-                    buf.append(unlessCond);
-                }
-            }
-
-            return buf.toString();
-        }
-    }
-
-    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 include files list
-     */
-    public NameEntry createIncludesFile() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return addPatternToList(includesFileList);
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public NameEntry createExclude() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return addPatternToList(excludeList);
-    }
-    
-    /**
-     * add a name entry on the exclude files list
-     */
-    public NameEntry createExcludesFile() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return addPatternToList(excludesFileList);
-    }
-
-    /**
-     * 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 includesFile The file to fetch the include patterns from.  
-     */
-     public void setIncludesfile(File includesFile) throws BuildException {
-         if (isReference()) {
-             throw tooManyAttributes();
-         }
-         createIncludesFile().setName(includesFile.getAbsolutePath());
-     }
-
-    /**
-     * Sets the name of the file containing the excludes patterns.
-     *
-     * @param excludesFile The file to fetch the exclude patterns from.  
-     */
-     public void setExcludesfile(File excludesFile) throws BuildException {
-         if (isReference()) {
-             throw tooManyAttributes();
-         }
-         createExcludesFile().setName(excludesFile.getAbsolutePath());
-     }
-    
-    /**
-     *  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 includesFileList.size() > 0 || excludesFileList.size() > 0 
-            || 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 includesfile ot excludesfile if not already done so.
-     */
-    private void readFiles(Project p) {
-        if (includesFileList.size() > 0) {
-            Enumeration e = includesFileList.elements();
-            while (e.hasMoreElements()) {
-                NameEntry ne = (NameEntry)e.nextElement();
-                String fileName = ne.evalName(p);
-                if (fileName != null) {
-                    File inclFile = p.resolveFile(fileName);
-                    if (!inclFile.exists())
-                        throw new BuildException("Includesfile "
-                                                 + inclFile.getAbsolutePath()
-                                                 + " not found.");
-                    readPatterns(inclFile, includeList, p);
-                }
-            }
-            includesFileList.removeAllElements();
-        }
-
-        if (excludesFileList.size() > 0) {
-            Enumeration e = excludesFileList.elements();
-            while (e.hasMoreElements()) {
-                NameEntry ne = (NameEntry)e.nextElement();
-                String fileName = ne.evalName(p);
-                if (fileName != null) {
-                    File exclFile = p.resolveFile(fileName);
-                    if (!exclFile.exists())
-                        throw new BuildException("Excludesfile "
-                                                 + exclFile.getAbsolutePath()
-                                                 + " not found.");
-                    readPatterns(exclFile, excludeList, p);
-                }
-            }
-            excludesFileList.removeAllElements();
-        }
-    }
-
-    public String toString()
-    {
-        return "patternSet{ includes: " + includeList + 
-            " excludes: " + excludeList + " }";
-    }
-
-}
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 aed13a5..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@epost.de">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 45d074c..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(p.getBaseDir());
-            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 d268128..0000000
--- a/src/main/org/apache/tools/ant/types/defaults.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-path=org.apache.tools.ant.types.Path
-fileset=org.apache.tools.ant.types.FileSet
-filelist=org.apache.tools.ant.types.FileList
-patternset=org.apache.tools.ant.types.PatternSet
-mapper=org.apache.tools.ant.types.Mapper
-filterset=org.apache.tools.ant.types.FilterSet
-description=org.apache.tools.ant.types.Description
-
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 2b520e8..0000000
--- a/src/main/org/apache/tools/ant/util/DOMElementWriter.java
+++ /dev/null
@@ -1,250 +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:sbailliez@imediation.com">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:
-                out.write(encode(child.getNodeValue()));
-                break;
-                
-            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);
-        out.flush();
-    }
-
-    /**
-     * Escape &lt;, &gt; &amp; &apos; 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("&gt;");
-                break;
-            case '\'':
-                sb.append("&apos;");
-                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/FileUtils.java b/src/main/org/apache/tools/ant/util/FileUtils.java
deleted file mode 100644
index 3e01bda..0000000
--- a/src/main/org/apache/tools/ant/util/FileUtils.java
+++ /dev/null
@@ -1,461 +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.util;
-
-import java.io.*;
-import java.lang.reflect.Method;
-import java.util.StringTokenizer;
-import java.util.Stack;
-
-import org.apache.tools.ant.BuildException; 
-import org.apache.tools.ant.Project; 
-import org.apache.tools.ant.types.FilterSetCollection; 
-
-/**
- * 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 copying files or setting
- * there last modification time.
- *
- * @author duncan@x180.com
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
- 
-public class FileUtils {
-    private static Object lockReflection = new Object();
-    private static java.lang.reflect.Method setLastModified = null;
-
-    /**
-     * Factory method.
-     */
-    public static FileUtils newFileUtils() {
-        return new FileUtils();
-    }
-
-    /**
-     * Empty constructor.
-     */
-    protected FileUtils() {}
-
-    /**
-     * 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), null, false, 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, FilterSetCollection filters)
-        throws IOException
-    {
-        copyFile(new File(sourceFile), new File(destFile), filters, false, 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(String sourceFile, String destFile, FilterSetCollection filters,
-                         boolean overwrite) throws IOException {
-        copyFile(new File(sourceFile), new File(destFile), filters, 
-                 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(String sourceFile, String destFile, FilterSetCollection filters,
-                         boolean overwrite, boolean preserveLastModified)
-        throws IOException {
-        copyFile(new File(sourceFile), new File(destFile), filters, 
-                 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, null, false, 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, FilterSetCollection filters)
-        throws IOException {
-        copyFile(sourceFile, destFile, filters, false, 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, FilterSetCollection filters,
-                         boolean overwrite) throws IOException {
-        copyFile(sourceFile, destFile, filters, 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, FilterSetCollection filters,
-                         boolean overwrite, boolean preserveLastModified)
-        throws IOException {
-        
-        if (overwrite || !destFile.exists() ||
-            destFile.lastModified() < sourceFile.lastModified()) {
-
-            if (destFile.exists() && destFile.isFile()) {
-                destFile.delete();
-            }
-
-            // 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 (filters != null && filters.hasFilters()) {
-                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 = filters.replaceTokens(line);
-                        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());
-            }
-        }
-    }
-
-    /**
-     * see whether we have a setLastModified method in File and return it.
-     */
-    protected final Method getSetLastModified() {
-        if (Project.getJavaVersion() == Project.JAVA_1_1) {
-            return null;
-        }
-        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);
-                    }
-                }
-            }
-        }
-        return setLastModified;
-    }
-
-    /**
-     * Calls File.setLastModified(long time) in a Java 1.1 compatible way.
-     */
-    public void setFileLastModified(File file, long time) throws BuildException {
-        if (Project.getJavaVersion() == Project.JAVA_1_1) {
-            return;
-        }
-        Long[] times = new Long[1];
-        if (time < 0) {
-            times[0] = new Long(System.currentTimeMillis());
-        } else {
-            times[0] = new Long(time);
-        }
-
-        try {
-            getSetLastModified().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);
-        }
-    }
-
-    /**
-     * Interpret the filename as a file relative to the given file -
-     * unless the filename already represents an absolute filename.
-     *
-     * @param file the "reference" file for relative paths. This
-     * instance must be an absolute file and must not contain
-     * &quot;./&quot; or &quot;../&quot; sequences (same for \ instead
-     * of /).
-     * @param filename a file name
-     *
-     * @return an absolute file that doesn't contain &quot;./&quot; or
-     * &quot;../&quot; sequences and uses the correct separator for
-     * the current platform.
-     */
-    public File resolveFile(File file, String filename) {
-        filename = filename.replace('/', File.separatorChar)
-            .replace('\\', File.separatorChar);
-
-        // deal with absolute files
-        if (filename.startsWith(File.separator) ||
-
-            (filename.length() >= 2 &&
-             Character.isLetter(filename.charAt(0)) &&
-             filename.charAt(1) == ':')
-
-            ) {
-            return normalize(filename);
-        }
-
-        if (filename.length() >= 2 &&
-            Character.isLetter(filename.charAt(0)) &&
-            filename.charAt(1) == ':') {
-            return normalize(filename);
-        }
-
-        File helpFile = new File(file.getAbsolutePath());
-        StringTokenizer tok = new StringTokenizer(filename, File.separator);
-        while (tok.hasMoreTokens()) {
-            String part = tok.nextToken();
-            if (part.equals("..")) {
-                String parentFile = helpFile.getParent();
-                if (parentFile == null) {
-                    String msg = "The file or path you specified ("
-                        + filename + ") is invalid relative to " 
-                        + file.getPath();
-                    throw new BuildException(msg);
-                }
-                helpFile = new File(parentFile);
-            } else if (part.equals(".")) {
-                // Do nothing here
-            } else {
-                helpFile = new File(helpFile, part);
-            }
-        }
-
-        return new File(helpFile.getAbsolutePath());
-    }
-
-    /**
-     * &quot;normalize&quot; the given absolute path.
-     *
-     * <p>This includes:
-     * <ul>
-     *   <li>Uppercase the drive letter if there is one.</li>
-     *   <li>Remove redundant slashes after the drive spec.</li>
-     *   <li>resolve all ./, .\, ../ and ..\ sequences.</li>
-     *   <li>DOS style paths that start with a drive letter will have
-     *     \ as the separator.</li> 
-     * </ul>
-     */
-    public File normalize(String path) {
-        String orig = path;
-
-        path = path.replace('/', File.separatorChar)
-            .replace('\\', File.separatorChar);
-
-        // make sure we are dealing with an absolute path
-        if (!path.startsWith(File.separator) &&
-            ! (path.length() >= 2 &&
-               Character.isLetter(path.charAt(0)) &&
-               path.charAt(1) == ':')
-            ) {             
-            String msg = path + " is not an absolute path";
-            throw new BuildException(msg);
-        }
-            
-        boolean dosWithDrive = false;
-        String root = null;
-        // Eliminate consecutive slashes after the drive spec
-        if (path.length() >= 2 &&
-            Character.isLetter(path.charAt(0)) &&
-            path.charAt(1) == ':') {
-
-            dosWithDrive = true;
-
-            char[] ca = path.replace('/', '\\').toCharArray();
-            StringBuffer sb = new StringBuffer();
-            sb.append(Character.toUpperCase(ca[0])).append(':');
-
-            for (int i = 2; i < ca.length; i++) {
-                if ((ca[i] != '\\') ||
-                    (ca[i] == '\\' && ca[i - 1] != '\\')
-                    ) {
-                    sb.append(ca[i]);
-                }
-            }
-
-            path = sb.toString().replace('\\', File.separatorChar);
-            if (path.length() == 2) {
-                root = path;
-                path = "";
-            } else {
-                root = path.substring(0, 3);
-                path = path.substring(3);
-            }
-            
-        } else {
-            if (path.length() == 1) {
-                root = File.separator;
-                path = "";
-            } else if (path.charAt(1) == File.separatorChar) {
-                // UNC drive
-                root = File.separator+File.separator;
-                path = path.substring(2);
-            } else {
-                root = File.separator;
-                path = path.substring(1);
-            }
-        }
-
-        Stack s = new Stack();
-        s.push(root);
-        StringTokenizer tok = new StringTokenizer(path, File.separator);
-        while (tok.hasMoreTokens()) {
-            String thisToken = tok.nextToken();
-            if (".".equals(thisToken)) {
-                continue;
-            } else if ("..".equals(thisToken)) {
-                if (s.size() < 2) {
-                    throw new BuildException("Cannot resolve path "+orig);
-                } else {
-                    s.pop();
-                }
-            } else { // plain component
-                s.push(thisToken);
-            }
-        }
-
-        StringBuffer sb = new StringBuffer();
-        for (int i=0; i<s.size(); i++) {
-            if (i > 1) {
-                // not before the filesystem root and not after it, since root
-                // already contains one
-                sb.append(File.separatorChar);
-            }
-            sb.append(s.elementAt(i));
-        }
-        
-
-        path = sb.toString();
-        if (dosWithDrive) {
-            path = path.replace('/', '\\');
-        }
-        return new File(path);
-    }
-}
-
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/Jdk14RegexpMatcher.java b/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcher.java
deleted file mode 100644
index ed25809..0000000
--- a/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcher.java
+++ /dev/null
@@ -1,117 +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.util.regexp;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-import org.apache.tools.ant.BuildException;
-import java.util.Vector;
-
-/**
- * Implementation of RegexpMatcher for the built-in regexp matcher of
- * JDK 1.4.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class Jdk14RegexpMatcher implements RegexpMatcher {
-
-    private Pattern pattern;
-
-    /**
-     * Set the regexp pattern from the String description.
-     */
-    public void setPattern(String pattern) throws BuildException {
-        try {
-            this.pattern = Pattern.compile(pattern);
-        } catch (PatternSyntaxException e) {
-            throw new BuildException(e);
-        }
-    }
-
-    /**
-     * Get a String representation of the regexp pattern
-     */
-    public String getPattern() {
-        return pattern.pattern();
-    }
-
-    /**
-     * Does the given argument match the pattern?
-     */
-    public boolean matches(String argument) {
-        return pattern.matcher(argument).find();
-    }
-
-    /**
-     * 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) {
-        Matcher matcher = pattern.matcher(argument);
-        if (!matcher.find()) {
-            return null;
-        }
-        Vector v = new Vector();
-        for (int i=0; i<=matcher.groupCount(); i++) {
-            v.addElement(matcher.group(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 f5f9093..0000000
--- a/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java
+++ /dev/null
@@ -1,106 +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.Jdk14RegexpMatcher");
-        } catch (BuildException be) {}
-        
-        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/main/org/apache/tools/zip/AsiExtraField.java b/src/main/org/apache/tools/zip/AsiExtraField.java
deleted file mode 100644
index 111c6d9..0000000
--- a/src/main/org/apache/tools/zip/AsiExtraField.java
+++ /dev/null
@@ -1,366 +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.zip;
-
-import java.util.zip.CRC32;
-import java.util.zip.ZipException;
-
-/**
- * Adds Unix file permission and UID/GID fields as well as symbolic
- * link handling.
- *
- * <p>This class uses the ASi extra field in the format:
- * <pre>
- *         Value         Size            Description
- *         -----         ----            -----------
- * (Unix3) 0x756e        Short           tag for this extra block type
- *         TSize         Short           total data size for this block
- *         CRC           Long            CRC-32 of the remaining data
- *         Mode          Short           file permissions
- *         SizDev        Long            symlink'd size OR major/minor dev num
- *         UID           Short           user ID
- *         GID           Short           group ID
- *         (var.)        variable        symbolic link filename
- * </pre>
- * taken from appnote.iz (Info-ZIP note, 981119) found at <a
- * href="ftp://ftp.uu.net/pub/archiving/zip/doc/">ftp://ftp.uu.net/pub/archiving/zip/doc/</a></p>
-
- *
- * <p>Short is two bytes and Long is four bytes in big endian byte and
- * word order, device numbers are currently not supported.</p>
- *
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- */
-public class AsiExtraField implements ZipExtraField, UnixStat, Cloneable {
-
-    private final static ZipShort HEADER_ID = new ZipShort(0x756E);
-
-    /**
-     * Standard Unix stat(2) file mode.
-     *
-     * @since 1.1
-     */
-    private int mode = 0;
-    /**
-     * User ID.
-     *
-     * @since 1.1
-     */
-    private int uid = 0;
-    /**
-     * Group ID.
-     *
-     * @since 1.1
-     */
-    private int gid = 0;
-    /**
-     * File this entry points to, if it is a symbolic link.
-     *
-     * <p>empty string - if entry is not a symbolic link.</p>
-     *
-     * @since 1.1
-     */
-    private String link = "";
-    /**
-     * Is this an entry for a directory?
-     *
-     * @since 1.1
-     */
-    private boolean dirFlag = false;
-
-    /**
-     * Instance used to calculate checksums.
-     *
-     * @since 1.1
-     */
-    private CRC32 crc = new CRC32();
-
-    public AsiExtraField() {
-    }
-
-    /**
-     * The Header-ID.
-     *
-     * @since 1.1
-     */
-    public ZipShort getHeaderId() {
-        return HEADER_ID;
-    }
-
-    /**
-     * Length of the extra field in the local file data - without
-     * Header-ID or length specifier.
-     *
-     * @since 1.1
-     */
-    public ZipShort getLocalFileDataLength() {
-        return new ZipShort(  4         // CRC
-                            + 2         // Mode
-                            + 4         // SizDev
-                            + 2         // UID
-                            + 2         // GID
-                            + getLinkedFile().getBytes().length);
-    }
-
-    /**
-     * Delegate to local file data.
-     *
-     * @since 1.1
-     */
-    public ZipShort getCentralDirectoryLength() {
-        return getLocalFileDataLength();
-    }
-
-    /**
-     * The actual data to put into local file data - without Header-ID
-     * or length specifier.
-     *
-     * @since 1.1
-     */
-    public byte[] getLocalFileDataData() {
-        // CRC will be added later
-        byte[] data = new byte[getLocalFileDataLength().getValue() - 4];
-        System.arraycopy((new ZipShort(getMode())).getBytes(), 0, data, 0, 2);
-
-        byte[] linkArray = getLinkedFile().getBytes();
-        System.arraycopy((new ZipLong(linkArray.length)).getBytes(),
-                         0, data, 2, 4);
-
-        System.arraycopy((new ZipShort(getUserId())).getBytes(), 
-                         0, data, 6, 2);
-        System.arraycopy((new ZipShort(getGroupId())).getBytes(),
-                         0, data, 8, 2);
-
-        System.arraycopy(linkArray, 0, data, 10, linkArray.length);
-
-        crc.reset();
-        crc.update(data);
-        long checksum = crc.getValue();
-
-        byte[] result = new byte[data.length + 4];
-        System.arraycopy((new ZipLong(checksum)).getBytes(), 0, result, 0, 4);
-        System.arraycopy(data, 0, result, 4, data.length);
-        return result;
-    }
-
-    /**
-     * Delegate to local file data.
-     *
-     * @since 1.1
-     */
-    public byte[] getCentralDirectoryData() {
-        return getLocalFileDataData();
-    }
-
-    /**
-     * Set the user id.
-     *
-     * @since 1.1
-     */
-    public void setUserId(int uid) {
-        this.uid = uid;
-    }
-
-    /**
-     * Get the user id.
-     *
-     * @since 1.1
-     */
-    public int getUserId() {
-        return uid;
-    }
-
-    /**
-     * Set the group id.
-     *
-     * @since 1.1
-     */
-    public void setGroupId(int gid) {
-        this.gid = gid;
-    }
-
-    /**
-     * Get the group id.
-     *
-     * @since 1.1
-     */
-    public int getGroupId() {
-        return gid;
-    }
-
-    /**
-     * Indicate that this entry is a symbolic link to the given filename.
-     *
-     * @param name Name of the file this entry links to, empty String
-     *             if it is not a symbolic link.
-     *
-     * @since 1.1
-     */
-    public void setLinkedFile(String name) {
-        link = name;
-        mode = getMode(mode);
-    }
-
-    /**
-     * Name of linked file
-     *
-     * @return name of the file this entry links to if it is a
-     *         symbolic link, the empty string otherwise.
-     *
-     * @since 1.1
-     */
-    public String getLinkedFile() {
-        return link;
-    }
-
-    /**
-     * Is this entry a symbolic link?
-     *
-     * @since 1.1
-     */
-    public boolean isLink() {
-        return getLinkedFile().length() != 0;
-    }
-
-    /**
-     * File mode of this file.
-     *
-     * @since 1.1
-     */
-    public void setMode(int mode) {
-        this.mode = getMode(mode);
-    }
-
-    /**
-     * File mode of this file.
-     *
-     * @since 1.1
-     */
-    public int getMode() {
-        return mode;
-    }
-
-    /**
-     * Indicate whether this entry is a directory.
-     *
-     * @since 1.1
-     */
-    public void setDirectory(boolean dirFlag) {
-        this.dirFlag = dirFlag;
-        mode = getMode(mode);
-    }
-
-    /**
-     * Is this entry a directory?
-     *
-     * @since 1.1
-     */
-    public boolean isDirectory() {
-        return dirFlag && !isLink();
-    }
-
-    /**
-     * Populate data from this array as if it was in local file data.
-     *
-     * @since 1.1
-     */
-    public void parseFromLocalFileData(byte[] data, int offset, int length)
-        throws ZipException {
-
-        long givenChecksum = (new ZipLong(data, offset)).getValue();
-        byte[] tmp = new byte[length-4];
-        System.arraycopy(data, offset+4, tmp, 0, length-4);
-        crc.reset();
-        crc.update(tmp);
-        long realChecksum = crc.getValue();
-        if (givenChecksum != realChecksum) {
-            throw new ZipException("bad CRC checksum " 
-                                   + Long.toHexString(givenChecksum)
-                                   + " instead of " 
-                                   + Long.toHexString(realChecksum));
-        }
-        
-        int newMode = (new ZipShort(tmp, 0)).getValue();
-        byte[] linkArray = new byte[(int) (new ZipLong(tmp, 2)).getValue()];
-        uid = (new ZipShort(tmp, 6)).getValue();
-        gid = (new ZipShort(tmp, 8)).getValue();
-
-        if (linkArray.length == 0) {
-            link = "";
-        } else {
-            System.arraycopy(tmp, 10, linkArray, 0, linkArray.length);
-            link = new String(linkArray);
-        }
-        setDirectory((newMode & DIR_FLAG) != 0);
-        setMode(newMode);
-    }
-
-    /**
-     * Get the file mode for given permissions with the correct file type.
-     *
-     * @since 1.1
-     */
-    protected int getMode(int mode) {
-        int type = FILE_FLAG;
-        if (isLink()) {
-            type = LINK_FLAG;
-        } else if (isDirectory()) {
-            type = DIR_FLAG;
-        }
-        return type | (mode & PERM_MASK);
-    }
-    
-}
diff --git a/src/main/org/apache/tools/zip/ExtraFieldUtils.java b/src/main/org/apache/tools/zip/ExtraFieldUtils.java
deleted file mode 100644
index 005e988..0000000
--- a/src/main/org/apache/tools/zip/ExtraFieldUtils.java
+++ /dev/null
@@ -1,203 +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.zip;
-
-import java.util.Hashtable;
-import java.util.Vector;
-import java.util.zip.ZipException;
-
-/**
- * ZipExtraField related methods
- *
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- */
-public class ExtraFieldUtils {
-
-    /**
-     * Static registry of known extra fields.
-     *
-     * @since 1.1
-     */
-    private static Hashtable implementations;
-
-    static {
-        implementations = new Hashtable();
-        register(AsiExtraField.class);
-    }
-
-    /**
-     * Register a ZipExtraField implementation.
-     *
-     * <p>The given class must have a no-arg constructor and implement
-     * the {@link ZipExtraField ZipExtraField interface}.</p>
-     *
-     * @since 1.1
-     */
-    public static void register(Class c) {
-        try {
-            ZipExtraField ze = (ZipExtraField) c.newInstance();
-            implementations.put(ze.getHeaderId(), c);
-        } catch (ClassCastException cc) {
-            throw new RuntimeException(c + 
-                                       " doesn\'t implement ZipExtraField");
-        } catch (InstantiationException ie) {
-            throw new RuntimeException(c + " is not a concrete class");
-        } catch (IllegalAccessException ie) {
-            throw new RuntimeException(c + 
-                                       "\'s no-arg constructor is not public");
-        }
-    }
-
-    /**
-     * Create an instance of the approriate ExtraField, falls back to
-     * {@link UnrecognizedExtraField UnrecognizedExtraField}.
-     *
-     * @since 1.1
-     */
-    public static ZipExtraField createExtraField(ZipShort headerId)
-        throws InstantiationException, IllegalAccessException {
-        Class c = (Class) implementations.get(headerId);
-        if (c != null) {
-            return (ZipExtraField) c.newInstance();
-        }
-        UnrecognizedExtraField u = new UnrecognizedExtraField();
-        u.setHeaderId(headerId);
-        return u;
-    }
-
-    /**
-     * Split the array into ExtraFields and populate them with the
-     * give data.
-     *
-     * @since 1.1
-     */
-    public static ZipExtraField[] parse(byte[] data) throws ZipException {
-        Vector v = new Vector();
-        int start = 0;
-        while (start <= data.length-4) {
-            ZipShort headerId = new ZipShort(data, start);
-            int length = (new ZipShort(data, start+2)).getValue();
-            if (start+4+length > data.length) {
-                throw new ZipException("data starting at "+start+" is in unknown format");
-            }
-            try {
-                ZipExtraField ze = createExtraField(headerId);
-                ze.parseFromLocalFileData(data, start+4, length);
-                v.addElement(ze);
-            } catch (InstantiationException ie) {
-                throw new ZipException(ie.getMessage());
-            } catch (IllegalAccessException iae) {
-                throw new ZipException(iae.getMessage());
-            }
-            start += (length+4);
-        }
-        if (start != data.length) { // array not exhausted
-            throw new ZipException("data starting at "+start+" is in unknown format");
-        }
-        
-        ZipExtraField[] result = new ZipExtraField[v.size()];
-        v.copyInto(result);
-        return result;
-    }
-
-    /**
-     * Merges the local file data fields of the given ZipExtraFields.
-     *
-     * @since 1.1
-     */
-    public static byte[] mergeLocalFileDataData(ZipExtraField[] data) {
-        int sum = 4*data.length;
-        for (int i=0; i<data.length; i++) {
-            sum += data[i].getLocalFileDataLength().getValue();
-        }
-        byte[] result = new byte[sum];
-        int start = 0;
-        for (int i=0; i<data.length; i++) {
-            System.arraycopy(data[i].getHeaderId().getBytes(),
-                             0, result, start, 2);
-            System.arraycopy(data[i].getLocalFileDataLength().getBytes(),
-                             0, result, start+2, 2);
-            byte[] local = data[i].getLocalFileDataData();
-            System.arraycopy(local, 0, result, start+4, local.length);
-            start += (local.length+4);
-        }
-        return result;
-    }
-
-    /**
-     * Merges the central directory fields of the given ZipExtraFields.
-     *
-     * @since 1.1
-     */
-    public static byte[] mergeCentralDirectoryData(ZipExtraField[] data) {
-        int sum = 4*data.length;
-        for (int i=0; i<data.length; i++) {
-            sum += data[i].getCentralDirectoryLength().getValue();
-        }
-        byte[] result = new byte[sum];
-        int start = 0;
-        for (int i=0; i<data.length; i++) {
-            System.arraycopy(data[i].getHeaderId().getBytes(),
-                             0, result, start, 2);
-            System.arraycopy(data[i].getCentralDirectoryLength().getBytes(),
-                             0, result, start+2, 2);
-            byte[] local = data[i].getCentralDirectoryData();
-            System.arraycopy(local, 0, result, start+4, local.length);
-            start += (local.length+4);
-        }
-        return result;
-    }
-}
diff --git a/src/main/org/apache/tools/zip/UnixStat.java b/src/main/org/apache/tools/zip/UnixStat.java
deleted file mode 100644
index cb04700..0000000
--- a/src/main/org/apache/tools/zip/UnixStat.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.zip;
-
-/**
- * Constants from stat.h on Unix systems.
- *
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- */
-public interface UnixStat {
-
-    /**
-     * Bits used for permissions (and sticky bit)
-     *
-     * @since 1.1
-     */
-    public static final int PERM_MASK =           07777;
-    /**
-     * Indicates symbolic links.
-     *
-     * @since 1.1
-     */
-    public static final int LINK_FLAG =         0120000;
-    /**
-     * Indicates plain files.
-     *
-     * @since 1.1
-     */
-    public static final int FILE_FLAG =         0100000;
-    /**
-     * Indicates directories.
-     *
-     * @since 1.1
-     */
-    public static final int DIR_FLAG =           040000;
-    
-    // ----------------------------------------------------------
-    // somewhat arbitrary choices that are quite common for shared 
-    // installations
-    // -----------------------------------------------------------
-
-    /**
-     * Default permissions for symbolic links.
-     *
-     * @since 1.1
-     */
-    public static final int DEFAULT_LINK_PERM =    0777;
-    /**
-     * Default permissions for directories.
-     *
-     * @since 1.1
-     */
-    public static final int DEFAULT_DIR_PERM =     0755;
-    /**
-     * Default permissions for plain files.
-     *
-     * @since 1.1
-     */
-    public static final int DEFAULT_FILE_PERM =    0644;
-}
diff --git a/src/main/org/apache/tools/zip/UnrecognizedExtraField.java b/src/main/org/apache/tools/zip/UnrecognizedExtraField.java
deleted file mode 100644
index d15c371..0000000
--- a/src/main/org/apache/tools/zip/UnrecognizedExtraField.java
+++ /dev/null
@@ -1,131 +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.zip;
-
-/**
- * Simple placeholder for all those extra fields we don't want to deal
- * with.
- *
- * <p>Assumes local file data and central directory entries are
- * identical - unless told the opposite.</p>
- *
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- */
-public class UnrecognizedExtraField implements ZipExtraField {
-
-    /**
-     * The Header-ID.
-     *
-     * @since 1.1
-     */
-    private ZipShort headerId;
-
-    public void setHeaderId(ZipShort headerId) {
-        this.headerId = headerId;
-    }
-
-    public ZipShort getHeaderId() {return headerId;}
-
-    /**
-     * Extra field data in local file data - without
-     * Header-ID or length specifier.
-     *
-     * @since 1.1
-     */
-    private byte[] localData;
-
-    public void setLocalFileDataData(byte[] data) {
-        localData = data;
-    }
-
-    public ZipShort getLocalFileDataLength() {
-        return new ZipShort(localData.length);
-    }
-
-    public byte[] getLocalFileDataData() {return localData;}
-
-    /**
-     * Extra field data in central directory - without
-     * Header-ID or length specifier.
-     *
-     * @since 1.1
-     */
-    private byte[] centralData;
-
-    public void setCentralDirectoryData(byte[] data) {
-        centralData = data;
-    }
-
-    public ZipShort getCentralDirectoryLength() {
-        if (centralData != null) {
-            return new ZipShort(centralData.length);
-        }
-        return getLocalFileDataLength();
-    }
-
-    public byte[] getCentralDirectoryData() {
-        if (centralData != null) {
-            return centralData;
-        }
-        return getLocalFileDataData();
-    }
-
-    public void parseFromLocalFileData(byte[] data, int offset, int length) {
-        byte[] tmp = new byte[length];
-        System.arraycopy(data, offset, tmp, 0, length);
-        setLocalFileDataData(tmp);
-    }
-}
diff --git a/src/main/org/apache/tools/zip/ZipEntry.java b/src/main/org/apache/tools/zip/ZipEntry.java
deleted file mode 100644
index eeb6a46..0000000
--- a/src/main/org/apache/tools/zip/ZipEntry.java
+++ /dev/null
@@ -1,402 +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.zip;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Vector;
-import java.util.zip.ZipException;
-
-/**
- * Extension that adds better handling of extra fields and provides
- * access to the internal and external file attributes.
- *
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- */
-public class ZipEntry extends java.util.zip.ZipEntry {
-
-    private int internalAttributes = 0;
-    private long externalAttributes = 0;
-    private Vector extraFields = new Vector();
-
-    /**
-     * Creates a new zip entry with the specified name.
-     *
-     * @since 1.1
-     */
-    public ZipEntry(String name) {
-        super(name);
-    }
-
-    /**
-     * Creates a new zip entry with fields taken from the specified zip entry.
-     *
-     * @since 1.1
-     */
-    public ZipEntry(java.util.zip.ZipEntry entry) throws ZipException {
-        /*
-         * REVISIT: call super(entry) instead of this stuff in Ant2,
-         *          "copy constructor" has not been available in JDK 1.1
-         */
-        super(entry.getName());
-
-        setComment(entry.getComment());
-        setMethod(entry.getMethod());
-        setTime(entry.getTime());
-
-        long size = entry.getSize();
-        if (size > 0) {
-            setSize(size);
-        }
-        long cSize = entry.getCompressedSize();
-        if (cSize > 0) {
-            setComprSize(cSize);
-        }
-        long crc = entry.getCrc();
-        if (crc > 0) {
-            setCrc(crc);
-        }
-        
-        byte[] extra = entry.getExtra();
-        if (extra != null) {
-            setExtraFields(ExtraFieldUtils.parse(extra));
-        } else {
-            // initializes extra data to an empty byte array
-            setExtra();
-        }
-    }
-
-    /**
-     * Creates a new zip entry with fields taken from the specified zip entry.
-     *
-     * @since 1.1
-     */
-    public ZipEntry(ZipEntry entry) throws ZipException {
-        this((java.util.zip.ZipEntry) entry);
-        setInternalAttributes(entry.getInternalAttributes());
-        setExternalAttributes(entry.getExternalAttributes());
-        setExtraFields(entry.getExtraFields());
-    }
-
-    /**
-     * Overwrite clone
-     *
-     * @since 1.1
-     */
-    public Object clone() {
-        ZipEntry e = null;
-        try {
-            e = new ZipEntry((java.util.zip.ZipEntry) super.clone());
-        } catch (Exception ex) {
-            // impossible as extra data is in correct format
-            ex.printStackTrace();
-        }
-        e.setInternalAttributes(getInternalAttributes());
-        e.setExternalAttributes(getExternalAttributes());
-        e.setExtraFields(getExtraFields());
-        return e;
-    }
-
-    /**
-     * Retrieves the internal file attributes.
-     *
-     * @since 1.1
-     */
-    public int getInternalAttributes() {
-        return internalAttributes;
-    }
-
-    /**
-     * Sets the internal file attributes.
-     *
-     * @since 1.1
-     */
-    public void setInternalAttributes(int value) {
-        internalAttributes = value;
-    }
-
-    /**
-     * Retrieves the external file attributes.
-     *
-     * @since 1.1
-     */
-    public long getExternalAttributes() {
-        return externalAttributes;
-    }
-
-    /**
-     * Sets the external file attributes.
-     *
-     * @since 1.1
-     */
-    public void setExternalAttributes(long value) {
-        externalAttributes = value;
-    }
-
-    /**
-     * Replaces all currently attached extra fields with the new array.
-     *
-     * @since 1.1
-     */
-    public void setExtraFields(ZipExtraField[] fields) {
-        extraFields.removeAllElements();
-        for (int i=0; i<fields.length; i++) {
-            extraFields.addElement(fields[i]);
-        }
-        setExtra();
-    }
-
-    /**
-     * Retrieves extra fields.
-     *
-     * @since 1.1
-     */
-    public ZipExtraField[] getExtraFields() {
-        ZipExtraField[] result = new ZipExtraField[extraFields.size()];
-        extraFields.copyInto(result);
-        return result;
-    }
-
-    /**
-     * Adds an extra fields - replacing an already present extra field
-     * of the same type.
-     *
-     * @since 1.1
-     */
-    public void addExtraField(ZipExtraField ze) {
-        ZipShort type = ze.getHeaderId();
-        boolean done = false;
-        for (int i=0; !done && i<extraFields.size(); i++) {
-            if (((ZipExtraField) extraFields.elementAt(i)).getHeaderId().equals(type)) {
-                extraFields.setElementAt(ze, i);
-                done = true;
-            }
-        }
-        if (!done) {
-            extraFields.addElement(ze);
-        }
-        setExtra();
-    }
-
-    /**
-     * Remove an extra fields.
-     *
-     * @since 1.1
-     */
-    public void removeExtraField(ZipShort type) {
-        boolean done = false;
-        for (int i=0; !done && i<extraFields.size(); i++) {
-            if (((ZipExtraField) extraFields.elementAt(i)).getHeaderId().equals(type)) {
-                extraFields.removeElementAt(i);
-                done = true;
-            }
-        }
-        if (!done) {
-            throw new java.util.NoSuchElementException();
-        }
-        setExtra();
-    }
-
-    /**
-     * Throws an Exception if extra data cannot be parsed into extra fields.
-     *
-     * @since 1.1
-     */
-    public void setExtra(byte[] extra) throws RuntimeException {
-        try {
-            setExtraFields(ExtraFieldUtils.parse(extra));
-        } catch (Exception e) {
-            throw new RuntimeException(e.getMessage());
-        }
-    }
-
-    /**
-     * Unfortunately {@link java.util.zip.ZipOutputStream
-     * java.util.zip.ZipOutputStream} seems to access the extra data
-     * directly, so overriding getExtra doesn't help - we need to
-     * modify super's data directly.
-     *
-     * @since 1.1
-     */
-    protected void setExtra() {
-        super.setExtra(ExtraFieldUtils.mergeLocalFileDataData(getExtraFields()));
-    }
-
-    /**
-     * Retrieves the extra data for the local file data.
-     *
-     * @since 1.1
-     */
-    public byte[] getLocalFileDataExtra() {
-        byte[] extra = getExtra();
-        return extra != null ? extra : new byte[0];
-    }
-
-    /**
-     * Retrieves the extra data for the central directory.
-     *
-     * @since 1.1
-     */
-    public byte[] getCentralDirectoryExtra() {
-        return ExtraFieldUtils.mergeCentralDirectoryData(getExtraFields());
-    }
-
-    /**
-     * Helper for JDK 1.1 <-> 1.2 incompatibility.
-     *
-     * @since 1.2
-     */
-    private Long compressedSize = null;
-
-    /**
-     * Make this class work in JDK 1.1 like a 1.2 class.
-     *
-     * <p>This either stores the size for later usage or invokes
-     * setCompressedSize via reflection.</p>
-     *
-     * @since 1.2
-     */
-    public void setComprSize(long size) {
-        if (haveSetCompressedSize()) {
-            performSetCompressedSize(this, size);
-        } else {
-            compressedSize = new Long(size);
-        }
-    }
-
-    /**
-     * Override to make this class work in JDK 1.1 like a 1.2 class.
-     *
-     * @since 1.2
-     */
-    public long getCompressedSize() {
-        if (compressedSize != null) {
-            // has been set explicitly and we are running in a 1.1 VM
-            return compressedSize.longValue();
-        }
-        return super.getCompressedSize();
-    }
-
-    /**
-     * Helper for JDK 1.1
-     *
-     * @since 1.2
-     */
-    private static Method setCompressedSizeMethod = null;
-    /**
-     * Helper for JDK 1.1
-     *
-     * @since 1.2
-     */
-    private static Object lockReflection = new Object();
-    /**
-     * Helper for JDK 1.1
-     *
-     * @since 1.2
-     */
-    private static boolean triedToGetMethod = false;
-
-    /**
-     * Are we running JDK 1.2 or higher?
-     *
-     * @since 1.2
-     */
-    private static boolean haveSetCompressedSize() {
-        checkSCS();
-        return setCompressedSizeMethod != null;
-    }
-
-    /**
-     * Invoke setCompressedSize via reflection.
-     *
-     * @since 1.2
-     */
-    private static void performSetCompressedSize(ZipEntry ze, long size) {
-        Long[] s = {new Long(size)};
-        try {
-            setCompressedSizeMethod.invoke(ze, s);
-        } catch (InvocationTargetException ite) {
-            Throwable nested = ite.getTargetException();
-            throw new RuntimeException("Exception setting the compressed size "
-                                       + "of " + ze + ": "
-                                       + nested.getMessage());
-        } catch (Throwable other) {
-            throw new RuntimeException("Exception setting the compressed size "
-                                       + "of " + ze + ": "
-                                       + other.getMessage());
-        }
-    }
-
-    /**
-     * Try to get a handle to the setCompressedSize method.
-     *
-     * @since 1.2
-     */
-    private static void checkSCS() {
-        if (!triedToGetMethod) {
-            synchronized (lockReflection) {
-                triedToGetMethod = true;
-                try {
-                    setCompressedSizeMethod = 
-                        java.util.zip.ZipEntry.class.getMethod("setCompressedSize", 
-                                                               new Class[] {Long.TYPE});
-                } catch (NoSuchMethodException nse) {
-                }
-            }
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/zip/ZipExtraField.java b/src/main/org/apache/tools/zip/ZipExtraField.java
deleted file mode 100644
index 034d55f..0000000
--- a/src/main/org/apache/tools/zip/ZipExtraField.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.zip;
-
-import java.util.zip.ZipException;
-
-/**
- * General format of extra field data.
- *
- * <p>Extra fields usually appear twice per file, once in the local
- * file data and once in the central directory.  Usually they are the
- * same, but they don't have to be.  {@link
- * java.util.zip.ZipOutputStream java.util.zip.ZipOutputStream} will
- * only use the local file data in both places.</p>
- *
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- */
-public interface ZipExtraField {
-
-    /**
-     * The Header-ID.
-     *
-     * @since 1.1
-     */
-    public ZipShort getHeaderId();
-
-    /**
-     * Length of the extra field in the local file data - without
-     * Header-ID or length specifier.
-     *
-     * @since 1.1
-     */
-    public ZipShort getLocalFileDataLength();
-
-    /**
-     * Length of the extra field in the central directory - without
-     * Header-ID or length specifier.
-     *
-     * @since 1.1
-     */
-    public ZipShort getCentralDirectoryLength();
-
-    /**
-     * The actual data to put into local file data - without Header-ID
-     * or length specifier.
-     *
-     * @since 1.1
-     */
-    public byte[] getLocalFileDataData();
-
-    /**
-     * The actual data to put central directory - without Header-ID or
-     * length specifier.
-     *
-     * @since 1.1
-     */
-    public byte[] getCentralDirectoryData();
-
-    /**
-     * Populate data from this array as if it was in local file data.
-     *
-     * @since 1.1
-     */
-    public void parseFromLocalFileData(byte[] data, int offset, int length)
-        throws ZipException;
-}
diff --git a/src/main/org/apache/tools/zip/ZipLong.java b/src/main/org/apache/tools/zip/ZipLong.java
deleted file mode 100644
index 565bf03..0000000
--- a/src/main/org/apache/tools/zip/ZipLong.java
+++ /dev/null
@@ -1,142 +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.zip;
-
-/**
- * Utility class that represents a four byte integer with conversion
- * rules for the big endian byte order of ZIP files.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- */
-public class ZipLong implements Cloneable {
-
-    private long value;
-
-    /**
-     * Create instance from a number.
-     *
-     * @since 1.1
-     */
-    public ZipLong(long value) {
-        this.value = value;
-    }
-
-    /**
-     * Create instance from bytes.
-     *
-     * @since 1.1
-     */
-    public ZipLong (byte[] bytes) {
-        this(bytes, 0);
-    }
-
-    /**
-     * Create instance from the four bytes starting at offset.
-     *
-     * @since 1.1
-     */
-    public ZipLong (byte[] bytes, int offset) {
-        value = (bytes[offset+3] << 24) & 0xFF000000l;
-        value += (bytes[offset+2] << 16) & 0xFF0000;
-        value += (bytes[offset+1] << 8) & 0xFF00;
-        value += (bytes[offset] & 0xFF);
-    }
-
-    /**
-     * Get value as two bytes in big endian byte order.
-     *
-     * @since 1.1
-     */
-    public byte[] getBytes() {
-        byte[] result = new byte[4];
-        result[0] = (byte) ((value & 0xFF));
-        result[1] = (byte) ((value & 0xFF00) >> 8);
-        result[2] = (byte) ((value & 0xFF0000) >> 16);
-        result[3] = (byte) ((value & 0xFF000000l) >> 24);
-        return result;
-    }
-
-    /**
-     * Get value as Java int.
-     *
-     * @since 1.1
-     */
-    public long getValue() {
-        return value;
-    }
-
-    /**
-     * Override to make two instances with same value equal.
-     *
-     * @since 1.1
-     */
-    public boolean equals(Object o) {
-        if (o == null || !(o instanceof ZipLong)) {
-            return false;
-        }
-        return value == ((ZipLong) o).getValue();
-    }
-
-    /**
-     * Override to make two instances with same value equal.
-     *
-     * @since 1.1
-     */
-    public int hashCode() {
-        return (int) value;
-    }
-
-}// ZipLong
diff --git a/src/main/org/apache/tools/zip/ZipOutputStream.java b/src/main/org/apache/tools/zip/ZipOutputStream.java
deleted file mode 100644
index 0862352..0000000
--- a/src/main/org/apache/tools/zip/ZipOutputStream.java
+++ /dev/null
@@ -1,670 +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.zip;
-
-import java.io.*;
-import java.util.Date;
-import java.util.Hashtable;
-import java.util.Vector;
-import java.util.zip.CRC32;
-import java.util.zip.Deflater;
-import java.util.zip.DeflaterOutputStream;
-import java.util.zip.ZipException;
-
-/**
- * Reimplementation of {@link java.util.zip.ZipOutputStream
- * java.util.zip.ZipOutputStream} that does handle the extended
- * functionality of this package, especially internal/external file
- * attributes and extra fields with different layouts for local file
- * data and central directory entries.
- *
- * <p>This implementation will use a Data Descriptor to store size and
- * CRC information for DEFLATED entries, this means, you don't need to
- * calculate them yourself.  Unfortunately this is not possible for
- * the STORED method, here setting the CRC and uncompressed size
- * information is required before {@link #putNextEntry putNextEntry}
- * will be called.</p>
- *
- * @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- */
-public class ZipOutputStream extends DeflaterOutputStream {
-
-    /**
-     * Current entry.
-     *
-     * @since 1.1
-     */
-    private ZipEntry entry;
-
-    /**
-     * The file comment.
-     *
-     * @since 1.1
-     */
-    private String comment = "";
-
-    /**
-     * Compression level for next entry.
-     *
-     * @since 1.1
-     */
-    private int level = Deflater.DEFAULT_COMPRESSION;
-
-    /**
-     * Default compression method for next entry.
-     *
-     * @since 1.1
-     */
-    private int method = DEFLATED;
-
-    /**
-     * List of ZipEntries written so far.
-     *
-     * @since 1.1
-     */
-    private Vector entries = new Vector();
-
-    /**
-     * CRC instance to avoid parsing DEFLATED data twice.
-     *
-     * @since 1.1
-     */
-    private CRC32 crc = new CRC32();
-
-    /**
-     * Count the bytes written to out.
-     *
-     * @since 1.1
-     */
-    private long written = 0;
-
-    /**
-     * Data for current entry started here.
-     *
-     * @since 1.1
-     */
-    private long dataStart = 0;
-
-    /**
-     * Start of central directory.
-     *
-     * @since 1.1
-     */
-    private ZipLong cdOffset = new ZipLong(0);
-
-    /**
-     * Length of central directory.
-     *
-     * @since 1.1
-     */
-    private ZipLong cdLength = new ZipLong(0);
-
-    /**
-     * Helper, a 0 as ZipShort.
-     *
-     * @since 1.1
-     */
-    private static final byte[] ZERO = {0, 0};
-
-    /**
-     * Helper, a 0 as ZipLong.
-     *
-     * @since 1.1
-     */
-    private static final byte[] LZERO = {0, 0, 0, 0};
-
-    /**
-     * Holds the offsets of the LFH starts for each entry
-     *
-     * @since 1.1
-     */
-    private Hashtable offsets = new Hashtable();
-
-    /**
-     * The encoding to use for filenames and the file comment.
-     *
-     * <p>For a list of possible values see <a
-     * href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html">http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html</a>.
-     * Defaults to the platform's default character encoding.</p>
-     *
-     * @since 1.3
-     */
-    private String encoding = null;
-
-    /**
-     * Compression method for deflated entries.
-     *
-     * @since 1.1
-     */
-    public static final int DEFLATED = ZipEntry.DEFLATED;
-
-    /**
-     * Compression method for deflated entries.
-     *
-     * @since 1.1
-     */
-    public static final int STORED = ZipEntry.STORED;
-
-    /**
-     * Creates a new ZIP OutputStream filtering the underlying stream.
-     *
-     * @since 1.1
-     */
-    public ZipOutputStream(OutputStream out) {
-        super(out, new Deflater(Deflater.DEFAULT_COMPRESSION, true));
-    }
-
-    /**
-     * The encoding to use for filenames and the file comment.
-     *
-     * <p>For a list of possible values see <a
-     * href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html">http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html</a>.
-     * Defaults to the platform's default character encoding.</p>
-     *
-     * @since 1.3
-     */
-    public void setEncoding(String encoding) {
-        this.encoding = encoding;
-    }
-
-    /**
-     * The encoding to use for filenames and the file comment.
-     *
-     * @return null if using the platform's default character encoding.
-     * 
-     * @since 1.3
-     */
-    public String getEncoding() {return encoding;}
-
-    /*
-     * Found out by experiment, that DeflaterOutputStream.close()
-     * will call finish() - so we don't need to override close
-     * ourselves.
-     */
-
-    /**
-     * Finishs writing the contents and closes this as well as the
-     * underlying stream.
-     *
-     * @since 1.1
-     */
-    public void finish() throws IOException {
-        closeEntry();
-        cdOffset = new ZipLong(written);
-        for (int i=0; i<entries.size(); i++) {
-            writeCentralFileHeader((ZipEntry) entries.elementAt(i));
-        }
-        cdLength = new ZipLong(written-cdOffset.getValue());
-        writeCentralDirectoryEnd();
-        offsets.clear();
-        entries.removeAllElements();
-    }
-
-    /**
-     * Writes all necessary data for this entry.
-     *
-     * @since 1.1
-     */
-    public void closeEntry() throws IOException {
-        if (entry == null) {
-            return;
-        }
-
-        long realCrc = crc.getValue();
-        crc.reset();
-
-        if (entry.getMethod() == DEFLATED) {
-            def.finish();
-            while (!def.finished()) {
-                deflate();
-            }
-
-            entry.setSize(def.getTotalIn());
-            entry.setComprSize(def.getTotalOut());
-            entry.setCrc(realCrc);
-
-            def.reset();
-
-            written += entry.getCompressedSize();
-        } else {
-            if (entry.getCrc() != realCrc) {
-                throw new ZipException("bad CRC checksum for entry "
-                                       +entry.getName()+ ": " 
-                                       + Long.toHexString(entry.getCrc())
-                                       + " instead of " 
-                                       + Long.toHexString(realCrc));
-            }
-
-            if (entry.getSize() != written - dataStart) {
-                throw new ZipException("bad size for entry "
-                                       +entry.getName()+ ": " 
-                                       + entry.getSize()
-                                       + " instead of " 
-                                       + (written - dataStart));
-            }
-
-        }
-
-        writeDataDescriptor(entry);
-        entry = null;
-   }
-
-    /**
-     * Begin writing next entry.
-     *
-     * @since 1.1
-     */
-    public void putNextEntry(ZipEntry ze) throws IOException {
-        closeEntry();
-
-        entry = ze;
-        entries.addElement(entry);
-
-        if (entry.getMethod() == -1) { // not specified
-            entry.setMethod(method);
-        }
-        
-        if (entry.getTime() == -1) { // not specified
-            entry.setTime(System.currentTimeMillis());
-        }
-
-        if (entry.getMethod() == STORED) {
-            if (entry.getSize() == -1) {
-                throw new ZipException("uncompressed size is required for STORED method");
-            }
-            if (entry.getCrc() == -1) {
-                throw new ZipException("crc checksum is required for STORED method");
-            }
-            entry.setComprSize(entry.getSize());
-        } else {
-            def.setLevel(level);
-        }        
-        writeLocalFileHeader(entry);
-    }
-
-    /**
-     * Set the file comment.
-     *
-     * @since 1.1
-     */
-    public void setComment(String comment) {
-        this.comment = comment;
-    }
-
-    /**
-     * Sets the compression level for subsequent entries.
-     *
-     * <p>Default is Deflater.DEFAULT_COMPRESSION.</p>
-     *
-     * @since 1.1
-     */
-    public void setLevel(int level) {
-        this.level = level;
-    }
-
-    /**
-     * Sets the default compression method for subsequent entries.
-     *
-     * <p>Default is DEFLATED.</p>
-     *
-     * @since 1.1
-     */
-    public void setMethod(int method) {
-        this.method = method;
-    }
-
-    /**
-     * Writes bytes to ZIP entry.
-     *
-     * <p>Override is necessary to support STORED entries, as well as
-     * calculationg CRC automatically for DEFLATED entries.</p>
-     */
-    public void write(byte[] b, int offset, int length) throws IOException {
-        if (entry.getMethod() == DEFLATED) {
-            super.write(b, offset, length);
-        } else {
-            out.write(b, offset, length);
-            written += length;
-        }
-        crc.update(b, offset, length);
-    }
-
-    /*
-     * Various ZIP constants
-     */
-    /**
-     * local file header signature
-     *
-     * @since 1.1
-     */
-    protected static final ZipLong LFH_SIG = new ZipLong(0X04034B50L);
-    /**
-     * data descriptor signature
-     *
-     * @since 1.1
-     */
-    protected static final ZipLong DD_SIG = new ZipLong(0X08074B50L);
-    /**
-     * central file header signature
-     *
-     * @since 1.1
-     */
-    protected static final ZipLong CFH_SIG = new ZipLong(0X02014B50L);
-    /**
-     * end of central dir signature
-     *
-     * @since 1.1
-     */
-    protected static final ZipLong EOCD_SIG = new ZipLong(0X06054B50L);
-
-    /**
-     * Writes the local file header entry
-     *
-     * @since 1.1
-     */
-    protected void writeLocalFileHeader(ZipEntry ze) throws IOException {
-        offsets.put(ze, new ZipLong(written));
-
-        out.write(LFH_SIG.getBytes());
-        written += 4;
-
-        // version needed to extract
-        // general purpose bit flag
-        if (ze.getMethod() == DEFLATED) {
-            // requires version 2 as we are going to store length info
-            // in the data descriptor
-            out.write((new ZipShort(20)).getBytes());
-
-            // bit3 set to signal, we use a data descriptor
-            out.write((new ZipShort(8)).getBytes());
-        } else {
-            out.write((new ZipShort(10)).getBytes());
-            out.write(ZERO);
-        }
-        written += 4;
-
-        // compression method
-        out.write((new ZipShort(ze.getMethod())).getBytes());
-        written += 2;
-
-        // last mod. time and date
-        out.write(toDosTime(new Date(ze.getTime())).getBytes());
-        written += 4;
-
-        // CRC
-        // compressed length
-        // uncompressed length
-        if (ze.getMethod() == DEFLATED) {
-            out.write(LZERO);
-            out.write(LZERO);
-            out.write(LZERO);
-        } else {
-            out.write((new ZipLong(ze.getCrc())).getBytes());
-            out.write((new ZipLong(ze.getSize())).getBytes());
-            out.write((new ZipLong(ze.getSize())).getBytes());
-        }
-        written += 12;
-        
-        // file name length
-        byte[] name = getBytes(ze.getName());
-        out.write((new ZipShort(name.length)).getBytes());
-        written += 2;
-        
-        // extra field length
-        byte[] extra = ze.getLocalFileDataExtra();
-        out.write((new ZipShort(extra.length)).getBytes());
-        written += 2;
-
-        // file name
-        out.write(name);
-        written += name.length;
-
-        // extra field
-        out.write(extra);
-        written += extra.length;
-
-        dataStart = written;
-    }
-
-    /**
-     * Writes the data descriptor entry
-     *
-     * @since 1.1
-     */
-    protected void writeDataDescriptor(ZipEntry ze) throws IOException {
-        if (ze.getMethod() != DEFLATED) {
-            return;
-        }
-        out.write(DD_SIG.getBytes());
-        out.write((new ZipLong(entry.getCrc())).getBytes());
-        out.write((new ZipLong(entry.getCompressedSize())).getBytes());
-        out.write((new ZipLong(entry.getSize())).getBytes());
-        written += 16;
-    }
-
-    /**
-     * Writes the central file header entry
-     *
-     * @since 1.1
-     */
-    protected void writeCentralFileHeader(ZipEntry ze) throws IOException {
-        out.write(CFH_SIG.getBytes());
-        written += 4;
-
-        // version made by
-        out.write((new ZipShort(20)).getBytes());
-        written += 2;
-
-        // version needed to extract
-        // general purpose bit flag
-        if (ze.getMethod() == DEFLATED) {
-            // requires version 2 as we are going to store length info
-            // in the data descriptor
-            out.write((new ZipShort(20)).getBytes());
-
-            // bit3 set to signal, we use a data descriptor
-            out.write((new ZipShort(8)).getBytes());
-        } else {
-            out.write((new ZipShort(10)).getBytes());
-            out.write(ZERO);
-        }
-        written += 4;
-
-        // compression method
-        out.write((new ZipShort(ze.getMethod())).getBytes());
-        written += 2;
-
-        // last mod. time and date
-        out.write(toDosTime(new Date(ze.getTime())).getBytes());
-        written += 4;
-
-        // CRC
-        // compressed length
-        // uncompressed length
-        out.write((new ZipLong(ze.getCrc())).getBytes());
-        out.write((new ZipLong(ze.getCompressedSize())).getBytes());
-        out.write((new ZipLong(ze.getSize())).getBytes());
-        written += 12;
-        
-        // file name length
-        byte[] name = getBytes(ze.getName());
-        out.write((new ZipShort(name.length)).getBytes());
-        written += 2;
-        
-        // extra field length
-        byte[] extra = ze.getCentralDirectoryExtra();
-        out.write((new ZipShort(extra.length)).getBytes());
-        written += 2;
-
-        // file comment length
-        String comm = ze.getComment();
-        if (comm == null) {
-            comm = "";
-        }
-        byte[] comment = getBytes(comm);
-        out.write((new ZipShort(comment.length)).getBytes());
-        written += 2;
-        
-        // disk number start
-        out.write(ZERO);
-        written += 2;
-
-        // internal file attributes
-        out.write((new ZipShort(ze.getInternalAttributes())).getBytes());
-        written += 2;
-
-        // external file attributes
-        out.write((new ZipLong(ze.getExternalAttributes())).getBytes());
-        written += 4;
-
-        // relative offset of LFH
-        out.write(((ZipLong) offsets.get(ze)).getBytes());
-        written += 4;
-
-        // file name
-        out.write(name);
-        written += name.length;
-
-        // extra field
-        out.write(extra);
-        written += extra.length;
-
-        // file comment
-        out.write(comment);
-        written += comment.length;
-    }
-
-    /**
-     * Writes the &quot;End of central dir record&quot;
-     *
-     * @since 1.1
-     */
-    protected void writeCentralDirectoryEnd() throws IOException {
-        out.write(EOCD_SIG.getBytes());
-        
-        // disk numbers
-        out.write(ZERO);
-        out.write(ZERO);
-
-        // number of entries
-        byte[] num = (new ZipShort(entries.size())).getBytes();
-        out.write(num);
-        out.write(num);
-
-        // length and location of CD
-        out.write(cdLength.getBytes());
-        out.write(cdOffset.getBytes());
-
-        // ZIP file comment
-        byte[] data = getBytes(comment);
-        out.write((new ZipShort(data.length)).getBytes());
-        out.write(data);
-    }
-
-    /**
-     * Smallest date/time ZIP can handle.
-     *
-     * @since 1.1
-     */
-    private static final ZipLong DOS_TIME_MIN = new ZipLong(0x00002100L);
-
-    /**
-     * Convert a Date object to a DOS date/time field.
-     *
-     * <p>Stolen from InfoZip's <code>fileio.c</code></p>
-     *
-     * @since 1.1
-     */
-    protected static ZipLong toDosTime(Date time) {
-        int year = time.getYear() + 1900;
-        int month = time.getMonth() + 1;
-        if (year < 1980) {
-            return DOS_TIME_MIN;
-        }
-        long value =  ((year - 1980) << 25)
-            |         (month << 21)
-            |         (time.getDate() << 16)
-            |         (time.getHours() << 11)
-            |         (time.getMinutes() << 5)
-            |         (time.getSeconds() >> 1);
-        
-        byte[] result = new byte[4];
-        result[0] = (byte) ((value & 0xFF));
-        result[1] = (byte) ((value & 0xFF00) >> 8);
-        result[2] = (byte) ((value & 0xFF0000) >> 16);
-        result[3] = (byte) ((value & 0xFF000000l) >> 24);
-        return new ZipLong(result);
-    }
-
-    /**
-     * Retrieve the bytes for the given String in the encoding set for
-     * this Stream.
-     *
-     * @since 1.3
-     */
-    protected byte[] getBytes(String name) throws ZipException {
-        if (encoding == null) {
-            return name.getBytes();
-        } else {
-            try {
-                return name.getBytes(encoding);
-            } catch (UnsupportedEncodingException uee) {
-                throw new ZipException(uee.getMessage());
-            }
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/zip/ZipShort.java b/src/main/org/apache/tools/zip/ZipShort.java
deleted file mode 100644
index b4abf9f..0000000
--- a/src/main/org/apache/tools/zip/ZipShort.java
+++ /dev/null
@@ -1,138 +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.zip;
-
-/**
- * Utility class that represents a two byte integer with conversion
- * rules for the big endian byte order of ZIP files.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- */
-public class ZipShort implements Cloneable {
-
-    private int value;
-
-    /**
-     * Create instance from a number.
-     *
-     * @since 1.1
-     */
-    public ZipShort (int value) {
-        this.value = value;
-    }
-
-    /**
-     * Create instance from bytes.
-     *
-     * @since 1.1
-     */
-    public ZipShort (byte[] bytes) {
-        this(bytes, 0);
-    }
-
-    /**
-     * Create instance from the two bytes starting at offset.
-     *
-     * @since 1.1
-     */
-    public ZipShort (byte[] bytes, int offset) {
-        value = (bytes[offset+1] << 8) & 0xFF00;
-        value += (bytes[offset] & 0xFF);
-    }
-
-    /**
-     * Get value as two bytes in big endian byte order.
-     *
-     * @since 1.1
-     */
-    public byte[] getBytes() {
-        byte[] result = new byte[2];
-        result[0] = (byte) (value & 0xFF);
-        result[1] = (byte) ((value & 0xFF00) >> 8);
-        return result;
-    }
-
-    /**
-     * Get value as Java int.
-     *
-     * @since 1.1
-     */
-    public int getValue() {
-        return value;
-    }
-
-    /**
-     * Override to make two instances with same value equal.
-     *
-     * @since 1.1
-     */
-    public boolean equals(Object o) {
-        if (o == null || !(o instanceof ZipShort)) {
-            return false;
-        }
-        return value == ((ZipShort) o).getValue();
-    }
-
-    /**
-     * Override to make two instances with same value equal.
-     *
-     * @since 1.1
-     */
-    public int hashCode() {
-        return value;
-    }
-
-}// ZipShort
diff --git a/src/script/ant b/src/script/ant
deleted file mode 100644
index 365f900..0000000
--- a/src/script/ant
+++ /dev/null
@@ -1,134 +0,0 @@
-#! /bin/sh
-
-if [ -f $HOME/.antrc ] ; then 
-  . $HOME/.antrc
-fi
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  Darwin*) darwin=true ;;
-esac
-
-if [ -z "$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
-
-# 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 [ -z "$JAVACMD" ] ; then 
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD=$JAVA_HOME/jre/sh/java
-    else
-      JAVACMD=$JAVA_HOME/bin/java
-    fi
-  else
-    JAVACMD=java
-  fi
-fi
- 
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly."
-  echo "  We cannot execute $JAVACMD"
-  exit
-fi
-
-if [ -n "$CLASSPATH" ] ; then
-  LOCALCLASSPATH=$CLASSPATH
-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
-      if [ -z "$LOCALCLASSPATH" ] ; then
-        LOCALCLASSPATH=$i
-      else
-        LOCALCLASSPATH="$i":$LOCALCLASSPATH
-      fi
-    fi
-done
-
-if [ -n "$JAVA_HOME" ] ; then
-  if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
-    LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar
-  fi
-
-  if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
-    LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip
-  fi
-
-  # OSX hack to make Ant work with jikes
-  if $darwin ; then
-    OSXHACK="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes"
-    if [ -d ${OSXHACK} ] ; then
-      for i in ${OSXHACK}/*.jar
-      do
-        JIKESPATH=$JIKESPATH:$i
-      done
-    fi
-  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 [ -n "$JIKESPATH" ] ; then
-  if [ -n "$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 81a2835..0000000
--- a/src/script/ant.bat
+++ /dev/null
@@ -1,110 +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%\..
-
-if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME%
-set DEFAULT_ANT_HOME=
-
-rem Need to check if we are using the 4NT shell...
-if "%eval[2+2]" == "4" goto setup4NT
-
-rem On NT/2K grab all arguments at once
-set ANT_CMD_LINE_ARGS=%*
-goto doneStart
-
-:setup4NT
-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\nul goto checkCDrive
-set ANT_HOME=%SystemDrive%\ant
-goto checkJava
-
-:checkCDrive
-rem check for ant in C:\ant for Win9X users
-if not exist C:\ant\nul goto noAntHome
-set ANT_HOME=C:\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 9168932..0000000
--- a/src/script/antRun.bat
+++ /dev/null
@@ -1,20 +0,0 @@
-@echo off
-
-rem Change drive and directory to %1 (Win9X only for NT/2K use "cd /d")
-cd %1
-%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 2c7e276..0000000
--- a/src/script/lcp.bat
+++ /dev/null
@@ -1,9 +0,0 @@
-set _CLASSPATHCOMPONENT=%1
-:argCheck
-if %2a==a goto gotAllArgs
-shift
-set _CLASSPATHCOMPONENT=%_CLASSPATHCOMPONENT% %1
-goto argCheck
-:gotAllArgs
-set LOCALCLASSPATH=%_CLASSPATHCOMPONENT%;%LOCALCLASSPATH%
-
diff --git a/src/script/runant.pl b/src/script/runant.pl
deleted file mode 100644
index a2cc523..0000000
--- a/src/script/runant.pl
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/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);
-
-my $returnValue = system $JAVACMD, @ARGS;
-if ($returnValue eq 0)
-        {
-        exit 0;
-        }
-else
-        {
-        # only 0 and 1 are widely recognized as exit values
-        # so change the exit value to 1
-        exit 1;
-        }
diff --git a/src/script/runant.py b/src/script/runant.py
deleted file mode 100644
index d5e200c..0000000
--- a/src/script/runant.py
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/python
-"""
-
- runant.py
-
-	This script is a translation of the runant.pl written by Steve Loughran.
-	It runs ant with/out arguments, it should be quite portable (thanks to
-	the python os library)
-	This script has been tested with Python2.0/Win2K
-
- created:         2001-04-11
- author:          Pierre Dittgen pierre.dittgen@criltelecom.com
-
- Assumptions:
-
- - the "java" executable/script is on the command path
- - ANT_HOME has been set
-"""
-import os, os.path, string, sys
-
-# Change it to 1 to get extra debug information
-debug = 0
-
-#######################################################################
-#
-# check to make sure environment is setup
-#
-if not os.environ.has_key('ANT_HOME'):
-	print '\n\nANT_HOME *MUST* be set!\n\n'
-	sys.exit(1)
-else:
-	ANT_HOME = os.environ['ANT_HOME']
-
-if not os.environ.has_key('JAVACMD'):
-	JAVACMD = 'java'
-else:
-	JAVACMD = os.environ['JAVACMD']
-
-# Sets the separator char for CLASSPATH
-SEPARATOR = ':'
-if os.name == 'dos' or os.name == 'nt':
-	SEPARATOR = ';'
-
-# Build up standard classpath
-localpath = ''
-if os.environ.has_key('CLASSPATH'):
-	localpath = os.environ['CLASSPATH']
-else:
-	if debug:
-		print 'Warning: no initial classpath\n'
-
-# Add jar files
-LIBDIR = os.path.join(ANT_HOME, 'lib')
-jarfiles = []
-for file in os.listdir(LIBDIR):
-	if file[-4:] == '.jar':
-		jarfiles.append(os.path.join(LIBDIR,file))
-if debug:
-	print 'Jar files:'
-	for jar in jarfiles:
-		print jar
-localpath = localpath + SEPARATOR + string.join(jarfiles, SEPARATOR)
-
-# If JAVA_HOME is defined, look for tools.jar & classes.zip
-# and add to classpath
-if os.environ.has_key('JAVA_HOME') and os.environ['JAVA_HOME'] != '':
-	JAVA_HOME = os.environ['JAVA_HOME']
-	TOOLS = os.path.join(JAVA_HOME, os.path.join('lib', 'tools.jar'))
-	if os.path.exists(TOOLS):
-		localpath = localpath + SEPARATOR + TOOLS
-	CLASSES = os.path.join(JAVA_HOME, os.path.join('lib', 'classes.zip'))
-	if os.path.exists(CLASSES):
-		localpath = localpath + SEPARATOR + 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
-ANT_OPTS = []
-if os.environ.has_key('ANT_OPTS'):
-	ANT_OPTS = string.split(os.environ['ANT_OPTS'])
-if os.environ.has_key('JIKESPATH'):
-	ANT_OPTS.append('-Djikes.class.path=' + os.environ['JIKESPATH'])
-
-# Builds the commandline
-cmdline = '%s -classpath %s -Dant.home=%s %s org.apache.tools.ant.Main %s' \
-	 % (JAVACMD, localpath, ANT_HOME, string.join(ANT_OPTS,' '), \
-	 	string.join(sys.argv[1:], ' '))
-
-if debug:
-	print '\n%s\n\n' % (cmdline)
-
-# Run the biniou!
-os.system(cmdline)
diff --git a/src/testcases/org/apache/tools/ant/DirectoryScannerTest.java b/src/testcases/org/apache/tools/ant/DirectoryScannerTest.java
deleted file mode 100644
index 7c54685..0000000
--- a/src/testcases/org/apache/tools/ant/DirectoryScannerTest.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;
-
-import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
-import java.io.File;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.DirectoryScanner
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class DirectoryScannerTest extends TestCase {
-
-    public DirectoryScannerTest(String name) {super(name);}
-
-    /**
-     * Test inspired by Bug#1415.
-     */
-    public void testChildrenOfExcludedDirectory() {
-        File dir = new File("src/main/org/apache/tools");
-        DirectoryScanner ds = new DirectoryScanner();
-        ds.setBasedir(dir);
-        ds.setExcludes(new String[] {"ant/**"});
-        ds.scan();
-
-        boolean haveZipPackage = false;
-        boolean haveTaskdefsPackage = false;
-        String[] included = ds.getIncludedDirectories();
-        for (int i=0; i<included.length; i++) {
-            if (included[i].equals("zip")) {
-                haveZipPackage = true;
-            } else if (included[i].equals("ant"+File.separator+"taskdefs")) {
-                haveTaskdefsPackage = true;
-            }
-        }
-        assert("(1) zip package included", haveZipPackage);
-        assert("(1) taskdefs package not included", !haveTaskdefsPackage);
-
-        ds = new DirectoryScanner();
-        ds.setBasedir(dir);
-        ds.setExcludes(new String[] {"ant"});
-        ds.scan();
-        haveZipPackage = false;
-        included = ds.getIncludedDirectories();
-        for (int i=0; i<included.length; i++) {
-            if (included[i].equals("zip")) {
-                haveZipPackage = true;
-            } else if (included[i].equals("ant"+File.separator+"taskdefs")) {
-                haveTaskdefsPackage = true;
-            }
-        }
-        assert("(2) zip package included", haveZipPackage);
-        assert("(2) taskdefs package included", haveTaskdefsPackage);
-
-    }
-
-}
diff --git a/src/testcases/org/apache/tools/ant/IncludeTest.java b/src/testcases/org/apache/tools/ant/IncludeTest.java
deleted file mode 100644
index 67dba02..0000000
--- a/src/testcases/org/apache/tools/ant/IncludeTest.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;
-
-import org.apache.tools.ant.taskdefs.TaskdefsTest;
-
-/**
- * Test the build file inclusion using XML entities.
- *
- * @author Conor MacNeill
- */
-public class IncludeTest extends TaskdefsTest { 
-    
-    public IncludeTest(String name) { 
-        super(name);
-    }    
-    
-    public void test1() { 
-        configureProject("src/etc/testcases/core/include/basic/include.xml");
-        expectLog("test1", "from included entity");
-    }
-    
-    public void test2() { 
-        configureProject("src/etc/testcases/core/include/frag#ment/include.xml");
-        expectLog("test1", "from included entity");
-    }
-    
-    public void test3() { 
-        configureProject("src/etc/testcases/core/include/frag#ment/simple.xml");
-        expectLog("test1", "from simple buildfile");
-    }
-    
-    public void test4() { 
-        configureProject("src/etc/testcases/core/include/basic/relative.xml");
-        expectLog("test1", "from included entity");
-    }
-    
-    public void test5() { 
-        configureProject("src/etc/testcases/core/include/frag#ment/relative.xml");
-        expectLog("test1", "from included entity");
-    }
-}
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 a8ac5c1..0000000
--- a/src/testcases/org/apache/tools/ant/IntrospectionHelperTest.java
+++ /dev/null
@@ -1,456 +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 {
-
-    private Project p;
-
-    public static boolean isUnixStyle = File.pathSeparatorChar == ':';
-
-    public IntrospectionHelperTest(String name) {
-        super(name);
-    }
-    
-    public void setUp() {
-        p = new Project();
-        p.setBasedir("/tmp");
-    }
-
-    public void testAddText() throws BuildException {
-        IntrospectionHelper ih = IntrospectionHelper.getHelper(java.lang.String.class);
-        try {
-            ih.addText(p, "", "test");
-            fail("String doesn\'t support addText");
-        } catch (BuildException be) {
-        }
-
-        ih = IntrospectionHelper.getHelper(getClass());
-        ih.addText(p, this, "test");
-        try {
-            ih.addText(p, 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(p, 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(p, this, "thirteen").toString());
-
-        try {
-            ih.createElement(p, this, "fourteen");
-            fail("fourteen throws NullPointerException");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof NullPointerException);
-        }
-
-        try {
-            ih.createElement(p, 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 {
-        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);
-
-        /*
-         * JUnit 3.7 adds a getName method to TestCase - so we now
-         * have a name attribute in IntrospectionHelperTest if we run
-         * under JUnit 3.7 but not in earlier versions.
-         *
-         * Simply add it here and remove it after the tests.
-         */
-        h.put("name", java.lang.String.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);
-        }
-        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 83c64ce..0000000
--- a/src/testcases/org/apache/tools/ant/ProjectTest.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;
-
-import org.apache.tools.ant.types.*;
-
-import java.io.File;
-
-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;
-    private String root;
-
-    public ProjectTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        p = new Project();
-        p.init();
-        root = new File(File.separator).getAbsolutePath();
-    }
-
-    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);
-    }
-
-    /**
-     * This test has been a starting point for moving the code to FileUtils.
-     */
-    public void testResolveFile() {
-        /*
-         * Start with simple absolute file names.
-         */
-        assertEquals(File.separator, 
-                     p.resolveFile("/", null).getPath());
-        assertEquals(File.separator, 
-                     p.resolveFile("\\", null).getPath());
-
-        /*
-         * throw in drive letters
-         */
-        String driveSpec = "C:";
-        assertEquals(driveSpec + "\\", 
-                     p.resolveFile(driveSpec + "/", null).getPath());
-        assertEquals(driveSpec + "\\", 
-                     p.resolveFile(driveSpec + "\\", null).getPath());
-        String driveSpecLower = "c:";
-        assertEquals(driveSpec + "\\", 
-                     p.resolveFile(driveSpecLower + "/", null).getPath());
-        assertEquals(driveSpec + "\\", 
-                     p.resolveFile(driveSpecLower + "\\", null).getPath());
-        /*
-         * promised to eliminate consecutive slashes after drive letter.
-         */
-        assertEquals(driveSpec + "\\", 
-                     p.resolveFile(driveSpec + "/////", null).getPath());
-        assertEquals(driveSpec + "\\", 
-                     p.resolveFile(driveSpec + "\\\\\\\\\\\\", null).getPath());
-
-        /*
-         * Now test some relative file name magic.
-         */
-        assertEquals(localize("/1/2/3/4"),
-                     p.resolveFile("4", new File(localize("/1/2/3"))).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     p.resolveFile("./4", new File(localize("/1/2/3"))).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     p.resolveFile(".\\4", new File(localize("/1/2/3"))).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     p.resolveFile("./.\\4", new File(localize("/1/2/3"))).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     p.resolveFile("../3/4", new File(localize("/1/2/3"))).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     p.resolveFile("..\\3\\4", new File(localize("/1/2/3"))).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     p.resolveFile("../../5/.././2/./3/6/../4", new File(localize("/1/2/3"))).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     p.resolveFile("..\\../5/..\\./2/./3/6\\../4", new File(localize("/1/2/3"))).getPath());
-
-    }
-
-    /**
-     * adapt file separators to local conventions
-     */
-    private String localize(String path) {
-        path = root + path.substring(1);
-        return path.replace('\\', File.separatorChar).replace('/', File.separatorChar);
-    }
-}
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 6750f60..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/AvailableTest.java
+++ /dev/null
@@ -1,186 +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("true", project.getProperty("test"));
-    }
-    
-    // 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("true", project.getProperty("test"));
-    }
-
-    // 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("true", project.getProperty("test"));
-    }
-    
-    // All three specified and all three exist -> true
-    public void test10() { 
-        executeTarget("test10");
-        assertEquals("true", project.getProperty("test"));
-    }
-
-    // All three specified but class missing -> null
-    public void test11() { 
-        executeTarget("test11");
-        assertNull(project.getProperty("test"));
-    }
-
-    // Specified property-name is "" -> true
-    public void test12() { 
-        executeTarget("test12");
-        assertNull(project.getProperty("test"));
-        assertEquals("true", project.getProperty(""));
-    }
-
-    // Specified file is "" -> invalid files do not exist
-    public void test13() { 
-        executeTarget("test13");
-        assertNull(project.getProperty("test"));
-    }
-
-    // Specified file is "" actually a directory, so it should pass
-    public void test13b() { 
-        executeTarget("test13b");
-        assertEquals("true", project.getProperty("test"));
-    }
-
-    // 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");
-        assertNull(project.getProperty("test"));
-    }
-
-    // Specified dir is "" -> this is the current directory and should
-    // always exist
-    public void test16() { 
-        executeTarget("test16");
-        assertEquals("true", project.getProperty("test"));
-    }
-
-    // Specified dir is "../taskdefs" -> should exist since it's the 
-    // location of the buildfile used...
-    public void test17() { 
-        executeTarget("test17");
-        assertEquals("true", project.getProperty("test"));
-    }
-
-    // Specified dir is "../this_dir_should_never_exist" -> null
-    public void test18() { 
-        executeTarget("test18");
-        assertNull(project.getProperty("test"));
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/CVSPassTest.java b/src/testcases/org/apache/tools/ant/taskdefs/CVSPassTest.java
deleted file mode 100644
index cea6b7e..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/CVSPassTest.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;
-
-import java.io.*;
-import org.apache.tools.ant.*;
-
-/**
- * Tests CVSLogin task.
- *
- * @author <a href="mailto:jeff@custommonkey.org">Jeff Martin</a>
- */
-public class CVSPassTest extends TaskdefsTest { 
-    private final String EOL = System.getProperty("line.separator");
-    private final String JAKARTA_URL =
-        ":pserver:anoncvs@jakarta.apache.org:/home/cvspublic Ay=0=h<Z";
-    private final String XML_URL =
-        ":pserver:anoncvs@xml.apache.org:/home/cvspublic Ay=0=h<Z";
-    private final String TIGRIS_URL =
-        ":pserver:guest@cvs.tigris.org:/cvs AIbdZ,";
-    
-    
-    public CVSPassTest(String name) { 
-        super(name);
-    }
-
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/cvspass.xml");
-    }
-
-    public void testNoCVSRoot() { 
-        try{
-            executeTarget("test1");
-            fail("BuildException not thrown");
-        }catch(BuildException e){
-            assertEquals("cvsroot is required", e.getMessage());
-        }
-    }
-
-    public void testNoPassword() { 
-        try{
-            executeTarget("test2");
-            fail("BuildException not thrown");
-        }catch(BuildException e){
-            assertEquals("password is required", e.getMessage());
-        }
-    }
-
-    public void tearDown() {
-        executeTarget("cleanup");
-    }
-
-    public void testPassFile() throws Exception { 
-        executeTarget("test3");
-        File f = new File(getProjectDir(), "testpassfile.tmp");
-
-        assert( "Passfile "+f+" not created", f.exists());
-
-        assertEquals(JAKARTA_URL+EOL, readFile(f));
-
-    }
-
-    public void testPassFileDuplicateEntry() throws Exception { 
-        executeTarget("test4");
-        File f = new File(getProjectDir(), "testpassfile.tmp");
-
-        assert( "Passfile "+f+" not created", f.exists());
-
-        assertEquals(
-            JAKARTA_URL+ EOL+
-            TIGRIS_URL+ EOL,
-            readFile(f));
-    }
-
-    public void testPassFileMultipleEntry() throws Exception { 
-        executeTarget("test5");
-        File f = new File(getProjectDir(), "testpassfile.tmp");
-
-        assert( "Passfile "+f+" not created", f.exists());
-
-        assertEquals(
-            JAKARTA_URL+ EOL+
-            XML_URL+ EOL+
-            TIGRIS_URL+ EOL,
-            readFile(f));
-    }
-
-    private String readFile(File f) throws Exception {
-        BufferedReader reader = null; 
-        
-        try {
-            reader = new BufferedReader(new FileReader(f));
-
-            StringBuffer buf = new StringBuffer();
-            String line=null;
-            while((line=reader.readLine())!=null){
-                buf.append(line + EOL);
-            }
-            return buf.toString();
-        } finally {
-            if (reader != null) {
-                reader.close();
-            }
-        }
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java b/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java
deleted file mode 100644
index 21c0793..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.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;
-
-/**
- * Tests FileSet using the Copy task.
- *
- * @author David Rees <dave@ubiqsoft.com> 
- */
-public class CopyTest extends TaskdefsTest { 
-    
-    public CopyTest(String name) { 
-        super(name);
-    }
-
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/copy.xml");
-    }
-
-    public void test1() { 
-        executeTarget("test1");
-        java.io.File f = new java.io.File(getProjectDir(), "copytest1.tmp");
-        if ( !f.exists()) {
-            fail("Copy failed");
-        }
-    }
-
-    public void tearDown() {
-        executeTarget("cleanup");
-    }
-
-    public void test2() { 
-        executeTarget("test2");
-        java.io.File f = new java.io.File(getProjectDir(), "copytest1dir/copy.xml");
-        if ( !f.exists()) {
-            fail("Copy failed");
-        }
-    }
-}
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 be962e0..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/CopydirTest.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;
-
-import java.io.File;
-
-/**
- * @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(getProjectDir(), "../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 2c20e2a..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/CopyfileTest.java
+++ /dev/null
@@ -1,105 +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;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class CopyfileTest extends TaskdefsTest { 
-    
-    public void test6() { 
-        expectBuildException("test6", "target is directory");
-    }
-
-    public CopyfileTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/copyfile.xml");
-    }
-    
-    public void tearDown() {
-        executeTarget("cleanup");
-    }
-    
-    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(getProjectDir(), "copyfile.tmp");
-        if (f.exists()) { 
-            f.delete();
-        } else {
-            fail("Copy failed");
-        }
-    }
-}
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/DependSetTest.java b/src/testcases/org/apache/tools/ant/taskdefs/DependSetTest.java
deleted file mode 100644
index 58e22c6..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/DependSetTest.java
+++ /dev/null
@@ -1,100 +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;
-
-/**
- * Tests DependSet.
- *
- * @author <a href="mailto:cstrong@arielpartners.com">Craeg Strong</a>
- */
-public class DependSetTest extends TaskdefsTest { 
-    
-    public DependSetTest(String name) { 
-        super(name);
-    }
-
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/dependset.xml");
-    }
-
-    public void test1() { 
-       expectBuildException("test1","At least one <srcfileset> or <srcfilelist> element must be set");
-    }
-
-    public void tearDown() {
-        executeTarget("cleanup");
-    }
-
-    public void test2() { 
-       expectBuildException("test2","At least one <targetfileset> or <targetfilelist> element must be set");
-    }
-
-    public void test3() { 
-       expectBuildException("test1","At least one <srcfileset> or <srcfilelist> element must be set");
-    }
-
-    public void test4() { 
-        executeTarget("test4");
-    }
-
-    public void test5() { 
-        executeTarget("test5");
-        java.io.File f = new java.io.File(getProjectDir(), "older.tmp");
-        if (f.exists()) {
-           fail("dependset failed to remove out of date file " + f.toString());
-        }
-    }
-
-}
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 4c39598..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/ExecuteWatchdogTest.java
+++ /dev/null
@@ -1,207 +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 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 = 5000;
-
-	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");
-		}
-
-                // JDK 1.1 needs classes.zip in -classpath argument
-                if (Project.getJavaVersion() == Project.JAVA_1_1) {
-                    classpath +=   File.pathSeparator
-                                 + System.getProperty("java.home")
-                                 + File.separator + "lib"
-                                 + File.separator + "classes.zip";
-                }
-
-		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 516cbea..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/FilterTest.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/>.
- */
-
-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 { 
-      
-    public FilterTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/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", "filtered.tmp"));
-    }
-    
-
-    public void test6() {
-        executeTarget("test6");
-        assertEquals("2000",
-                     getFilteredFile("6", "taskdefs.tmp/filter1.txt"));
-    }
-
-    public void test7() {
-        executeTarget("test7");
-        assertEquals("<%@ include file=\"root/some/include.jsp\"%>",
-                     getFilteredFile("7", "filtered.tmp"));
-    }
-
-    public void test8() {
-        executeTarget("test8");
-        assertEquals("<%@ include file=\"root/some/include.jsp\"%>",
-                     getFilteredFile("8", "taskdefs.tmp/filter2.txt"));
-    }
-    
-    private String getFilteredFile(String testNumber, String filteredFile) {
-    
-        String line = null;
-        File f = new File(getProjectDir(), 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/FixCrLfTest.java b/src/testcases/org/apache/tools/ant/taskdefs/FixCrLfTest.java
deleted file mode 100644
index 5dcc43b..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/FixCrLfTest.java
+++ /dev/null
@@ -1,190 +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 junit.framework.AssertionFailedError;
-
-/**
- * @author <a href="mailto:pbwest@powerup.com.au">Peter B. West</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class FixCrLfTest extends TaskdefsTest {
-
-    public FixCrLfTest(String name) {
-        super(name);
-    }
-
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/fixcrlf/build.xml");
-    }
-    
-    public void tearDown() { 
-        executeTarget("cleanup");
-    }
-    
-    public void test1() throws IOException { 
-        executeTarget("test1");
-        assertEqualContent(new File("src/etc/testcases/taskdefs/fixcrlf/expected/Junk1.java"),
-                           new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk1.java"));
-    }
-    
-    public void test2() throws IOException { 
-        executeTarget("test2");
-        assertEqualContent(new File("src/etc/testcases/taskdefs/fixcrlf/expected/Junk2.java"),
-                           new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk2.java"));
-    }
-    
-    public void test3() throws IOException { 
-        executeTarget("test3");
-        assertEqualContent(new File("src/etc/testcases/taskdefs/fixcrlf/expected/Junk3.java"),
-                           new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk3.java"));
-    }
-    
-    public void test4() throws IOException { 
-        executeTarget("test4");
-        assertEqualContent(new File("src/etc/testcases/taskdefs/fixcrlf/expected/Junk4.java"),
-                           new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk4.java"));
-    }
-    
-    public void test5() throws IOException { 
-        executeTarget("test5");
-        assertEqualContent(new File("src/etc/testcases/taskdefs/fixcrlf/expected/Junk5.java"),
-                           new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk5.java"));
-    }
-    
-    public void test6() throws IOException { 
-        executeTarget("test6");
-        assertEqualContent(new File("src/etc/testcases/taskdefs/fixcrlf/expected/Junk6.java"),
-                           new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk6.java"));
-    }
-    
-    public void test7() throws IOException { 
-        executeTarget("test7");
-        assertEqualContent(new File("src/etc/testcases/taskdefs/fixcrlf/expected/Junk7.java"),
-                           new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk7.java"));
-    }
-    
-    public void test8() throws IOException {  
-        executeTarget("test8");
-        assertEqualContent(new File("src/etc/testcases/taskdefs/fixcrlf/expected/Junk8.java"),
-                           new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk8.java"));
-    }
-    
-    public void test9() throws IOException { 
-        executeTarget("test9");
-        assertEqualContent(new File("src/etc/testcases/taskdefs/fixcrlf/expected/Junk9.java"),
-                           new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk9.java"));
-    }
-    
-    public void testNoOverwrite() throws IOException {
-        executeTarget("test1");
-        File result = 
-            new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk1.java");
-        long modTime = result.lastModified();
-
-        /*
-         * Sleep for some time to make sure a newer file would get a
-         * more recent timestamp according to the file system's
-         * granularity (should be > 2s to account for Windows FAT).
-         */
-        try {
-            Thread.currentThread().sleep(5000);
-        } catch (InterruptedException ie) {
-            fail(ie.getMessage());
-        } // end of try-catch
-
-        /* 
-         * make sure we get a new Project instance or the target won't get run
-         * a second time.
-         */
-        configureProject("src/etc/testcases/taskdefs/fixcrlf/build.xml");
-
-        executeTarget("test1");
-        result = 
-            new File("src/etc/testcases/taskdefs/fixcrlf/result/Junk1.java");
-        assertEquals(modTime, result.lastModified());
-    }
-
-    public void assertEqualContent(File expect, File result) 
-        throws AssertionFailedError, IOException {
-        if (!result.exists()) {
-            fail("Expected file "+result+" doesn\'t exist");
-        }
-
-        InputStream inExpect = null;
-        InputStream inResult = null;
-        try {
-            inExpect = new BufferedInputStream(new FileInputStream(expect));
-            inResult = new BufferedInputStream(new FileInputStream(result));
-
-            int expectedByte = inExpect.read();
-            while (expectedByte != -1) {
-                assertEquals(expectedByte, inResult.read());
-                expectedByte = inExpect.read();
-            }
-            assertEquals("End of file", -1, inResult.read());
-        } finally {
-            if (inResult != null) {
-                inResult.close();
-            }
-            if (inExpect != null) {
-                inExpect.close();
-            }
-        }
-    }
-
-}
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 6d98a50..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/GUnzipTest.java
+++ /dev/null
@@ -1,92 +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;
-
-/**
- * @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 File(getProjectDir(), "gzip.tmp2");
-        if (!f.exists()) { 
-            fail("gzip failed");
-        } else {
-            f.delete();
-            f = new File(getProjectDir(), "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 aed8efb..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/GetTest.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;
-
-import java.io.File;
-
-/**
- * @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 File(getProjectDir(), "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 b3710ee..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/GzipTest.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.taskdefs;
-
-import java.io.File;
- 
-/**
- * @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(getProjectDir(), "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 2392235..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 = "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(getProjectDir(), tempJar);
-        assert(jarFile.exists());
-        jarModifiedDate = jarFile.lastModified();
-    }
-
-    public void XXXtest5() {
-        executeTarget("test5");
-        File jarFile = new File(getProjectDir(), tempJar);
-        assertEquals(jarModifiedDate, jarFile.lastModified());
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/JavaTest.java b/src/testcases/org/apache/tools/ant/taskdefs/JavaTest.java
deleted file mode 100644
index 9d689f7..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/JavaTest.java
+++ /dev/null
@@ -1,120 +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 java.io.*;
-import org.apache.tools.ant.*;
-
-/**
- * Some basic tests mainly intended to test for jar/classname behavior.
- * @todo has to be enhanced to use TaskdefsTest instead.
- * @author <a href="mailto:sbailliez@apache.org>Stephane Bailliez</a> 
- */
-public class JavaTest extends TestCase { 
-    
-    protected Java java;
-    
-    public JavaTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        java = new Java();
-    }
-
-    public void testNoJarNoClassname(){
-        try {
-            java.execute();
-            fail("Should have failed. Cannot run with no classname nor jar");
-        } catch (BuildException e){
-            assertEquals("Classname must not be null.", e.getMessage());
-        }
-    }
-
-    public void testJarNoFork() {
-        java.setJar( new File("test.jar") );
-        java.setFork(false);
-        try {
-            java.execute();
-            fail("Should have failed. Cannot run jar in non-forked mode");
-        } catch (BuildException e){
-            assertEquals("Cannot execute a jar in non-forked mode. Please set fork='true'. ", e.getMessage());
-        }
-    }
-       
-    public void testClassname() { 
-        java.setClassname("test.class.Name");
-    }
-    
-    public void testJarAndClassName() { 
-        try {
-            java.setJar( new File("test.jar") );
-            java.setClassname("test.class.Name");
-            fail("Should not be able to set both classname AND jar");
-        } catch (BuildException e){
-        }
-    }
-
-    public void testClassnameAndJar() { 
-        try {
-            java.setClassname("test.class.Name");
-            java.setJar( new File("test.jar") );
-            fail("Should not be able to set both classname AND jar");
-        } catch (BuildException e){
-        }
-    }
-    
-}
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 7d85fa0..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/MkdirTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.apache.tools.ant.taskdefs;
-
-/*
- * 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/>.
- */
-
-/**
- * @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(getProjectDir(), "testdir.tmp");
-        if (!f.exists() || !f.isDirectory()) { 
-            fail("mkdir failed");
-        } else {
-            f.delete();
-        }
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java b/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java
deleted file mode 100644
index 1b28603..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java
+++ /dev/null
@@ -1,97 +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;
-
-import org.apache.tools.ant.*;
-
-/**
- * @author Conor MacNeill
- */
-public class PropertyTest extends TaskdefsTest { 
-    
-    public PropertyTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/property.xml");
-    }
-
-    public void test1() { 
-        // should get no output at all
-        expectOutputAndError("test1", "", "");
-    }
-
-    public void test2() { 
-        expectLog("test2", "testprop1=aa, testprop3=xxyy, testprop4=aazz");
-    }
-    
-    public void test3() {
-        try {
-            executeTarget("test3");
-        }
-        catch (BuildException e) {
-            assertEquals("Circular definition not detected - ", true,
-                     e.getMessage().indexOf("was circularly defined") != -1);
-            return;                     
-        }
-        fail("Did not throw exception on circular exception");                     
-    }
-
-    public void test4() { 
-        expectLog("test4", "http.url is http://localhost:999");
-    }
-    
-}
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/SleepTest.java b/src/testcases/org/apache/tools/ant/taskdefs/SleepTest.java
deleted file mode 100644
index 192e86b..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/SleepTest.java
+++ /dev/null
@@ -1,146 +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;
-
-/**
- * @author steve_l@iseran.com steve loughran
- * @created 01 May 2001
- */
-public class SleepTest extends TaskdefsTest {
-
-
-    private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/";
-    private final static boolean TRACE=false;
-
-    public SleepTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        configureProject(TASKDEFS_DIR + "sleep.xml");
-    }
-
-    public void test1() {
-       Timer timer=new Timer();
-        executeTarget("test1");
-        timer.stop();
-        if(TRACE) System.out.println(" test1 elapsed time="+timer.time());
-        assert(timer.time()>=0);
-    }
-
-    public void test2() {
-        Timer timer=new Timer();
-        executeTarget("test2");
-        timer.stop();
-        if(TRACE) System.out.println(" test2 elapsed time="+timer.time());
-        assert(timer.time()>=0);
-    }
-
-    public void test3() {
-        Timer timer=new Timer();
-        executeTarget("test3");
-        timer.stop();
-        if(TRACE) System.out.println(" test3 elapsed time="+timer.time());
-        assert(timer.time()>=2000);
-    }
-
-    public void test4() {
-        Timer timer=new Timer();
-        executeTarget("test3");
-        timer.stop();
-        if(TRACE) System.out.println(" test4 elapsed time="+timer.time());
-        assert(timer.time()>=2000 && timer.time()<60000);
-    }
-
-    public void test5() {
-        expectBuildException("test5",
-            "Negative sleep periods are not supported");
-    }
-
-    public void test6() {
-        Timer timer=new Timer();
-        executeTarget("test6");
-        timer.stop();
-        if(TRACE) System.out.println(" test6 elapsed time="+timer.time());
-        assert(timer.time()<2000);
-    }
-
-
-    /**
-    * inner timer class
-    */
-    private static class Timer {
-        long start=0;
-        long stop=0;
-
-        public Timer() {
-            start();
-        }
-
-        public void start() {
-            start=System.currentTimeMillis();
-        }
-
-        public void stop() {
-            stop=System.currentTimeMillis();
-        }
-
-        public long time() {
-            return stop-start;
-        }
-    }
-
-}
-
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 4f7a032..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/TarTest.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 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");
-    }
-
-    public void test4() { 
-        expectBuildException("test4", "tar cannot include itself");
-    }
-
-    public void test5() {
-        executeTarget("test5");
-        java.io.File f 
-            = new java.io.File("src/etc/testcases/taskdefs/test5.tar");
-
-        if (!f.exists()) {
-            fail("Tarring a directory failed");
-        }
-    }
-
-    public void tearDown() {
-        executeTarget("cleanup");
-    }
-}
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 5db0dd9..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefTest.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 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");
-    }
-
-    /* disabled until I know why they fail when run via the junit task --SB
-    public void test6() {
-        expectOutput("test6", "simpletask: worked");
-    }
-
-    public void test7() {
-        expectOutput("test7", "worked");
-    }
-    */
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefTestContainerTask.java b/src/testcases/org/apache/tools/ant/taskdefs/TaskdefTestContainerTask.java
deleted file mode 100644
index 613db71..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefTestContainerTask.java
+++ /dev/null
@@ -1,59 +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;
-
-public class TaskdefTestContainerTask extends Sequential {
-    public TaskdefTestContainerTask() {}
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefTestSimpleTask.java b/src/testcases/org/apache/tools/ant/taskdefs/TaskdefTestSimpleTask.java
deleted file mode 100644
index 1a16748..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefTestSimpleTask.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;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-
-public class TaskdefTestSimpleTask extends Task {
-
-    public class Echo {
-        Echo() {}
-        private String message = null;
-        public void setMessage(String s) {message = s;}
-    }
-    
-    public TaskdefTestSimpleTask() {}
-    
-    private Echo echo;
-    public Echo createEcho() {
-        echo = new Echo();
-        return echo;
-    }
-    
-    public void execute() {
-        log("simpletask: "+echo.message, Project.MSG_INFO);
-    }
-
-}
-
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 7e67ce9..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefsTest.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;
-
-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 StringBuffer errBuffer;
-    private BuildException buildException;
-    
-    public TaskdefsTest(String name) {
-        super(name);
-    }
-    
-    protected String getLog() { 
-        return logBuffer.toString();
-    }
-
-    protected void expectBuildException(String taskname, String cause) { 
-        expectSpecificBuildException(taskname, cause, null);
-    }
-
-    protected void expectOutput(String taskname, String output) { 
-        executeTarget(taskname);
-        String realOutput = getOutput();
-        assertEquals(output, realOutput);
-    }
-
-    protected void expectOutputAndError(String taskname, String output, String error) { 
-        executeTarget(taskname);
-        String realOutput = getOutput();
-        assertEquals(output, realOutput);
-        String realError = getError();
-        assertEquals(error, realError);
-    }
-
-    protected void expectLog(String taskname, String log) { 
-        executeTarget(taskname);
-        String realLog = getLog();
-        assertEquals(log, realLog);
-    }
-
-    
-    protected String getOutput() {
-        return cleanBuffer(outBuffer);
-    }
-     
-    protected String getError() {
-        return cleanBuffer(errBuffer);
-    }
-        
-    private String cleanBuffer(StringBuffer buffer) {
-        StringBuffer cleanedBuffer = new StringBuffer();
-        boolean cr = false;
-        for (int i = 0; i < buffer.length(); i++) { 
-            char ch = buffer.charAt(i);
-            if (ch == '\r') {
-                cr = true;
-                continue;
-            }
-
-            if (!cr) { 
-                cleanedBuffer.append(ch);
-            } else { 
-                if (ch == '\n') {
-                    cleanedBuffer.append(ch);
-                } else {
-                    cleanedBuffer.append('\r').append(ch);
-                }
-            }
-        }
-        return cleanedBuffer.toString();
-    }
-    
-    protected void configureProject(String filename) { 
-        logBuffer = new StringBuffer();
-        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;
-        PrintStream sysErr = System.err;
-        try { 
-            sysOut.flush();
-            sysErr.flush();
-            outBuffer = new StringBuffer();
-            PrintStream out = new PrintStream(new AntOutputStream());
-            System.setOut(out);
-            errBuffer = new StringBuffer();
-            PrintStream err = new PrintStream(new AntOutputStream());
-            System.setErr(err);
-            logBuffer = new StringBuffer();
-            buildException = null;
-            project.executeTarget(targetName);
-        } finally { 
-            System.setOut(sysOut);
-            System.setErr(sysErr);
-        }
-        
-    }
-    
-    protected File getProjectDir() {
-        return project.getBaseDir();
-    }
-
-    protected void expectSpecificBuildException(String taskname, String cause, String msg) { 
-        try {
-            executeTarget(taskname);
-        } catch (org.apache.tools.ant.BuildException ex) {
-            if ((null != msg) && (ex.getMessage() != msg)) {
-                fail("Should throw BuildException because '" + cause + "' with message '" + msg + "' (received message '" + ex.getMessage() + "' instead)");
-            }
-            return;
-        }
-        fail("Should throw BuildException because: " + cause);
-    }
-    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 ada7d1a..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/ZipTest.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;
-
-/**
- * @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");
-    }
-    
-    public void test3() { 
-        expectBuildException("test3", "zip cannot include itself");
-    }
-
-    public void test4() { 
-        expectBuildException("test4", "zip cannot include itself");
-    }
-    
-    public void tearDown() {
-        executeTarget("cleanup");
-    }
-    
-    public void test5() { 
-        executeTarget("test5");
-    }
-
-
-    public void test6() { 
-        executeTarget("test6");
-    }
-
-
-    public void test7() { 
-        executeTarget("test7");
-    }
-}
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 d98beb3..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() {
-        executeTarget("test4");
-    }
-
-    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/taskdefs/optional/AbstractXSLTLiaisonTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/AbstractXSLTLiaisonTest.java
deleted file mode 100644
index 394e756..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/AbstractXSLTLiaisonTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package org.apache.tools.ant.taskdefs.optional;
-
-/*
- * 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", "Jakarta-Regexp", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made 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 junit.framework.TestCase;
-import org.apache.tools.ant.taskdefs.XSLTLiaison;
-import org.w3c.dom.Document;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import java.io.File;
-import java.net.URL;
-
-/**
- * Abtract testcase for XSLTLiaison.
- * Override createLiaison for each XSLTLiaison.
- *
- * <a href="sbailliez@apache.org">Stephane Bailliez</a>
- */
-public abstract class AbstractXSLTLiaisonTest extends TestCase {
-
-    protected XSLTLiaison liaison;
-
-    protected  AbstractXSLTLiaisonTest(String name){
-        super(name);
-    }
-
-    protected void setUp() throws Exception {
-        liaison = createLiaison();
-    }
-
-    // to override
-    protected abstract XSLTLiaison createLiaison() throws Exception ;
-
-    protected File getFile(String name){
-        URL url = getClass().getResource(name);
-        return new File(url.getFile());
-    }
-
-    /** keep it simple stupid */
-    public void testTransform() throws Exception {
-        File xsl = getFile("/taskdefs/optional/xsltliaison-in.xsl");
-        liaison.setStylesheet(xsl);
-        liaison.addParam("param", "value");
-        File in = getFile("/taskdefs/optional/xsltliaison-in.xml");
-        File out = new File("xsltliaison.tmp");
-        try {
-            liaison.transform(in, out);
-        } finally {
-            out.delete();
-        }
-    }
-
-    public void testEncoding() throws Exception {
-        File xsl = getFile("/taskdefs/optional/xsltliaison-encoding-in.xsl");
-        liaison.setStylesheet(xsl);
-        File in = getFile("/taskdefs/optional/xsltliaison-encoding-in.xml");
-        File out = new File("xsltliaison-encoding.tmp");
-        try {
-            liaison.transform(in, out);
-            Document doc = parseXML(out);
-            assertEquals("root",doc.getDocumentElement().getNodeName());
-            assertEquals("message",doc.getDocumentElement().getFirstChild().getNodeName());
-            assertEquals("\u00E9\u00E0\u00E8\u00EF\u00F9",doc.getDocumentElement().getFirstChild().getFirstChild().getNodeValue());
-        } finally {
-            out.delete();
-        }
-    }
-
-    public Document parseXML(File file) throws Exception {
-        DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
-        DocumentBuilder dbuilder = dbfactory.newDocumentBuilder();
-        return dbuilder.parse(file);
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/PvcsTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/PvcsTest.java
deleted file mode 100644
index 68e32b7..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/PvcsTest.java
+++ /dev/null
@@ -1,96 +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 Thomas Christensen <tchristensen@nordija.com>
- */
-public class PvcsTest extends TaskdefsTest { 
-    
-    public PvcsTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/optional/pvcs.xml");
-    }
-    
-    public void test1() { 
-        expectBuildException("test1", "Required argument repository not specified");
-    }
-
-    public void test2() {
-        executeTarget("test2");
-    }
-
-    public void test3() { 
-        executeTarget("test3");
-    }
-
-    public void test4() { 
-        executeTarget("test4");
-    }
-
-    public void test5() { 
-        executeTarget("test5");
-    }
-
-    public void test6() { 
-        expectBuildException("test6", "Failed executing: /never/heard/of/a/directory/structure/like/this/pcli lvf -z -aw -pr//ct4serv2/pvcs/monitor /. Exception: /never/heard/of/a/directory/structure/like/this/pcli: not found");
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/TraXLiaisonTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/TraXLiaisonTest.java
deleted file mode 100644
index 0e63e64..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/TraXLiaisonTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.apache.tools.ant.taskdefs.optional;
-
-import org.apache.tools.ant.taskdefs.XSLTLiaison;
-
-import java.io.File;
-
-/* 
- * 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", "Jakarta-Regexp", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-/**
- * TraX XSLTLiaison testcase
- * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
- */
-public class TraXLiaisonTest extends AbstractXSLTLiaisonTest {
-    public TraXLiaisonTest(String name){
-        super(name);
-    }
-
-    public XSLTLiaison createLiaison() throws Exception {
-        return new TraXLiaison();
-    }
-
-    public void testXalan2Redirect() throws Exception {
-        File xsl = getFile("/taskdefs/optional/xalan-redirect-in.xsl");
-        liaison.setStylesheet(xsl);
-        File out = new File("xalan2-redirect-out-dummy.tmp");
-        File in = getFile("/taskdefs/optional/xsltliaison-in.xsl");
-        try {
-            liaison.addParam("xalan-version", "2");
-            liaison.transform(in, out);
-        } finally {
-            out.delete();
-        }
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/XalanLiaisonTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/XalanLiaisonTest.java
deleted file mode 100644
index 4aa4c13..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/XalanLiaisonTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.apache.tools.ant.taskdefs.optional;
-
-/*
- * 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", "Jakarta-Regexp", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made 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 org.apache.tools.ant.taskdefs.XSLTLiaison;
-
-import java.io.File;
-
-/**
- * Xalan Liaison testcase
- * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
- */
-public class XalanLiaisonTest extends AbstractXSLTLiaisonTest {
-    public XalanLiaisonTest(String name){
-        super(name);
-    }
-
-    protected XSLTLiaison createLiaison() throws Exception {
-        return new XalanLiaison();
-    }
-
-    public void testXalan1Redirect() throws Exception {
-        File xsl = getFile("/taskdefs/optional/xalan-redirect-in.xsl");
-        liaison.setStylesheet(xsl);
-        File out = new File("xalan1-redirect-out-dummy.tmp");
-        File in = getFile("/taskdefs/optional/xsltliaison-in.xsl");
-        try {
-            liaison.addParam("xalan-version", "1");
-            liaison.transform(in, out);
-        } finally {
-            out.delete();
-        }
-    }
-}
-
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/XslpLiaisonTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/XslpLiaisonTest.java
deleted file mode 100644
index fb6a771..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/XslpLiaisonTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.apache.tools.ant.taskdefs.optional;
-
-import org.apache.tools.ant.taskdefs.XSLTLiaison;
-
-/* 
- * 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", "Jakarta-Regexp", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-/**
- * XSLP Liaison testcase
- * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
- */
-public class XslpLiaisonTest extends AbstractXSLTLiaisonTest {
-    public XslpLiaisonTest(String name){
-        super(name);
-    }
-
-    protected XSLTLiaison createLiaison() throws Exception {
-        return new XslpLiaison();
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnerTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnerTest.java
deleted file mode 100644
index add38da..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnerTest.java
+++ /dev/null
@@ -1,190 +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 junit.framework.*;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Small testcase for the runner, tests are very very very basics.
- * They must be enhanced with time.
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class JUnitTestRunnerTest extends TestCase {
-
-    // mandatory constructor
-    public JUnitTestRunnerTest(String name){
-        super(name);
-    }
-
-    // check that having no suite generates no errors
-    public void testNoSuite(){
-        TestRunner runner = createRunner(NoSuiteTestCase.class);
-        runner.run();
-        assertEquals(runner.getFormatter().getError(), JUnitTestRunner.SUCCESS, runner.getRetCode());
-    }
-
-    // check that a suite generates no errors
-    public void testSuite(){
-        TestRunner runner = createRunner(SuiteTestCase.class);
-        runner.run();
-        assertEquals(runner.getFormatter().getError(), JUnitTestRunner.SUCCESS, runner.getRetCode());
-    }
-
-    // check that an invalid suite generates an error.
-    public void testInvalidSuite(){
-        TestRunner runner = createRunner(InvalidSuiteTestCase.class);
-        runner.run();
-        String error = runner.getFormatter().getError();
-        assertEquals(error, JUnitTestRunner.ERRORS, runner.getRetCode());
-        assert(error, error.indexOf("thrown on purpose") != -1);
-    }
-
-    // check that something which is not a testcase generates no errors
-    // at first even though this is incorrect.
-    public void testNoTestCase(){
-        TestRunner runner = createRunner(NoTestCase.class);
-        runner.run();
-        assertEquals(runner.getFormatter().getError(), JUnitTestRunner.FAILURES, runner.getRetCode());
-    }
-
-    // check that an exception in the constructor is noticed
-    public void testInvalidTestCase(){
-        TestRunner runner = createRunner(InvalidTestCase.class);
-        runner.run();
-        String error = runner.getFormatter().getError();
-        assertEquals(error, JUnitTestRunner.FAILURES, runner.getRetCode());
-        //@fixme as of now does not report the original stacktrace.
-        //assert(error, error.indexOf("thrown on purpose") != -1);
-    }
-    
-    protected TestRunner createRunner(Class clazz){
-        return new TestRunner(new JUnitTest(clazz.getName()), true, true);
-    }
-
-    // the test runner that wrap the dummy formatter that interests us
-    private final static class TestRunner extends JUnitTestRunner {
-        private ResultFormatter formatter = new ResultFormatter();
-        TestRunner(JUnitTest test, boolean x, boolean y){
-            super(test, x, y,  TestRunner.class.getClassLoader());
-            // use the classloader that loaded this class otherwise
-            // it will not be able to run inner classes if this test
-            // is ran in non-forked mode.
-            addFormatter(formatter);
-        }
-        ResultFormatter getFormatter(){
-            return formatter;
-        }
-    }
-
-    // dummy formatter just to catch the error
-    private final static class ResultFormatter implements JUnitResultFormatter {
-        private Throwable error;
-        public void setSystemOutput(String output){}
-        public void setSystemError(String output){}
-        public void startTestSuite(JUnitTest suite) throws BuildException{}
-        public void endTestSuite(JUnitTest suite) throws BuildException{}
-        public void setOutput(java.io.OutputStream out){}
-        public void startTest(Test t) {}
-        public void endTest(Test test) {}
-        public void addFailure(Test test, Throwable t) { }
-        public void addFailure(Test test, AssertionFailedError t) { }
-        public void addError(Test test, Throwable t) {
-            error = t;
-        }
-        String getError(){
-            if (error == null){
-                return "";
-            }
-            StringWriter sw = new StringWriter();
-            error.printStackTrace(new PrintWriter(sw));
-            return sw.toString();
-        }
-    }
-
-    public static class NoTestCase {
-    }
-
-    public static class InvalidTestCase extends TestCase {
-        public InvalidTestCase(String name){
-            super(name);
-            throw new NullPointerException("thrown on purpose");
-        }
-    }
-    
-    public static class NoSuiteTestCase extends TestCase {
-        public NoSuiteTestCase(String name){ super(name); }
-        public void testA(){};
-    }
-
-    public static class SuiteTestCase extends NoSuiteTestCase {
-        public SuiteTestCase(String name){ super(name); }
-        public static Test suite(){
-            return new TestSuite(SuiteTestCase.class);
-        }
-    }
-
-    public static class InvalidSuiteTestCase extends NoSuiteTestCase {
-        public InvalidSuiteTestCase(String name){ super(name); }
-        public static Test suite(){
-            throw new NullPointerException("thrown on purpose");
-        }
-    }
-    public static void main(String[] args){
-        junit.textui.TestRunner.run(JUnitTestRunnerTest.class);
-    }
-}
-
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 76a6007..0000000
--- a/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java
+++ /dev/null
@@ -1,123 +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);
-        /*
-         * After changing CommandlineJava to search for the java
-         * executable, I don't know, how to tests the value returned
-         * here without using the same logic as applied in the class
-         * itself.
-         *
-         * assert("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]);
-        try {
-            CommandlineJava c2 = (CommandlineJava) c.clone();
-        } catch (NullPointerException ex) {
-            fail("cloning should work without classpath specified");
-        }
-
-        c.createClasspath(project).setLocation(project.resolveFile("lib/optional/junit.jar"));
-        c.createClasspath(project).setLocation(project.resolveFile("bootstrap/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 3412774..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 <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</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 ed54f10..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 <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</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/FileListTest.java b/src/testcases/org/apache/tools/ant/types/FileListTest.java
deleted file mode 100644
index 88aa7b8..0000000
--- a/src/testcases/org/apache/tools/ant/types/FileListTest.java
+++ /dev/null
@@ -1,184 +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.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.FileList.
- *
- * <p>This doesn't actually test much, mainly reference handling.
- * Adapted from FileSetTest.</p>
- *
- * @author <a href="mailto:cstrong@arielpartners.com">Craeg Strong</a>
- */
-
-public class FileListTest extends TestCase {
-
-    private Project project;
-
-    public FileListTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        project = new Project();
-        project.setBasedir(".");
-    }
-
-    public void testEmptyElementIfIsReference() {
-        FileList f = new FileList();
-        f.setDir(project.resolveFile("."));
-        try {
-            f.setRefid(new Reference("dummyref"));
-            fail("Can add reference to FileList with directory attribute set.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        f = new FileList();
-        f.setFiles("foo.xml,c/d/bar.xml");
-        try {
-            f.setRefid(new Reference("dummyref"));
-            fail("Can add reference to FileList with file attribute set.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        f = new FileList();
-        f.setRefid(new Reference("dummyref"));
-        try {
-            f.setFiles("a/b/foo.java");
-            fail("Can set files in FileList 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 FileList that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-    }
-
-    public void testCircularReferenceCheck() {
-        FileList f = new FileList();
-        project.addReference("dummy", f);
-        f.setRefid(new Reference("dummy"));
-        try {
-            f.getDir(project);
-            fail("Can make FileList a Reference to itself.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-        try {
-            f.getFiles(project);
-            fail("Can make FileList a Reference to itself.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-
-        // dummy1 --> dummy2 --> dummy3 --> dummy1
-        FileList f1 = new FileList();
-        project.addReference("dummy1", f1);
-        f1.setRefid(new Reference("dummy2"));
-        FileList f2 = new FileList();
-        project.addReference("dummy2", f2);
-        f2.setRefid(new Reference("dummy3"));
-        FileList f3 = new FileList();
-        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.getFiles(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 FileList();
-        project.addReference("dummy1", f1);
-        f1.setRefid(new Reference("dummy2"));
-        f2 = new FileList();
-        project.addReference("dummy2", f2);
-        f2.setRefid(new Reference("dummy3"));
-        f3 = new FileList();
-        project.addReference("dummy3", f3);
-        f3.setDir(project.resolveFile("."));
-        File dir = f1.getDir(project);
-        assertEquals("Dir is basedir", dir, project.getBaseDir());
-    }
-}
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 b1edbe4..0000000
--- a/src/testcases/org/apache/tools/ant/types/FileSetTest.java
+++ /dev/null
@@ -1,249 +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@epost.de">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.createIncludesFile();
-            fail("Can add nested includesfile in FileSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-        try {
-            f.createExcludesFile();
-            fail("Can add nested excludesfile 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/FilterSetTest.java b/src/testcases/org/apache/tools/ant/types/FilterSetTest.java
deleted file mode 100644
index 41bc12d..0000000
--- a/src/testcases/org/apache/tools/ant/types/FilterSetTest.java
+++ /dev/null
@@ -1,144 +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.types;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.TaskdefsTest;
-
-import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
-
-import java.io.*;
-
-/**
- * FilterSet testing
- *
- * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
- */
-public class FilterSetTest extends TaskdefsTest {
-
-    static private final int BUF_SIZE = 32768;
-    
-    private Project project;
-
-    public FilterSetTest(String name) {
-        super(name);
-    }
-
-    public void setUp() { 
-        configureProject("src/etc/testcases/types/filterset.xml");
-    }
-
-    public void test1() { 
-        executeTarget("test1");
-        assertTrue("Filterset 1 failed", compareFiles("src/etc/testcases/types/gold/filterset1.txt",
-                                                      "src/etc/testcases/types/dest1.txt"));
-    }
-
-    public void test2() { 
-        executeTarget("test2");
-        assertTrue("Filterset 2 failed", compareFiles("src/etc/testcases/types/gold/filterset2.txt",
-                                                      "src/etc/testcases/types/dest2.txt"));
-    }
-
-    public void test3() { 
-        executeTarget("test3");
-        assertTrue("Filterset 3 failed", compareFiles("src/etc/testcases/types/gold/filterset3.txt",
-                                                      "src/etc/testcases/types/dest3.txt"));
-    }
-
-    private boolean compareFiles(String name1, String name2) {
-        File file1 = new File(name1);
-        File file2 = new File(name2);
-        
-        try {
-            if (!file1.exists() || !file2.exists()) {
-                System.out.println("One or both files do not exist:" + name1 + ", " + name2);
-                return false;
-            }
-            
-            if (file1.length() != file2.length()) {
-                System.out.println("File size mismatch:" + name1 + "(" + file1.length() + "), " + 
-                                   name2  + "(" + file2.length() + ")");
-                return false;
-            }
-            
-            // byte - byte compare
-            byte[] buffer1 = new byte[BUF_SIZE];
-            byte[] buffer2 = new byte[BUF_SIZE];
-            
-            FileInputStream fis1 = new FileInputStream(file1);
-            FileInputStream fis2 = new FileInputStream(file2);
-            int index = 0;
-            int read = 0;
-            while ((read = fis1.read(buffer1)) != -1) {
-                fis2.read(buffer2);
-                for (int i = 0; i < read; ++i, ++index) {
-                    if (buffer1[i] != buffer2[i]) {
-                        System.out.println("Bytes mismatch:" + name1 + ", " + name2 + 
-                                           " at byte " + index);
-                        return false;
-                    }
-                }
-            }
-            return true;
-        }
-        catch (IOException e) {
-            System.out.println("IOException comparing files: " + name1 + ", " + name2);
-            return false;
-        }
-    }
-}
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 b4a599e..0000000
--- a/src/testcases/org/apache/tools/ant/types/MapperTest.java
+++ /dev/null
@@ -1,198 +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 org.apache.tools.ant.taskdefs.TaskdefsTest;
-
-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]);
-    }
-
-    public void testCopyTaskWithTwoFilesets() {
-        TaskdefForCopyTest t = new TaskdefForCopyTest("test1");
-        t.setUp();
-        t.test1();
-    }
-
-    private class TaskdefForCopyTest extends TaskdefsTest {
-        TaskdefForCopyTest(String name) {
-            super(name);
-        }
-
-        public void setUp() { 
-            configureProject("src/etc/testcases/types/mapper.xml");
-        }
-
-        public void test1() { 
-            executeTarget("test1");
-        }
-    }
-}
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 25d944e..0000000
--- a/src/testcases/org/apache/tools/ant/types/PatternSetTest.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.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());
-        }
-        try {
-            p.createIncludesFile();
-            fail("Can add nested includesfile in PatternSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-        try {
-            p.createExcludesFile();
-            fail("Can add nested excludesfile 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/FileUtilsTest.java b/src/testcases/org/apache/tools/ant/util/FileUtilsTest.java
deleted file mode 100644
index a33699f..0000000
--- a/src/testcases/org/apache/tools/ant/util/FileUtilsTest.java
+++ /dev/null
@@ -1,268 +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.util;
-
-import java.io.*;
-
-import junit.framework.TestCase;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * Tests for org.apache.tools.ant.util.FileUtils.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class FileUtilsTest extends TestCase {
-
-    private FileUtils fu;
-    private File removeThis;
-    private String root;
-
-    public FileUtilsTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        fu = FileUtils.newFileUtils();
-        // Windows adds the drive letter in uppercase, unless you run Cygnus
-        root = new File(File.separator).getAbsolutePath().toUpperCase();
-    }
-
-    public void tearDown() {
-        if (removeThis != null && removeThis.exists()) {
-            removeThis.delete();
-        }
-    }
-
-    public void testSetLastModified() throws IOException {
-        removeThis = new File("dummy");
-        FileOutputStream fos = new FileOutputStream(removeThis);
-        fos.write(new byte[0]);
-        fos.close();
-        long modTime = removeThis.lastModified();
-        assertTrue(modTime != 0);
-
-        /*
-         * Sleep for some time to make sure a touched file would get a
-         * more recent timestamp according to the file system's
-         * granularity (should be > 2s to account for Windows FAT).
-         */
-        try {
-            Thread.currentThread().sleep(5000);
-        } catch (InterruptedException ie) {
-            fail(ie.getMessage());
-        }
-
-        fu.setFileLastModified(removeThis, -1);
-        long secondModTime = removeThis.lastModified();
-        try {
-            Class.forName("java.lang.ThreadLocal");
-            assertTrue(secondModTime > modTime);
-        } catch (ClassNotFoundException e) {
-            // JDK 1.1
-            assertEquals(modTime, secondModTime);
-        }
-        
-
-        fu.setFileLastModified(removeThis, 123456);
-        long thirdModTime = removeThis.lastModified();
-        try {
-            Class.forName("java.lang.ThreadLocal");
-            /*
-             * I would love to compare this with 123456, but depending on
-             * the filesystems granularity it can take an arbitrary value.
-             *
-             * Just assert the time has changed.
-             */
-            assertTrue(thirdModTime != secondModTime);
-        } catch (ClassNotFoundException e) {
-            // JDK 1.1
-            assertEquals(modTime, thirdModTime);
-        }
-    }
-
-    public void testResolveFile() {
-        /*
-         * Start with simple absolute file names.
-         */
-        assertEquals(File.separator, 
-                     fu.resolveFile(null, "/").getPath());
-        assertEquals(File.separator, 
-                     fu.resolveFile(null, "\\").getPath());
-
-        /*
-         * throw in drive letters
-         */
-        String driveSpec = "C:";
-        assertEquals(driveSpec + "\\", 
-                     fu.resolveFile(null, driveSpec + "/").getPath());
-        assertEquals(driveSpec + "\\", 
-                     fu.resolveFile(null, driveSpec + "\\").getPath());
-        String driveSpecLower = "c:";
-        assertEquals(driveSpec + "\\", 
-                     fu.resolveFile(null, driveSpecLower + "/").getPath());
-        assertEquals(driveSpec + "\\", 
-                     fu.resolveFile(null, driveSpecLower + "\\").getPath());
-        /*
-         * promised to eliminate consecutive slashes after drive letter.
-         */
-        assertEquals(driveSpec + "\\", 
-                     fu.resolveFile(null, driveSpec + "/////").getPath());
-        assertEquals(driveSpec + "\\", 
-                     fu.resolveFile(null, driveSpec + "\\\\\\\\\\\\").getPath());
-
-        /*
-         * Now test some relative file name magic.
-         */
-        assertEquals(localize("/1/2/3/4"),
-                     fu.resolveFile(new File(localize("/1/2/3")), "4").getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.resolveFile(new File(localize("/1/2/3")), "./4").getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.resolveFile(new File(localize("/1/2/3")), ".\\4").getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.resolveFile(new File(localize("/1/2/3")), "./.\\4").getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.resolveFile(new File(localize("/1/2/3")), "../3/4").getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.resolveFile(new File(localize("/1/2/3")), "..\\3\\4").getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.resolveFile(new File(localize("/1/2/3")), "../../5/.././2/./3/6/../4").getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.resolveFile(new File(localize("/1/2/3")), "..\\../5/..\\./2/./3/6\\../4").getPath());
-
-        try {
-            fu.resolveFile(new File(localize("/1")), "../../b");
-            fail("successfully crawled beyond the filesystem root");
-        } catch (BuildException e) {
-            // Expected Exception caught
-        }
-
-    }
-
-    public void testNormalize() {
-        /*
-         * Start with simple absolute file names.
-         */
-        assertEquals(File.separator, 
-                     fu.normalize("/").getPath());
-        assertEquals(File.separator, 
-                     fu.normalize("\\").getPath());
-
-        /*
-         * throw in drive letters
-         */
-        String driveSpec = "C:";
-        assertEquals(driveSpec + "\\", 
-                     fu.normalize(driveSpec + "/").getPath());
-        assertEquals(driveSpec + "\\", 
-                     fu.normalize(driveSpec + "\\").getPath());
-        String driveSpecLower = "c:";
-        assertEquals(driveSpec + "\\", 
-                     fu.normalize(driveSpecLower + "/").getPath());
-        assertEquals(driveSpec + "\\", 
-                     fu.normalize(driveSpecLower + "\\").getPath());
-        /*
-         * promised to eliminate consecutive slashes after drive letter.
-         */
-        assertEquals(driveSpec + "\\", 
-                     fu.normalize(driveSpec + "/////").getPath());
-        assertEquals(driveSpec + "\\", 
-                     fu.normalize(driveSpec + "\\\\\\\\\\\\").getPath());
-
-        /*
-         * Now test some relative file name magic.
-         */
-        assertEquals(localize("/1/2/3/4"),
-                     fu.normalize(localize("/1/2/3/4")).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.normalize(localize("/1/2/3/./4")).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.normalize(localize("/1/2/3/.\\4")).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.normalize(localize("/1/2/3/./.\\4")).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.normalize(localize("/1/2/3/../3/4")).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.normalize(localize("/1/2/3/..\\3\\4")).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.normalize(localize("/1/2/3/../../5/.././2/./3/6/../4")).getPath());
-        assertEquals(localize("/1/2/3/4"),
-                     fu.normalize(localize("/1/2/3/..\\../5/..\\./2/./3/6\\../4")).getPath());
-
-        try {
-            fu.normalize("foo");
-            fail("foo is not an absolute path");
-        } catch (BuildException e) {
-            // Expected exception caught
-        }
-        
-        try {
-            fu.normalize(localize("/1/../../b"));
-            fail("successfully crawled beyond the filesystem root");
-        } catch (BuildException e) {
-            // Expected exception caught
-        }
-    }
-
-    /**
-     * adapt file separators to local conventions
-     */
-    private String localize(String path) {
-        path = root + path.substring(1);
-        return path.replace('\\', File.separatorChar).replace('/', File.separatorChar);
-    }
-}
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 1423539..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 RegexpMatcher 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/Jdk14RegexpMatcherTest.java b/src/testcases/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcherTest.java
deleted file mode 100644
index d017f40..0000000
--- a/src/testcases/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcherTest.java
+++ /dev/null
@@ -1,72 +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.util.regexp;
-
-/**
- * Tests for the JDK 1.4 implementation of the RegexpMatcher interface.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class Jdk14RegexpMatcherTest extends RegexpMatcherTest {
-
-    public RegexpMatcher getImplementation() {
-        return new Jdk14RegexpMatcher();
-    }
-
-    public Jdk14RegexpMatcherTest(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/src/testcases/org/apache/tools/zip/AsiExtraFieldTest.java b/src/testcases/org/apache/tools/zip/AsiExtraFieldTest.java
deleted file mode 100644
index 5c09c7c..0000000
--- a/src/testcases/org/apache/tools/zip/AsiExtraFieldTest.java
+++ /dev/null
@@ -1,178 +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.zip;
-
-import junit.framework.TestCase;
-
-/**
- * JUnit 3 testcases for org.apache.tools.zip.AsiExtraField.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class AsiExtraFieldTest extends TestCase implements UnixStat {
-    public AsiExtraFieldTest(String name) {
-        super(name);
-    }
-
-    /**
-     * Test file mode magic.
-     */
-    public void testModes() {
-        AsiExtraField a = new AsiExtraField();
-        a.setMode(0123);
-        assertEquals("plain file", 0100123, a.getMode());
-        a.setDirectory(true);
-        assertEquals("directory", 040123, a.getMode());
-        a.setLinkedFile("test");
-        assertEquals("symbolic link", 0120123, a.getMode());
-    }
-
-    /**
-     * Test content.
-     */
-    public void testContent() {
-        AsiExtraField a = new AsiExtraField();
-        a.setMode(0123);
-        a.setUserId(5);
-        a.setGroupId(6);
-        byte[] b = a.getLocalFileDataData();
-        
-        // CRC manually calculated, sorry
-        byte[] expect = {(byte)0xC6, 0x02, 0x78, (byte)0xB6, // CRC
-                         0123, (byte)0x80,                   // mode
-                         0, 0, 0, 0,                         // link length
-                         5, 0, 6, 0};                        // uid, gid
-        assertEquals("no link", expect.length, b.length);
-        for (int i=0; i<expect.length; i++) {
-            assertEquals("no link, byte "+i, expect[i], b[i]);
-        }
-
-        a.setLinkedFile("test");
-        expect = new byte[] {0x75, (byte)0x8E, 0x41, (byte)0xFD, // CRC
-                             0123, (byte)0xA0,                   // mode
-                             4, 0, 0, 0,                         // link length
-                             5, 0, 6, 0,                         // uid, gid
-                             (byte)'t', (byte)'e', (byte)'s', (byte)'t'};
-        b = a.getLocalFileDataData();
-        assertEquals("no link", expect.length, b.length);
-        for (int i=0; i<expect.length; i++) {
-            assertEquals("no link, byte "+i, expect[i], b[i]);
-        }
-
-    }
-
-    /**
-     * Test reparse
-     */
-    public void testReparse() throws Exception {
-        // CRC manually calculated, sorry
-        byte[] data = {(byte)0xC6, 0x02, 0x78, (byte)0xB6, // CRC
-                       0123, (byte)0x80,                   // mode
-                       0, 0, 0, 0,                         // link length
-                       5, 0, 6, 0};                        // uid, gid
-        AsiExtraField a = new AsiExtraField();
-        a.parseFromLocalFileData(data, 0, data.length);
-        assertEquals("length plain file", data.length, 
-                     a.getLocalFileDataLength().getValue());
-        assert("plain file, no link", !a.isLink());
-        assert("plain file, no dir", !a.isDirectory());
-        assertEquals("mode plain file", FILE_FLAG | 0123, a.getMode());
-        assertEquals("uid plain file", 5, a.getUserId());
-        assertEquals("gid plain file", 6, a.getGroupId());
-
-        data = new byte[] {0x75, (byte)0x8E, 0x41, (byte)0xFD, // CRC
-                           0123, (byte)0xA0,                   // mode
-                           4, 0, 0, 0,                         // link length
-                           5, 0, 6, 0,                         // uid, gid
-                           (byte)'t', (byte)'e', (byte)'s', (byte)'t'};
-        a = new AsiExtraField();
-        a.parseFromLocalFileData(data, 0, data.length);
-        assertEquals("length link", data.length, 
-                     a.getLocalFileDataLength().getValue());
-        assert("link, is link", a.isLink());
-        assert("link, no dir", !a.isDirectory());
-        assertEquals("mode link", LINK_FLAG | 0123, a.getMode());
-        assertEquals("uid link", 5, a.getUserId());
-        assertEquals("gid link", 6, a.getGroupId());
-        assertEquals("test", a.getLinkedFile());
-
-        data = new byte[] {(byte)0x8E, 0x01, (byte)0xBF, (byte)0x0E, // CRC
-                           0123, (byte)0x40,                         // mode
-                           0, 0, 0, 0,                               // link
-                           5, 0, 6, 0};                          // uid, gid
-        a = new AsiExtraField();
-        a.parseFromLocalFileData(data, 0, data.length);
-        assertEquals("length dir", data.length, 
-                     a.getLocalFileDataLength().getValue());
-        assert("dir, no link", !a.isLink());
-        assert("dir, is dir", a.isDirectory());
-        assertEquals("mode dir", DIR_FLAG | 0123, a.getMode());
-        assertEquals("uid dir", 5, a.getUserId());
-        assertEquals("gid dir", 6, a.getGroupId());
-
-        data = new byte[] {0, 0, 0, 0,                           // bad CRC
-                           0123, (byte)0x40,                     // mode
-                           0, 0, 0, 0,                           // link
-                           5, 0, 6, 0};                          // uid, gid
-        a = new AsiExtraField();
-        try {
-            a.parseFromLocalFileData(data, 0, data.length);
-            fail("should raise bad CRC exception");
-        } catch (Exception e) {
-            assertEquals("bad CRC checksum 0 instead of ebf018e", 
-                         e.getMessage());
-        }
-    }
-}
diff --git a/src/testcases/org/apache/tools/zip/ExtraFieldUtilsTest.java b/src/testcases/org/apache/tools/zip/ExtraFieldUtilsTest.java
deleted file mode 100644
index 2419a92..0000000
--- a/src/testcases/org/apache/tools/zip/ExtraFieldUtilsTest.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.zip;
-
-import junit.framework.TestCase;
-
-/**
- * JUnit 3 testcases for org.apache.tools.zip.ExtraFieldUtils.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class ExtraFieldUtilsTest extends TestCase implements UnixStat {
-    public ExtraFieldUtilsTest(String name) {
-        super(name);
-    }
-
-    private AsiExtraField a;
-    private UnrecognizedExtraField dummy;
-    private byte[] data;
-    private byte[] aLocal;
-
-    public void setUp() {
-        a = new AsiExtraField();
-        a.setMode(0755);
-        a.setDirectory(true);
-        dummy = new UnrecognizedExtraField();
-        dummy.setHeaderId(new ZipShort(1));
-        dummy.setLocalFileDataData(new byte[0]);
-        dummy.setCentralDirectoryData(new byte[] {0});
-
-        aLocal = a.getLocalFileDataData();
-        byte[] dummyLocal = dummy.getLocalFileDataData();
-        data = new byte[4 + aLocal.length + 4 + dummyLocal.length];
-        System.arraycopy(a.getHeaderId().getBytes(), 0, data, 0, 2);
-        System.arraycopy(a.getLocalFileDataLength().getBytes(), 0, data, 2, 2);
-        System.arraycopy(aLocal, 0, data, 4, aLocal.length);
-        System.arraycopy(dummy.getHeaderId().getBytes(), 0, data, 
-                         4+aLocal.length, 2);
-        System.arraycopy(dummy.getLocalFileDataLength().getBytes(), 0, data, 
-                         4+aLocal.length+2, 2);
-        System.arraycopy(dummyLocal, 0, data, 
-                         4+aLocal.length+4, dummyLocal.length);
-
-    }
-
-    /**
-     * test parser.
-     */
-    public void testParse() throws Exception {
-        ZipExtraField[] ze = ExtraFieldUtils.parse(data);
-        assertEquals("number of fields", 2, ze.length);
-        assert("type field 1", ze[0] instanceof AsiExtraField);
-        assertEquals("mode field 1", 040755,
-                     ((AsiExtraField) ze[0]).getMode());
-        assert("type field 2", ze[1] instanceof UnrecognizedExtraField);
-        assertEquals("data length field 2", 0, 
-                     ze[1].getLocalFileDataLength().getValue());
-
-        byte[] data2 = new byte[data.length-1];
-        System.arraycopy(data, 0, data2, 0, data2.length);
-        try {
-            ExtraFieldUtils.parse(data2);
-            fail("data should be invalid");
-        } catch (Exception e) {
-            assertEquals("message", 
-                         "data starting at "+(4+aLocal.length)+" is in unknown format",
-                         e.getMessage());
-        }
-    }
-
-    /**
-     * Test merge methods
-     */
-    public void testMerge() {
-        byte[] local = 
-            ExtraFieldUtils.mergeLocalFileDataData(new ZipExtraField[] {a, dummy});
-        assertEquals("local length", data.length, local.length);
-        for (int i=0; i<local.length; i++) {
-            assertEquals("local byte "+i, data[i], local[i]);
-        }
-        
-        byte[] dummyCentral = dummy.getCentralDirectoryData();
-        byte[] data2 = new byte[4 + aLocal.length + 4 + dummyCentral.length];
-        System.arraycopy(data, 0, data2, 0, 4 + aLocal.length + 2);
-        System.arraycopy(dummy.getCentralDirectoryLength().getBytes(), 0, 
-                         data2, 4+aLocal.length+2, 2);
-        System.arraycopy(dummyCentral, 0, data2, 
-                         4+aLocal.length+4, dummyCentral.length);
-
-
-        byte[] central = 
-            ExtraFieldUtils.mergeCentralDirectoryData(new ZipExtraField[] {a, dummy});
-        assertEquals("central length", data2.length, central.length);
-        for (int i=0; i<central.length; i++) {
-            assertEquals("central byte "+i, data2[i], central[i]);
-        }
-        
-    }
-}
diff --git a/src/testcases/org/apache/tools/zip/ZipEntryTest.java b/src/testcases/org/apache/tools/zip/ZipEntryTest.java
deleted file mode 100644
index 77e304c..0000000
--- a/src/testcases/org/apache/tools/zip/ZipEntryTest.java
+++ /dev/null
@@ -1,124 +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.zip;
-
-import junit.framework.TestCase;
-
-/**
- * JUnit 3 testcases for org.apache.tools.zip.ZipEntry.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class ZipEntryTest extends TestCase {
-
-    public ZipEntryTest(String name) {
-        super(name);
-    }
-
-    /**
-     * test handling of extra fields
-     *
-     * @since 1.1
-     */
-    public void testExtraFields() {
-        AsiExtraField a = new AsiExtraField();
-        a.setDirectory(true);
-        a.setMode(0755);
-        UnrecognizedExtraField u = new UnrecognizedExtraField();
-        u.setHeaderId(new ZipShort(1));
-        u.setLocalFileDataData(new byte[0]);
-
-        ZipEntry ze = new ZipEntry("test/");
-        ze.setExtraFields(new ZipExtraField[] {a, u});
-        byte[] data1 = ze.getExtra();
-        ZipExtraField[] result = ze.getExtraFields();
-        assertEquals("first pass", 2, result.length);
-        assertSame(a, result[0]);
-        assertSame(u, result[1]);
-
-        UnrecognizedExtraField u2 = new UnrecognizedExtraField();
-        u2.setHeaderId(new ZipShort(1));
-        u2.setLocalFileDataData(new byte[] {1});
-
-        ze.addExtraField(u2);
-        byte[] data2 = ze.getExtra();
-        result = ze.getExtraFields();
-        assertEquals("second pass", 2, result.length);
-        assertSame(a, result[0]);
-        assertSame(u2, result[1]);
-        assertEquals("length second pass", data1.length+1, data2.length);
-
-        UnrecognizedExtraField u3 = new UnrecognizedExtraField();
-        u3.setHeaderId(new ZipShort(2));
-        u3.setLocalFileDataData(new byte[] {1});
-        ze.addExtraField(u3);
-        result = ze.getExtraFields();
-        assertEquals("third pass", 3, result.length);
-
-        ze.removeExtraField(new ZipShort(1));
-        byte[] data3 = ze.getExtra();
-        result = ze.getExtraFields();
-        assertEquals("fourth pass", 2, result.length);
-        assertSame(a, result[0]);
-        assertSame(u3, result[1]);
-        assertEquals("length fourth pass", data2.length, data3.length);
-
-        try {
-            ze.removeExtraField(new ZipShort(1));
-            fail("should be no such element");
-        } catch (java.util.NoSuchElementException nse) {
-        }
-    }
-}
diff --git a/src/testcases/org/apache/tools/zip/ZipLongTest.java b/src/testcases/org/apache/tools/zip/ZipLongTest.java
deleted file mode 100644
index 0c72db8..0000000
--- a/src/testcases/org/apache/tools/zip/ZipLongTest.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.zip;
-
-import junit.framework.TestCase;
-
-/**
- * JUnit 3 testcases for org.apache.tools.zip.ZipLong.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class ZipLongTest extends TestCase {
-
-    public ZipLongTest(String name) {
-        super(name);
-    }
-
-    /**
-     * Test conversion to bytes.
-     */
-    public void testToBytes() {
-        ZipLong zl = new ZipLong(0x12345678);
-        byte[] result = zl.getBytes();
-        assertEquals("length getBytes", 4, result.length);
-        assertEquals("first byte getBytes", 0x78, result[0]);
-        assertEquals("second byte getBytes", 0x56, result[1]);
-        assertEquals("third byte getBytes", 0x34, result[2]);
-        assertEquals("fourth byte getBytes", 0x12, result[3]);
-    }
-
-    /**
-     * Test conversion from bytes.
-     */
-    public void testFromBytes() {
-        byte[] val = new byte[] {0x78, 0x56, 0x34, 0x12};
-        ZipLong zl = new ZipLong(val);
-        assertEquals("value from bytes", 0x12345678, zl.getValue());
-    }
-
-    /**
-     * Test the contract of the equals method.
-     */
-    public void testEquals() {
-        ZipLong zl = new ZipLong(0x12345678);
-        ZipLong zl2 = new ZipLong(0x12345678);
-        ZipLong zl3 = new ZipLong(0x87654321);
-
-        assert("reflexive", zl.equals(zl));
-
-        assert("works", zl.equals(zl2));
-        assert("works, part two", !zl.equals(zl3));
-
-        assert("symmetric", zl2.equals(zl));
-
-        assert("null handling", !zl.equals(null));
-        assert("non ZipLong handling", !zl.equals(new Integer(0x1234)));
-    }
-
-    /**
-     * Test sign handling.
-     */
-    public void testSign() {
-        ZipLong zl = new ZipLong(new byte[] {(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF});
-        assertEquals(0x00000000FFFFFFFFl, zl.getValue());
-    }
-
-}
diff --git a/src/testcases/org/apache/tools/zip/ZipShortTest.java b/src/testcases/org/apache/tools/zip/ZipShortTest.java
deleted file mode 100644
index 733f3f8..0000000
--- a/src/testcases/org/apache/tools/zip/ZipShortTest.java
+++ /dev/null
@@ -1,117 +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.zip;
-
-import junit.framework.TestCase;
-
-/**
- * JUnit 3 testcases for org.apache.tools.zip.ZipShort.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class ZipShortTest extends TestCase {
-
-    public ZipShortTest(String name) {
-        super(name);
-    }
-
-    /**
-     * Test conversion to bytes.
-     */
-    public void testToBytes() {
-        ZipShort zs = new ZipShort(0x1234);
-        byte[] result = zs.getBytes();
-        assertEquals("length getBytes", 2, result.length);
-        assertEquals("first byte getBytes", 0x34, result[0]);
-        assertEquals("second byte getBytes", 0x12, result[1]);
-    }
-
-    /**
-     * Test conversion from bytes.
-     */
-    public void testFromBytes() {
-        byte[] val = new byte[] {0x34, 0x12};
-        ZipShort zs = new ZipShort(val);
-        assertEquals("value from bytes", 0x1234, zs.getValue());
-    }
-
-    /**
-     * Test the contract of the equals method.
-     */
-    public void testEquals() {
-        ZipShort zs = new ZipShort(0x1234);
-        ZipShort zs2 = new ZipShort(0x1234);
-        ZipShort zs3 = new ZipShort(0x5678);
-
-        assert("reflexive", zs.equals(zs));
-
-        assert("works", zs.equals(zs2));
-        assert("works, part two", !zs.equals(zs3));
-
-        assert("symmetric", zs2.equals(zs));
-
-        assert("null handling", !zs.equals(null));
-        assert("non ZipShort handling", !zs.equals(new Integer(0x1234)));
-    }
-
-    /**
-     * Test sign handling.
-     */
-    public void testSign() {
-        ZipShort zs = new ZipShort(new byte[] {(byte)0xFF, (byte)0xFF});
-        assertEquals(0x0000FFFF, zs.getValue());
-    }
-
-}
diff --git a/xdocs/antnews.xml b/xdocs/antnews.xml
deleted file mode 100644
index b3b0a05..0000000
--- a/xdocs/antnews.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0"?>
-<document>
-
-  <properties>
-    <author email="conor@cortexebusiness.com.au">Conor MacNeill</author>
-    <author email="stefan.bodewig@epost.de">Stefan Bodewig</author>
-    <title>Ant News</title>
-  </properties>
-
-<body>
-
-  <section name="Ant 1.4 Beta">
-  <h3>Ant 1.4 Beta Available !</h3>
-  <p>The beta version of Ant 1.4 is now available for 
-     <a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.4Beta2/">
-     download</a>. If you have any feedback on the beta feel free to join the 
-     discussion on the ant-dev and ant-user mailing lists.
-     </p>
-  </section>
-
-  <section name="Ant Needs a Logo">
-    <p>Ant still doesn't have a Logo, but it sure deserves one. We've
-    put together a <a href="logos.html">page with proposed
-    logos</a>, please take a look at them and tell us what you
-    think. If you have a nice logo idea yourself, just submit it to
-    the mailing lists.</p>
-  </section>
-
-  <section name="Ant 2.0 Requirements Collected - Next is Design">
-      <p>A commented version of the collected user requirements is now
-      available <a href="/ant/ant2/features.html">here</a> - it is not
-      complete as some details still have to be defined, but it should
-      give you an idea of what Ant2 is going to look like.</p>
-
-      <p>Several details can only be decided in the light of real code
-      and prototypes.  Several people are working on prototypes (that
-      can be found in Ant's CVS module in the proposals directory) and
-      discussion is going on on the Ant-Dev mailing list.</p>
-  </section>
-
-  <section name="Best-Practices Profile of Ant at Sun&apos;s Dot-Com Builder">
-      <p>Sun has released an introductory article on Ant on their
-      Dot-Com Builder site on May&#160;30&#160;2001. See <a
-      href="http://dcb.sun.com/practices/profiles/ant.jsp">http://dcb.sun.com/practices/profiles/ant.jsp</a></p>
-  </section>
-
-  <section name="Ant 2.0 Requirements">
-    <p>Ant has been in use for quite some time and has been used in ways never conceived when it
-       was originally written. While Ant 1.x has continued to sucessfully evolve and grow, there 
-       are a number of limitations and inconsistencies that are now apparent and which need to 
-       be addressed. 
-    </p>
-    
-    <p>
-       As we continue to evolve and enhance Ant 1.x, it is now time to define what Ant 2.0 will
-       encompass. Ant 2.0 will be a major rearchitecting of Ant. It has a number of goals including:
-       <ul>
-         <li>Define the "contract" with build file writers to which Ant will be bound.</li>
-         <li>Define the "contract" between the Ant core and Task writers.</li>
-         <li>Make Ant more easily extendable by allowing additional tasks to be "dropped" in.</li>
-         <li>Allow Ant to function as a component to simplify integration with GUIs and IDEs.</li>
-         <li>Make Ant more regular and logical.</li>
-       </ul>
-       
-       It is expected that Ant 2.0 will break Ant 1.x based build files. The intention is to
-       make this the last time that will happen.
-     </p>
-     
-     <p>
-        To advance the definition of Ant, user requirements are now being accepted on the 
-        Ant-Dev mailing list. Any requirement will be accepted for consideration. The 
-        requirements are being collected into a document which is available 
-        <a href="/ant/ant2/requested-features.txt">on-line</a>. New features will be excepted 
-        until March 21st, 2001. At that time, each requirement will be discussed 
-        for inclusion in an Ant 2.0 requirement document.
-      </p>
-      
-      <p>
-        For your reference some of the goals which have shaped the development of Ant 1.x are
-        available <a href="/ant/ant2/original-specification.html">here</a>. These continue to be
-        relevant to Ant 2.0.
-      </p>
-      
-      <p>
-        If you want to shape the future of Ant, join the 
-        <a href="/site/mail.html">Ant-Dev mailing list</a> and contribute
-        your ideas.
-      </p>
-  </section>
-
-  <section name="Ant 1.3 Released">
-
-    <p>
-    Ant 1.3 has been released after going through three betas. Thanks to everyone who
-    took the time to test the beta and report bugs and enhancements.
-    </p>
-    
-    <p>You can download the release from 
-        <a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.3/">here</a>. 
-       Both source and binary releases are available in zip, tarball and RPM formats.
-    </p>
-    <p>Please report all bugs using the 
-        <a href="http://nagoya.apache.org/bugzilla/enter_bug.cgi?product=Ant">Apache Bugzilla</a>
-    </p>
-
-  </section>
-
-</body>
-</document>
-
diff --git a/xdocs/external.xml b/xdocs/external.xml
deleted file mode 100644
index 86fe383..0000000
--- a/xdocs/external.xml
+++ /dev/null
@@ -1,399 +0,0 @@
-<?xml version="1.0"?>
-<document>
-
-  <properties>
-    <author email="bodewig@apache.org">Stefan Bodewig</author>
-    <title>External Tools and Tasks</title>
-  </properties>
-
-  <body>
-    
-    <section name="External Tools and Tasks">
-
-      <p>This page lists external resources for Ant: tasks, IDE
-      integration tools, loggers, you name it. If you've written
-      something that should be included, please post all relevant
-      information to one of the mailing lists.</p>
-
-      <p>Nothing listed here is directly supported by the Ant
-      developers, if you encounter any problems with them, please use
-      the contact information.</p>
-
-    </section>
-
-    <section name="Tasks">
-      <subsection name="AJC">
-
-        <p><a href="http://aspectj.org">AspectJ</a> is an
-          aspect-oriented extension to Java.  This task compiles a
-          source tree using the AspectJ compiler -- AJC.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://aspectj.org/dl">http://aspectj.org/dl</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:support@aspectj.org">support@aspectj.org</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>Apache Software License</td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Anakia">
-
-        <p>Actually, Anakia is more than just an Ant task, it is a an
-        XML transformation tool based on JDOM, Velocity and Ant.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.2 and 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://jakarta.apache.org/velocity/anakia.html">http://jakarta.apache.org/velocity/anakia.html</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="http://jakarta.apache.org/site/mail2.html">Velocity mailing lists</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>Apache Software License</td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Checkstyle">
-
-        <p>Checkstyle is a development tool to help programmers write
-        Java code that adheres to a coding standard. Its purpose is to
-        automate the process of checking Java code, and to spare
-        humans of this boring (but important) task.</p>
-
-        <p>Checkstyle can be run via an ANT task or a command line
-        utility.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.2 and 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.puppycrawl.com/checkstyle">http://www.puppycrawl.com/checkstyle</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:checkstyle@puppycrawl.com">Oliver Burn</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>GNU General Public License</td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Configure">
-
-        <p>Recursive build support (call ant on every package level,
-        and only build files in that package or in that package and
-        everything below) with seperation of source and output.</p>
-        
-        <p>The task generates build files in any subdirectory (except
-        for CVS-directories) for you. Only place one build.xml file in
-        the top and call target &apos;setup&apos; or
-        &apos;rescan&apos;.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.2 and 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.dsdelft.nl/~lemval/ant/">http://www.dsdelft.nl/~lemval/ant/</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:lemval@dsdelft.nl">M.J.P. van Leeuwen</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>License derived from Apache Software License</td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="J2ME Ant Tasks">
-
-        <p>There are two different sets of tasks to help build <a
-        href="http://java.sun.com/j2me/">Java 2 Platform, Micro
-        Edition</a> (J2ME) applications.</p>
-        
-        <p>This set supports CLDC and the K Virtual Machine (KVM):</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.dribin.org/dave/j2me_ant/">http://www.dribin.org/dave/j2me_ant/</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:drib@enteract.com">Dave Dribin</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>Apache Software License</td>
-          </tr>
-        </table>
-
-        <p>And this set works with the J2ME Wireless Toolkit and MIDP
-        for PalmOS:</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.stampysoft.com/ant/">http://www.stampysoft.com/ant/</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:jeckels@stampysoft.com">Josh Eckels</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>MIT License</td>
-          </tr>
-        </table>
-
-      </subsection>
-
-      <subsection name="TiniAnt">
-
-        <p>TiniAnt is an Ant task to support building applications for
-        the <a href="http://www.ibutton.com/TINI/">TINI</a>.</p>
-        
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.2 and 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://tiniant.sourceforge.net/">http://tiniant.sourceforge.net/</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:kelly@ad1440.net">Sean Kelly</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>BSD-like license</td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Venus Application Publisher's (Vamp) Ant Task Suite">
-
-        <p>Venus Application Publisher's (Vamp) Ant Task Suite allows
-        you to sign and package your applications into relocatable Web
-        Archives that you can drop into your web server for
-        single-click launching using Java Web Start or into single
-        Java Archive installers that serve up their content through a
-        built-in, multi-threaded, ultra light-weight web server.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.2 and 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.geocities.com/vamp201/ant.html">http://www.geocities.com/vamp201/ant.html</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:vamp201@yahoo.com">Gerald Bauer</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>GNU General Public License</td>
-          </tr>
-        </table>
-      </subsection>
-
-    </section>
-
-    <section name="IDE/Editor Integration">
-
-      <subsection name="AntFarm">
-
-        <p>A plugin that integrates Ant into the jEdit editor.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>bundles Ant 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://plugins.jedit.org/plugins/AntFarm">http://plugins.jedit.org/plugins/AntFarm</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:jedit-devel@lists.sourceforge.net">jEdit developers mailinglist</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>Apache Software License</td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="AntRunner">
-
-        <p>An OpenTool that integrates Ant into the JBuilder IDE.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.2 and 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.dieter-bogdoll.de/java/AntRunner/">http://www.dieter-bogdoll.de/java/AntRunner/</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:bogdoll@users.sourceforge.net">Dieter Bogdoll</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>GNU General Public License</td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="AntWork">
-
-        <p>A plugin that integrates Ant into the Jext editor.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.2 and 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="ftp://jext.sourceforge.net/pub/jext/plugins/AntWork.zip">ftp://jext.sourceforge.net/pub/jext/plugins/AntWork.zip</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:KHartlage@t-online.de">Klaus Hartlage</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>GNU General Public License</td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="IntelliJ IDEA 2.0">
-
-        <p>Java IDE with refactoring support and Ant integration.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>bundles Ant 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.intellij.com/idea/">http://www.intellij.com/idea/</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:support@intellij.com">support@intellij.com</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>Commercial</td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="NetBeans / Forte for Java">
-
-        <p>A module that integrates Ant into the NetBeans or Forte for Java IDEs.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>bundles Ant 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://ant.netbeans.org/">http://ant.netbeans.org/</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:nbdev@netbeans.org">nbdev@netbeans.org</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>Sun Public License</td>
-          </tr>
-        </table>
-      </subsection>
-    </section>
-
-    <section name="Other">
-      <subsection name="CruiseControl">
-        <p>CruiseControl is a tool for setting up a continuous build
-        process.  CruiseControl provides an Ant wrapper and a set of
-        tasks to automate the checkout/build/test cycle. CruiseControl
-        also comes bundled with a servlet for viewing the status of
-        the current build, as well as previous build results.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.2 and 1.3</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://cruisecontrol.sourceforge.net/">http://cruisecontrol.sourceforge.net/</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href ='http://cruisecontrol.sourceforge.net/contact.html'>Project Mailing Lists and Administrators</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>Release 1.0 has been licensed under the GNU General Public
-            License.  Starting with release 1.1 the license has been
-            changed to a BSD-like license.</td>
-          </tr>
-        </table>
-      </subsection>
-    </section>
-
-  </body>
-</document>
\ No newline at end of file
diff --git a/xdocs/faq.xml b/xdocs/faq.xml
deleted file mode 100644
index 932b30a..0000000
--- a/xdocs/faq.xml
+++ /dev/null
@@ -1,581 +0,0 @@
-<?xml version="1.0"?>
-<document>
-
-  <properties>
-    <author email="bodewig@apache.org">Stefan Bodewig</author>
-    <title>Frequently Asked Questions</title>
-  </properties>
-
-  <faqsection title="General">
-    <faq id="what-is-ant">
-      <question>What is Ant?</question>
-      <answer>
-        <p> Ant is a Java based build tool. In theory it is kind of
-        like &quot;make&quot; without makes wrinkles and with the full
-        portability of pure Java code.</p>
-      </answer>
-    </faq>
-
-    <faq id="ant-name">
-      <question>Why do you call it Ant?</question>
-      <answer>
-
-        <p>According to Ant&apos;s original author James Duncan
-        Davidson, the name is an acronym for &quot;Another Neat
-        Tool&quot;.</p>
-        
-        <p>Later explanations go along the lines of &quot;Ants are
-        doing an extremely good job at building things&quot; or
-        &quot;Ants are very small and can carry a weight a dozen times
-        of their own&quot; - describing what Ant is intended to
-        be.</p>
-      </answer>
-    </faq>
-
-    <faq id="history">
-      <question>Tell us a little bit about Ant&apos;s history.</question>
-      <answer>
-
-        <p>Initially Ant was part of the Tomcat code base when it was
-        donated to the Apache Software Foundation - it has been
-        created by James Duncan Davidson, who also is the original
-        author of Tomcat. Ant was there to build Tomcat, nothing
-        else.</p>
-
-        <p>Soon thereafter several open source Java projects realized
-        that Ant could solve the problems they had with makefiles.
-        Starting with the projects hosted at Jakarta and the old Java
-        Apache project, Ant spread like a virus and now is the build
-        tool of choice for a lot of projects.</p>
-
-        <p>In January 2000 Ant was moved to a separate CVS module and
-        was promoted to a project of its own, independent of
-        Tomcat.</p>
-
-        <p>The first version of Ant that was exposed a lager audience
-        was the one that shipped with Tomcat&apos;s 3.1 release on 19 April
-        2000.  This version has later been referenced to as Ant
-        0.3.1.</p>
-
-        <p>The first official release of Ant as a stand alone product was
-        Ant 1.1 released on 19 July 2000.  The complete release
-        history:</p>
-
-        <table>
-          <tr>
-            <th>Ant Version</th>
-            <th>Release Date</th>
-          </tr>
-
-          <tr>
-            <td>1.1</td>
-            <td>19 July 2000</td>
-          </tr>
-
-          <tr>
-            <td>1.2</td>
-            <td>24 October 2000</td>
-          </tr>
-
-          <tr>
-            <td>1.3</td>
-            <td>3 March 2001</td>
-          </tr>
-        </table>
-      </answer>
-    </faq>
-
-  </faqsection>
-
-  <faqsection title="Installation">
-    <faq id="no-gnu-tar">
-      <question>I get checksum errors when I try to extract the
-      <code>tar.gz</code> distribution file. Why?</question>
-      <answer>
-        <p>Ant&apos;s distribution contains file names that are longer
-        than 100 characters, which is not supported by the standard
-        tar file format. Several different implementations of tar use
-        different and incompatible ways to work around this
-        restriction.</p>
-
-        <p>Ant&apos;s &lt;tar&gt; task can create tar archives that use
-        the GNU tar extension, and this has been used when putting
-        together the distribution. If you are using a different
-        version of tar (for example, the one shipping with Solaris),
-        you cannot use it to extract the archive.</p>
-
-        <p>The solution is to either install GNU tar, which can be
-        found <a href="http://www.gnu.org/software/tar/tar.html">here</a> 
-        or use the zip archive instead (you can extract it using
-        <code>jar xf</code>).</p>
-      </answer>
-    </faq>
-  </faqsection>
-
-  <faqsection title="Using Ant">
-    <faq id="always-recompiles">
-      <question>Why does Ant always recompile all my Java files?</question>
-      <answer>
-
-        <p>In order to find out which files should be compiled, Ant
-        compares the timestamps of the source files to those of the
-        resulting <code>.class</code> files.  Opening all source files
-        to find out which package they belong to would be very
-        inefficient - instead of this, Ant expects you to place your
-        source files in a directory hierarchy that mirrors your
-        package hierarchy and to point Ant to the root of this
-        directory tree with the <code>srcdir</code> attribute.</p>
-
-        <p>Say you have <code>&lt;javac srcdir=&quot;src&quot;
-        destdir=&quot;dest&quot; /&gt;</code>.  If Ant finds a file
-        <code>src/a/b/C.java</code> it expects it to be in package
-        <code>a.b</code> so that the resulting <code>.class</code>
-        file is going to be <code>dest/a/b/C.class</code>.</p>
-
-        <p>If your setup is different, Ant&apos;s heuristic won&apos;t work and
-        it will recompile classes that are up to date.  Ant is not the
-        only tool, that expects a source tree layout like this.</p>
-
-      </answer>
-    </faq>
-
-    <faq id="passing-cli-args">
-      <question>How do I pass parameters from the command line to my
-        build file?</question>
-      <answer>
-
-        <p>Use properties: <code>ant
-        -D&lt;name&gt;=&lt;value&gt;</code> lets you define values for
-        properties.  These can then be used within your build file as
-        any normal property: <code>${&lt;name&gt;}</code> will put in
-        <code>&lt;value&gt;</code>.</p>
-
-      </answer>
-    </faq>
-
-    <faq id="jikes-switches">
-      <question>How can I use Jikes specific command line
-        switches?</question>
-
-      <answer>
-
-        <p>A couple of switches are supported via magic
-          properties:</p>
-
-        <table>
-          <tr>
-            <th>switch</th>
-            <th>property</th>
-            <th>default</th>
-          </tr>
-
-          <tr>
-            <td>+E</td>
-            <td>build.compiler.emacs</td>
-            <td>false == not set</td>
-          </tr>
-
-          <tr>
-            <td>-nowarn</td>
-            <td>build.compiler.warnings</td>
-            <td>true == not set</td>
-          </tr>
-
-          <tr>
-            <td>+P</td>
-            <td>build.compiler.pedantic</td>
-            <td>false == not set</td>
-          </tr>
-
-          <tr>
-            <td>+F</td>
-            <td>build.compiler.fulldepend</td>
-            <td>false == not set</td>
-          </tr>
-        </table>
-
-      </answer>
-    </faq>
-
-    <faq id="shell-redirect-1">
-      <question>How do I include a &lt; character in my command line arguments?</question>
-      <answer>
-        <p>The short answer is "Use <code>&amp;lt;</code>".</p>
-
-        <p>The long answer is, that this probably won't do what you
-        want anyway, see <a href="#shell-redirect-2">the next
-        section</a>.</p>
-      </answer>
-    </faq>
-
-    <faq id="shell-redirect-2">
-      <question>How do I redirect standard input or standard output
-        in the <code>&lt;exec&gt;</code> task?</question>
-      <answer>
-        <p>Say you want to redirect the standard input stream of the
-        <code>cat</code> command to read from a file, something
-        like</p>
-
-        <source><![CDATA[
-shell-prompt> cat < foo
-]]></source>
-        
-        <p>and try to translate it into</p>
-
-        <source><![CDATA[
-<exec executable="cat">
-  <arg value="&lt;" />
-  <arg value="foo" />
-</exec>
-]]></source>
-
-        <p>This will not do what you expect.  The input-redirection is
-        performed by your shell, not the command itself, so this
-        should read:</p>
-        
-        <source><![CDATA[
-<exec executable="/bin/sh">
-  <arg value="-c" />
-  <arg value="cat &lt; foo" />
-</exec>
-]]></source>
-
-        <p>Note, that you must use the <code>value</code> attribute of
-        <code>&lt;arg&gt;</code> in the last element.</p>
-
-      </answer>
-    </faq>
-
-  </faqsection>
-
-  <faqsection title="Ant and IDEs/Editors">
-    <faq id="integration">
-      <question>Is Ant supported by my IDE/Editor?</question>
-      <answer>
-        <p>See the <a href="external.html#IDE%47Editor+Integration">section 
-        on IDE integration</a> on our external tools page.</p>
-      </answer>
-    </faq>
-
-    <faq id="emacs-mode">
-      <question>Why doesn&apos;t (X)Emacs/vi/MacOS X's project builder
-      parse the error messages generated by Ant correctly?</question>
-      <answer>
-
-        <p>Ant adds a &quot;banner&quot; with the name of the current
-        task in front of all messages - and there are no built-in
-        regular expressions in your Editor that would account for
-        this.</p>
-
-        <p>You can disable this banner by invoking Ant with the
-        <code>-emacs</code> switch. Alternatively you can add the
-        following snippet to your <code>.emacs</code> to make Emacs
-        understand Ant&apos;s output.</p>
-
-        <source><![CDATA[
-(require 'compile)
-(setq compilation-error-regexp-alist
-  (append (list 
-     ;; works for jikes
-     '("^\\s-*\\[[^]]*\\]\\s-*\\(.+\\):\\([0-9]+\\):\\([0-9]+\\):[0-9]+:[0-9]+:" 1 2 3)
-     ;; works for javac 
-     '("^\\s-*\\[[^]]*\\]\\s-*\\(.+\\):\\([0-9]+\\):" 1 2))
-  compilation-error-regexp-alist))
-]]></source>
-
-        <p>Yet another alternative that preserves most of Ant's
-        formatting is to pipe Ant's output through the following Perl
-        script by Dirk-Willem van Gulik:</p>
-
-        <source><![CDATA[
-#!/usr/bin/perl
-#
-# May 2001 dirkx@apache.org - remove any
-# [foo] lines from the output; keeping
-# spacing more or less there.
-#
-$|=1;
-while(<STDIN>) {
-	if (s/^(\s+)\[(\w+)\]//) {
-		if ($2 ne $last) {
-			print "$1\[$2\]";
-			$s = ' ' x length($2);
-		} else {
-			print "$1 $s ";
-		};
-		$last = $2;
-	};
-	print;
-};
-]]></source>
-
-      </answer>
-    </faq>
-  </faqsection>
-
-  <faqsection title="Advanced issues">
-    <faq id="dtd">
-      <question>Is there a DTD that I can use to validate my build
-      files?</question>
-
-      <answer>
-
-        <p>An incomplete DTD can be created by the
-          <code>&lt;antstructure&gt;</code> task - but this one
-          has a few problems:</p>
-
-          <ul>
-            <li>It doesn&apos;t know about required attributes.  Only
-            manual tweaking of this file can help here.</li>
-          
-            <li>It is not complete - if you add new tasks via
-            <code>&lt;taskdef&gt;</code> it won&apos;t know about it.  See
-            <a href="http://www.sdv.fr/pages/casa/html/ant-dtd.en.html">this
-            page</a> by Michel Casabianca for a solution to this
-            problem.  Note that the DTD you can download at this page
-            is based on Ant 0.3.1.</li>
-
-            <li>It may even be an invalid DTD.  As Ant allows tasks
-            writers to define arbitrary elements, name collisions will
-            happen quite frequently - if your version of Ant contains
-            the optional <code>&lt;test&gt;</code> and
-            <code>&lt;junit&gt;</code> tasks, there are two XML
-            elements named test (the task and the nested child element
-            of <code>&lt;junit&gt;</code>) with different attribute
-            lists.  This problem cannot be solved, DTDs don&apos;t give a
-            syntax rich enough to support this.</li>
-          </ul>
-      </answer>
-    </faq>
-
-    <faq id="xml-entity-include">
-      <question>How do I include an XML snippet in my build file?</question>
-      <answer>
-        <p>You can use XML&apos;s way of including external files and let
-        the parser do the job for Ant:</p>
-
-        <source><![CDATA[
-<?xml version="1.0"?>
-
-<!DOCTYPE project [
-    <!ENTITY common SYSTEM "file:./common.xml">
-]>
-
-<project name="test" default="test" basedir=".">
-
-  <target name="setup">
-    ...
-  </target>
-
-  &common;
-
-  ...
-
-</project>
-]]></source>
-
-        <p>will literally include the contents of <code>common.xml</code> where
-        you&apos;ve placed the <code>&amp;common;</code> entity.</p>
-
-        <p>In combination with a DTD, this would look like this:</p>
-
-        <source><![CDATA[
-<!DOCTYPE project PUBLIC "-//ANT//DTD project//EN" "file:./ant.dtd" [
-   <!ENTITY include SYSTEM "file:./header.xml">
-]>
-]]></source>
-      </answer>
-    </faq>
-
-    <faq id="mail-logger">
-      <question>How do I send an email with the result of my build
-        process?</question>
-
-      <answer>
-
-        <p>You can use a custom BuildListener, that sends out an email
-        in the buildFinished() method.  Will Glozer
-        &lt;will.glozer@jda.com&gt; has written such a listener based
-        on <a href="http://java.sun.com/products/javamail/">JavaMail</a>, 
-        the source is</p>
-
-        <source><![CDATA[
-import java.io.*;
-import java.util.*;
-import javax.mail.*;
-import javax.mail.internet.*;
-import org.apache.tools.ant.*;
-
-/**
- * A simple listener that waits for a build to finish and sends an email
- * of the results.  The settings are stored in "monitor.properties" and
- * are fairly self explanatory.
- *
- * @author      Will Glozer
- * @version     1.05a 09/06/2000
- */
-public class BuildMonitor implements BuildListener {
-    protected Properties props;
-
-    /**
-     * Create a new BuildMonitor.
-     */
-    public BuildMonitor() throws Exception {
-        props = new Properties();
-        InputStream is = getClass().getResourceAsStream("monitor.properties");
-        props.load(is);
-        is.close();
-    }
-
-    public void buildStarted(BuildEvent e) {
-    }
-
-    /**
-     * Determine the status of the build and the actions to follow, now that
-     * the build has completed.
-     *
-     * @param       e       Event describing the build tatus.
-     */
-    public void buildFinished(BuildEvent e) {
-        Throwable th = e.getException();
-        String status = (th != null) ? "failed" : "succeeded";
-        
-        try {
-            String key = "build." + status;
-            if (props.getProperty(key + ".notify").equalsIgnoreCase("false")) {
-                    return;
-            }
-            
-            Session session = Session.getDefaultInstance(props, null);
-
-            MimeMessage message = new MimeMessage(session);
-            message.addRecipients(Message.RecipientType.TO, parseAddresses(
-                props.getProperty(key + ".email.to")));
-            message.setSubject(props.getProperty(key + ".email.subject"));
-
-            BufferedReader br = new BufferedReader(new FileReader(
-                props.getProperty("build.log")));
-            StringWriter sw = new StringWriter();
-            
-            String line = br.readLine();
-            while (line != null) {
-                sw.write(line);
-                sw.write("\n");
-                line = br.readLine();
-            }
-            br.close();
-            
-            message.setText(sw.toString(), "UTF-8");
-            sw.close();
-            
-            Transport transport = session.getTransport();
-            transport.connect();
-            transport.send(message);
-            transport.close();
-        } catch (Exception ex) {
-            System.out.println("BuildMonitor failed to send email!");
-            ex.printStackTrace();
-        }
-    }
-
-    /**
-     * Parse a comma separated list of internet email addresses.
-     *
-     * @param       s       The list of addresses.
-     * @return      Array of Addresses.
-     */
-    protected Address[] parseAddresses(String s) throws Exception {
-        StringTokenizer st = new StringTokenizer(s, ",");
-        Address[] addrs = new Address[st.countTokens()];
-
-        for (int i = 0; i < addrs.length; i++) {
-            addrs[i] = new InternetAddress(st.nextToken());
-        }
-        return addrs;
-    }
-
-    public void messageLogged(BuildEvent e) {
-    }
-
-    public void targetStarted(BuildEvent e) {
-    }
-
-    public void targetFinished(BuildEvent e) {
-    }
-
-    public void taskStarted(BuildEvent e) {        
-    }
-
-    public void taskFinished(BuildEvent e) {
-    }
-}
-]]></source>
-          
-      <p>With a <code>monitor.properties</code> like this</p>
-
-        <source><![CDATA[
-# configuration for build monitor
-
-mail.transport.protocol=smtp
-mail.smtp.host=<host>
-mail.from=Will Glozer <will.glozer@jda.com>
-
-build.log=build.log
-
-build.failed.notify=true
-build.failed.email.to=will.glozer@jda.com
-build.failed.email.subject=Nightly build failed!
-
-build.succeeded.notify=true
-build.succeeded.email.to=will.glozer@jda.com
-build.succeeded.email.subject=Nightly build succeeded!
-]]></source>
-
-        <p><code>monitor.properties</code> should be placed right next
-        to your compiled <code>BuildMonitor.class</code>.  To use it,
-        invoke Ant like</p>
-        
-        <source><![CDATA[
-ant -listener BuildMonitor
-]]></source>
-
-        <p>Make sure that <code>mail.jar</code> from JavaMail and
-        <code>activation.jar</code> from the 
-        <a href="http://java.sun.com/products/javabeans/glasgow/jaf.html">Java
-        Beans Activation Framework</a> in your <code>CLASSPATH</code>.</p>
-
-      </answer>
-    </faq>
-
-  </faqsection>
-
-  <faqsection title="Known problems">
-    <faq id="remove-cr">
-      <question>&lt;chmod&gt; or &lt;exec&gt; don&apos;t work in Ant
-        1.3 on Unix</question>
-      <answer>
-
-        <p>The <code>antRun</code> script in <code>ANT_HOME/bin</code>
-        has DOS instead of Unix line endings, you must remove the
-        carriage return characters from this file.  This can be done by
-        using Ant&apos;s &lt;fixcrlf&gt; task or something like:</p>
-
-        <source><![CDATA[
-tr -d '\r' < $ANT_HOME/bin/antRun > /tmp/foo
-mv /tmp/foo $ANT_HOME/bin/antRun
-]]></source>
-      </answer>
-    </faq>
-
-    <faq id="javadoc-cannot-execute">
-      <question>JavaDoc failed: java.io.IOException: javadoc: cannot execute</question>
-      <answer>
-        <p>There is a bug in the Solaris reference implementation of
-        the JDK, see <a href="http://developer.java.sun.com/developer/bugParade/bugs/4230399.html">http://developer.java.sun.com/developer/bugParade/bugs/4230399.html</a>.
-        This also appears to be true under Linux, moving the JDK to
-        the front of the PATH fixes the problem.</p>
-      </answer>
-    </faq>
-  </faqsection>
-
-</document>
diff --git a/xdocs/index.xml b/xdocs/index.xml
deleted file mode 100644
index 85ef00c..0000000
--- a/xdocs/index.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0"?>
-<document>
-
-  <properties>
-    <author email="conor@cortexebusiness.com.au">Conor MacNeill</author>
-    <author email="stefan.bodewig@epost.de">Stefan Bodewig</author>
-    <title>Ant</title>
-  </properties>
-
-<body>
-
-  <section name="Ant 1.4 Beta">
-  <h3>Ant 1.4 Beta Available !</h3>
-  <p>The beta version of Ant 1.4 is now available for 
-     <a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.4Beta2/">
-     download</a>. If you have any feedback on the beta feel free to join the 
-     discussion on the ant-dev and ant-user mailing lists.
-     </p>
-  </section>
-
-  <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="manual/index.html">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.3/bin/">
-                Download the binary release</a></li>
-        <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.3/src/">
-                Download the source release</a></li>
-        <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.3/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="Towards Ant2">
-    <p>
-    We are currently hashing out design details for Ant2. Please
-    read the latest <a href="antnews.html">Ant news</a> for more details.
-    </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>
-</ul>
-
-
-
-  </section>
-
-</body>
-</document>
-
diff --git a/xdocs/logos.xml b/xdocs/logos.xml
deleted file mode 100644
index a5ea432..0000000
--- a/xdocs/logos.xml
+++ /dev/null
@@ -1,272 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<document>
-
-  <properties>
-    <author email="stefan.bodewig@epost.de">Stefan Bodewig</author>
-    <title>Ant Logo Proposals</title>
-  </properties>
-
-<body>
-
-  <section name="Ant needs a Logo">
-    <p>One of the requirements for Ant2 is, that Ant should have a
-    logo.  You can find the logos that have been proposed to the Ant
-    mailing lists on this page.</p>
-
-    <p>Tell us what you think of them (yes, <em>Powered by</em> should
-    better be <em>Built by</em>).</p>
-
-    <table>
-      <tr>
-        <th>Entry</th><th>Group</th><th>Author</th><th></th>
-      </tr>
-      <tr>
-        <td>1</td>
-        <td>1</td>
-        <td>Bill J. Fellows (Bill.J.Fellows at mail.sprint.com)</td>
-        <td><img src="images/antLogo1.png" /></td>
-      </tr>
-      <tr>
-        <td>2</td>
-        <td>1</td>
-        <td>Bill J. Fellows (Bill.J.Fellows at mail.sprint.com)</td>
-        <td><img src="images/antLogo2.png" /></td>
-      </tr>
-      <tr>
-        <td>3</td>
-        <td>2</td>
-        <td>Christoph Wilhelms (Christoph.Wilhelms at t-online.de)</td>
-        <td><img src="images/ant_logo.gif" /></td>
-      </tr>
-      <tr>
-        <td>4</td>
-        <td>2</td>
-        <td>Christoph Wilhelms (Christoph.Wilhelms at t-online.de)</td>
-        <td><img src="images/ant2_logo.gif" /></td>
-      </tr>
-      <tr>
-        <td>5</td>
-        <td>3</td>
-        <td>Warner Onstine (warner at warneronstine.com)</td>
-        <td><img src="images/ant-logo2.gif" /></td>
-      </tr>
-      <tr>
-        <td>6</td>
-        <td>4</td>
-        <td>Chris Coleman (chris.coleman at csfb.com)</td>
-        <td><img src="images/coleman.gif" /></td>
-      </tr>
-      <tr>
-        <td>7</td>
-        <td>5</td>
-        <td>Stefan Lecho (Stefan.Lecho at iconmedialab.com)</td>
-        <td><img src="images/lecho.jpg" /></td>
-      </tr>
-      <tr>
-        <td>8</td>
-        <td>6</td>
-        <td>David Trogdon (DTrogdon at orgtek.com)</td>
-        <td><img src="images/trogdon.gif" /></td>
-      </tr>
-      <tr>
-        <td>9</td>
-        <td>7</td>
-        <td>Mirko Klemm (Mirko.Klemm at t-online.de)</td>
-        <td><img src="http://www.mutantenzoo.de/antlogo-400.png" /></td>
-      </tr>
-      <tr>
-        <td>10</td>
-        <td>8</td>
-        <td>Ryan P Ripley (ryan.ripley at bms.com)</td>
-        <td><img src="images/ripley.jpg" /></td>
-      </tr>
-      <tr>
-        <td>11</td>
-        <td>9</td>
-        <td>Christoph Wilhelms (Christoph.Wilhelms at t-online.de)</td>
-        <td><img src="images/wilhelms3.gif" /></td>
-      </tr>
-      <tr>
-        <td>12</td>
-        <td>10</td>
-        <td>Shane Petroff (shane at hayward.ca)</td>
-        <td><img src="images/petroff.jpg" /></td>
-      </tr>
-      <tr>
-        <td>13</td>
-        <td>10</td>
-        <td>Jim Cheesman (jchees at msl.es)</td>
-        <td><img src="images/cheesman.jpg" /></td>
-      </tr>
-      <tr>
-        <td>14</td>
-        <td>11</td>
-        <td>Kevin Duggins (Kevin.Duggins at definityhealth.com)</td>
-        <td><img src="images/duggins.gif" /></td>
-      </tr>
-      <tr>
-        <td>15</td>
-        <td>12</td>
-        <td>Kevin Duggins (Kevin.Duggins at definityhealth.com)</td>
-        <td><img src="images/duggins2.gif" /></td>
-      </tr>
-      <tr>
-        <td>16</td>
-        <td>13</td>
-        <td>Justin Ransom (Justin.Ransom at rubus.com)</td>
-        <td><img src="images/hughes1.gif" /></td>
-      </tr>
-      <tr>
-        <td>17</td>
-        <td>14</td>
-        <td>Justin Ransom (Justin.Ransom at rubus.com)</td>
-        <td><img src="images/hughes2.gif" /></td>
-      </tr>
-      <tr>
-        <td>18</td>
-        <td>15</td>
-        <td>Martin Schlömer (martin.schloemer at phase26.de)</td>
-        <td><img src="images/schloemer.gif" /></td>
-      </tr>
-      <tr>
-        <td>19</td>
-        <td>15</td>
-        <td>Martin Schlömer (martin.schloemer at phase26.de)</td>
-        <td><img src="images/schloemer2.gif" /></td>
-      </tr>
-      <tr>
-        <td>20</td>
-        <td>16</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_ant.jpg"/></td>
-      </tr>
-      <tr>
-        <td>21</td>
-        <td>17</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_ant2.jpg"/></td>
-      </tr>
-      <tr>
-        <td>22</td>
-        <td>18</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_ant3.jpg"/></td>
-      </tr>
-      <tr>
-        <td>23</td>
-        <td>19</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_ant4.jpg"/></td>
-      </tr>
-      <tr>
-        <td>24</td>
-        <td>20</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_ant5.jpg"/></td>
-      </tr>
-      <tr>
-        <td>25</td>
-        <td>21</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_ant6.jpg"/></td>
-      </tr>
-      <tr>
-        <td>26</td>
-        <td>22</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_germ1.jpg"/></td>
-      </tr>
-      <tr>
-        <td>27</td>
-        <td>22</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_germ2.jpg"/></td>
-      </tr>
-      <tr>
-        <td>28</td>
-        <td>23</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_germ3.jpg"/></td>
-      </tr>
-      <tr>
-        <td>29</td>
-        <td>23</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_germ4.jpg"/></td>
-      </tr>
-      <tr>
-        <td>30</td>
-        <td>24</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_germ5.jpg"/></td>
-      </tr>
-      <tr>
-        <td>31</td>
-        <td>24</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_germ6.jpg"/></td>
-      </tr>
-      <tr>
-        <td>32</td>
-        <td>25</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_keis1.jpg"/></td>
-      </tr>
-      <tr>
-        <td>33</td>
-        <td>25</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_keis3.jpg"/></td>
-      </tr>
-      <tr>
-        <td>34</td>
-        <td>26</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_keis2.jpg"/></td>
-      </tr>
-      <tr>
-        <td>35</td>
-        <td>27</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_keis4.jpg"/></td>
-      </tr>
-      <tr>
-        <td>36</td>
-        <td>28</td>
-        <td>Design Services Team at Hewlett Packard (blair_hughes at hp.com></td>
-        <td><img src="images/blairhughes_keis5.jpg"/></td>
-      </tr>
-      <tr>
-        <td>37</td>
-        <td>29</td>
-        <td>Alicia Kolesnikova</td>
-        <td><img src="images/kolesnikova.gif"/></td>
-      </tr>
-      <tr>
-        <td>38</td>
-        <td>30</td>
-        <td>Matthias Becker (matthias.becker at media4content.de)</td>
-        <td><img src="images/becker1.gif"/></td>
-      </tr>
-      <tr>
-        <td>39</td>
-        <td>30</td>
-        <td>Matthias Becker (matthias.becker at media4content.de)</td>
-        <td><img src="images/becker2.gif"/></td>
-      </tr>
-      <tr>
-        <td>40</td>
-        <td>30</td>
-        <td>Matthias Becker (matthias.becker at media4content.de)</td>
-        <td><img src="images/becker3.gif"/></td>
-      </tr>
-      <tr>
-        <td>41</td>
-        <td>31</td>
-        <td>Alicia Kolesnikova</td>
-        <td><img src="images/bogaert.gif"/></td>
-      </tr>
-     </table>
-  </section>
-</body>
-</document>
\ No newline at end of file
diff --git a/xdocs/problems.xml b/xdocs/problems.xml
deleted file mode 100644
index 45e12ae..0000000
--- a/xdocs/problems.xml
+++ /dev/null
@@ -1,180 +0,0 @@
-<?xml version="1.0"?>
-<document>
-
-  <properties>
-    <author email="conor@apache.org">Conor MacNeill</author>
-    <title>Having Problems?</title>
-  </properties>
-
-  <body>
-    <section name="Having Problems?">
-      <p>If you are having problems with Ant, this page details some steps you can take
-         to try and resolve the problem. If you can't resolve the problem then this page will help
-         you collect some of the relevant information to provide a bug report. This information will help 
-         the Ant developers understand and resolve the problem. Of course, not all of the steps here will 
-         make sense for every problem you encounter. These are just some suggestions to 
-         point you in the right direction.
-      </p>
-         
-      <subsection name="Read the Manual">
-        <p>The first step to take when you have a problem is to read the <a href="manual/index.html">
-           manual</a> entry for the task or concept that is giving you trouble. Check particularly the meaning of
-           attributes and nested elements. Perhaps an attribute would provide the behavior you require. If you
-           have problems with the manual, then you can submit a documentation bug report (see below) to help us
-           improve the Ant documentation.
-        </p>        
-      </subsection>
-      <subsection name="Examine Debug Output">
-        <p>The first step when you have a problem is to see what Ant is doing. Try running Ant with
-           The verbose flag<br/><br/>
-           <code>ant -verbose</code><br/><br/>
-           or<br/><br/>
-           <code>ant -v</code><br/><br/>
-           
-           This will produce something which starts like the following:</p>
-           <source>
-Ant version 1.4alpha compiled on August 6 2001
-Buildfile: build.xml
-Detected Java version: 1.3 in: f:\jdk1.3\jre
-Detected OS: Windows NT
-parsing buildfile \jakarta-ant\build.xml with 
-URI = file:/jakarta-ant/build.xml
-Project base dir set to: \jakarta-ant
- [property] Loading \jakarta-ant\.ant.properties
- [property] Unable to find property file: \jakarta-ant\.ant.properties
- [property] Loading \conor\.ant.properties
- [property] Override ignored for debug
-
-prepare:
-
-check_for_optional_packages:
-...
-           </source>
-           <p>
-             You may be able to see in this trace what ant is doing and why it takes a particular 
-             course of action. If you need even more information you can use the <code>-debug</code> 
-             flag rather than <code>-verbose</code>. This will generally produce so much output that 
-             you may want to save the output and analyze it in an editor.
-           </p>
-           
-           <p>So, once you have all this debug information, how can you use it to solve your problem? 
-              That will depend on the task in question and the nature of your problem. Each task logs
-              different aspects of its operation, but it will give you an idea of what is going on. For
-              example, the &lt;javac&gt; task logs the reasons why it chooses to compile particular 
-              classes and the equivalent command it is using. The following trace (which has been edited
-              and reformatted for clarity) shows javac adding one class but skipping another. This is followed 
-              by the compiler arguments and a summary of all the classes to be compiled. 
-           </p>
-<source>
- [javac] org\apache\tools\ant\listener\Log4jListener.java added as 
-         \build\classes\org\apache\tools\ant\listener\Log4jListener.class 
-             is outdated.
- [javac] org\apache\tools\ant\Location.java omitted as 
-         \build\classes\org\apache\tools\ant\Location.class is up to date.
-  ...
- [javac] Compiling 1 source file to \jakarta-ant\build\classes
- [javac] Using modern compiler
- [javac] Compilation args: -d \jakarta-ant\build\classes -classpath 
-         \jakarta-ant\build\classes;F:\jdk1.3\lib\tools.jar;
-         \Ant\lib\optional.jar;\Ant\lib\log4j.jar;
-         \Ant\lib\junit.jar;\Ant\lib\jaxp.jar;
-         \Ant\lib\crimson.jar;\Ant\lib\ant.jar 
-         -sourcepath \jakarta-ant\src\main -g:none -O
-    [javac] File to be compiled:
-    \src\main\org\apache\tools\ant\listener\Log4jListener.java  
-</source>
-
-            <p>
-              In many cases Ant tasks are wrappers around OS commands or other java classes. In debug mode, many
-              of these tasks will print out the equivalent command line, as the &lt;javac&gt; task above does. If 
-              you are having a problem, it is often useful to run the command directly in the same way Ant is doing 
-              and see if the problem persists. The problem may lie in the command being run by Ant, or in the way 
-              the Ant task is running the command. You can also see the effect of changing attribute values on the
-              generated command line. This can help you to understand whether you are using the correct attributes
-              and values.
-            </p>
-      </subsection>
-
-      <subsection name="Has it been fixed?">
-        <p>
-          After examining the debug output, you still believe that the problem you are having may be caused by Ant. 
-          Chances are that someone else may have already encountered this problem and perhaps it has been
-          fixed. The next step, therefore, may be to try a nightly build of Ant to see if the 
-          problem has been fixed. Nightly builds for Ant are available from the 
-          <a href="/builds/jakarta-ant/nightly/">Jakarta web site</a>. While Ant nightly
-          builds are typically quite stable and are used by <a href="/builds/gump/latest/">
-          Gump</a> to build many other Jakarta projects, these builds should be treated as experimental. You can 
-          install and verify whether your problem has been fixed. Note that nightly builds do not build many of the
-          optional tasks the come with Ant. A snapshot of these optional tasks is occasionally uploaded to the nightly 
-          download <a href="/builds/jakarta-ant/nightly/optional/">area</a>. Note that even 
-          this snapshot does not contain every optional task.
-        </p>
-      </subsection>
-      
-      <subsection name="Has it been reported?">
-        <p>
-          If the current nightly build doesn't resolve your problem, it is possible that someone else has reported
-          the issue. It is time to look at the <a href="http://nagoya.apache.org/bugzilla/">Apache Bug Database</a>.
-          This system is easy to use and it will let you search the 
-          <a href="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Ant&amp;short_desc=&amp;short_desc_type=substring&amp;long_desc=&amp;long_desc_type=substring&amp;bug_file_loc=&amp;bug_file_loc_type=substring&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_id">
-          currently open 
-          </a>.
-          and resolved bugs to see if your problem has already been reported.
-          If your problem has been reported, you can see whether any of the developers have commented, 
-          suggesting workarounds or the reason for the bug, etc. You may have more information to add (see about 
-          creating bug reports below), in which case, go right ahead and add it. If you can't add more information
-          you may just want to vote for this bug, and perhaps add yourself to the CC list to follow the progress of
-          this bug.
-        </p>
-      </subsection>
-      
-      <subsection name="Filing a Bug report">
-        <p>By this time you may have decided that there is a bug in Ant. You have a few choices at this 
-           point. You can send an email to the ant-user mailing list to see if others have encountered your issue
-           and how they may have worked around it. If after some discussion, you still feel you have a bug, it 
-           is time to create a bug report. This is a simple operation in the Bug Database. Please try to provide 
-           as much information as possible to assist the developers in resolving the bug. Please try to enter correct 
-           values for the various inputs when creating the bug. Once the bug is created you can add attachments to
-           the bug report. 
-        </p>
-        
-        <p>What information should you include in your bug report? The easiest bugs to fix are those which are most 
-           easily reproducible, so if you can, it is really helpful to produce a small test case that exhibits the
-           problem. In this case, you would attach the build file and other files necessary to reproduce the problem
-           probably packed together in an archive. If you can't produce a test case, you should try to include a 
-           snippet from your build file and the relevant sections from the debug out from Ant. Try to include the 
-           header information where Ant states the version, the OS and VM information etc. As the debug output is 
-           likely to be very large, you should try to remove the output which is not relevant. Once the bug is 
-           entered into the Bug Database, you will be kept informed about progress on the bug. If you receive email
-           asking for further information, please try to respond as it will aid in the resolution of your bug.
-        </p>
-      </subsection>
-
-      <subsection name="Asking for an enhancement">
-         <p>Sometimes, you may find that Ant just doesn't do what you want. It isn't a bug, as such, since Ant 
-            is working the way it is supposed to. Perhaps it is something that hasn't been thought of yet, or 
-            a completely new task. For these situations you will want to raise an enhancement request. 
-            Enhancement requests are managed using the same Apache Bug Database described above. 
-            These are just a different type of report. If you look in the database, you will see that one of 
-            the severity settings for a bug is &quot;Enhancement&quot;. So, just fill the bug report in, and 
-            in the description, state how you would like to have Ant enhanced. Again you should check whether
-            there are any existing enhancment requests that cover your needs. If so, just add your vote to these.
-         </p>
-      </subsection>
-      
-      <subsection name="Fixing the Bug">
-        <p>If you aren't satisfied just filing a bug report, you can try to find and fix the problem yourself. The 
-           best way to do that is by working against the latest code from CVS. Alternatively, you can work with the
-           source code from the source distributions available on the Jakarta website. If you are going to tackle the
-           issues at this level, you may want to discuss details on the ant-dev mailing list. Once you have a fix 
-           for the problem, you may either submit the patch to the ant-dev mailing list or enter into the Bug
-           Database as described above, attaching the patch. Using the Bug database has the advantage of tracking
-           the progress of your bug.
-        </p>
-      </subsection>
-      
-         
-    </section>
-    
-  </body>
-</document>
diff --git a/xdocs/resources.xml b/xdocs/resources.xml
deleted file mode 100644
index 46a4b1f..0000000
--- a/xdocs/resources.xml
+++ /dev/null
@@ -1,314 +0,0 @@
-<?xml version="1.0"?>
-<document>
-
-  <properties>
-    <author email="bodewig@apache.org">Stefan Bodewig</author>
-    <title>Resources</title>
-  </properties>
-
-  <body>
-
-    <section name="FAQs">
-      <subsection name="At Ant's website">
-        <table>
-          <tr>
-            <th>FAQ</th>
-            <td><a href="faq.html">http://jakarta.apache.org/ant/faq.html</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="jGuru">
-        <p>jGuru hosts an interactive Ant discussion forum and FAQ system</p>
-
-        <table>
-          <tr>
-            <th>Forum</th>
-            <td><a href="http://www.jguru.com/forums/home.jsp?topic=Ant">http://www.jguru.com/forums/home.jsp?topic=Ant</a></td>
-          </tr>
-          <tr>
-            <th>FAQ</th>
-            <td><a href="http://www.jguru.com/faq/home.jsp?topic=Ant">http://www.jguru.com/faq/home.jsp?topic=Ant</a></td>
-          </tr>
-        </table>
-      </subsection>
-    </section>
-    
-    <section name="Articles and Presentations">
-
-      <p>The following sections list articles and presentations written about Ant.  If
-      you've written something that should be included, please post it to one
-      of the mailing lists.</p>
-
-    </section>
-
-    <section name="Articles">
-
-      <subsection name="Ant in Anger: Using Ant in a Production Development
-      System">
-        <p>This document describes strategies and some basic examples of how to 
-        use Ant in larger team development projects.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td><a href="mailto:steve_l@iseran.com">Steve Loughran</a></td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="ant_in_anger.html">http://jakarta.apache.org/ant/ant_in_anger.html</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Ant Task Guidelines">
-        <p>This document describes how to write custom Ant tasks, and how to submit
-        them to potentially be included in Ant.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td><a href="mailto:steve_l@iseran.com">Steve Loughran</a></td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="ant_task_guidelines.html">http://jakarta.apache.org/ant/ant_task_guidelines.html</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Automating the build and test process">
-        <p>This article demonstrates an approach to the automated build and test process. Working with Ant 1.3 and the JUnit test framework, it shows how to automate a process that captures pertinent information about each test suite run, generates an attractive report, and e-mails the report.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td><a href="mailto:erik@hatcher.net">Erik Hatcher</a></td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.ibm.com/developerworks/java/library/j-junitmail/">http://www.ibm.com/developerworks/java/library/j-junitmail/</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Incremental development with Ant and JUnit">
-        <p>This article explores the benefits of unit testing with Ant and
-        JUnit, detailing how to develop automated unit tests and integrate them
-        into your build process.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td><a href="mailto:malcolm@nuearth.com">Malcolm Davis</a></td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www-106.ibm.com/developerworks/library/j-ant/?dwzone=java">http://www-106.ibm.com/developerworks/library/j-ant/?dwzone=java</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Automate your build process using Java and Ant">
-        <p>This article provides an introduction to using Ant with some basic
-        examples and by highlighting some of the important tasks.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td><a href="mailto:michael.cymerman@javaworld.com">Michael Cymerman</a></td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.javaworld.com/javaworld/jw-10-2000/jw-1020-ant.html">http://www.javaworld.com/javaworld/jw-10-2000/jw-1020-ant.html</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Short tutorial in Cactus&apos; (formerly J2EEUnit)
-      documentation">
-        <p>There is a short tutorial on how to use Ant in Cactus&apos;
-        documentation.  It has a slant towards build files that will be used
-        with Cactus.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td>Cactus development team</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://jakarta.apache.org/commons/cactus/ant.html">http://jakarta.apache.org/commons/cactus/ant.html</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Developing custom Ant tasks with VisualAge for Java">
-        <p>This article outlines how to integrate Ant into VisualAge for Java,
-        and how to write and debug custom tasks using the IDE and the
-        integrated debugger.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td><a href="mailto:glenn@somanetworks.com">Glenn McAllister</a></td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www7.software.ibm.com/vad.nsf/data/document2366?OpenDocument&amp;p=1&amp;BCT=1&amp;Footer=1">http://www7.software.ibm.com/vad.nsf/data/document2366?OpenDocument&amp;p=1&amp;BCT=1&amp;Footer=1</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Automated builds with VisualAge for Java and Ant">
-        <p>This article shows how you can perform command line builds with a
-        VisualAge for Java repository.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td><a href="mailto:glenn@somanetworks.com">Glenn McAllister</a></td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www7.software.ibm.com/vad.nsf/Data/Document4366?OpenDocument&amp;p=1&amp;BCT=3&amp;Footer=1">http://www7.software.ibm.com/vad.nsf/Data/Document4366?OpenDocument&amp;p=1&amp;BCT=3&amp;Footer=1</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Ant: A Build Tool from the Jakarta Project">
-        <p>This article is from the &quot;Best Practices&quot; section of
-        Sun&apos;s Dot-Com Builder Site.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td>Laura Geele Wang</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://dcb.sun.com/practices/profiles/ant.jsp">http://dcb.sun.com/practices/profiles/ant.jsp</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Making a Mountain Out of an Anthill">
-        <p>This article is from the June 2001 issue of the Java Developer&apos;
-        Journal.  You need to be a registered JDJ subscriber to view this
-        article.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td>Neal Ford</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.sys-con.com/java/archivesa.cfm?volume=06&amp;issue=06">http://www.sys-con.com/java/archivesa.cfm?volume=06&amp;issue=06</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Using Ant and Weblogic EJBs">
-        <p>This article describes how to use Ant to create Weblogic EJBs, and
-        some workarounds for issues you may encounter.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td>Jesse E. Tilly</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.onjava.com/pub/a/onjava/2001/06/25/antejb.html">http://www.onjava.com/pub/a/onjava/2001/06/25/antejb.html</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="An Introduction to Ant">
-        <p>This article is a short introduction into the basic
-        concepts of Ant.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td>Jayakrishnan Nair</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://varnam.org/articles/ant.html">http://varnam.org/articles/ant.html</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-    </section>
-
-    <section name="Presentations">
-
-      <subsection name="Ant - presented to the Tucson Java Users Group">
-        <p>A PowerPoint technical overview presentation on Ant.  Comes complete with a straightforward example demonstrating code compilation, JAR'ing, JUnit testing, JUnit reporting, and Zipping a distribution.  A few advanced topics are touched upon like property immutabality and using &lt;antcall&gt; to get around it, build listeners, and writing custom tasks.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td><a href="mailto:erik@hatcher.net">Erik Hatcher</a></td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://erik.hatcher.net/ant-jug.zip">http://erik.hatcher.net/ant-jug.zip</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Ant Build Tool">
-        <p>A PowerPoint presentation on Ant 1.2.  It provides a basic overview
-        of Ant&apos;s capabilities.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td><a href="mailto:chanezon@netscape.com">Patrick Chanezon</a></td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://people.netscape.com/chanezon/tech/ant/ant_preso.ppt">http://people.netscape.com/chanezon/tech/ant/ant_preso.ppt</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Ant">
-        <p>A detailed Ant 1.3 PowerPoint presentation, made at the St. Louis Java Users Group
-        meeting in March 2001.  Includes a detailed build file and basic
-        descriptions of all the built in and optional tasks.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td>Mark Volkmann</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.ociweb.com/javasig/knowledgebase/March2001/index.html">http://www.ociweb.com/javasig/knowledgebase/March2001/index.html</a></td>
-          </tr>
-        </table>
-      </subsection>
-
-      <subsection name="Modern Development Crises">
-        <p>This presentation is an overview of the current state of software
-        development today.  There are a couple of slides that briefly cover
-        Ant.</p>
-
-        <table>
-          <tr>
-            <th>Author:</th>
-            <td><a href="mailto:steve_l@iseran.com">Steve Loughran</a></td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://www.iseran.com/Steve/modern_development_processes.html">http://www.iseran.com/Steve/modern_development_processes.html</a></td>
-          </tr>
-        </table>
-      </subsection>
-    </section>
-  </body>
-</document>
diff --git a/xdocs/stylesheets/faq.vsl b/xdocs/stylesheets/faq.vsl
deleted file mode 100644
index fd4c8cf..0000000
--- a/xdocs/stylesheets/faq.vsl
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
-<!-- Content Stylesheet for Site -->
-
-    ## Defined variables
-    #set ($bodybg = "#ffffff")
-    #set ($bodyfg = "#000000")
-    #set ($bodylink = "#525D76")
-    #set ($bannerbg = "#525D76")
-    #set ($bannerfg = "#ffffff")
-    #set ($subbannerbg = "#828DA6")
-    #set ($subbannerfg = "#ffffff")
-    #set ($tablethbg = "#039acc")
-    #set ($tabletdbg = "#a0ddf0")
-    #set ($pound = "#" )
-    
-<!-- start the processing -->
-#faqs()
-<!-- end the processing -->
-
-## This is where the FAQ specific macro's live
-
-#macro (toc $section)
-  <table border="0" cellspacing="0" cellpadding="2" width="100%">
-    <tr><td bgcolor="$subbannerbg">
-      <font color="$subbannerfg" face="arial,helvetica,sanserif">
-        <strong>$section.getAttributeValue("title")</strong>
-      </font>
-    </td></tr>
-    <tr><td>
-      <blockquote>
-        <ul>
-        #foreach ($faq in $section.getChildren("faq") )
-          #subtoc ($faq)
-        #end
-        </ul>
-      </blockquote>
-    </td></tr>
-  </table>
-#end
-
-#macro (subtoc $faq)
-  #set ($id = $faq.getAttributeValue("id"))
-  <li><a href="$pound$id">
-  $xmlout.outputString($faq.getChild("question"), true)
-  </a></li>
-#end
-
-#macro (answers $section)
-  #foreach ($faq in $section.getChildren("faq") )
-    #faq ($faq)
-  #end
-#end
-
-#macro (faq $faq)
-  #set ($id = $faq.getAttributeValue("id"))
-  <a name="$id">
-  <table border="0" cellspacing="0" cellpadding="2" width="100%">
-    <tr><td bgcolor="$subbannerbg">
-      <font color="$subbannerfg" face="arial,helvetica,sanserif">
-        <strong>
-          $xmlout.outputString($faq.getChild("question"), true)
-        </strong>
-      </font>
-    </td></tr>
-    <tr><td>
-      <blockquote>
-        #foreach ($item in $faq.getChild("answer").getChildren())
-          #if ($item.getName().equals("img"))
-            #image ($item)
-          #elseif ($item.getName().equals("source"))
-            #source ($item)
-          #elseif ($item.getName().equals("table"))
-            #table ($item)
-          #else
-            $xmlout.outputString($item)
-          #end
-        #end
-      </blockquote>
-    </td></tr>
-  </table>
-  </a>
-#end
-
-#macro (faqs)
-  #header()
-  <table border="0" cellspacing="0" cellpadding="2" width="100%">
-    <tr><td bgcolor="$bannerbg">
-      <font color="$bannerfg" face="arial,helvetica,sanserif">
-        <strong>Questions</strong>
-      </font>
-    </td></tr>
-    <tr><td>
-      <blockquote>
-      #set ($allFaqSections = $root.getChildren("faqsection"))
-      #foreach ( $faqSection in $allFaqSections )
-        #toc ($faqSection)
-      #end
-      </blockquote>
-    </td></tr>
-  </table>
-
-  <table border="0" cellspacing="0" cellpadding="2" width="100%">
-    <tr><td bgcolor="$bannerbg">
-      <font color="$bannerfg" face="arial,helvetica,sanserif">
-        <strong>Answers</strong>
-      </font>
-    </td></tr>
-    <tr><td>
-      <blockquote>
-      #foreach ( $faqSection in $allFaqSections )
-        #answers ($faqSection)
-      #end
-      </blockquote>
-    </td></tr>
-  </table>
-  #footer()
-#end
diff --git a/xdocs/stylesheets/project.xml b/xdocs/stylesheets/project.xml
deleted file mode 100644
index a49a230..0000000
--- a/xdocs/stylesheets/project.xml
+++ /dev/null
@@ -1,50 +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="Ant">
-        <item name="Front Page"            
-              href="/index.html"/>
-        <item name="News"                 
-              href="/antnews.html"/>
-        <item name="Documentation"            
-              href="/manual/index.html"/>
-        <item name="External Tools and Tasks"
-              href="/external.html"/>
-        <item name="Resources"
-              href="/resources.html"/>
-        <item name="Ant FAQ"
-              href="/faq.html"/>
-        <item name="Having Problems?"
-              href="/problems.html"/>
-    </menu>
-
-    <menu name="Download">
-        <item name="Binaries"              href="/site/binindex.html"/>
-        <item name="Source Code"           href="/site/sourceindex.html"/>
-    </menu>
-
-    <menu name="Jakarta">
-        <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="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="http://nagoya.apache.org/bugzilla/enter_bug.cgi?product=Ant"/>
-        <item name="Enhancement Requests"  href="http://nagoya.apache.org/bugzilla/enter_bug.cgi?product=Ant&amp;bug_severity=Enhancement"/>
-    </menu>
-
-    </body>
-</project>
diff --git a/xdocs/stylesheets/site.vsl b/xdocs/stylesheets/site.vsl
deleted file mode 100644
index 925e8c9..0000000
--- a/xdocs/stylesheets/site.vsl
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
-<!-- Content Stylesheet for Site -->
-
-    ## Defined variables
-    #set ($bodybg = "#ffffff")
-    #set ($bodyfg = "#000000")
-    #set ($bodylink = "#525D76")
-    #set ($bannerbg = "#525D76")
-    #set ($bannerfg = "#ffffff")
-    #set ($subbannerbg = "#828DA6")
-    #set ($subbannerfg = "#ffffff")
-    #set ($tablethbg = "#039acc")
-    #set ($tabletdbg = "#a0ddf0")
-    
-<!-- start the processing -->
-#document()
-<!-- end the processing -->
-
-## This is where the common page macro's live
-
-#macro ( subsection $subsection)
-  <table border="0" cellspacing="0" cellpadding="2" width="100%">
-    <tr><td bgcolor="$subbannerbg">
-      <font color="$subbannerfg" face="arial,helvetica,sanserif">
-        <a name="$subsection.getAttributeValue("name")"><strong>$subsection.getAttributeValue("name")</strong></a>
-      </font>
-    </td></tr>
-    <tr><td>
-      <blockquote>
-      #foreach ( $items in $subsection.getChildren() )
-        #if ($items.getName().equals("img"))
-          #image ($items)
-        #elseif ($items.getName().equals("source"))
-          #source ($items)
-        #elseif ($items.getName().equals("table"))
-          #table ($items)
-        #else
-          $xmlout.outputString($items)
-        #end
-      #end
-      </blockquote>
-    </td></tr>
-  </table>
-#end
-
-#macro ( section $section)
-  <table border="0" cellspacing="0" cellpadding="2" width="100%">
-    <tr><td bgcolor="$bannerbg">
-      <font color="$bannerfg" face="arial,helvetica,sanserif">
-        <a name="$section.getAttributeValue("name")"><strong>$section.getAttributeValue("name")</strong></a>
-      </font>
-    </td></tr>
-    <tr><td>
-      <blockquote>
-      #foreach ( $items in $section.getChildren() )
-        #if ($items.getName().equals("img"))
-          #image ($items)
-        #elseif ($items.getName().equals("source"))
-          #source ($items)
-        #elseif ($items.getName().equals("table"))
-          #table ($items)
-        #elseif ($items.getName().equals("subsection"))
-          #subsection ($items)
-        #else
-          $xmlout.outputString($items)
-        #end
-      #end
-      </blockquote>
-    </td></tr>
-  </table>
-#end
-
-#macro (document)
-  #header()
-  #set ($allSections = $root.getChild("body").getChildren("section"))
-  #foreach ( $section in $allSections )
-    #section ($section)
-  #end
-  #footer()
-#end
diff --git a/xdocs/stylesheets/templates.vm b/xdocs/stylesheets/templates.vm
deleted file mode 100644
index fdfb11b..0000000
--- a/xdocs/stylesheets/templates.vm
+++ /dev/null
@@ -1,196 +0,0 @@
-## This is where the common macro's live
-
-#macro ( table $table)
-  <table>
-  #foreach ( $items in $table.getChildren() )
-    #if ($items.getName().equals("tr"))
-      #tr ($items)
-    #end
-  #end
-  </table>
-#end
-
-#macro ( tr $tr)
-  <tr>
-  #foreach ( $items in $tr.getChildren() )
-    #if ($items.getName().equals("td"))
-      #td ($items)
-    #elseif ($items.getName().equals("th"))
-      #th ($items)
-    #end
-  #end
-</tr>
-#end
-
-#macro ( td $value)
-  #if ($value.getAttributeValue("colspan"))
-    #set ($colspan = $value.getAttributeValue("colspan"))
-  #end
-  #if ($value.getAttributeValue("rowspan"))
-    #set ($rowspan = $value.getAttributeValue("rowspan"))
-  #end
-  <td bgcolor="$tabletdbg" colspan="$!colspan" rowspan="$!rowspan" 
-      valign="top" align="left">
-    <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-    #if ($value.getText().length() != 0 || $value.hasChildren())
-      $xmlout.outputString($value, true)
-    #else
-      &nbsp;
-    #end
-    </font>
-  </td>
-#end
-
-#macro ( th $value)
-  #if ($value.getAttributeValue("colspan"))
-    #set ($colspan = $value.getAttributeValue("colspan"))
-  #end
-  #if ($value.getAttributeValue("rowspan"))
-    #set ($rowspan = $value.getAttributeValue("rowspan"))
-  #end
-  <td bgcolor="$tablethbg" colspan="$!colspan" rowspan="$!rowspan" 
-      valign="top" align="left">
-    <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-    #if ($value.getText().length() != 0 || $value.hasChildren())
-      $xmlout.outputString($value, true)
-    #else
-      &nbsp;
-    #end
-    </font>
-  </td>
-#end
-
-#macro ( projectanchor $name $value )
-  #if ($value.startsWith("http://"))
-    <a href="$value">$name</a>
-  #elseif ($value.startsWith("/site"))
-    <a href="http://jakarta.apache.org$value">$name</a>
-  #else
-    <a href="$relativePath$value">$name</a>
-  #end
-#end
-
-#macro ( metaauthor $author $email )
-  <meta name="author" value="$author">
-  <meta name="email" value="$email">
-#end
-
-#macro ( image $value )
-  #if ($value.getAttributeValue("width"))
-    #set ($width=$value.getAttributeValue("width"))
-  #end
-  #if ($value.getAttributeValue("height"))
-    #set ($height=$value.getAttributeValue("height"))
-  #end
-  #if ($value.getAttributeValue("align"))
-    #set ($align=$value.getAttributeValue("align"))
-  #end
-  <img src="$relativePath$value.getAttributeValue("src")" 
-       width="$!width" height="$!height" align="$!align">
-#end
-
-#macro ( source $value)
-  <div align="left">
-    <table cellspacing="4" cellpadding="0" border="0">
-      <tr>
-        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
-        <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
-        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
-      </tr>
-      <tr>
-        <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
-        <td bgcolor="#ffffff"><pre>$escape.getText($value.getText())</pre></td>
-        <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
-      </tr>
-      <tr>
-        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
-        <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
-        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
-      </tr>
-    </table>
-  </div>
-#end
-
-#macro ( makeProject )
-  #set ($menus = $project.getChild("body").getChildren("menu"))
-  #foreach ( $menu in $menus )
-    <p><strong>$menu.getAttributeValue("name")</strong></p>
-    <ul>
-    #foreach ( $item in $menu.getChildren() )
-      #set ($name = $item.getAttributeValue("name"))
-      <li>#projectanchor($name $item.getAttributeValue("href"))</li>
-    #end
-    </ul>
-  #end
-#end
-
-#macro (getProjectImage)
-  #if ($project.getChild("logo"))
-    <td align="left">
-    <a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" border="0"/></a>
-    </td>
-    <td align="right">
-    #set ( $logoString = $project.getChild("logo").getAttributeValue("href") )
-    #if ( $logoString.startsWith("/") )
-      <a href="$project.getAttributeValue("href")"><img src="$relativePath$logoString" alt="$project.getChild("logo").getText()" border="0"/></a>
-    #else
-      <a href="$project.getAttributeValue("href")"><img src="$relativePath/$logoString" alt="$project.getChild("logo").getText()" border="0"/></a>
-    #end
-    </td>
-  #else
-    <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>
-  #end
-#end
-
-#macro (header)
-  <html>
-    <head>
-      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
-  
-      #set ($authors = $root.getChild("properties").getChildren("author"))
-      #foreach ( $au in $authors )
-        #metaauthor ( $au.getText() $au.getAttributeValue("email") )
-      #end
-  
-      <title>$project.getChild("title").getText() - $root.getChild("properties").getChild("title").getText()</title>
-    </head>
-  
-    <body bgcolor="$bodybg" text="$bodyfg" link="$bodylink">    
-      <table border="0" width="100%" cellspacing="0">
-        <!-- TOP IMAGE -->
-        <tr>
-          #getProjectImage()
-        </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">
-          #makeProject()
-          </td>
-          <td align="left" valign="top">
-#end
-
-#macro (footer)
-          </td>
-        </tr>
-
-        <!-- FOOTER -->
-        <tr><td colspan="2">
-          <hr noshade="" size="1"/>
-        </td></tr>
-        <tr><td colspan="2">
-          <div align="center"><font color="$bodylink" size="-1"><em>
-          Copyright &#169; 1999-2001, Apache Software Foundation
-          </em></font></div>
-        </td></tr>
-      </table>
-    </body>
-  </html>
-#end
diff --git a/xdocs/velocity.properties b/xdocs/velocity.properties
deleted file mode 100644
index 7327d96..0000000
--- a/xdocs/velocity.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-file.resource.loader.path=xdocs/stylesheets
-velocimacro.library=templates.vm