aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/manual/Types
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/manual/Types')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/antlib.html266
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/assertions.html208
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/classfileset.html119
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/custom-programming.html415
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/description.html46
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/dirset.html154
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/extension.html114
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/extensionset.html83
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/filelist.html120
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/fileset.html186
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/filterchain.html1739
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/filterset.html200
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/mapper.html972
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/multirootfileset.html173
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/namespace.html224
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/patternset.html192
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/permissions.html164
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/propertyset.html143
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/redirector.html193
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/regexp.html116
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/resources.html1380
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/selectors-program.html244
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/selectors.html1566
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/tarfileset.html182
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/xmlcatalog.html306
-rw-r--r--framework/src/ant/apache-ant-1.9.6/manual/Types/zipfileset.html148
26 files changed, 9653 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/antlib.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/antlib.html
new file mode 100644
index 00000000..925320ae
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/antlib.html
@@ -0,0 +1,266 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+ <head>
+ <meta http-equiv="Content-Language" content="en-us"></meta>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+ <title>AntLib</title>
+ </head>
+
+ <body>
+ <h2><a name="antlib">Antlib</a></h2>
+
+
+ <h3>Description</h3>
+ <p>
+ An antlib file is an xml file with a root element of "antlib".
+ Antlib's elements are Apache Ant definition tasks - like
+ <a href="../Tasks/taskdef.html">Taskdef</a>
+ or any Ant task that extends
+ <code>org.apache.tools.ant.taskdefs.AntlibDefinition</code>.
+ </p>
+ <p>
+ The current set of declarations bundled with Ant that do this are:
+ </p>
+ <ol>
+ <li><a href="../Tasks/typedef.html">Typedef</a>
+ </li>
+ <li><a href="../Tasks/taskdef.html">Taskdef</a>
+ </li>
+ <li><a href="../Tasks/macrodef.html">Macrodef</a>
+ </li>
+ <li><a href="../Tasks/presetdef.html">Presetdef</a>
+ </li>
+ <li><a href="../Tasks/scriptdef.html">Scriptdef</a>
+ </li>
+ </ol>
+ <p>
+ A group of tasks and types may be defined together in an antlib
+ file. For example the file <i>sample.xml</i> contains the following:
+ </p>
+ <blockquote>
+ <pre>
+&lt;?xml version="1.0"?&gt;
+&lt;antlib&gt;
+ &lt;typedef name="if" classname="org.acme.ant.If"/&gt;
+ &lt;typedef name="scriptpathmapper"
+ classname="org.acme.ant.ScriptPathMapper"
+ onerror="ignore"/&gt;
+ &lt;macrodef name="print"&gt;
+ &lt;attribute name="file"/&gt;
+ &lt;sequential&gt;
+ &lt;concat taskname="print"&gt;
+ &lt;fileset dir="." includes="@{file}"/&gt;
+ &lt;/concat&gt;
+ &lt;/sequential&gt;
+ &lt;/macrodef&gt;
+&lt;/antlib&gt;
+ </pre>
+ </blockquote>
+ <p>
+ It defines two types or tasks, <i>if</i> and <i>scriptpathmapper</i>.
+ This antlib file may be used in a build script as follows:
+ </p>
+ <blockquote>
+ <pre>
+&lt;typedef file="sample.xml"/&gt;
+ </pre>
+ </blockquote>
+ <p>
+ The other attributes of <code>&lt;typedef&gt;</code> may be used as well.
+ For example, assuming that the <i>sample.xml</i> is in a jar
+ file <i>sample.jar</i> also containing the classes, the
+ following build fragment will define the <i>if</i> and <i>scriptpathmapper</i>
+ tasks/types and place them in the namespace uri <i>samples:/acme.org</i>.
+ </p>
+ <blockquote>
+ <pre>
+&lt;typedef resource="org/acme/ant/sample.xml"
+ uri="samples:/acme.org"/&gt;
+ </pre>
+ </blockquote>
+ <p>
+ The definitions may then be used as follows:
+ </p>
+ <blockquote>
+ <pre>
+&lt;sample:if valuetrue="${props}" xmlns:sample="samples:/acme.org"&gt;
+ &lt;sample:scriptpathmapper language="beanshell"&gt;
+ some bean shell
+ &lt;/sample:scriptpathmapper&gt;
+&lt;/sample:if&gt;
+ </pre>
+ </blockquote>
+
+
+ <h3><a name="antlibnamespace">Antlib namespace</a></h3>
+ <p>
+ The name space URIs with the pattern <b>antlib:<i>java package</i></b>
+ are given special treatment.
+ </p>
+ <p>
+ When Ant encounters a element with a namespace URI with this pattern, it
+ will check to see if there is a resource of the name <i>antlib.xml</i> in
+ the package directory in the default classpath.
+ </p>
+ <p>
+ For example, assuming that the file <i>antcontrib.jar</i> has been placed
+ in the directory <i>${ant.home}/lib</i> and it contains the resource
+ <i>net/sf/antcontrib/antlib.xml</i> which has all antcontrib's definitions
+ defined, the following build file will automatically load the antcontrib
+ definitions at location <i>HERE</i>:
+ </p>
+ <blockquote>
+ <pre>
+&lt;project default="deletetest" xmlns:antcontrib="antlib:net.sf.antcontrib"&gt;
+ &lt;macrodef name="showdir"&gt;
+ &lt;attribute name="dir"/&gt;
+ &lt;sequential&gt;
+ &lt;antcontrib:shellscript shell="bash"&gt; &lt;!-- HERE --&gt;
+ ls -Rl @{dir}
+ &lt;/antcontrib:shellscript&gt;
+ &lt;/sequential&gt;
+ &lt;/macrodef&gt;
+
+ &lt;target name="deletetest"&gt;
+ &lt;delete dir="a" quiet="yes"/&gt;
+ &lt;mkdir dir="a/b"/&gt;
+ &lt;touch file="a/a.txt"/&gt;
+ &lt;touch file="a/b/b.txt"/&gt;
+ &lt;delete&gt;
+ &lt;fileset dir="a"/&gt;
+ &lt;/delete&gt;
+ &lt;showdir dir="a"/&gt;
+ &lt;/target&gt;
+&lt;/project&gt;
+ </pre>
+ </blockquote>
+ <p>
+ The requirement that the resource is in the default classpath
+ may be removed in future versions of Ant.</p>
+ </p>
+
+
+ <h3><a name="loadFromInside">Load antlib from inside of the buildfile</a></h3>
+ <p>
+ If you want to separate the antlib from your local Ant installation, e.g. because you
+ want to hold that jar in your projects SCM system, you have to specify a classpath, so
+ that Ant could find that jar. The best solution is loading the antlib with <tt>&lt;taskdef&gt;</tt>.
+ </p>
+ <blockquote>
+ <pre>
+&lt;project xmlns:<font color="green">antcontrib</font>="<font color="red">antlib:net.sf.antcontrib</font>"&gt;
+ &lt;taskdef uri="<font color="red">antlib:net.sf.antcontrib</font>"
+ resource="net/sf/antcontrib/antlib.xml"
+ classpath="path/to/ant-contrib.jar"/&gt;
+
+ &lt;target name="iterate"&gt;
+ &lt;<font color="green">antcontrib</font>:for param="file"&gt;
+ &lt;fileset dir="."/&gt;
+ &lt;sequential&gt;
+ &lt;echo message="- @{file}"/&gt;
+ &lt;/sequential&gt;
+ &lt;/antcontrib:for&gt;
+ &lt;/target&gt;
+&lt;/project&gt;
+ </pre>
+ </blockquote>
+
+
+
+
+ <h3><a name="currentnamespace">Current namespace</a></h3>
+ <p>
+ Definitions defined in antlibs may be used in antlibs. However
+ the namespace that definitions are placed in are dependent on
+ the <code>&lt;typedef&gt;</code> that uses the antlib. To deal with this
+ problem, the definitions are placed in the namespace URI <i>ant:current</i>
+ for the duration of the antlib execution.
+ For example the following antlib defines the task <code>&lt;if&gt;</code>, the
+ type <code>&lt;isallowed&gt;</code> and a macro
+ <code>&lt;ifallowed&gt;</code> that makes use of the task and type:
+ </p>
+ <blockquote>
+ <pre>
+&lt;antlib xmlns:current="ant:current"&gt;
+ &lt;taskdef name="if" classname="org.acme.ant.If"/&gt;
+ &lt;typedef name="isallowed" classname="org.acme.ant.Isallowed"/&gt;
+ &lt;macrodef name="ifallowed"&gt;
+ &lt;attribute name="action"/&gt;
+ &lt;element name="do"/&gt;
+ &lt;sequential&gt;
+ &lt;current:if&gt;
+ &lt;current:isallowed test="@{action}"/&gt;
+ &lt;current:then&gt;
+ &lt;do/&gt;
+ &lt;/current:then&gt;
+ &lt;/current:if&gt;
+ &lt;/sequential&gt;
+ &lt;/macrodef&gt;
+&lt;/antlib&gt;
+ </pre>
+ </blockquote>
+
+
+ <h3>Other examples and comments</h3>
+ <p>
+ Antlibs may make use of other antlibs.
+ </p>
+ <p>
+ As the names defined in the antlib are in the namespace uri as
+ specified by the calling <code>&lt;typedef&gt;</code> or by automatic element
+ resolution, one may reuse names from core ant types and tasks,
+ provided the caller uses a namespace uri. For example, the
+ following antlib may be used to define defaults for various
+ tasks:
+ </p>
+ <blockquote>
+ <pre>
+&lt;antlib xmlns:antcontrib="antlib:net.sf.antcontrib"&gt;
+ &lt;presetdef name="javac"&gt;
+ &lt;javac deprecation="${deprecation}"
+ debug="${debug}"/&gt;
+ &lt;/presetdef&gt;
+ &lt;presetdef name="delete"&gt;
+ &lt;delete quiet="yes"/&gt;
+ &lt;/presetdef&gt;
+ &lt;presetdef name="shellscript"&gt;
+ &lt;antcontrib:shellscript shell="bash"/&gt;
+ &lt;/presetdef&gt;
+&lt;/antlib&gt;
+ </pre>
+ </blockquote>
+ <p>
+ This may be used as follows:
+ </p>
+ <blockquote>
+ <pre>
+&lt;project xmlns:local="localpresets"&gt;
+ &lt;typedef file="localpresets.xml" uri="localpresets"/&gt;
+ &lt;local:shellscript&gt;
+ echo "hello world"
+ &lt;/local:shellscript&gt;
+&lt;/project&gt;
+ </pre>
+ </blockquote>
+
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/assertions.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/assertions.html
new file mode 100644
index 00000000..e168969f
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/assertions.html
@@ -0,0 +1,208 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Assertions type</title>
+</head>
+
+<body>
+
+<h2><a name="assertions">Assertions</a></h2>
+<p>
+The <tt>assertions</tt> type enables or disables the Java 1.4 assertions feature,
+on a whole Java program, or components of a program. It can be used
+in <a href="../Tasks/java.html"><code>&lt;java&gt;</code></a> and
+<a href="../Tasks/junit.html"><code>&lt;junit&gt;</code></a> to add extra validation to code.
+
+<p>
+Assertions are covered in the
+<a href="http://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html">Java SE documentation</a>,
+and the
+<a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.10">Java Language Specification</a>.
+
+<p>
+The key points to note are that a <tt>java.lang.AssertionError</tt>
+is thrown when an assertion fails, and that the facility is only available
+on Java 1.4 and later. To enable assertions one must set <tt>source="1.4"</tt>
+(or later) in <tt>&lt;javac&gt;</tt> when the source is being compiled, and
+that the code must contain <tt>assert</tt> statements to be tested. The
+result of such an action is code that neither compiles or runs on earlier
+versions of Java. For this reason Apache Ant itself currently contains no assertions.
+<p>
+
+When assertions are enabled (or disabled) in a task through nested
+assertions elements, the class loader or command line is modified with the
+appropriate options. This means that the JVM executed must be a Java 1.4
+or later JVM, even if there are no assertions in the code. Attempting to
+enable assertions on earlier VMs will result in an "Unrecognized option"
+error and the JVM will not start.
+
+<p>
+<h4>Attributes</h4>
+<p>
+
+
+</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">enableSystemAssertions</td>
+ <td valign="top">Flag to turn system assertions on or off.</td>
+ <td valign="top" align="center">No; default is "unspecified"</td>
+ </tr>
+</table>
+<p>
+When system assertions have been neither enabled nor disabled, then
+the JVM is not given any assertion information - the default action of the
+ current JVMs is to disable system assertions.
+<p>
+Note also that there is no apparent documentation for what parts of the
+JRE come with useful assertions.
+
+<h3>Nested elements</h3>
+
+<h4>enable</h4>
+<p>
+Enable assertions in portions of code.
+If neither a package nor class is specified, assertions are turned on in <i>all</i> (user) code.
+</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">class</td>
+ <td valign="top">The name of a class on which to enable assertions.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">package</td>
+ <td valign="top">
+ The name of a package in which to enable assertions on all classes. (Includes subpackages.)
+ Use "<tt>...</tt>" for the anonymous package.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+
+<h4>disable</h4>
+<p>
+Disable assertions in portions of code.
+
+</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">class</td>
+ <td valign="top">The name of a class on which to disable assertions.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">package</td>
+ <td valign="top">
+ The name of a package in which to disable assertions on all classes. (Includes subpackages.)
+ Use "<tt>...</tt>" for the anonymous package.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+<p>
+
+Because assertions are disabled by default, it only makes sense to disable
+assertions where they have been enabled in a parent package.
+
+
+<h4>Examples</h4>
+
+<h5>Example: enable assertions in all user classes</h5>
+
+All classes not in the JRE (i.e. all non-system classes) will have assertions turned on.
+<pre>
+&lt;assertions&gt;
+ &lt;enable/&gt;
+&lt;/assertions&gt;
+</pre>
+
+<h5>Example: enable a single class</h5>
+
+Enable assertions in a class called Test
+<pre>
+&lt;assertions&gt;
+ &lt;enable class="Test"/&gt;
+&lt;/assertions&gt;
+</pre>
+
+<h5>Example: enable a package</h5>
+
+Enable assertions in the <tt>org.apache</tt> package
+and all packages starting with the <tt>org.apache.</tt> prefix
+<pre>
+&lt;assertions&gt;
+ &lt;enable package="org.apache"/&gt;
+&lt;/assertions&gt;
+</pre>
+
+<h5>Example: System assertions</h5>
+
+Example: enable system assertions and assertions in all <tt>org.apache</tt> packages except
+for Ant (but including <tt>org.apache.tools.ant.Main</tt>)
+<pre>
+&lt;assertions enableSystemAssertions="true"&gt;
+ &lt;enable package="org.apache"/&gt;
+ &lt;disable package="org.apache.tools.ant"/&gt;
+ &lt;enable class="org.apache.tools.ant.Main"/&gt;
+&lt;/assertions&gt;
+</pre>
+
+<h5>Example: disabled and anonymous package assertions</h5>
+
+Disable system assertions; enable those in the anonymous package
+<pre>
+&lt;assertions enableSystemAssertions="false"&gt;
+ &lt;enable package="..."/&gt;
+&lt;/assertions&gt;
+</pre>
+
+
+<h5>Example: referenced assertions</h5>
+
+This type is a datatype, so you can declare assertions and use them later
+
+<pre>
+&lt;assertions id="project.assertions"&gt;
+ &lt;enable package="org.apache.test"/&gt;
+&lt;/assertions&gt;
+
+&lt;assertions refid="project.assertions"/&gt;
+</pre>
+
+
+</body>
+</html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/classfileset.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/classfileset.html
new file mode 100644
index 00000000..6145d979
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/classfileset.html
@@ -0,0 +1,119 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>ClassFileSet Type</title>
+</head>
+
+<body>
+<h2><a name="fileset">ClassFileSet</a></h2>
+<p>A classfileset is a specialized type of fileset which, given a set of
+&quot;root&quot; classes, will include all of the class files upon which the
+root classes depend. This is typically used to create a jar with all of the
+required classes for a particular application.
+</p>
+<p>
+classfilesets are typically used by reference. They are declared with an
+&quot;id&quot; value and this is then used as a reference where a normal fileset
+is expected.
+</p>
+<p>
+This type requires the <code>BCEL</code> library.
+</p>
+
+
+<h3>Attributes</h3>
+<p>The class fileset support the following attributes in addition
+to those supported by the
+<a href="../Types/fileset.html">standard fileset</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">rootclass</td>
+ <td valign="top">A single root class name</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+
+<h3>Nested Elements</h3>
+
+<h4>Root</h4>
+<p>
+When more than one root class is required, multiple nested <code>&lt;root&gt;</code> elements
+may be used
+</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">classname</td>
+ <td valign="top">The fully qualified name of the root class</td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+</table>
+
+<h4>RootFileSet</h4>
+<p>
+A root fileset is used to add a set of root classes from a fileset. In this case the entries in
+the fileset are expected to be Java class files. The name of the Java class is determined by the
+relative location of the classfile in the fileset. So, the file
+<code>org/apache/tools/ant/Project.class</code> corresponds to the Java class
+<code>org.apache.tools.ant.Project</code>.</p>
+
+<h4>Examples</h4>
+<blockquote><pre>
+&lt;classfileset id=&quot;reqdClasses" dir=&quot;${classes.dir}&quot;&gt;
+ &lt;root classname=&quot;org.apache.tools.ant.Project&quot;/&gt;
+&lt;/classfileset&gt;
+</pre></blockquote>
+
+<p>This example creates a fileset containing all the class files upon which the
+<code>org.apache.tools.ant.Project</code> class depends. This fileset could
+then be used to create a jar.
+</p>
+
+<blockquote><pre>
+&lt;jar destfile=&quot;minimal.jar&quot;&gt;
+ &lt;fileset refid=&quot;reqdClasses&quot;/&gt;
+&lt;/jar&gt;
+</pre></blockquote>
+
+<blockquote><pre>
+&lt;classfileset id=&quot;reqdClasses&quot; dir=&quot;${classes.dir}&quot;&gt;
+ &lt;rootfileset dir=&quot;${classes.dir}&quot; includes=&quot;org/apache/tools/ant/Project*.class&quot;/&gt;
+&lt;/classfileset&gt;
+</pre></blockquote>
+
+<p>This example constructs the classfileset using all the class with names starting with Project
+in the org.apache.tools.ant package</p>
+
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/custom-programming.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/custom-programming.html
new file mode 100644
index 00000000..96bade33
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/custom-programming.html
@@ -0,0 +1,415 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+ <head>
+ <meta http-equiv="Content-Language" content="en-us"></meta>
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Custom Components</title>
+ </head>
+ <body>
+ <h2>Custom Components</h2>
+ <h3>Overview</h3>
+ <p>
+ Custom components are conditions, selectors, filters and other
+ objects that are defined outside Apache Ant core.
+ </p>
+ <p>
+ In Ant 1.6 custom conditions, selectors and filters has
+ been overhauled.
+ </p>
+ <p>
+ It is now possible to define custom conditions, selectors and filters
+ that behave like Ant Core components.
+ This is achieved by allowing datatypes defined in build scripts
+ to be used as custom components if the class of the datatype
+ is compatible, or has been adapted by an adapter class.
+ </p>
+ <p>
+ The old methods of defining custom components are still supported.
+ </p>
+ <h3>Definition and use</h3>
+ <p>
+ A custom component is a normal Java class that implements a particular
+ interface or extends a particular class, or has been adapted to the
+ interface or class.
+ </p>
+ <p>
+ It is exactly like writing a
+ <a href="../develop.html#writingowntask">custom task</a>.
+ One defines attributes and nested elements by writing <i>setter</i>
+ methods and <i>add</i> methods.
+ </p>
+ <p>
+ After the class has been written, it is added to the ant system
+ by using <code>&lt;typedef&gt;</code>.
+ </p>
+ <h3><a name="customconditions">Custom Conditions</a></h3>
+ <p>
+ Custom conditions are datatypes that implement
+ <code>org.apache.tools.ant.taskdefs.condition.Condition</code>.
+ For example a custom condition that returns true if a
+ string is all upper case could be written as:
+ </p>
+ <blockquote>
+ <pre>
+package com.mydomain;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.condition.Condition;
+
+public class AllUpperCaseCondition implements Condition {
+ private String value;
+
+ // The setter for the "value" attribute
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ // This method evaluates the condition
+ public boolean eval() {
+ if (value == null) {
+ throw new BuildException("value attribute is not set");
+ }
+ return value.toUpperCase().equals(value);
+ }
+}
+ </pre>
+ </blockquote>
+
+ <p>
+ Adding the condition to the system is achieved as follows:
+ </p>
+ <blockquote>
+ <pre>
+&lt;typedef
+ name="alluppercase"
+ classname="com.mydomain.AllUpperCaseCondition"
+ classpath="${mydomain.classes}"/&gt;
+ </pre>
+ </blockquote>
+ <p>
+ This condition can now be used wherever a Core Ant condition
+ is used.
+ </p>
+ <blockquote>
+ <pre>
+&lt;condition property="allupper"&gt;
+ &lt;alluppercase value="THIS IS ALL UPPER CASE"/&gt;
+&lt;/condition&gt;
+ </pre>
+ </blockquote>
+ <h3><a name="customselectors">Custom Selectors</a></h3>
+ <p>
+ Custom selectors are datatypes that implement
+ <code>org.apache.tools.ant.types.selectors.FileSelector</code>.
+ </p>
+ <p>There is only one method required.
+ <code>public boolean isSelected(File basedir, String filename,
+ File file)</code>.
+ It returns true
+ or false depending on whether the given file should be
+ selected or not.
+ </p>
+ <p>
+ An example of a custom selection that selects filenames ending
+ in ".java" would be:
+ </p>
+ <blockquote>
+ <pre>
+package com.mydomain;
+import java.io.File;
+import org.apache.tools.ant.types.selectors.FileSelector;
+public class JavaSelector implements FileSelector {
+ public boolean isSelected(File b, String filename, File f) {
+ return filename.toLowerCase().endsWith(".java");
+ }
+}
+ </pre>
+ </blockquote>
+ <p>
+ Adding the selector to the system is achieved as follows:
+ </p>
+ <blockquote>
+ <pre>
+&lt;typedef
+ name="javaselector"
+ classname="com.mydomain.JavaSelector"
+ classpath="${mydomain.classes}"/&gt;
+ </pre>
+ </blockquote>
+ <p>
+ This selector can now be used wherever a Core Ant selector
+ is used, for example:
+ </p>
+ <blockquote>
+ <pre>
+&lt;copy todir="to"&gt;
+ &lt;fileset dir="src"&gt;
+ &lt;javaselector/&gt;
+ &lt;/fileset&gt;
+&lt;/copy&gt;
+ </pre>
+ </blockquote>
+
+ <p>
+ One may use
+ <code>org.apache.tools.ant.types.selectors.BaseSelector</code>,
+ a convenience class that provides reasonable default
+ behaviour.
+ It has some predefined behaviours you can take advantage
+ of. Any time you encounter a problem when setting attributes or
+ adding tags, you can call setError(String errmsg) and the class
+ will know that there is a problem. Then, at the top of your
+ <code>isSelected()</code> method call <code>validate()</code> and
+ a BuildException will be thrown with the contents of your error
+ message. The <code>validate()</code> method also gives you a
+ last chance to check your settings for consistency because it
+ calls <code>verifySettings()</code>. Override this method and
+ call <code>setError()</code> within it if you detect any
+ problems in how your selector is set up.
+ </p>
+ <p>
+ To write custom selector containers one should extend
+ <code>org.apache.tools.ant.types.selectors.BaseSelectorContainer</code>.
+ Implement the
+ <code>public boolean isSelected(File baseDir, String filename, File file)</code>
+ method to do the right thing. Chances are you'll want to iterate
+ over the selectors under you, so use
+ <code>selectorElements()</code> to get an iterator that will do
+ that.
+ </p>
+ <p>
+ For example to create a selector container that will select files
+ if a certain number of contained selectors select, one could write
+ a selector as follows:
+ </p>
+ <blockquote>
+ <pre>
+public class MatchNumberSelectors extends BaseSelectorContainer {
+ private int number = -1;
+ public void setNumber(int number) {
+ this.number = number;
+ }
+ public void verifySettings() {
+ if (number &lt; 0) {
+ throw new BuildException("Number attribute should be set");
+ }
+ }
+ public boolean isSelected(File baseDir, String filename, File file) {
+ validate();
+ int numberSelected = 0;
+ for (Enumeration e = selectorElements(); e.hasNextElement();) {
+ FileSelector s = (FileSelector) e.nextElement();
+ if (s.isSelected(baseDir, filename, file)) {
+ numberSelected++;
+ }
+ }
+ return numberSelected == number;
+ }
+}
+ </pre>
+ </blockquote>
+ <p>
+ To define and use this selector one could do:
+ </p>
+ <blockquote>
+ <pre>
+&lt;typedef name="numberselected"
+ classname="com.mydomain.MatchNumberSelectors"/&gt;
+...
+&lt;fileset dir="${src.path}"&gt;
+ &lt;numberselected number="2"&gt;
+ &lt;contains text="script" casesensitive="no"/&gt;
+ &lt;size value="4" units="Ki" when="more"/&gt;
+ &lt;javaselector/&gt;
+ &lt;/numberselected&gt;
+&lt;/fileset&gt;
+ </pre>
+ </blockquote>
+ <p>
+ <i>The custom selector</i>
+ </p>
+ <p>
+ The custom selector was the pre ant 1.6 way of defining custom selectors.
+ This method is still supported for backward compatibility.
+ </p>
+ <p>You can write your own selectors and use them within the selector
+ containers by specifying them within the <code>&lt;custom&gt;</code> tag.</p>
+
+ <p>To create a new Custom Selector, you have to create a class that
+ implements
+ <code>org.apache.tools.ant.types.selectors.ExtendFileSelector</code>.
+ The easiest way to do that is through the convenience base class
+ <code>org.apache.tools.ant.types.selectors.BaseExtendSelector</code>,
+ which provides all of the methods for supporting
+ <code>&lt;param&gt;</code> tags. First, override the
+ <code>isSelected()</code> method, and optionally the
+ <code>verifySettings()</code> method. If your custom
+ selector requires parameters to be set, you can also override
+ the <code>setParameters()</code> method and interpret the
+ parameters that are passed in any way you like. Several of the
+ core selectors demonstrate how to do that because they can
+ also be used as custom selectors.</p>
+
+
+ <p>Once that is written, you include it in your build file by using
+ the <code>&lt;custom&gt;</code> tag.
+ </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">classname</td>
+ <td valign="top">The name of your class that implements
+ <code>org.apache.tools.ant.types.selectors.FileSelector</code>.
+ </td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">classpath</td>
+ <td valign="top">The classpath to use in order to load the
+ custom selector class. If neither this classpath nor the
+ classpathref are specified, the class will be
+ loaded from the classpath that Ant uses.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">classpathref</td>
+ <td valign="top">A reference to a classpath previously
+ defined. If neither this reference nor the
+ classpath above are specified, the class will be
+ loaded from the classpath that Ant uses.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+ <p>Here is how you use <code>&lt;custom&gt;</code> to
+ use your class as a selector:
+ </p>
+
+ <blockquote><pre>
+&lt;fileset dir="${mydir}" includes="**/*"&gt;
+ &lt;custom classname="com.mydomain.MySelector"&gt;
+ &lt;param name="myattribute" value="myvalue"/&gt;
+ &lt;/custom&gt;
+&lt;/fileset&gt;
+ </pre></blockquote>
+
+
+ <p>The core selectors that can also be used as custom selectors
+ are</p>
+
+ <ul>
+ <li><a href="selectors.html#containsselect">Contains Selector</a> with
+ classname <code>org.apache.tools.ant.types.selectors.ContainsSelector</code>
+ </li>
+ <li><a href="selectors.html#dateselect">Date Selector</a> with
+ classname <code>org.apache.tools.ant.types.selectors.DateSelector</code>
+ </li>
+ <li><a href="selectors.html#depthselect">Depth Selector</a> with
+ classname <code>org.apache.tools.ant.types.selectors.DepthSelector</code>
+ </li>
+ <li><a href="selectors.html#filenameselect">Filename Selector</a> with
+ classname <code>org.apache.tools.ant.types.selectors.FilenameSelector</code>
+ </li>
+ <li><a href="selectors.html#sizeselect">Size Selector</a> with
+ classname <code>org.apache.tools.ant.types.selectors.SizeSelector</code>
+ </li>
+ </ul>
+
+ <p>Here is the example from the Depth Selector section rewritten
+ to use the selector through <code>&lt;custom&gt;</code>.</p>
+
+ <blockquote><pre>
+&lt;fileset dir="${doc.path}" includes="**/*"&gt;
+ &lt;custom classname="org.apache.tools.ant.types.selectors.DepthSelector"&gt;
+ &lt;param name="max" value="1"/&gt;
+ &lt;/custom&gt;
+&lt;/fileset&gt;
+ </pre></blockquote>
+
+ <p>Selects all files in the base directory and one directory below
+ that.</p>
+
+ <h3><a name="filterreaders">Custom Filter Readers</a></h3>
+ <p>
+ Custom filter readers selectors are datatypes that implement
+ <code>org.apache.tools.ant.types.filters.ChainableReader</code>.
+ </p>
+ <p>There is only one method required.
+ <code>Reader chain(Reader reader)</code>.
+ This returns a reader that filters input from the specified
+ reader.
+ </p>
+ <p>
+ For example a filterreader that removes every second character
+ could be:
+ </p>
+ <blockquote>
+ <pre>
+public class RemoveOddCharacters implements ChainableReader {
+ public Reader chain(Reader reader) {
+ return new BaseFilterReader(reader) {
+ int count = 0;
+ public int read() throws IOException {
+ while (true) {
+ int c = in.read();
+ if (c == -1) {
+ return c;
+ }
+ count++;
+ if ((count % 2) == 1) {
+ return c;
+ }
+ }
+ }
+ }
+ }
+}
+ </pre>
+ </blockquote>
+ <p>
+ For line oriented filters it may be easier to extend
+ <code>ChainableFilterReader</code> an inner class of
+ <code>org.apache.tools.ant.filters.TokenFilter</code>.
+ </p>
+ <p>
+ For example a filter that appends the line number could be
+ </p>
+ <blockquote>
+ <pre>
+public class AddLineNumber extends ChainableReaderFilter {
+ private void lineNumber = 0;
+ public String filter(String string) {
+ lineNumber++;
+ return "" + lineNumber + "\t" + string;
+ }
+}
+ </pre>
+ </blockquote>
+
+
+ <hr></hr>
+ </body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/description.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/description.html
new file mode 100644
index 00000000..85942be0
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/description.html
@@ -0,0 +1,46 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Apache Ant User Manual</title>
+</head>
+
+<body>
+
+<h2><a name="description">Description</a></h2>
+<h3>Description</h3>
+<p>Allows for a description of the project to be specified that
+will be included in the output of the <code>ant &#x2011;projecthelp</code>
+command.</p>
+
+<h3>Parameters</h3>
+<p>(none)</p>
+<h3>Examples</h3>
+<pre>
+&lt;description&gt;
+This buildfile is used to build the Foo subproject within
+the large, complex Bar project.
+&lt;/description&gt;
+</pre>
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/dirset.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/dirset.html
new file mode 100644
index 00000000..0434e9c2
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/dirset.html
@@ -0,0 +1,154 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>DirSet Type</title>
+</head>
+
+<body>
+
+<h2><a name="dirset">DirSet</a></h2>
+<p>A DirSet is a group of directories. These directories can be found in a
+directory tree starting in a base directory and are matched by
+patterns taken from a number of <a href="patternset.html">PatternSets</a>
+and <a href="selectors.html">Selectors</a>.
+</p>
+<p>PatternSets can be specified as nested
+<code>&lt;patternset&gt;</code> elements. In addition, DirSet holds
+an implicit PatternSet and supports the nested
+<code>&lt;include&gt;</code>, <code>&lt;includesfile&gt;</code>,
+<code>&lt;exclude&gt;</code> and <code>&lt;excludesfile&gt;</code>
+elements of <code>&lt;patternset&gt;</code> directly, as well as
+<code>&lt;patternset&gt;</code>'s attributes.</p>
+<p>Selectors are available as nested elements within the DirSet.
+If any of the selectors within the DirSet do not select the directory, it
+is not considered part of the DirSet. This makes a DirSet
+equivalent to an <code>&lt;and&gt;</code> selector container.</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">dir</td>
+ <td valign="top">The root of the directory tree of this DirSet.</td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">includes</td>
+ <td valign="top">A comma- or space-separated list of patterns of directories that
+ must be included; all directories are included when omitted.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">includesfile</td>
+ <td valign="top">The name of a file; each line of this file is
+ taken to be an include pattern.
+ <b>Note:</b> if the file is empty and there are no other
+ patterns defined for the fileset, all directories will be included.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">excludes</td>
+ <td valign="top">A comma- or space-separated list of patterns of directories that
+ must be excluded; no directories are excluded when omitted.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">excludesfile</td>
+ <td valign="top">The name of a file; each line of this file is
+ taken to be an exclude pattern.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">casesensitive</td>
+ <td valign="top">Specifies whether case-sensitivity should be applied
+ (<code>true</code>|<code>yes</code>|<code>on</code> or
+ <code>false</code>|<code>no</code>|<code>off</code>).</td>
+ <td valign="top" align="center">No; defaults to true.</td>
+ </tr>
+ <tr>
+ <td valign="top">followsymlinks</td>
+ <td valign="top">Shall symbolic links be followed? Defaults to
+ true. See <a href="fileset.html#symlink">fileset's documentation</a>.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">erroronmissingdir</td>
+ <td valign="top">
+ Specify what happens if the base directory does not exist.
+ If true a build error will happen, if false, the dirset
+ will be ignored/empty.
+ Defaults to true.
+ <em>Since Apache Ant 1.7.1 (default is true for backward compatibility
+ reasons.)</em>
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+
+<h4>Examples</h4>
+
+<blockquote><pre>
+&lt;dirset dir=&quot;${build.dir}&quot;&gt;
+ &lt;include name=&quot;apps/**/classes&quot;/&gt;
+ &lt;exclude name=&quot;apps/**/*Test*&quot;/&gt;
+&lt;/dirset&gt;
+</pre></blockquote>
+<p>Groups all directories named <code>classes</code> found under the
+<code>apps</code> subdirectory of <code>${build.dir}</code>, except those
+that have the text <code>Test</code> in their name.</p>
+
+<blockquote><pre>
+&lt;dirset dir=&quot;${build.dir}&quot;&gt;
+ &lt;patternset id=&quot;non.test.classes&quot;&gt;
+ &lt;include name=&quot;apps/**/classes&quot;/&gt;
+ &lt;exclude name=&quot;apps/**/*Test*&quot;/&gt;
+ &lt;/patternset&gt;
+&lt;/dirset&gt;
+</pre></blockquote>
+<p>Groups the same directories as the above example, but also establishes
+a PatternSet that can be referenced in other
+<code>&lt;dirset&gt;</code> elements, rooted at a different directory.</p>
+
+<blockquote><pre>
+&lt;dirset dir=&quot;${debug_build.dir}&quot;&gt;
+ &lt;patternset refid=&quot;non.test.classes&quot;/&gt;
+&lt;/dirset&gt;
+</pre></blockquote>
+<p>Groups all directories in directory <code>${debug_build.dir}</code>,
+using the same patterns as the above example.</p>
+
+<blockquote><pre>
+&lt;dirset id=&quot;dirset&quot; dir=&quot;${workingdir}&quot;&gt;
+ &lt;present targetdir=&quot;${workingdir}&quot;&gt;
+ &lt;mapper type=&quot;glob&quot; from=&quot;*&quot; to=&quot;*/${markerfile}&quot; /&gt;
+ &lt;/present&gt;
+&lt;/dirset&gt;
+</pre></blockquote>
+<p>Selects all directories somewhere under <code>${workingdir}</code>
+which contain a <code>${markerfile}</code>.</p>
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/extension.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/extension.html
new file mode 100644
index 00000000..b05c0a65
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/extension.html
@@ -0,0 +1,114 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Extension Type</title>
+</head>
+
+<body>
+<h2><a name="fileset">Extension</a></h2>
+<p>Utility type that represents either an available "Optional Package"
+ (formerly known as "Standard Extension") as described in the manifest
+ of a JAR file, or the requirement for such an optional package.</p>
+<p>Note that this type
+works with extensions as defined by the "Optional Package" specification.
+ For more information about optional packages, see the document
+<em>Optional Package Versioning</em> in the documentation bundle for your
+Java2 Standard Edition package, in file
+<code>guide/extensions/versioning.html</code> or the online
+<a href="http://docs.oracle.com/javase/7/docs/technotes/guides/versioning/spec/versioning2.html#wp90779">
+Package Versioning documentation.</p>
+
+<h3>Attributes</h3>
+<p>The extension type supports the following attributes</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">extensionName</td>
+ <td valign="top">The name of extension</td>
+ <td valign="top" align="center">yes</td>
+ </tr>
+ <tr>
+ <td valign="top">specificationVersion</td>
+ <td valign="top">The version of extension specification (Must be in
+ dewey decimal aka dotted decimal notation. 3.2.4)</td>
+ <td valign="top" align="center">no</td>
+ </tr>
+ <tr>
+ <td valign="top">specificationVendor</td>
+ <td valign="top">The specification vendor</td>
+ <td valign="top" align="center">no</td>
+ </tr>
+ <tr>
+ <td valign="top">implementationVersion</td>
+ <td valign="top">The version of extension implementation (Must be in
+ dewey decimal aka dotted decimal notation. 3.2.4)</td>
+ <td valign="top" align="center">no</td>
+ </tr>
+ <tr>
+ <td valign="top">implementationVendor</td>
+ <td valign="top">The implementation vendor</td>
+ <td valign="top" align="center">no</td>
+ </tr>
+ <tr>
+ <td valign="top">implementationVendorId</td>
+ <td valign="top">The implementation vendor ID</td>
+ <td valign="top" align="center">no</td>
+ </tr>
+ <tr>
+ <td valign="top">implementationURL</td>
+ <td valign="top">The url from which to retrieve extension.</td>
+ <td valign="top" align="center">no</td>
+ </tr>
+</table>
+
+<h4>Examples</h4>
+<blockquote><pre>
+&lt;extension id=&quot;e1&quot;
+ extensionName=&quot;MyExtensions&quot;
+ specificationVersion=&quot;1.0&quot;
+ specificationVendor=&quot;Peter Donald&quot;
+ implementationVendorID=&quot;vv&quot;
+ implementationVendor=&quot;Apache&quot;
+ implementationVersion=&quot;2.0&quot;
+ implementationURL=&quot;http://somewhere.com/myExt.jar&quot;/&gt;
+</pre></blockquote>
+
+<p>Fully specific extension object.</p>
+
+<blockquote><pre>
+&lt;extension id=&quot;e1&quot;
+ extensionName=&quot;MyExtensions&quot;
+ specificationVersion=&quot;1.0&quot;
+ specificationVendor=&quot;Peter Donald&quot;/&gt;
+</pre></blockquote>
+
+<p>Extension object that just species the specification details.</p>
+
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/extensionset.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/extensionset.html
new file mode 100644
index 00000000..f38c1ed1
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/extensionset.html
@@ -0,0 +1,83 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>ExtensionSet Type</title>
+</head>
+
+<body>
+<h2><a>ExtensionSet</a></h2>
+<p>Utility type that represents a set of Extensions.</p>
+<p>Note that this type
+works with extensions as defined by the "Optional Package" specification.
+ For more information about optional packages, see the document
+<em>Optional Package Versioning</em> in the documentation bundle for your
+Java2 Standard Edition package, in file
+<code>guide/extensions/versioning.html</code> or online at
+<a href="http://docs.oracle.com/javase/7/docs/technotes/guides/versioning/spec/versioning2.html#wp90779">
+Package Versioning documentation.</p>
+
+<h3>Nested Elements</h3>
+
+<h4>extension</h4>
+<p><a href="extension.html">Extension</a> object to add to set.</p>
+
+<h4>fileset</h4>
+ <p><a href="../Types/fileset.html">FileSet</a>s all files contained
+ contained within set that are jars and implement an extension are added
+ to extension set.</p>
+
+<h4>LibFileSet</h4>
+ <p>All files contained contained within set that are jars and implement
+ an extension are added to extension set. However the extension information
+ may be modified by attributes of libfileset</p>
+
+<h4>Examples</h4>
+<blockquote><pre>
+&lt;extension id=&quot;e1&quot;
+ extensionName=&quot;MyExtensions&quot;
+ specificationVersion=&quot;1.0&quot;
+ specificationVendor=&quot;Peter Donald&quot;
+ implementationVendorID=&quot;vv&quot;
+ implementationVendor=&quot;Apache&quot;
+ implementationVersion=&quot;2.0&quot;
+ implementationURL=&quot;http://somewhere.com/myExt.jar&quot;/&gt;
+
+&lt;libfileset id="lfs"
+ includeUrl="true"
+ includeImpl="false"
+ dir="tools/lib"&gt;
+ &lt;include name="*.jar"/&gt;
+&lt;/libfileset&gt;
+
+&lt;extensionSet id="exts"&gt;
+ &lt;libfileset dir="lib"&gt;
+ &lt;include name="*.jar"/&gt;
+ &lt;/libfileset&gt;
+ &lt;libfileset refid="lfs"/&gt;
+ &lt;extension refid="e1"/&gt;
+&lt;/extensionSet&gt;
+
+</pre></blockquote>
+
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/filelist.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/filelist.html
new file mode 100644
index 00000000..57c981d3
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/filelist.html
@@ -0,0 +1,120 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>FileList Type</title>
+</head>
+
+<body>
+
+<h2><a name="filelist">FileList</a></h2>
+
+<p>FileLists are explicitly named lists of files. Whereas FileSets
+act as filters, returning only those files that exist in the file
+system and match specified patterns, FileLists are useful for
+specifying files that may or may not exist. Multiple files are
+specified as a list of files, relative to the specified directory,
+with no support for wildcard expansion (filenames with wildcards will be
+included in the list unchanged).
+FileLists can appear inside tasks that support this feature or as stand-alone
+types.
+</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">dir</td>
+ <td valign="top">The base directory of this FileList.</td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">files</td>
+ <td valign="top">The list of file names. This is a list of
+ file name separated by whitespace, or by commas.</td>
+ <td valign="top" align="center">
+ Yes, unless there is a nested file element</td>
+ </tr>
+</table>
+ <h4>Nested Element: file</h4>
+ <p>
+ This represents a file name. The nested element allows filenames containing
+ white space and commas.
+ </p>
+ <p><em>Since Apache Ant 1.6.2</em></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">name</td>
+ <td valign="top">The name of the file.</td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+</table>
+<h4>Examples</h4>
+<blockquote><pre>
+&lt;filelist
+ id=&quot;docfiles&quot;
+ dir=&quot;${doc.src}&quot;
+ files=&quot;foo.xml,bar.xml&quot;/&gt;
+</pre></blockquote>
+
+<p>The files <code>${doc.src}/foo.xml</code> and
+<code>${doc.src}/bar.xml</code>. Note that these files may not (yet)
+actually exist.
+</p>
+
+<blockquote><pre>
+&lt;filelist
+ id=&quot;docfiles&quot;
+ dir=&quot;${doc.src}&quot;
+ files=&quot;foo.xml
+ bar.xml&quot;/&gt;
+</pre></blockquote>
+
+<p>Same files as the example above.</p>
+
+<blockquote><pre>
+&lt;filelist refid=&quot;docfiles&quot;/&gt;
+</pre></blockquote>
+
+<p>Same files as the example above.</p>
+
+<blockquote><pre>
+&lt;filelist
+ id=&quot;docfiles&quot;
+ dir=&quot;${doc.src}&quot;&gt;
+ &lt;file name="foo.xml"/&gt;
+ &lt;file name="bar.xml"/&gt;
+&lt;/filelist&gt;
+</pre></blockquote>
+
+<p>Same files as the example above.</p>
+
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/fileset.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/fileset.html
new file mode 100644
index 00000000..9a7c7d71
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/fileset.html
@@ -0,0 +1,186 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>FileSet Type</title>
+</head>
+
+<body>
+
+<h2><a name="fileset">FileSet</a></h2>
+<p>A FileSet is a group of files. These files can be found in a
+directory tree starting in a base directory and are matched by
+patterns taken from a number of <a
+href="patternset.html">PatternSets</a> and
+<a href="selectors.html">Selectors</a>.
+<p>PatternSets can be specified as nested
+<code>&lt;patternset&gt;</code> elements. In addition, FileSet holds
+an implicit PatternSet and supports the nested
+<code>&lt;include&gt;</code>, <code>&lt;includesfile&gt;</code>,
+<code>&lt;exclude&gt;</code> and <code>&lt;excludesfile&gt;</code>
+elements of PatternSet directly, as well as PatternSet's
+attributes.</p>
+<p>Selectors are available as nested elements within the FileSet.
+If any of the selectors within the FileSet do not select the file, the
+file is not considered part of the FileSet. This makes a FileSet
+equivalent to an <code>&lt;and&gt;</code> selector container.</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">dir</td>
+ <td valign="top">the root of the directory tree of this FileSet.</td>
+ <td valign="middle" align="center" rowspan="2">Either dir or file must be specified</td>
+ </tr>
+ <tr>
+ <td valign="top">file</td>
+ <td valign="top">shortcut for specifying a single-file fileset</td>
+ </tr>
+ <tr>
+ <td valign="top">defaultexcludes</td>
+ <td valign="top">indicates whether <a href="../dirtasks.html#defaultexcludes">default excludes</a> should be used or not
+ (<code>yes | no</code>); default excludes are used when omitted.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">includes</td>
+ <td valign="top">comma- or space-separated list of patterns of files that must be
+ included; all files are included when omitted.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">includesfile</td>
+ <td valign="top">the name of a file; each line of this file is
+ taken to be an include pattern.<br/>
+ <b>Note:</b> if the file is empty and there are no other
+ patterns defined for the fileset, all files will be included.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">excludes</td>
+ <td valign="top">comma- or space-separated list of patterns of files that must be
+ excluded; no files (except default excludes) are excluded when omitted.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">excludesfile</td>
+ <td valign="top">the name of a file; each line of this file is
+ taken to be an exclude pattern.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">casesensitive</td>
+ <td valign="top">Must the include and exclude patterns be treated in a case sensitive way?
+ Defaults to true.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">followsymlinks</td>
+ <td valign="top">Shall symbolic links be followed? Defaults to
+ true. See the note <a href="#symlink">below</a>.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">erroronmissingdir</td>
+ <td valign="top">
+ Specify what happens if the base directory does not exist.
+ If true a build error will happen, if false, the fileset
+ will be ignored/empty.
+ Defaults to true.
+ <em>Since Apache Ant 1.7.1 (default is true for backward compatibility
+ reasons.)</em>
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+
+<p><a name="symlink"><b>Note</b></a>: All files/directories for which
+the canonical path is different from its path are considered symbolic
+links. On Unix systems this usually means the file really is a
+symbolic link but it may lead to false results on other
+platforms.</p>
+
+<h4>Examples</h4>
+<blockquote><pre>
+&lt;fileset dir=&quot;${server.src}&quot; casesensitive=&quot;yes&quot;&gt;
+ &lt;include name=&quot;**/*.java&quot;/&gt;
+ &lt;exclude name=&quot;**/*Test*&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+<p>Groups all files in directory <code>${server.src}</code> that are Java
+source files and don't have the text <code>Test</code> in their
+name.</p>
+
+<blockquote><pre>
+&lt;fileset dir=&quot;${server.src}&quot; casesensitive=&quot;yes&quot;&gt;
+ &lt;patternset id=&quot;non.test.sources&quot;&gt;
+ &lt;include name=&quot;**/*.java&quot;/&gt;
+ &lt;exclude name=&quot;**/*Test*&quot;/&gt;
+ &lt;/patternset&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+<p>Groups the same files as the above example, but also establishes
+a PatternSet that can be referenced in other
+<code>&lt;fileset&gt;</code> elements, rooted at a different directory.</p>
+
+<blockquote><pre>
+&lt;fileset dir=&quot;${client.src}&quot; &gt;
+ &lt;patternset refid=&quot;non.test.sources&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+<p>Groups all files in directory <code>${client.src}</code>, using the
+same patterns as the above example.</p>
+
+<blockquote><pre>
+&lt;fileset dir=&quot;${server.src}&quot; casesensitive=&quot;yes&quot;&gt;
+ &lt;filename name=&quot;**/*.java&quot;/&gt;
+ &lt;filename name=&quot;**/*Test*&quot; negate=&quot;true&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+<p>Groups the same files as the top example, but using the
+<code>&lt;filename&gt;</code> selector.</p>
+
+<blockquote><pre>
+&lt;fileset dir=&quot;${server.src}&quot; casesensitive=&quot;yes&quot;&gt;
+ &lt;filename name=&quot;**/*.java&quot;/&gt;
+ &lt;not&gt;
+ &lt;filename name=&quot;**/*Test*&quot;/&gt;
+ &lt;/not&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+<p>Groups the same files as the previous example using a combination of the
+<code>&lt;filename&gt;</code> selector and the <code>&lt;not&gt;</code>
+selector container.</p>
+
+<blockquote><pre>
+&lt;fileset dir="src" includes="main/" /&gt;
+</pre></blockquote>
+<p>Selects all files in <i>src/main</i> (e.g. <i>src/main/Foo.java</i> or
+<i>src/main/application/Bar.java</i>).</p>
+
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/filterchain.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/filterchain.html
new file mode 100644
index 00000000..4de10ea3
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/filterchain.html
@@ -0,0 +1,1739 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>FilterChains and FilterReaders</title>
+</head>
+
+<body>
+
+<h2>FilterChains and FilterReaders</h2>
+Consider the flexibility of Unix pipes. If you wanted,
+for example, to copy just those lines that contained the
+string blee from the first 10 lines of a text file 'foo'
+(<em>you wouldn't want to filter a binary file</em>)
+to a file 'bar', you would do something like:<p>
+<code>
+cat foo|head -n10|grep blee &gt; bar
+</code><p>
+Apache Ant was not flexible enough. There was no way for the
+<code>&lt;copy&gt;</code> task to do something similar. If you wanted
+the <code>&lt;copy&gt;</code> task to get the first 10 lines, you would have
+had to create special attributes:<p>
+<code>
+&lt;copy file=&quot;foo&quot; tofile=&quot;bar&quot; head=&quot;10&quot; contains=&quot;blee&quot;/&gt;
+</code><p>
+The obvious problem thus surfaced: Ant tasks would not be able
+to accommodate such data transformation attributes as they would
+be endless. The task would also not know in which order these
+attributes were to be interpreted. That is, must the task execute the
+contains attribute first and then the head attribute or vice-versa?
+What Ant tasks needed was a mechanism to allow pluggable filter (data
+transformer) chains. Ant would provide a few filters for which there
+have been repeated requests. Users with special filtering needs
+would be able to easily write their own and plug them in.<p>
+
+The solution was to refactor data transformation oriented
+tasks to support FilterChains. A FilterChain is a group of
+ordered FilterReaders. Users can define their own FilterReaders
+by just extending the java.io.FilterReader class. Such custom
+FilterReaders can be easily plugged in as nested elements of
+<code>&lt;filterchain&gt;</code> by using <code>&lt;filterreader&gt;</code> elements.
+<p>
+Example:
+<blockquote><pre>
+&lt;copy file=&quot;${src.file}&quot; tofile=&quot;${dest.file}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;your.extension.of.java.io.FilterReader&quot;&gt;
+ &lt;param name=&quot;foo&quot; value=&quot;bar&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;filterreader classname=&quot;another.extension.of.java.io.FilterReader&quot;&gt;
+ &lt;classpath&gt;
+ &lt;pathelement path="${classpath}"/&gt;
+ &lt;/classpath&gt;
+ &lt;param name=&quot;blah&quot; value=&quot;blee&quot;/&gt;
+ &lt;param type=&quot;abra&quot; value=&quot;cadabra&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;/filterchain&gt;
+&lt;/copy&gt;
+</pre></blockquote>
+
+Ant provides some built-in filter readers. These filter readers
+can also be declared using a syntax similar to the above syntax.
+However, they can be declared using some simpler syntax also.<p>
+Example:
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;src.file.head&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;headfilter lines=&quot;15&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+is equivalent to:
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;src.file.head&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.HeadFilter&quot;&gt;
+ &lt;param name=&quot;lines&quot; value=&quot;15&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+The following built-in tasks support nested <code>&lt;filterchain&gt;</code> elements.<br>
+<a href="../Tasks/concat.html">Concat</a>,<br>
+<a href="../Tasks/copy.html">Copy</a>,<br>
+<a href="../Tasks/loadfile.html">LoadFile</a>,<br>
+<a href="../Tasks/loadproperties.html">LoadProperties</a>,<br>
+<a href="../Tasks/loadresource.html">LoadResource</a>,<br>
+<a href="../Tasks/move.html">Move</a><br><br>
+
+A FilterChain is formed by defining zero or more of the following
+nested elements.<br>
+<a href="#filterreader">FilterReader</a><br>
+<a href="#classconstants">ClassConstants</a><br>
+<a href="#escapeunicode">EscapeUnicode</a><br>
+<a href="#expandproperties">ExpandProperties</a><br>
+<a href="#headfilter">HeadFilter</a><br>
+<a href="#linecontains">LineContains</a><br>
+<a href="#linecontainsregexp">LineContainsRegExp</a><br>
+<a href="#prefixlines">PrefixLines</a><br>
+<a href="#replacetokens">ReplaceTokens</a><br>
+<a href="#stripjavacomments">StripJavaComments</a><br>
+<a href="#striplinebreaks">StripLineBreaks</a><br>
+<a href="#striplinecomments">StripLineComments</a><br>
+<a href="#suffixlines">SuffixLines</a><br>
+<a href="#tabstospaces">TabsToSpaces</a><br>
+<a href="#tailfilter">TailFilter</a><br>
+<a href="#deletecharacters">DeleteCharacters</a><br>
+<a href="#concatfilter">ConcatFilter</a><br>
+<a href="#tokenfilter">TokenFilter</a><br>
+<a href="../Tasks/fixcrlf.html">FixCRLF</a><br>
+<a href="#sortfilter">SortFilter</a><br>
+
+<h3><a name="filterreader">FilterReader</a></h3>
+
+The filterreader element is the generic way to
+define a filter. User defined filter elements are
+defined in the build file using this. Please note that
+built in filter readers can also be defined using this
+syntax.
+
+A FilterReader element must be supplied with a class name as
+an attribute value. The class resolved by this name must
+extend java.io.FilterReader. If the custom filter reader
+needs to be parameterized, it must implement
+org.apache.tools.type.Parameterizable.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>classname</td>
+ <td vAlign=top>The class name of the filter reader.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+</table>
+
+<p>
+<h4>Nested Elements:</h4>
+<code>&lt;filterreader&gt;</code> supports <code>&lt;classpath&gt;</code> and <code>&lt;param&gt;</code>
+as nested elements. Each <code>&lt;param&gt;</code> element may take in the following
+attributes - name, type and value.
+<p>
+The following FilterReaders are supplied with the default
+distribution.
+
+<h3><a name="classconstants">ClassConstants</a></h3>
+<p>
+ This filters basic constants defined in a Java Class,
+ and outputs them in lines composed of the format <i>name</i>=<i>value</i>.
+ This filter uses the <em>bcel</em> library to understand the Java Class file.
+ See <a href="../install.html#librarydependencies">Library Dependencies</a>.
+<p>
+ <p>
+ <em><b>Important:</b></em>
+ This filter is different from most of the other filters.
+ Most of the filters operate on a sequence of characters.
+ This filter operates on the sequence of bytes that makes up
+ a class. However the bytes arrive to the filter as a sequence
+ of characters. This means that one must be careful on the
+ choice of character encoding to use. Most encoding lose information
+ on conversion from an arbitrary sequence of bytes to characters
+ and back again to bytes. In particular the usual default
+ character encodings (CP152 and UTF-8) do.
+ For this reason, <em>since Ant 1.7</em>, the character
+ encoding <b>ISO-8859-1</b> is used to convert from characters back to
+ bytes, so one <b>has</b> to use this encoding for reading the java
+ class file.
+<h4>Example:</h4>
+
+This loads the basic constants defined in a Java class as Ant properties.
+
+<blockquote><pre>
+&lt;loadproperties srcfile="foo.class" encoding="ISO-8859-1"&gt;
+ &lt;filterchain&gt;
+ &lt;classconstants/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadproperties&gt;
+</pre></blockquote>
+
+This loads the constants from a Java class file as Ant properties,
+prepending the names with a prefix.
+
+ <blockquote><pre>
+&lt;loadproperties srcfile="build/classes/org/acme/bar.class"
+ encoding="ISO-8859-1"&gt;
+ &lt;filterchain&gt;
+ &lt;classconstants/&gt;
+ &lt;prefixlines prefix="ini."/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadproperties&gt;
+</pre></blockquote>
+<h3><a name="escapeunicode">EscapeUnicode</a></h3>
+<p>
+This filter converts its input by changing all non US-ASCII characters
+into their equivalent unicode escape backslash u plus 4 digits.</p>
+
+<p><em>since Ant 1.6</em></p>
+
+<h4>Example:</h4>
+
+This loads the basic constants defined in a Java class as Ant properties.
+<blockquote><pre>
+&lt;loadproperties srcfile=&quot;non_ascii_property.properties&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.EscapeUnicode&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadproperties&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;loadproperties srcfile=&quot;non_ascii_property.properties&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;escapeunicode/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadproperties&gt;
+</pre></blockquote>
+
+<h3><a name="expandproperties">ExpandProperties</a></h3>
+<p>
+If the data contains data that represents Ant
+properties (of the form ${...}), that is substituted
+with the property's actual value.
+<p>
+<h4>Example:</h4>
+
+This results in the property modifiedmessage holding the value
+&quot;All these moments will be lost in time, like teardrops in the rain&quot;
+<blockquote><pre>
+&lt;echo
+ message=&quot;All these moments will be lost in time, like teardrops in the ${weather}&quot;
+ file=&quot;loadfile1.tmp&quot;
+ /&gt;
+&lt;property name=&quot;weather&quot; value=&quot;rain&quot;/&gt;
+&lt;loadfile property=&quot;modifiedmessage&quot; srcFile=&quot;loadfile1.tmp&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.ExpandProperties&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;echo
+ message=&quot;All these moments will be lost in time, like teardrops in the ${weather}&quot;
+ file=&quot;loadfile1.tmp&quot;
+ /&gt;
+&lt;property name=&quot;weather&quot; value=&quot;rain&quot;/&gt;
+&lt;loadfile property=&quot;modifiedmessage&quot; srcFile=&quot;loadfile1.tmp&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;expandproperties/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+<p>As of Ant <strong>1.8.3</strong>, a nested
+ <a href="propertyset.html">PropertySet</a> can be specified:
+
+<blockquote><pre>
+&lt;property name=&quot;weather&quot; value=&quot;rain&quot;/&gt;
+&lt;loadfile property=&quot;modifiedmessage&quot; srcFile=&quot;loadfile1.tmp&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;expandproperties&gt;
+ &lt;propertyset&gt;
+ &lt;propertyref name="weather" /&gt;
+ &lt;/propertyset&gt;
+ &lt;/expandproperties&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+<h3><a name="headfilter">HeadFilter</a></h3>
+
+This filter reads the first few lines from the data supplied to it.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Name</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>lines</td>
+ <td vAlign=top align="center">Number of lines to be read.
+ Defaults to &quot;10&quot; <br> A negative value means that all lines are
+ passed (useful with <i>skip</i>)</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>skip</td>
+ <td vAlign=top align="center">Number of lines to be skipped (from the beginning).
+ Defaults to &quot;0&quot;</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+<p>
+<h4>Example:</h4>
+
+This stores the first 15 lines of the supplied data in the property src.file.head
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;src.file.head&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.HeadFilter&quot;&gt;
+ &lt;param name=&quot;lines&quot; value=&quot;15&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;src.file.head&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;headfilter lines=&quot;15&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+This stores the first 15 lines, skipping the first 2 lines, of the supplied data
+in the property src.file.head. (Means: lines 3-17)
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;src.file.head&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;headfilter lines=&quot;15&quot; skip=&quot;2&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+See the testcases for more examples (<i>src\etc\testcases\filters\head-tail.xml</i> in the
+source distribution).
+
+<h3><a name="linecontains">LineContains</a></h3>
+
+This filter includes only those lines that contain all the user-specified
+strings.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Type</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>contains</td>
+ <td vAlign=top align="center">Substring to be searched for.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+ <tr>
+ <td vAlign=top>negate</td>
+ <td vAlign=top align="center">Whether to select
+ <i>non-</i>matching lines only. <b>Since Ant 1.7</b></td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+<p>
+<h4>Example:</h4>
+
+This will include only those lines that contain <code>foo</code> and
+<code>bar</code>.
+<blockquote><pre>
+&lt;filterreader classname=&quot;org.apache.tools.ant.filters.LineContains&quot;&gt;
+ &lt;param type=&quot;contains&quot; value=&quot;foo&quot;/&gt;
+ &lt;param type=&quot;contains&quot; value=&quot;bar&quot;/&gt;
+&lt;/filterreader&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;linecontains&gt;
+ &lt;contains value=&quot;foo&quot;/&gt;
+ &lt;contains value=&quot;bar&quot;/&gt;
+&lt;/linecontains&gt;
+</pre></blockquote>
+
+Negation:
+<blockquote><pre>
+&lt;filterreader classname=&quot;org.apache.tools.ant.filters.LineContains&quot;&gt;
+ &lt;param type=&quot;negate&quot; value=&quot;true&quot;/&gt;
+ &lt;param type=&quot;contains&quot; value=&quot;foo&quot;/&gt;
+ &lt;param type=&quot;contains&quot; value=&quot;bar&quot;/&gt;
+&lt;/filterreader&gt;
+</pre></blockquote>
+<i>or</i>
+<blockquote><pre>
+&lt;linecontains negate=&quot;true&quot;&gt;
+ &lt;contains value=&quot;foo&quot;/&gt;
+ &lt;contains value=&quot;bar&quot;/&gt;
+&lt;/linecontains&gt;
+</pre></blockquote>
+
+<h3><a name="linecontainsregexp">LineContainsRegExp</a></h3>
+
+Filter which includes only those lines that contain the user-specified
+regular expression matching strings.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Type</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>regexp</td>
+ <td vAlign=top align="center">Regular expression to be searched for.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+ <tr>
+ <td vAlign=top>negate</td>
+ <td vAlign=top align="center">Whether to select
+ <i>non-</i>matching lines only. <b>Since Ant 1.7</b></td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>casesensitive</td>
+ <td vAlign=top align="center">Perform a case sensitive
+ match. Default is true. <b>Since Ant 1.8.2</b></td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+
+See <a href="regexp.html">Regexp Type</a> for the description of the nested element regexp and of
+the choice of regular expression implementation.
+<h4>Example:</h4>
+
+This will fetch all those lines that contain the pattern <code>foo</code>
+<blockquote><pre>
+&lt;filterreader classname=&quot;org.apache.tools.ant.filters.LineContainsRegExp&quot;&gt;
+ &lt;param type=&quot;regexp&quot; value=&quot;foo*&quot;/&gt;
+&lt;/filterreader&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;linecontainsregexp&gt;
+ &lt;regexp pattern=&quot;foo*&quot;/&gt;
+&lt;/linecontainsregexp&gt;
+</pre></blockquote>
+
+Negation:
+<blockquote><pre>
+&lt;filterreader classname=&quot;org.apache.tools.ant.filters.LineContainsRegExp&quot;&gt;
+ &lt;param type=&quot;negate&quot; value=&quot;true&quot;/&gt;
+ &lt;param type=&quot;regexp&quot; value=&quot;foo*&quot;/&gt;
+&lt;/filterreader&gt;
+</pre></blockquote>
+<i>or</i>
+<blockquote><pre>
+&lt;linecontainsregexp negate=&quot;true&quot;&gt;
+ &lt;regexp pattern=&quot;foo*&quot;/&gt;
+&lt;/linecontainsregexp&gt;
+</pre></blockquote>
+
+<h3><a name="prefixlines">PrefixLines</a></h3>
+
+Attaches a prefix to every line.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Name</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>prefix</td>
+ <td vAlign=top align="center">Prefix to be attached to lines.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+</table>
+<p>
+<h4>Example:</h4>
+
+This will attach the prefix <code>Foo</code> to all lines.
+<blockquote><pre>
+&lt;filterreader classname=&quot;org.apache.tools.ant.filters.PrefixLines&quot;&gt;
+ &lt;param name=&quot;prefix&quot; value=&quot;Foo&quot;/&gt;
+&lt;/filterreader&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;prefixlines prefix=&quot;Foo&quot;/&gt;
+</pre></blockquote>
+
+<h3><a name="suffixlines">SuffixLines</a></h3>
+
+Attaches a suffix to every line.
+
+<p><em>since Ant 1.8.0</em></p>
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Name</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>suffix</td>
+ <td vAlign=top align="center">Suffix to be attached to lines.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+</table>
+<p>
+<h4>Example:</h4>
+
+This will attach the suffix <code>Foo</code> to all lines.
+<blockquote><pre>
+&lt;filterreader classname=&quot;org.apache.tools.ant.filters.SuffixLines&quot;&gt;
+ &lt;param name=&quot;suffix&quot; value=&quot;Foo&quot;/&gt;
+&lt;/filterreader&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;suffixlines suffix=&quot;Foo&quot;/&gt;
+</pre></blockquote>
+
+<h3><a name="replacetokens">ReplaceTokens</a></h3>
+
+This filter reader replaces all strings that are
+sandwiched between begintoken and endtoken with
+user defined values.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Type</b></td>
+ <td vAlign=top><b>Parameter Name</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>tokenchar</td>
+ <td vAlign=top>begintoken</td>
+ <td vAlign=top>String marking the
+ beginning of a token. Defaults to @</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>tokenchar</td>
+ <td vAlign=top>endtoken</td>
+ <td vAlign=top>String marking the
+ end of a token. Defaults to @</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>User defined String.</td>
+ <td vAlign=top>token</td>
+ <td vAlign=top>User defined search String.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+ <tr>
+ <td vAlign=top>Not applicable.</td>
+ <td vAlign=top>propertiesfile</td>
+ <td vAlign=top>Properties file to take tokens from.</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>Not applicable.</td>
+ <td vAlign=top>propertiesResource</td>
+ <td vAlign=top>Properties resource to take tokens from.
+ Note this only works is you use the
+ "convenience" <code>&lt;replacetokens&gt;</code> syntax.
+ <em>since Ant 1.8.0</em></td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>User defined String.</td>
+ <td vAlign=top>value</td>
+ <td vAlign=top>Replace-value for the token</td>
+ <td vAlign=top align="center">No</td>
+ </tr></table>
+<p>
+
+<h4>Example:</h4>
+
+This replaces occurrences of the string &#64;DATE&#64; in the data
+with today's date and stores it in the property ${src.file.replaced}.
+<blockquote><pre>
+&lt;tstamp/&gt;
+&lt;!-- just for explaining the use of the properties --&gt;
+&lt;property name=&quot;src.file&quot; value=&quot;orders.csv&quot;/&gt;
+&lt;property name=&quot;src.file.replaced&quot; value=&quot;orders.replaced&quot;/&gt;
+
+&lt;!-- do the loading and filtering --&gt;
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.replaced}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.ReplaceTokens&quot;&gt;
+ &lt;param type=&quot;token&quot; name=&quot;DATE&quot; value=&quot;${TODAY}&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+
+&lt;!-- just for explaining the use of the properties --&gt;
+&lt;echo message=&quot;${orders.replaced}&quot;/>
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;tstamp/&gt;
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.replaced}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;replacetokens&gt;
+ &lt;token key=&quot;DATE&quot; value=&quot;${TODAY}&quot;/&gt;
+ &lt;/replacetokens&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+This replaces occurrences of the string {{DATE}} in the data
+with today's date and stores it in the property ${src.file.replaced}.
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.replaced}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.ReplaceTokens&quot;&gt;
+ &lt;param type=&quot;tokenchar&quot; name=&quot;begintoken&quot; value=&quot;{{&quot;/&gt;
+ &lt;param type=&quot;tokenchar&quot; name=&quot;endtoken&quot; value=&quot;}}&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;tstamp/&gt;
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.replaced}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;replacetokens begintoken=&quot;{{&quot; endtoken=&quot;}}&quot;&gt;
+ &lt;token key=&quot;DATE&quot; value=&quot;${TODAY}&quot;/&gt;
+ &lt;/replacetokens&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+This will treat each properties file entry in sample.properties as a token/key pair :
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.replaced}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.ReplaceTokens&quot;&gt;
+ &lt;param type=&quot;propertiesfile&quot; value=&quot;sample.properties&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+This reads the properties from an Ant resource referenced by its id:
+<blockquote><pre>
+&lt;string id=&quot;embedded-properties&quot;&gt;
+foo=bar
+baz=xyzzy
+&lt;/string&gt;
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.replaced}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;replacetokens propertiesResource=&quot;${ant.refid:embedded-properties}&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+<h3><a name="stripjavacomments">StripJavaComments</a></h3>
+
+This filter reader strips away comments from the data,
+using Java syntax guidelines. This filter does not
+take in any parameters.
+<p>
+<h4>Example:</h4>
+
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${java.src.file}&quot; property=&quot;${java.src.file.nocomments}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.StripJavaComments&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${java.src.file}&quot; property=&quot;${java.src.file.nocomments}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;stripjavacomments/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+<h3><a name="striplinebreaks">StripLineBreaks</a></h3>
+
+This filter reader strips away specific characters
+from the data supplied to it.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Name</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>linebreaks</td>
+ <td vAlign=top align="center">Characters that are to
+ be stripped out. Defaults to &quot;\r\n&quot;</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+<p>
+<h4>Examples:</h4>
+
+This strips the '\r' and '\n' characters.
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.contents}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.StripLineBreaks&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.contents}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;striplinebreaks/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+This treats the '(' and ')' characters as line break characters and
+strips them.
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.contents}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.StripLineBreaks&quot;&gt;
+ &lt;param name=&quot;linebreaks&quot; value=&quot;()&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+<h3><a name="striplinecomments">StripLineComments</a></h3>
+
+This filter removes all those lines that begin with strings
+that represent comments as specified by the user.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Type</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>comment</td>
+ <td vAlign=top align="center">Strings that identify a line as a comment
+ when they appear at the start of the line.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+</table>
+<p>
+<h4>Examples:</h4>
+
+This removes all lines that begin with #, --, REM, rem and //
+<blockquote><pre>
+&lt;filterreader classname=&quot;org.apache.tools.ant.filters.StripLineComments&quot;&gt;
+ &lt;param type=&quot;comment&quot; value=&quot;#&quot;/&gt;
+ &lt;param type=&quot;comment&quot; value=&quot;--&quot;/&gt;
+ &lt;param type=&quot;comment&quot; value=&quot;REM &quot;/&gt;
+ &lt;param type=&quot;comment&quot; value=&quot;rem &quot;/&gt;
+ &lt;param type=&quot;comment&quot; value=&quot;//&quot;/&gt;
+&lt;/filterreader&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;striplinecomments&gt;
+ &lt;comment value=&quot;#&quot;/&gt;
+ &lt;comment value=&quot;--&quot;/&gt;
+ &lt;comment value=&quot;REM &quot;/&gt;
+ &lt;comment value=&quot;rem &quot;/&gt;
+ &lt;comment value=&quot;//&quot;/&gt;
+&lt;/striplinecomments&gt;
+</pre></blockquote>
+
+<h3><a name="tabstospaces">TabsToSpaces</a></h3>
+
+This filter replaces tabs with spaces
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Name</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>tablength</td>
+ <td vAlign=top align="center">Defaults to &quot;8&quot;</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+<p>
+<h4>Examples:</h4>
+
+This replaces tabs in ${src.file} with spaces.
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.notab}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.TabsToSpaces&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.notab}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;tabstospaces/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+<h3><a name="tailfilter">TailFilter</a></h3>
+
+This filter reads the last few lines from the data supplied to it.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Name</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>lines</td>
+ <td vAlign=top align="center">Number of lines to be read.
+ Defaults to &quot;10&quot; <br> A negative value means that all lines are
+ passed (useful with <i>skip</i>)</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>skip</td>
+ <td vAlign=top align="center">Number of lines to be skipped (from the end).
+ Defaults to &quot;0&quot; </td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+<p>
+
+<h4>Background:</h4>
+With HeadFilter and TailFilter you can extract each part of a text file you want.
+This graphic shows the dependencies:
+
+<table cellSpacing=0 cellPadding=2 border=1>
+<tr>
+ <th> Content </th>
+ <th></th>
+ <th></th>
+ <th></th>
+ <th> Filter </th>
+</tr>
+<tr>
+ <td> Line 1 </td>
+ <td rowspan="2" bgcolor="#C0C0C0">&nbsp;</td>
+ <td rowspan="9" bgcolor="#FF00FF">&nbsp;</td>
+ <td rowspan="4">&nbsp;</td>
+ <td rowspan="11">
+ <table>
+ <tr>
+ <td bgcolor="#C0C0C0">&nbsp;</td>
+ <td><pre>&lt;filterchain&gt;
+ &lt;headfilter lines="2"/&gt;
+&lt;/filterchain&gt;</pre></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FF00FF">&nbsp;</td>
+ <td><pre>&lt;filterchain&gt;
+ &lt;tailfilter lines="-1" skip="2"/&gt;
+&lt;/filterchain&gt;</pre></td>
+ </tr>
+ <tr>
+ <td bgcolor="#008000">&nbsp;</td>
+ <td><pre>&lt;filterchain&gt;
+ &lt;headfilter lines="-1" skip="2"/&gt;
+&lt;/filterchain&gt;</pre></td>
+ </tr>
+ <tr>
+ <td bgcolor="#0000FF">&nbsp;</td>
+ <td><pre>&lt;filterchain&gt;
+ &lt;headfilter lines="-1" skip="2"/&gt;
+ &lt;tailfilter lines="-1" skip="2"/&gt;
+&lt;/filterchain&gt;</pre></td>
+ </tr>
+ <tr>
+ <td bgcolor="#00FF00">&nbsp;</td>
+ <td><pre>&lt;filterchain&gt;
+ &lt;tailfilter lines="2"/&gt;
+&lt;/filterchain&gt;</pre></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td> Line 2 </td>
+</tr>
+<tr>
+ <td> Line 3 </td>
+ <td rowspan="9" bgcolor="#008000">&nbsp;</td>
+</tr>
+<tr>
+ <td> Line 4 </td>
+</tr>
+<tr>
+ <td> Line 5 </td>
+ <td rowspan="3" bgcolor="#0000FF">&nbsp;</td>
+</tr>
+<tr>
+ <td> Lines ... </td>
+</tr>
+<tr>
+ <td> Line 95 </td>
+</tr>
+<tr>
+ <td> Line 96 </td>
+ <td rowspan="4">&nbsp;</td>
+</tr>
+<tr>
+ <td> Line 97 </td>
+</tr>
+<tr>
+ <td> Line 98 </td>
+ <td rowspan="2" bgcolor="#00FF00">&nbsp;</td>
+</tr>
+<tr>
+ <td> Line 99 </td>
+</tr>
+</table>
+
+
+
+<h4>Examples:</h4>
+
+This stores the last 15 lines of the supplied data in the property ${src.file.tail}
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.tail}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.TailFilter&quot;&gt;
+ &lt;param name=&quot;lines&quot; value=&quot;15&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.tail}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;tailfilter lines=&quot;15&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+
+This stores the last 5 lines of the first 15 lines of the supplied
+data in the property ${src.file.mid}
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.mid}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.HeadFilter&quot;&gt;
+ &lt;param name=&quot;lines&quot; value=&quot;15&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.TailFilter&quot;&gt;
+ &lt;param name=&quot;lines&quot; value=&quot;5&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+Convenience method:
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;${src.file.mid}&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;headfilter lines=&quot;15&quot;/&gt;
+ &lt;tailfilter lines=&quot;5&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+
+This stores the last 10 lines, skipping the last 2 lines, of the supplied data
+in the property src.file.head. (Means: if supplied data contains 60 lines,
+lines 49-58 are extracted)
+<blockquote><pre>
+&lt;loadfile srcfile=&quot;${src.file}&quot; property=&quot;src.file.head&quot;&gt;
+ &lt;filterchain&gt;
+ &lt;tailfilter lines=&quot;10&quot; skip=&quot;2&quot;/&gt;
+ &lt;/filterchain&gt;
+&lt;/loadfile&gt;
+</pre></blockquote>
+
+<h3><a name="deletecharacters">DeleteCharacters</a></h3>
+
+ <p>This filter deletes specified characters.</p>
+ <p><em>since Ant 1.6</em></p>
+ <p>This filter is only available in the convenience form.</p>
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Name</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>chars</td>
+ <td vAlign=top>
+ The characters to delete. This attribute is
+ <a href="#backslash">backslash enabled</a>.
+ </td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+</table>
+<p>
+<h4>Examples:</h4>
+
+Delete tabs and returns from the data.
+<blockquote><pre>
+&lt;deletecharacters chars="\t\r"/&gt;
+</pre></blockquote>
+
+<h3><a name="concatfilter">ConcatFilter</a></h3>
+ <p>This filter prepends or appends the content file to the filtered files.</p>
+ <p><em>since Ant 1.6</em></p>
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Name</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>prepend</td>
+ <td vAlign=top>
+ The name of the file which content should be prepended to the file.
+ </td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>append</td>
+ <td vAlign=top>
+ The name of the file which content should be appended to the file.
+ </td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+<p>
+
+<h4>Examples:</h4>
+
+Do nothing:
+<blockquote><pre>
+&lt;filterchain&gt;
+ &lt;concatfilter/&gt;
+&lt;/filterchain&gt;
+</pre></blockquote>
+
+Adds a license text before each java source:
+<blockquote><pre>
+&lt;filterchain&gt;
+ &lt;concatfilter prepend="apache-license-java.txt"/&gt;
+&lt;/filterchain&gt;
+</pre></blockquote>
+
+
+
+<h3><a name="tokenfilter">TokenFilter</a></h3>
+This filter tokenizes the inputstream into strings and passes these
+strings to filters of strings. Unlike the other filterreaders, this does
+not support params, only convenience methods are implemented.
+The tokenizer and the string filters are defined by nested elements.
+<p><em>since Ant 1.6</em></p>
+<p>
+Only one tokenizer element may be used, the LineTokenizer is the
+default if none are specified. A tokenizer
+splits the input into token strings and trailing delimiter strings.
+<p>
+There may be zero or more string filters. A string filter processes
+a token and either returns a string or a null.
+It the string is not null it is passed to the next filter. This
+proceeds until all the filters are called.
+If a string is returned after all the filters, the string is
+outputs with its associated token delimiter
+(if one is present).
+The trailing delimiter may be overridden by the <i>delimOutput</i>
+attribute.
+<p>
+<a name="backslash"><em>backslash interpretation</em></a>
+A number of attributes (including <i>delimOutput</i>) interpret
+backslash escapes. The following are understood: \n, \r, \f, \t
+and \\.
+
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>delimOutput</td>
+ <td vAlign=top>
+ This overrides the tokendelimiter
+ returned by the tokenizer if it is not empty. This
+ attribute is backslash enabled.
+</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+<p>
+
+ The following tokenizers are provided by the default distribution.
+ <p>
+ <a href="#linetokenizer">LineTokenizer</a><br>
+ <a href="#filetokenizer">FileTokenizer</a><br>
+ <a href="#stringtokenizer">StringTokenizer</a><br>
+ </p>
+
+ The following string filters are provided by the default distribution.
+ <p>
+ <a href="#replacestring">ReplaceString</a><br>
+ <a href="#containsstring">ContainsString</a><br>
+ <a href="#replaceregex">ReplaceRegex</a><br>
+ <a href="#containsregex">ContainsRegex</a><br>
+ <a href="#trim">Trim</a><br>
+ <a href="#ignoreblank">IgnoreBlank</a><br>
+ <a href="#filterdeletecharacters">DeleteCharacters</a><br>
+ <a href="#uniqfilter">UniqFilter</a><br>
+ </p>
+
+ The following string filters are provided by the optional distribution.
+ <p>
+ <a href="#scriptfilter">ScriptFilter</a><br>
+ </p>
+
+Some of the filters may be used directly within a filter chain. In this
+case a tokenfilter is created implicitly. An extra attribute "byline"
+is added to the filter to specify whether to use a linetokenizer
+(byline="true") or a filetokenizer (byline="false"). The default
+is "true".
+<p>
+
+<p><b><em><a name="linetokenizer">LineTokenizer</a></em></b></p>
+This tokenizer splits the input into lines.
+The tokenizer delimits lines
+by "\r", "\n" or "\r\n".
+This is the default tokenizer.
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>includeDelims</td>
+ <td vAlign=top>
+ Include the line endings in the token.
+ Default is false.
+ </td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+<h4>Examples:</h4>
+
+Convert input current line endings to unix style line endings.
+<blockquote><pre>
+&lt;tokenfilter delimoutput=&quot;\n&quot;/&gt;
+</pre></blockquote>
+
+
+Remove blank lines.
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;ignoreblank/&gt;
+&lt;/tokenfilter&gt;
+
+</pre></blockquote>
+
+<p><b><em><a name="filetokenizer">FileTokenizer</a></em></b></p>
+This tokenizer treats <b>all</b> the input as a token. So be
+careful not to use this on very large input.
+<h4>Examples:</h4>
+
+Replace the first occurrence of package with //package.
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;filetokenizer/&gt;
+ &lt;replaceregex pattern="([\n\r]+[ \t]*|^[ \t]*)package"
+ flags="s"
+ replace="\1//package"/&gt;
+&lt;/tokenfilter&gt;
+</pre></blockquote>
+
+<p><b><em><a name="stringtokenizer">StringTokenizer</a></em></b></p>
+This tokenizer is based on java.util.StringTokenizer.
+It splits up the input into strings separated by white space, or
+by a specified list of delimiting characters.
+If the stream starts with delimiter characters, the first
+token will be the empty string (unless the <i>delimsaretokens</i>
+attribute is used).
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>delims</td>
+ <td vAlign=top>The delimiter characters. White space
+ is used if this is not set. (White space is defined
+ in this case by java.lang.Character.isWhitespace()).
+ </td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">delimsaretokens</td>
+ <td valign="top">If this is true,
+ each delimiter character is returned as a token.
+ Default is false.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">suppressdelims</td>
+ <td valign="top">
+ If this is true, delimiters are not returned.
+ Default is false.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>includeDelims</td>
+ <td vAlign=top>
+ Include the delimiters in the token.
+ Default is false.
+ </td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+
+<h4>Examples:</h4>
+
+Surround each non space token with a "[]".
+
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;stringtokenizer/&gt;
+ &lt;replaceregex pattern="(.+)" replace="[\1]"/&gt;
+&lt;/tokenfilter&gt;
+
+</pre></blockquote>
+
+<p><b><em><a name="replacestring">ReplaceString</a></em></b></p>
+This is a simple filter to replace strings.
+This filter may be used directly within a filterchain.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>from</td>
+ <td vAlign=top>The string that must be replaced.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">to</td>
+ <td valign="top">The new value for the replaced string. When omitted
+ an empty string is used.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+
+<h4>Examples:</h4>
+
+Replace "sun" with "moon".
+
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;replacestring from="sun" to="moon"/&gt;
+&lt;/tokenfilter&gt;
+</pre></blockquote>
+
+<p><b><em><a name="containsstring">ContainsString</a></em></b></p>
+This is a simple filter to filter tokens that contains
+a specified string.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>contains</td>
+ <td vAlign=top>The string that the token must contain.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+</table>
+
+<h4>Examples:</h4>
+
+Include only lines that contain "foo";
+
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;containsstring contains="foo"/&gt;
+&lt;/tokenfilter&gt;
+
+</pre></blockquote>
+
+<p><b><em><a name="replaceregex">ReplaceRegex</a></em></b></p>
+This string filter replaces regular expressions.
+This filter may be used directly within a filterchain.
+<p>
+ See <a href="regexp.html#implementation">Regexp Type</a>
+concerning the choice of the implementation.
+</p>
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>pattern</td>
+ <td vAlign=top>The regular expression pattern to match in
+ the token.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+ <tr>
+ <td vAlign=top>replace</td>
+ <td vAlign=top>The substitution pattern to replace the matched
+ regular expression. When omitted an empty string is used.</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>flags</td>
+ <td vAlign=top>See
+<a href="../Tasks/replaceregexp.html">ReplaceRegexp</a>
+for an explanation of regex flags.</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+<h4>Examples:</h4>
+
+Replace all occurrences of "hello" with "world", ignoring case.
+
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;replaceregex pattern="hello" replace="world" flags="gi"/&gt;
+&lt;/tokenfilter&gt;
+
+</pre></blockquote>
+
+<p><b><em><a name="containsregex">ContainsRegex</a></em></b></p>
+This filters strings that match regular expressions.
+The filter may optionally replace the matched regular expression.
+This filter may be used directly within a filterchain.
+<p>
+See
+<a href="regexp.html#implementation">Regexp Type</a>
+concerning the choice of regular expression implementation.
+</p>
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>pattern</td>
+ <td vAlign=top>The regular expression pattern to match in
+ the token.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+ <tr>
+ <td vAlign=top>replace</td>
+ <td vAlign=top>The substitution pattern to replace the matched
+ regular expression. When omitted the original token is returned.
+ </td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>flags</td>
+ <td vAlign=top>See
+<a href="../Tasks/replaceregexp.html">ReplaceRegexp</a>
+for an explanation of regex flags.</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+
+<h4>Examples:</h4>
+
+Filter lines that contain "hello" or "world", ignoring case.
+
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;containsregex pattern="(hello|world)" flags="i"/&gt;
+&lt;/tokenfilter&gt;
+
+</pre></blockquote>
+
+This example replaces lines like "SUITE(TestSuite, bits);" with
+"void register_bits();" and removes other lines.
+
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;containsregex
+ pattern="^ *SUITE\(.*,\s*(.*)\s*\).*"
+ replace="void register_\1();"/&gt;
+&lt;/tokenfilter&gt;
+</pre></blockquote>
+
+<p><b><em><a name="trim">Trim</a></em></b></p>
+This filter trims whitespace from the start and end of
+tokens.
+This filter may be used directly within a filterchain.
+<p><b><em><a name="ignoreblank">IgnoreBlank</a></em></b></p>
+This filter removes empty tokens.
+This filter may be used directly within a filterchain.
+<p><b><em><a name="filterdeletecharacters">DeleteCharacters</a></em></b></p>
+This filter deletes specified characters from tokens.
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>chars</td>
+ <td vAlign=top>The characters to delete. This attribute
+ is backslash enabled.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+</table>
+
+<h4>Examples:</h4>
+
+Delete tabs from lines, trim the lines and removes empty lines.
+
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;deletecharacters chars="\t"/&gt;
+ &lt;trim/&gt;
+ &lt;ignoreblank/&gt;
+&lt;/tokenfilter&gt;
+
+</pre></blockquote>
+
+<p><b><em><a name="uniqfilter">UniqFilter</a></em></b></p>
+
+<p>Suppresses all tokens that match their ancestor token. It is most
+ useful if combined with a sort filter.</p>
+
+<p>This filter may be used directly within a filterchain.</p>
+
+<h4>Example:</h4>
+
+This suppresses duplicate lines.
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;uniqfilter/&gt;
+&lt;/tokenfilter&gt;
+</pre></blockquote>
+
+<p><b><em><a name="scriptfilter">ScriptFilter</a></em></b></p>
+This is an optional filter that executes a script in a
+<a href="http://jakarta.apache.org/bsf" target="_top">Apache BSF</a>
+ or
+ <a href="https://scripting.dev.java.net">JSR 223</a>
+supported language.</p>
+See the <a href="../Tasks/script.html">Script</a> task for
+an explanation of scripts and dependencies.
+</p>
+<p>
+The script is provided with an object <i>self</i> that has
+getToken() and setToken(String) methods.
+The getToken() method returns the current token. The setToken(String)
+method replaces the current token.
+</p>
+
+This filter may be used directly within a filterchain.<p>
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>language</td>
+ <td vAlign=top> The programming language the script is written in.
+Must be a supported Apache BSF or JSR 223 language</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">manager</td>
+ <td valign="top">
+ The script engine manager to use.
+ See the <a href="../Tasks/script.html">script</a> task
+ for using this attribute.
+ </td>
+ <td valign="top" align="center">No - default is "auto"</td>
+ </tr>
+ <tr>
+ <td vAlign=top>src</td>
+ <td vAlign=top>The location of the script as a file, if not inline
+ </td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">setbeans</td>
+ <td valign="top">whether to have all properties, references and targets as
+ global variables in the script. <em>since Ant 1.8.0</em></td>
+ <td valign="top" align="center">No, default is "true".</td>
+ </tr>
+ <tr>
+ <td valign="top">classpath</td>
+ <td valign="top">
+ The classpath to pass into the script.
+ </td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">classpathref</td>
+ <td valign="top">The classpath to use, given as a
+ <a href="../using.html#references">reference</a> to a path defined elsewhere.
+ <td align="center" valign="top">No</td>
+ </tr>
+</table>
+ <p>
+ This filter can take a nested &lt;classpath&gt; element.
+ See the <a href="../Tasks/script.html">script</a> task
+ on how to use this element.
+ </p>
+<h4>Examples:</h4>
+
+Convert to uppercase:
+<blockquote><pre>
+&lt;tokenfilter&gt;
+ &lt;scriptfilter language="javascript"&gt;
+ self.setToken(self.getToken().toUpperCase());
+ &lt;/scriptfilter&gt;
+&lt;/tokenfilter&gt;
+</pre></blockquote>
+
+Remove lines containing the string "bad" while
+copying text files:
+ <blockquote>
+ <pre>
+&lt;copy todir="dist"&gt;
+ &lt;fileset dir="src" includes="**/*.txt"/&gt;
+ &lt;filterchain&gt;
+ &lt;scriptfilter language="beanshell"&gt;
+ if (self.getToken().indexOf("bad") != -1) {
+ self.setToken(null);
+ }
+ &lt;/scriptfilter&gt;
+ &lt;/filterchain&gt;
+&lt;/copy&gt;
+ </pre>
+ </blockquote>
+
+<h4>Custom tokenizers and string filters</h4>
+
+Custom string filters and tokenizers may be plugged in by
+extending the interfaces org.apache.tools.ant.filters.TokenFilter.Filter
+and org.apache.tools.ant.util.Tokenizer respectly.
+
+They are defined the build file using <code>&lt;typedef/&gt;</code>. For
+example a string filter that capitalizes words may be declared as:
+<blockquote><pre>
+package my.customant;
+import org.apache.tools.ant.filters.TokenFilter;
+
+public class Capitalize
+ implements TokenFilter.Filter
+{
+ public String filter(String token) {
+ if (token.length() == 0)
+ return token;
+ return token.substring(0, 1).toUpperCase() +
+ token.substring(1);
+ }
+}
+</pre></blockquote>
+
+This may be used as follows:
+<blockquote><pre>
+ &lt;typedef name="capitalize" classname="my.customant.Capitalize"
+ classpath="my.customant.path"/&gt;
+ &lt;copy file="input" tofile="output"&gt;
+ &lt;filterchain&gt;
+ &lt;tokenfilter&gt;
+ &lt;stringtokenizer/&gt;
+ &lt;capitalize/&gt;
+ &lt;/tokenfilter&gt;
+ &lt;/filterchain&gt;
+ &lt;/copy&gt;
+</pre></blockquote>
+
+
+<h3><a name="sortfilter">SortFilter</a></h3>
+ <p><em>since Ant 1.8.0</em></p>
+
+<p>The sort filter reads all lines and sorts them. The sort order can
+ be reversed and it is possible to specify a custom implementation of
+ the <code>java.util.Comparator</code> interface to get even more
+ control.</p>
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Parameter Name</b></td>
+ <td vAlign=top><b>Parameter Value</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>reverse</td>
+ <td vAlign=top align="center">whether to reverse the sort order,
+ defaults to false. <b>Note:</b> this parameter is ignored if
+ the comparator parameter is present as well.</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>comparator</td>
+ <td vAlign=top align="center">Class name of a class that
+ implements <code>java.util.Comparator</code> for Strings. This
+ class will be used to determine the sort order of lines.</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+
+<p>This filter is also available using the
+ name <code>sortfilter</code>. The <code>reverse</code> parameter
+ becomes an attribute, <code>comparator</code> can be specified by
+ using a nested element.</p>
+
+<h4>Examples:</h4>
+
+<blockquote><pre>
+ &lt;copy todir=&quot;build&quot;&gt;
+ &lt;fileset dir=&quot;input&quot; includes=&quot;*.txt&quot;/&gt;
+ &lt;filterchain&gt;
+ &lt;sortfilter/&gt;
+ &lt;/filterchain&gt;
+ &lt;/copy&gt;
+</pre></blockquote>
+
+<p>
+Sort all files <code>*.txt</code> from <i>src</i> location
+into <i>build</i> location. The lines of each file are sorted in
+ascendant order comparing the lines via the
+<code>String.compareTo(Object o)</code> method.
+</p>
+
+<blockquote><pre>
+ &lt;copy todir=&quot;build&quot;&gt;
+ &lt;fileset dir=&quot;input&quot; includes=&quot;*.txt&quot;/&gt;
+ &lt;filterchain&gt;
+ &lt;sortfilter reverse=&quot;true&quot;/&gt;
+ &lt;/filterchain&gt;
+ &lt;/copy&gt;
+</pre></blockquote>
+
+<p>
+Sort all files <code>*.txt</code> from <i>src</i> location into reverse
+order and copy them into <i>build</i> location.
+</p>
+
+<blockquote><pre>
+ &lt;copy todir=&quot;build&quot;&gt;
+ &lt;fileset dir=&quot;input&quot; includes=&quot;*.txt&quot;/&gt;
+ &lt;filterchain&gt;
+ &lt;filterreader classname=&quot;org.apache.tools.ant.filters.SortFilter&quot;&gt;
+ &lt;param name=&quot;comparator&quot; value=&quot;org.apache.tools.ant.filters.EvenFirstCmp&quot;/&gt;
+ &lt;/filterreader&gt;
+ &lt;/filterchain&gt;
+ &lt;/copy&gt;
+</pre></blockquote>
+
+<p>
+Sort all files <code>*.txt</code> from <i>src</i> location using as
+sorting criterium <code>EvenFirstCmp</code> class, that sorts the file
+lines putting even lines first then odd lines for example. The modified files
+are copied into <i>build</i> location. The <code>EvenFirstCmp</code>,
+has to an instanciable class via <code>Class.newInstance()</code>,
+therefore in case of inner class has to be <em>static</em>. It also has to
+implement <code>java.util.Comparator</code> interface, for example:
+</p>
+
+<pre>
+ package org.apache.tools.ant.filters;
+ ...(omitted)
+ public final class EvenFirstCmp implements &lt;b&gt;Comparator&lt;/b&gt; {
+ public int compare(Object o1, Object o2) {
+ ...(omitted)
+ }
+ }
+</pre>
+
+<p>The example above is equivalent to:</p>
+
+<blockquote><pre>
+ &lt;componentdef name="evenfirst"
+ classname="org.apache.tools.ant.filters.EvenFirstCmp&quot;/&gt;
+ &lt;copy todir=&quot;build&quot;&gt;
+ &lt;fileset dir=&quot;input&quot; includes=&quot;*.txt&quot;/&gt;
+ &lt;filterchain&gt;
+ &lt;sortfilter&gt;
+ &lt;evenfirst/&gt;
+ &lt;/sortfilter&gt;
+ &lt;/filterchain&gt;
+ &lt;/copy&gt;
+</pre></blockquote>
+
+</body></html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/filterset.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/filterset.html
new file mode 100644
index 00000000..8b0dfe18
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/filterset.html
@@ -0,0 +1,200 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>FilterSet Type</title>
+</head>
+
+<body>
+<h2><a name="filterset">FilterSet</a></h2>
+
+<p>FilterSets are groups of filters. Filters can be defined as token-value
+pairs
+or be read in from a file. FilterSets can appear inside tasks that support this
+feature or at the same level as <code>&lt;target&gt;</code> - i.e., as
+children of
+<code>&lt;project&gt;</code>.</p>
+
+<p>FilterSets support the <code>id</code> and <code>refid</code>
+attributes. You can define a FilterSet with an <code>id</code>
+attribute and then refer to that definition from another FilterSet
+with a <code>refid</code> attribute. It is also possible to nest
+filtersets into filtersets to get a set union of the contained
+filters.</p>
+
+<p>In addition, FilterSets can specify
+<code>begintoken</code> and/or
+<code>endtoken</code> attributes to define what to match.</p>
+<p>Filtersets are used for doing
+replacements in tasks such as <code>&lt;copy&gt;</code>, etc.</p>
+
+<p>Filters can also by specified by one or more nested propertysets, the
+ contents of which are applied when the filterset is created.</p>
+
+<p>If you specify multiple values for the same token, the last one
+ defined within a filterset will be used.</p>
+
+<p>
+<strong>Note: </strong>When a filterset is used in an operation, the files are
+processed in text mode and the filters applied line by line. This means that
+the copy operations will typically corrupt binary files. When applying filters
+you should ensure that the set of files being filtered are all text files.
+</p>
+
+<h2>Filterset</h2>
+
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top><b>Default</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>begintoken</td>
+ <td vAlign=top>The string marking the beginning of a token (eg.,
+ <code>&#64;DATE&#64;</code>).</td>
+ <td vAlign=top>@</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>endtoken</td>
+ <td vAlign=top>The string marking the end of a token (eg.,
+ <code>&#64;DATE&#64;</code>).</td>
+ <td vAlign=top>@</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>filtersfile</td>
+ <td vAlign=top>Specify a single filtersfile.</td>
+ <td vAlign=top><i>none</i></td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>recurse</td>
+ <td vAlign=top>Indicates whether the replacement text of tokens
+ should be searched for more tokens. <b>Since Ant 1.6.3</b></td>
+ <td vAlign=top><i>true</i></td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+ <tr>
+ <td vAlign=top>onmissingfiltersfile</td>
+ <td vAlign=top>Indicate behavior when a nonexistent <i>filtersfile</i>
+ is specified. One of "fail", "warn", "ignore". <b>Since Ant 1.7</b></td>
+ <td vAlign=top>"fail"</td>
+ <td vAlign=top align="center">No</td>
+ </tr>
+</table>
+
+<h2>Filter</h2>
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>token</td>
+ <td vAlign=top>The token to replace (eg., <code>&#64;DATE&#64;</code>)</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+ <tr>
+ <td vAlign=top>value</td>
+ <td vAlign=top>The value to replace it with
+ (eg., <code>Thursday, April 26, 2001</code>).</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+</table>
+
+<h2>Filtersfile</h2>
+<table cellSpacing=0 cellPadding=2 border=1>
+ <tr>
+ <td vAlign=top><b>Attribute</b></td>
+ <td vAlign=top><b>Description</b></td>
+ <td vAlign=top align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td vAlign=top>file</td>
+ <td vAlign=top>A properties file of
+ name-value pairs from which to load the tokens.</td>
+ <td vAlign=top align="center">Yes</td>
+ </tr>
+</table>
+
+<h4>Examples</h4>
+
+<p>You are copying the <code>version.txt</code> file to the <code>dist</code>
+directory from the <code>build</code> directory
+but wish to replace the token <code>&#64;DATE&#64;</code> with today's date.</p>
+<blockquote><pre>
+&lt;copy file=&quot;${build.dir}/version.txt&quot; toFile=&quot;${dist.dir}/version.txt&quot;&gt;
+ &lt;filterset&gt;
+ &lt;filter token=&quot;DATE&quot; value=&quot;${TODAY}&quot;/&gt;
+ &lt;/filterset&gt;
+&lt;/copy&gt;
+</pre></blockquote>
+
+<p>You are copying the <code>version.txt</code> file to the <code>dist</code>
+directory from the build directory
+but wish to replace the token <code>%DATE*</code> with today's date.</p>
+<blockquote><pre>
+&lt;copy file=&quot;${build.dir}/version.txt&quot; toFile=&quot;${dist.dir}/version.txt&quot;&gt;
+ &lt;filterset begintoken=&quot;%&quot; endtoken=&quot;*&quot;&gt;
+ &lt;filter token=&quot;DATE&quot; value=&quot;${TODAY}&quot;/&gt;
+ &lt;/filterset&gt;
+&lt;/copy&gt;
+</pre></blockquote>
+
+<p>Copy all the docs but change all dates and appropriate notices as stored in a file.</p>
+<blockquote><pre>
+&lt;copy toDir=&quot;${dist.dir}/docs&quot;&gt;
+ &lt;fileset dir=&quot;${build.dir}/docs&quot;&gt;
+ &lt;include name=&quot;**/*.html&quot;&gt;
+ &lt;/fileset&gt;
+ &lt;filterset begintoken=&quot;%&quot; endtoken=&quot;*&quot;&gt;
+ &lt;filtersfile file=&quot;${user.dir}/dist.properties&quot;/&gt;
+ &lt;/filterset&gt;
+&lt;/copy&gt;
+</pre></blockquote>
+
+<p>Define a FilterSet and reference it later.</p>
+<blockquote><pre>
+&lt;filterset id=&quot;myFilterSet&quot; begintoken=&quot;%&quot; endtoken=&quot;*&quot;&gt;
+ &lt;filter token=&quot;DATE&quot; value=&quot;${TODAY}&quot;/&gt;
+&lt;/filterset&gt;
+
+&lt;copy file=&quot;${build.dir}/version.txt&quot; toFile=&quot;${dist.dir}/version.txt&quot;&gt;
+ &lt;filterset refid=&quot;myFilterSet&quot;/&gt;
+&lt;/copy&gt;
+</pre></blockquote>
+
+<p>You are copying the <code>version.txt</code> file to the <code>dist</code>
+directory from the <code>build</code> directory
+but wish to replace the token <code>&#64;project.date&#64;</code> with the property of the same name.</p>
+<blockquote><pre>
+&lt;copy file=&quot;${build.dir}/version.txt&quot; toFile=&quot;${dist.dir}/version.txt&quot;&gt;
+ &lt;filterset&gt;
+ &lt;propertyset&gt;
+ &lt;propertyref name=&quot;project.date&quot;/&gt;
+ &lt;/propertyset&gt;
+ &lt;/filterset&gt;
+&lt;/copy&gt;
+</pre></blockquote>
+</body></html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/mapper.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/mapper.html
new file mode 100644
index 00000000..5aff311e
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/mapper.html
@@ -0,0 +1,972 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Mapper Type</title>
+</head>
+
+<body>
+
+<h2><a name="mapper">Mapping File Names</a></h2>
+<p>Some tasks take source files and create target files. Depending on
+the task, it may be quite obvious which name a target file will have
+(using <a href="../Tasks/javac.html">javac</a>, you know there will be
+<code>.class</code> files for your <code>.java</code> files) - in
+other cases you may want to specify the target files, either to help
+Apache Ant or to get an extra bit of functionality.</p>
+<p>While source files are usually specified as <a
+href="fileset.html">fileset</a>s, you don't specify target files directly -
+instead, you tell Ant how to find the target file(s) for one source file. An
+instance of <code>org.apache.tools.ant.util.FileNameMapper</code> is
+responsible for this. It constructs target file names based on rules
+that can be parameterized with <code>from</code> and <code>to</code>
+attributes - the exact meaning of which is implementation-dependent.</p>
+<p>These instances are defined in <code>&lt;mapper&gt;</code> elements
+with the following attributes:</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">type</td>
+ <td valign="top">specifies one of the built-in implementations.</td>
+ <td rowspan="2" align="center" valign="middle">Exactly one of these</td>
+ </tr>
+ <tr>
+ <td valign="top">classname</td>
+ <td valign="top">specifies the implementation by class name.</td>
+ </tr>
+ <tr>
+ <td valign="top">classpath</td>
+ <td valign="top">the classpath to use when looking up
+ <code>classname</code>.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">classpathref</td>
+ <td valign="top">the classpath to use, given as <a
+ href="../using.html#references">reference</a> to a path defined elsewhere.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">from</td>
+ <td valign="top">the <code>from</code> attribute for the given
+ implementation.</td>
+ <td align="center" valign="top">Depends on implementation.</td>
+ </tr>
+ <tr>
+ <td valign="top">to</td>
+ <td valign="top">the <code>to</code> attribute for the given
+ implementation.</td>
+ <td align="center" valign="top">Depends on implementation.</td>
+ </tr>
+</table>
+<p>Note that Ant will not automatically convert / or \ characters in
+the <code>to</code> and <code>from</code> attributes to the correct
+directory separator of your current platform. If you need to specify
+this separator, use <code>${file.separator}</code> instead.
+ For the regexpmapper, <code>${file.separator}</code> will not work,
+as on windows it is the '\' character, and this is an escape character
+for regular expressions, one should use the <code>handledirsep</code> attribute
+instead.
+</p>
+<h3>Parameters specified as nested elements</h3>
+<p>The classpath can be specified via a nested
+<code>&lt;classpath&gt;</code>, as well - that is,
+a <a href="../using.html#path">path</a>-like structure.</p>
+<p><b>Since Ant 1.7.0,</b> nested File Mappers can
+be supplied via either <CODE>&lt;mapper&gt;</CODE> elements or
+<a href="../Tasks/typedef.html"><code>&lt;typedef&gt;</code></a>'d
+implementations of <CODE>org.apache.tools.ant.util.FileNameMapper</CODE>.
+If nested File Mappers are specified by either means, the mapper will be
+implicitly configured as a <a href="#composite-mapper">composite mapper</a>.
+</p>
+<hr>
+<h3>The built-in mapper types are:</h3>
+<p>All built-in mappers are case-sensitive.</p>
+<p><b>As of Ant 1.7.0,</b> each of the built-in mapper implementation
+ types is directly accessible using a specific tagname. This makes it
+ possible for filename mappers to support attributes in addition to
+ the generally available <i>to</i> and <i>from</i>.<br>
+ The <code>&lt;mapper type|classname=&quot;...&quot;&gt;</code> usage
+ form remains valid for reasons of backward compatibility.</p>
+
+ <!-- -->
+ <!-- Identity Mapper -->
+ <!-- -->
+
+<h4><a name="identity-mapper">identity</a></h4>
+<p>The target file name is identical to the source file name. Both
+<code>to</code> and <code>from</code> will be ignored.</p>
+<b>Examples:</b>
+<blockquote><pre>
+&lt;mapper type=&quot;identity&quot;/&gt;
+&lt;identitymapper/&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>A.java</code></td>
+ <td valign="top"><code>A.java</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>foo/bar/B.java</code></td>
+ <td valign="top"><code>foo/bar/B.java</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>C.properties</code></td>
+ <td valign="top"><code>C.properties</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>Classes/dir/dir2/A.properties</code></td>
+ <td valign="top"><code>Classes/dir/dir2/A.properties</code></td>
+ </tr>
+</table>
+
+ <!-- -->
+ <!-- Flatten Mapper -->
+ <!-- -->
+
+<h4><a name="flatten-mapper">flatten</a></h4>
+<p>The target file name is identical to the source file name, with all
+leading directory information stripped off. Both <code>to</code> and
+<code>from</code> will be ignored.</p>
+<b>Examples:</b>
+<blockquote><pre>
+&lt;mapper type=&quot;flatten&quot;/&gt;
+&lt;flattenmapper/&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>A.java</code></td>
+ <td valign="top"><code>A.java</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>foo/bar/B.java</code></td>
+ <td valign="top"><code>B.java</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>C.properties</code></td>
+ <td valign="top"><code>C.properties</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>Classes/dir/dir2/A.properties</code></td>
+ <td valign="top"><code>A.properties</code></td>
+ </tr>
+</table>
+
+ <!-- -->
+ <!-- Merge Mapper -->
+ <!-- -->
+
+<h4><a name="merge-mapper">merge</a></h4>
+<p>The target file name will always be the same, as defined by
+<code>to</code> - <code>from</code> will be ignored.</p>
+<h5>Examples:</h5>
+<blockquote><pre>
+&lt;mapper type=&quot;merge&quot; to=&quot;archive.tar&quot;/&gt;
+&lt;mergemapper to=&quot;archive.tar&quot;/&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>A.java</code></td>
+ <td valign="top"><code>archive.tar</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>foo/bar/B.java</code></td>
+ <td valign="top"><code>archive.tar</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>C.properties</code></td>
+ <td valign="top"><code>archive.tar</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>Classes/dir/dir2/A.properties</code></td>
+ <td valign="top"><code>archive.tar</code></td>
+ </tr>
+</table>
+
+ <!-- -->
+ <!-- Glob Mapper -->
+ <!-- -->
+
+<h4><a name="glob-mapper">glob</a></h4>
+<p>Both <code>to</code> and <code>from</code> are required and define patterns that may
+contain at most one <code>*</code>. For each source file that matches
+the <code>from</code> pattern, a target file name will be constructed
+from the <code>to</code> pattern by substituting the <code>*</code> in
+the <code>to</code> pattern with the text that matches the
+<code>*</code> in the <code>from</code> pattern. Source file names
+that don't match the <code>from</code> pattern will be ignored.</p>
+<b>Examples:</b>
+<blockquote><pre>
+&lt;mapper type=&quot;glob&quot; from=&quot;*.java&quot; to=&quot;*.java.bak&quot;/&gt;
+&lt;globmapper from=&quot;*.java&quot; to=&quot;*.java.bak&quot;/&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>A.java</code></td>
+ <td valign="top"><code>A.java.bak</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>foo/bar/B.java</code></td>
+ <td valign="top"><code>foo/bar/B.java.bak</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>C.properties</code></td>
+ <td valign="top">ignored</td>
+ </tr>
+ <tr>
+ <td valign="top"><code>Classes/dir/dir2/A.properties</code></td>
+ <td valign="top">ignored</td>
+ </tr>
+</table>
+<blockquote><pre>
+&lt;mapper type=&quot;glob&quot; from=&quot;C*ies&quot; to=&quot;Q*y&quot;/&gt;
+&lt;globmapper from=&quot;C*ies&quot; to=&quot;Q*y&quot;/&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>A.java</code></td>
+ <td valign="top">ignored</td>
+ </tr>
+ <tr>
+ <td valign="top"><code>foo/bar/B.java</code></td>
+ <td valign="top">ignored</td>
+ </tr>
+ <tr>
+ <td valign="top"><code>C.properties</code></td>
+ <td valign="top"><code>Q.property</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>Classes/dir/dir2/A.properties</code></td>
+ <td valign="top"><code>Qlasses/dir/dir2/A.property</code></td>
+ </tr>
+</table>
+ <p>
+ The globmapper mapper can take the following extra attributes.
+ </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">casesensitive</td>
+ <td valign="top">
+ If this is false, the mapper will ignore case when matching the glob pattern.
+ This attribute can be true or false, the default is true.
+ <em>Since Ant 1.6.3.</em>
+ </td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">handledirsep</td>
+ <td valign="top">
+ If this is specified, the mapper will ignore the difference between the normal
+ directory separator characters - \ and /.
+ This attribute can be true or false, the default is false.
+ This attribute is useful for cross-platform build files.
+ <em>Since Ant 1.6.3.</em>
+ <td align="center" valign="top">No</td>
+ </tr>
+ </table>
+ <p>
+ An example:
+ </p>
+ <pre>
+ &lt;pathconvert property="x" targetos="unix"&gt;
+ &lt;path path="Aj.Java"/&gt;
+ &lt;mapper&gt;
+ &lt;chainedmapper&gt;
+ &lt;flattenmapper/&gt;
+ &lt;globmapper from="a*.java" to="*.java.bak" casesensitive="no"/&gt;
+ &lt;/chainedmapper&gt;
+ &lt;/mapper&gt;
+ &lt;/pathconvert&gt;
+ &lt;echo&gt;x is ${x}&lt;/echo&gt;
+ </pre>
+ <p>
+ will output "x is j.java.bak".
+ </p>
+ <p>
+ and
+ </p>
+ <pre>
+ &lt;pathconvert property="x" targetos="unix"&gt;
+ &lt;path path="d/e/f/j.java"/&gt;
+ &lt;mapper&gt;
+ &lt;globmapper from="${basedir}\d/e\*" to="*" handledirsep="yes"/&gt;
+ &lt;/mapper&gt;
+ &lt;/pathconvert&gt;
+ &lt;echo&gt;x is ${x}&lt;/echo&gt;
+ </pre>
+ <p>
+ will output "x is f/j.java".
+ </p>
+
+
+ <!-- -->
+ <!-- RegExp Mapper -->
+ <!-- -->
+
+<h4><a name="regexp-mapper">regexp</a></h4>
+
+<p>Both <code>to</code> and <code>from</code> are required and define
+regular expressions. If the source file name (as a whole or in part)
+matches the <code>from</code> pattern, the target file name will be
+constructed from the
+<code>to</code> pattern, using <code>\0</code> to <code>\9</code> as
+back-references for the full match (<code>\0</code>) or the matches of
+the subexpressions in parentheses. The <code>to</code> pattern
+determines the <strong>whole</strong> file name, so if you wanted to
+replace the extension of a file you should not use <code>from="\.old$"
+to=".new"</code> but rather <code>from="(.*)\.old$" to="\1.new"</code>
+(or rather use a glob mapper in this case).</p>
+
+<p>Source files not matching the <code>from</code> pattern will be
+ignored.</p>
+
+<p>Note that you need to escape a dollar-sign (<code>$</code>) with
+another dollar-sign in Ant.</p>
+
+<p>The regexp mapper needs a supporting library and an implementation
+of <code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that
+ hides the specifics of the library. <em>Since Ant 1.8.0</em> Ant
+ requires Java 1.4 to run, so the implementation based on
+ the <code>java.util.regex</code> package will always be available.
+ You can still use the now retired Jakarta ORO or Jakarta Regex instead if your
+ provide the corresponding jar in your CLASSPATH.</p>
+
+<p>For information about using <a
+href="http://www.cacas.org/~wes/java/" target="_top">gnu.regexp</a> or <a
+href="http://www.crocodile.org/~sts/Rex/" target="_top">gnu.rex</a> with Ant, see <a
+href="http://marc.theaimsgroup.com/?l=ant-dev&m=97550753813481&w=2" target="_top">this</a>
+article.</p>
+
+<p>If you want to use one of the regular expression
+ libraries other than <code>java.util.regex</code> you need to also use
+ the corresponding <code>ant-[apache-oro, apache-regexp].jar</code>
+from the Ant release you are using.
+Make sure, both will be loaded from the same
+classpath, that is either put them into your <code>CLASSPATH</code>,
+<code>ANT_HOME/lib</code> directory or a nested
+<code>&lt;classpath&gt;</code> element of the mapper - you cannot have
+<code>ant-[apache-oro, apache-regexp].jar</code> in <code>ANT_HOME/lib</code>
+ and the library
+in a nested <code>&lt;classpath&gt;</code>.</p>
+<p>Ant will choose the regular-expression library based on the
+following algorithm:</p>
+<ul>
+<li>If the system property
+<code>ant.regexp.matcherimpl</code> has been set, it is taken as the
+name of the class implementing
+<code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that
+should be used.</li>
+<li>If it has not been set, uses the JDK 1.4 classes.</li>
+</ul>
+
+<b>Examples:</b>
+<blockquote><pre>
+&lt;mapper type=&quot;regexp&quot; from=&quot;^(.*)\.java$$&quot; to=&quot;\1.java.bak&quot;/&gt;
+&lt;regexpmapper from=&quot;^(.*)\.java$$&quot; to=&quot;\1.java.bak&quot;/&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>A.java</code></td>
+ <td valign="top"><code>A.java.bak</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>foo/bar/B.java</code></td>
+ <td valign="top"><code>foo/bar/B.java.bak</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>C.properties</code></td>
+ <td valign="top">ignored</td>
+ </tr>
+ <tr>
+ <td valign="top"><code>Classes/dir/dir2/A.properties</code></td>
+ <td valign="top">ignored</td>
+ </tr>
+</table>
+<blockquote><pre>
+&lt;mapper type=&quot;regexp&quot; from=&quot;^(.*)/([^/]+)/([^/]*)$$&quot; to=&quot;\1/\2/\2-\3&quot;/&gt;
+&lt;regexpmapper from=&quot;^(.*)/([^/]+)/([^/]*)$$&quot; to=&quot;\1/\2/\2-\3&quot;/&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>A.java</code></td>
+ <td valign="top">ignored</td>
+ </tr>
+ <tr>
+ <td valign="top"><code>foo/bar/B.java</code></td>
+ <td valign="top"><code>foo/bar/bar-B.java</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>C.properties</code></td>
+ <td valign="top">ignored</td>
+ </tr>
+ <tr>
+ <td valign="top"><code>Classes/dir/dir2/A.properties</code></td>
+ <td valign="top"><code>Classes/dir/dir2/dir2-A.properties</code></td>
+ </tr>
+</table>
+<blockquote><pre>
+&lt;mapper type="regexp" from="^(.*)\.(.*)$$" to="\2.\1"/&gt;
+&lt;regexpmapper from="^(.*)\.(.*)$$" to="\2.\1"/&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>A.java</code></td>
+ <td valign="top"><code>java.A</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>foo/bar/B.java</code></td>
+ <td valign="top"><code>java.foo/bar/B</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>C.properties</code></td>
+ <td valign="top"><code>properties.C</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>Classes/dir/dir2/A.properties</code></td>
+ <td valign="top"><code>properties.Classes/dir/dir2/A</code></td>
+ </tr>
+</table>
+<blockquote><pre>
+&lt;mapper type="regexp" from="^(.*?)(\$$[^/\\\.]*)?\.class$$" to="\1.java"/&gt;
+&lt;regexpmapper from="^(.*?)(\$$[^/\\\.]*)?\.class$$" to="\1.java"/&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>ClassLoader.class</code></td>
+ <td valign="top"><code>ClassLoader.java</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>java/lang/ClassLoader.class</code></td>
+ <td valign="top"><code>java/lang/ClassLoader.java</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>java\lang\ClassLoader$1.class</code></td>
+ <td valign="top"><code>java\lang\ClassLoader.java</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>java/lang/ClassLoader$foo$1.class</code></td>
+ <td valign="top"><code>java/lang/ClassLoader.java</code></td>
+ </tr>
+</table>
+ <p>
+ The regexpmapper mapper can take the following extra attributes.
+ </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">casesensitive</td>
+ <td valign="top">
+ If this is false, the mapper will ignore case when matching the pattern.
+ This attribute can be true or false, the default is true.
+ <em>Since Ant 1.6.3.</em>
+ </td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">handledirsep</td>
+ <td valign="top">
+ If this is specified, the mapper will treat a \ character in a filename
+ as a / for the purposes of matching.
+ This attribute can be true or false, the default is false.
+ This attribute is useful for cross-platform build files.
+ <em>Since Ant 1.6.3.</em>
+ <td align="center" valign="top">No</td>
+ </tr>
+ </table>
+ <p>
+ An example:
+ </p>
+ <pre>
+ &lt;pathconvert property="x" targetos="unix"&gt;
+ &lt;path path="Aj.Java"/&gt;
+ &lt;chainedmapper&gt;
+ &lt;flattenmapper/&gt;
+ &lt;regexpmapper from="a(.*)\.java" to="\1.java.bak" casesensitive="no"/&gt;
+ &lt;/chainedmapper&gt;
+ &lt;/pathconvert&gt;
+ &lt;echo&gt;x is ${x}&lt;/echo&gt;
+ </pre>
+ <p>
+ will output "x is j.java.bak".
+ </p>
+ <p>
+ and
+ </p>
+ <pre>
+ &lt;pathconvert property="hd.prop" targetos="windows"&gt;
+ &lt;path path="d\e/f\j.java"/&gt;
+ &lt;chainedmapper&gt;
+ &lt;regexpmapper from="${basedir}/d/e/(.*)" to="\1" handledirsep="yes"/&gt;
+ &lt;/chainedmapper&gt;
+ &lt;/pathconvert&gt;
+ </pre>
+ <p>
+ will set <code>hd.prop</code> to "f\j.java".
+ </p>
+
+ <!-- -->
+ <!-- Package Mapper -->
+ <!-- -->
+
+<h4><a name="package-mapper">package</a></h4>
+<p>Sharing the same syntax as the <a href="#glob-mapper">glob mapper</a>,
+the package mapper replaces
+directory separators found in the matched source pattern with dots in the target
+pattern placeholder. This mapper is particularly useful in combination
+with <code>&lt;uptodate&gt;</code> and <code>&lt;junit&gt;</code> output.</p>
+<p>The to and from attributes are both required.</p>
+<b>Example:</b>
+<blockquote><pre>
+&lt;mapper type="package" from="*Test.java" to="TEST-*Test.xml"/&gt;
+&lt;packagemapper from="*Test.java" to="TEST-*Test.xml"/&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>org/apache/tools/ant/util/PackageMapperTest.java</code></td>
+ <td valign="top"><code>TEST-org.apache.tools.ant.util.PackageMapperTest.xml</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>org/apache/tools/ant/util/Helper.java</code></td>
+ <td valign="top">ignored</td>
+ </tr>
+</table>
+
+ <!-- -->
+ <!-- Unpackage Mapper -->
+ <!-- -->
+
+<h4><a name="unpackage-mapper">unpackage (since Ant 1.6.0)</a></h4>
+ <p>This mapper is the inverse of the <a href="#package-mapper">package</a> mapper.
+ It replaces the dots in a package name with directory separators. This
+ is useful for matching XML formatter results against their JUnit test
+ test cases. The mapper shares the sample syntax
+ as the <a href="#glob-mapper">glob mapper</a>.
+ </p>
+<p>The to and from attributes are both required.</p>
+<b>Example:</b>
+<blockquote><pre>
+&lt;mapper type="unpackage" from="TEST-*Test.xml" to="${test.src.dir}/*Test.java"&gt;
+&lt;unpackagemapper from="TEST-*Test.xml" to="${test.src.dir}/*Test.java"&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file name</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>TEST-org.acme.AcmeTest.xml</code></td>
+ <td valign="top"><code>${test.src.dir}/org/acme/AcmeTest.java</code></td>
+ </tr>
+</table>
+
+ <!-- -->
+ <!-- Composite Mapper -->
+ <!-- -->
+
+<h4><a name="composite-mapper">composite (since Ant 1.7.0)</a></h4>
+ <p>This mapper implementation can contain multiple nested mappers.
+ File mapping is performed by passing the source filename to each nested
+ <code>&lt;mapper&gt;</code> in turn, returning all results.
+ The <i>to</i> and <i>from</i> attributes are ignored.</p>
+ <p>Starting with Ant 1.8.0 the order of the mapped results is the
+ same as the order of the nested mappers; prior to Ant 1.8.0 the
+ order has been undefined.</p>
+<b>Examples:</b>
+<blockquote><pre>
+&lt;compositemapper&gt;
+ &lt;identitymapper/&gt;
+ &lt;packagemapper from="*.java" to="*"/&gt;
+&lt;/compositemapper&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file names</b></td>
+ </tr>
+ <tr>
+ <td valign="center" rowspan="2"><code>foo/bar/A.java</code></td>
+ <td valign="top"><code>foo/bar/A.java</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>foo.bar.A</code></td>
+ </tr>
+</table>
+ <p>The composite mapper has no corresponding
+ <code>&lt;mapper <b>type</b>&gt;</code> attribute.
+ </p>
+
+ <!-- -->
+ <!-- Chained Mapper -->
+ <!-- -->
+
+<h4><a name="chained-mapper">chained (since Ant 1.7.0)</a></h4>
+ <p>This mapper implementation can contain multiple nested mappers.
+ File mapping is performed by passing the source filename to the first
+ nested mapper, its results to the second, and so on. The target filenames
+ generated by the last nested mapper comprise the ultimate results of the
+ mapping operation. The <i>to</i> and <i>from</i> attributes are ignored.</p>
+<b>Examples:</b>
+<blockquote><pre>
+&lt;chainedmapper&gt;
+ &lt;flattenmapper/&gt;
+ &lt;globmapper from="*" to="new/path/*"/&gt;
+ &lt;mapper&gt;
+ &lt;globmapper from="*" to="*1"/&gt;
+ &lt;globmapper from="*" to="*2"/&gt;
+ &lt;/mapper&gt;
+&lt;/chainedmapper&gt;
+</pre></blockquote>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file names</b></td>
+ </tr>
+ <tr>
+ <td valign="center" rowspan="2"><code>foo/bar/A.java</code></td>
+ <td valign="top"><code>new/path/A.java1</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>new/path/A.java2</code></td>
+ </tr>
+ <tr>
+ <td valign="center" rowspan="2"><code>boo/far/B.java</code></td>
+ <td valign="top"><code>new/path/B.java1</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>new/path/B.java2</code></td>
+ </tr>
+</table>
+ <p>The chained mapper has no corresponding
+ <code>&lt;mapper <b>type</b>&gt;</code> attribute.
+ </p>
+
+ <!-- -->
+ <!-- Filter Mapper -->
+ <!-- -->
+
+<h4><a name="filter-mapper">filtermapper (since Ant 1.6.3)</a></h4>
+ <p>
+ This mapper implementation applies a <a href="filterchain.html">filterchain</a>
+ to the source file name.
+ </p>
+<b>Examples:</b>
+<blockquote><pre>
+&lt;filtermapper&gt;
+ &lt;replacestring from="\" to="/"/&gt;
+&lt;/filtermapper&gt;
+</pre></blockquote>
+
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file names</b></td>
+ </tr>
+ <tr>
+ <td valign="center"><code>foo\bar\A.java</code></td>
+ <td valign="top"><code>foo/bar/A.java</code></td>
+ </tr>
+</table>
+<blockquote><pre>
+&lt;filtermapper&gt;
+ &lt;scriptfilter language="beanshell"&gt;
+ self.setToken(self.getToken().toUpperCase());
+ &lt;/scriptfilter&gt;
+&lt;/filtermapper&gt;
+</pre></blockquote>
+
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file names</b></td>
+ </tr>
+ <tr>
+ <td valign="center"><code>foo\bar\A.java</code></td>
+ <td valign="top"><code>FOO\BAR\A.JAVA</code></td>
+ </tr>
+</table>
+
+ <p>The filtermapper has no corresponding
+ <code>&lt;mapper <b>type</b>&gt;</code> attribute.
+ </p>
+
+ <!-- -->
+ <!-- Script Mapper -->
+ <!-- -->
+
+<h4><a name="script-mapper">scriptmapper (since Ant 1.7)</a></h4>
+<p>
+This mapper executes a script written in <a href="http://jakarta.apache.org/bsf" target="_top">Apache BSF</a>
+or
+ <a href="https://scripting.dev.java.net">JSR 223</a>
+supported language, once per file to map.</p>
+The script can be declared inline or in a specified file.
+</p>
+<p>
+See the <a href="../Tasks/script.html">Script</a> task for
+an explanation of scripts and dependencies.
+</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">language</td>
+ <td valign="top">
+ Scripting language
+ </td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">manager</td>
+ <td valign="top">
+ The script engine manager to use.
+ See the <a href="../Tasks/script.html">script</a> task
+ for using this attribute.
+ </td>
+ <td valign="top" align="center">No - default is "auto"</td>
+ </tr>
+ <tr>
+ <td valign="top">src</td>
+ <td valign="top">
+ File containing the script
+ </td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">setbeans</td>
+ <td valign="top">whether to have all properties, references and targets as
+ global variables in the script. <em>since Ant 1.8.0</em></td>
+ <td valign="top" align="center">No, default is "true".</td>
+ </tr>
+ <tr>
+ <td valign="top">classpath</td>
+ <td valign="top">
+ The classpath to pass into the script.
+ </td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">classpathref</td>
+ <td valign="top">The classpath to use, given as a
+ <a href="../using.html#references">reference</a> to a path defined elsewhere.
+ <td align="center" valign="top">No</td>
+ </tr>
+ </table>
+ <p>
+ This filename mapper can take a nested &lt;classpath&gt; element.
+ See the <a href="../Tasks/script.html">script</a> task
+ on how to use this element.
+ </p>
+
+<p>
+ <b>Example:</b>
+</p>
+<blockquote><pre>
+&lt;scriptmapper language="javascript"&gt;
+ self.addMappedName(source.toUpperCase());
+ self.addMappedName(source.toLowerCase());
+&lt;/scriptmapper&gt;
+</pre></blockquote>
+
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file names</b></td>
+ </tr>
+ <tr>
+ <td valign="center" rowspan="2"><code>foo\bar\A.java</code></td>
+ <td valign="top"><code>FOO\BAR\A.JAVA</code></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>foo\bar\a.java</code></td>
+ </tr>
+</table>
+
+<p>
+To use this mapper, the scripts need access to the source file,
+and the ability to return multiple mappings. Here are the relevant beans and
+their methods. The script is called once for every source file, with the
+list of mapped names reset after every invocation.
+
+ <table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Script bean</b></td>
+ <td valign="top"><b>Description</b></td>
+ </tr>
+ <tr>
+ <td valign="top"><code>source: String</code></td>
+ <td valign="top">
+ The file/path to map
+ </td>
+ </tr>
+ <tr>
+ <td valign="top"><code>self</code></td>
+ <td valign="top">
+ the scriptmapper itself
+ </td>
+ </tr>
+ <tr>
+ <td valign="top"><code>self.addMappedName(String name)</code></td>
+ <td valign="top">
+ Add a new mapping
+ </td>
+ </tr>
+ <tr>
+ <td valign="top"><code>self.clear()</code></td>
+ <td valign="top">
+ Reset the list of files.
+ </td>
+ </tr>
+ </table>
+
+ <p>The scriptmapper has no corresponding
+ <code>&lt;mapper <b>type</b>&gt;</code> attribute.
+ </p>
+
+<h4><a name="firstmatch-mapper">firstmatchmapper (since Ant 1.8.0)</a></h4>
+ <p>
+ This mapper supports an arbitrary number of nested mappers and
+ returns the results of the first mapper that matches. This is
+ different from <a href="#composite-mapper">composite mapper</a>
+ which collects the results of all matching children.</p>
+<b>Examples:</b>
+<blockquote><pre>
+&lt;firstmatchmapper&gt;
+ &lt;globmapper from="*.txt" to="*.bak"/&gt;
+ &lt;globmapper from="*A.*" to="*B.*"/&gt;
+&lt;/firstmatchmapper&gt;
+</pre></blockquote>
+
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file names</b></td>
+ </tr>
+ <tr>
+ <td valign="center"><code>foo/bar/A.txt</code></td>
+ <td valign="top"><code>foo/bar/A.bak</code></td>
+ </tr>
+ <tr>
+ <td valign="center"><code>foo/bar/A.java</code></td>
+ <td valign="top"><code>foo/bar/B.java</code></td>
+ </tr>
+</table>
+
+ <p>The firstmatchmapper has no corresponding
+ <code>&lt;mapper <b>type</b>&gt;</code> attribute.
+ </p>
+
+<h4><a name="cutdirs-mapper">cutdirsmapper (since Ant 1.8.2)</a></h4>
+
+<p>This mapper strips a configured number of leading directories from
+ the source file name.</p>
+
+<b>Examples:</b>
+<blockquote><pre>
+&lt;cutdirsmapper dirs="1"/&gt;
+</pre></blockquote>
+
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Source file name</b></td>
+ <td valign="top"><b>Target file names</b></td>
+ </tr>
+ <tr>
+ <td valign="center"><code>foo/bar/A.txt</code></td>
+ <td valign="top"><code>bar/A.txt</code></td>
+ </tr>
+</table>
+
+<p>The cutdirsmapper has no
+corresponding <code>&lt;mapper <b>type</b>&gt;</code> attribute.</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">dirs</td>
+ <td valign="top">
+ Number of directories to strip (must be a positive number).
+ </td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+ </table>
+
+</body>
+</html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/multirootfileset.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/multirootfileset.html
new file mode 100644
index 00000000..29a4f548
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/multirootfileset.html
@@ -0,0 +1,173 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>MultiRootFileSet Type</title>
+</head>
+
+<body>
+
+<h2><a name="multirootfileset">MultiRootFileSet</a></h2>
+
+<p><em>Since Ant 1.9.4</em></p>
+
+<p>A MultiRootFileSet is a group of files or directories. These files
+or directories can be found in a directory forrest starting with a set
+of base directories and are matched by patterns taken from a number of
+<a href="patternset.html">PatternSets</a> and <a
+href="selectors.html">Selectors</a>.</p>
+
+<p>MultiRootFileSet acts as a union of <a
+href="fileset.html">FileSets</a> and <a href="dirset.html">DirSets</a>
+that share the same patterns and selectors.</p>
+
+<p>MultiRootFileSet supports all attributes and nested elements of
+FileSet and DirSet except for the "dir" attribute.</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">basedirs</td>
+ <td valign="top">Comma separated list of directories that build
+ the roots of the MultiRootFileSet.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">cache</td>
+ <td valign="top">Whether to cache results; disabling
+ may seriously impact performance</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ <tr>
+ <td valign="top">type</td>
+ <td valign="top">The type of file system entities which will be
+ included in this set.
+ Acceptable values are:
+ <ul>
+ <li>file - regular files</li>
+ <li>dir - directories</li>
+ <li>both - regular files and directories</li>
+ </ul>
+ </td>
+ <td valign="top" align="center">No, defaults to <i>file</i></td>
+ </tr>
+ <tr>
+ <td valign="top">includes</td>
+ <td valign="top">A comma- or space-separated list of patterns of directories that
+ must be included; all directories are included when omitted.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">includesfile</td>
+ <td valign="top">The name of a file; each line of this file is
+ taken to be an include pattern.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">excludes</td>
+ <td valign="top">A comma- or space-separated list of patterns of directories that
+ must be excluded; no directories are excluded when omitted.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">excludesfile</td>
+ <td valign="top">The name of a file; each line of this file is
+ taken to be an exclude pattern.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">casesensitive</td>
+ <td valign="top">Specifies whether case-sensitivity should be applied
+ (<code>true</code>|<code>yes</code>|<code>on</code> or
+ <code>false</code>|<code>no</code>|<code>off</code>).</td>
+ <td valign="top" align="center">No; defaults to true.</td>
+ </tr>
+ <tr>
+ <td valign="top">followsymlinks</td>
+ <td valign="top">Shall symbolic links be followed? Defaults to
+ true. See <a href="fileset.html#symlink">fileset's documentation</a>.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">erroronmissingdir</td>
+ <td valign="top">
+ Specify what happens if one of the base directories does not exist.
+ If true a build error will happen, if false, the subtree
+ will be ignored/empty.
+ Defaults to true.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+
+<h3>Parameters specified as nested elements</h3>
+
+<p>PatternSets can be specified as nested
+<code>&lt;patternset&gt;</code> elements. In addition, MultiRootFileSet holds
+an implicit PatternSet and supports the nested
+<code>&lt;include&gt;</code>, <code>&lt;includesfile&gt;</code>,
+<code>&lt;exclude&gt;</code> and <code>&lt;excludesfile&gt;</code>
+elements of <code>&lt;patternset&gt;</code> directly, as well as
+<code>&lt;patternset&gt;</code>'s attributes.</p>
+
+<p>Selectors are available as nested elements within the
+MultiRootFileSet. If any of the selectors within the MultiRootFileSet
+do not select the file or directory, it is not considered part of the
+MultiRootFileSet. This makes a MultiRootFileSet equivalent to
+an <code>&lt;and&gt;</code> selector container.</p>
+
+<p>In addition basedirs for the MultiRootFileSet can be specified as
+ nested <code>basedir</code> elements that have a
+ single <code>file</code> attribute.</p>
+
+
+<h4>Examples</h4>
+
+<blockquote><pre>
+&lt;multirootfileset basedirs=&quot;${build.dir},${other.project.dir}&quot;&gt;
+ &lt;include name=&quot;apps/**/classes&quot;/&gt;
+ &lt;exclude name=&quot;apps/**/*Test*&quot;/&gt;
+&lt;/multirootfileset&gt;
+</pre></blockquote>
+<p>Groups all files inside <code>classes</code> found under the
+<code>apps</code> subdirectory of <code>${build.dir}</code> or
+<code>${other.project.dir}</code>, except those that have the text
+<code>Test</code> in their name.</p>
+
+<blockquote><pre>
+&lt;multirootfileset&gt;
+ &lt;basedir file=&quot;${build.dir}&quot;/&gt;
+ &lt;basedir file=&quot;${other.project.dir}&quot;
+ &lt;include name=&quot;apps/**/classes&quot;/&gt;
+ &lt;exclude name=&quot;apps/**/*Test*&quot;/&gt;
+&lt;/multirootfileset&gt;
+</pre></blockquote>
+<p>Is equivalent to the first example but used
+ nested <code>basedir</code> elements. The nested elements and
+ the <code>basedirs</code> attribute can be used at the same time and
+ the will be merged.</p>
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/namespace.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/namespace.html
new file mode 100644
index 00000000..3adfa80c
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/namespace.html
@@ -0,0 +1,224 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html><head><link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>XmlNamespaceSupport</title></head>
+ <body>
+ <h2><a name="namespace">XML Namespace Support</a></h2>
+ Apache Ant 1.6 introduces support for XML namespaces.
+ <h3>History</h3>
+
+ <p>
+ All releases of Ant prior to Ant 1.6 do not support XML namespaces.
+ No support basically implies two things here:
+ </p>
+ <ul>
+ <li> Element names correspond to the "qname" of the tags, which is
+ usually the same as the local name. But if the build file writer uses
+ colons in names of defined tasks/types, those become part of the
+ element name. Turning on namespace support gives colon-separated
+ prefixes in tag names a special meaning, and thus build files using
+ colons in user-defined tasks and types will break.
+ </li>
+ <li> Attributes with the names 'xmlns' and 'xmlns:<code>&lt;prefix&gt;</code>'
+ are not treated specially, which means that custom tasks and types have
+ actually been able to use such attributes as parameter names. Again,
+ such tasks/types are going to break when namespace support is enabled
+ on the parser.
+ </li>
+ </ul>
+ <p>Use of colons in element names has been discouraged in the past,
+ and using any attribute starting with "xml" is actually strongly
+ discouraged by the XML spec to reserve such names for future use.
+ </p>
+ <h3>Motivation</h3>
+
+ <p>In build files using a lot of custom and third-party tasks, it is
+ easy to get into name conflicts. When individual types are defined, the
+ build file writer can do some namespacing manually (for example, using
+ "tomcat-deploy" instead of just "deploy"). But when defining whole
+ libraries of types using the <code>&lt;typedef&gt;</code> 'resource' attribute, the
+ build file writer has no chance to override or even prefix the names
+ supplied by the library. </p>
+ <h3>Assigning Namespaces</h3>
+
+ <p>
+ Adding a 'prefix' attribute to <code>&lt;typedef&gt;</code> might have been enough,
+ but XML already has a well-known method for namespacing. Thus, instead
+ of adding a 'prefix' attribute, the <code>&lt;typedef&gt;</code> and <code>&lt;taskdef&gt;</code>
+ tasks get a 'uri' attribute, which stores the URI of the XML namespace
+ with which the type should be associated:
+ </p><pre> &lt;typedef resource="org/example/tasks.properties" uri="<a href="http://example.org/tasks">http://example.org/tasks</a>"/&gt;
+ &lt;my:task xmlns:my="<a href="http://example.org/tasks">http://example.org/tasks</a>"&gt;
+ ...
+ &lt;/my:task&gt;
+</pre>
+ <p>As the above example demonstrates, the namespace URI needs to be
+ specified at least twice: one time as the value of the 'uri' attribute,
+ and another time to actually map the namespace to occurrences of
+ elements from that namespace, by using the 'xmlns' attribute. This
+ mapping can happen at any level in the build file:
+ </p><pre> &lt;project name="test" xmlns:my="<a href="http://example.org/tasks">http://example.org/tasks</a>"&gt;
+ &lt;typedef resource="org/example/tasks.properties" uri="<a href="http://example.org/tasks">http://example.org/tasks</a>"/&gt;
+ &lt;my:task&gt;
+ ...
+ &lt;/my:task&gt;
+ &lt;/project&gt;
+</pre>
+ <p>
+ Use of a namespace prefix is of course optional. Therefore
+ the example could also look like this:
+ </p><pre> &lt;project name="test"&gt;
+ &lt;typedef resource="org/example/tasks.properties" uri="<a href="http://example.org/tasks">http://example.org/tasks</a>"/&gt;
+ &lt;task xmlns="<a href="http://example.org/tasks">http://example.org/tasks</a>"&gt;
+ ...
+ &lt;/task&gt;
+ &lt;/project&gt;
+</pre>
+ <p>
+ Here, the namespace is set as the default namespace for the <code>&lt;task&gt;</code>
+ element and all its descendants.
+ </p>
+ <h3>Default namespace</h3>
+ <p>
+ The default namespace used by Ant is "antlib:org.apache.tools.ant".
+ </p>
+ <pre>
+&lt;typedef resource="org/example/tasks.properties" uri="antlib:org.apache.tools.ant"/&gt;
+&lt;task&gt;
+ ....
+&lt;/task&gt;
+ </pre>
+
+
+
+ <h3>Namespaces and Nested Elements</h3>
+
+ <p>
+ Almost always in Ant 1.6, elements nested inside a namespaced
+ element have the same namespace as their parent. So if 'task' in the
+ example above allowed a nested 'config' element, the build file snippet
+ would look like this:
+ </p><pre> &lt;typedef resource="org/example/tasks.properties" uri="<a href="http://example.org/tasks">http://example.org/tasks</a>"/&gt;
+ &lt;my:task xmlns:my="<a href="http://example.org/tasks">http://example.org/tasks</a>"&gt;
+ &lt;my:config a="foo" b="bar"/&gt;
+ ...
+ &lt;/my:task&gt;
+</pre>
+ <p>If the element allows or requires a lot of nested elements, the
+ prefix needs to be used for every nested element. Making the namespace
+ the default can reduce the verbosity of the script:
+ </p><pre> &lt;typedef resource="org/example/tasks.properties" uri="<a href="http://example.org/tasks">http://example.org/tasks</a>"/&gt;
+ &lt;task xmlns="<a href="http://example.org/tasks">http://example.org/tasks</a>"&gt;
+ &lt;config a="foo" b="bar"/&gt;
+ ...
+ &lt;/task&gt;
+ </pre>
+ <p>
+ From Ant 1.6.2, elements nested inside a namespaced element may also be
+ in Ant's default namespace. This means that the following is now allowed:
+ </p>
+ </p><pre> &lt;typedef resource="org/example/tasks.properties"
+ uri="<a href="http://example.org/tasks">http://example.org/tasks</a>"/&gt;
+ &lt;my:task xmlns:my="<a href="http://example.org/tasks">http://example.org/tasks</a>"&gt;
+ &lt;config a="foo" b="bar"/&gt;
+ ...
+ &lt;/my:task&gt;
+</pre>
+
+ <h3>Namespaces and Attributes</h3>
+
+ <p>
+ Attributes are only used to configure the element they belong to if:
+ </p>
+ <ul>
+ <li> they have no namespace (note that the default namespace does *not* apply to attributes)
+ </li>
+ <li> they are in the same namespace as the element they belong to
+ </li>
+ </ul>
+ <p>
+ In Ant 1.9.1 two attribute namespaces <code>ant:if</code> and <code>ant:unless</code> were added
+ to allow you to insert elements conditionally.
+ </p>
+ <p>
+ Other attributes are simply ignored.
+ </p>
+ <p>
+ This means that both:
+ </p>
+ <p>
+ </p><pre> &lt;my:task xmlns:my="<a href="http://example.org/tasks">http://example.org/tasks</a>"&gt;
+ &lt;my:config a="foo" b="bar"/&gt;
+ ...
+ &lt;/my:task&gt;
+</pre>
+ <p>
+ and
+ </p>
+ <pre> &lt;my:task xmlns:my="<a href="http://example.org/tasks">http://example.org/tasks</a>"&gt;
+ &lt;my:config my:a="foo" my:b="bar"/&gt;
+ ...
+ &lt;/my:task&gt;
+</pre>
+ <p>
+ result in the parameters "a" and "b" being used as parameters to configure the nested "config" element.
+ </p>
+ <p>It also means that you can use attributes from other namespaces
+ to markup the build file with extra metadata, such as RDF and
+ XML-Schema (whether that's a good thing or not). The same is not true
+ for elements from unknown namespaces, which result in a error.
+ </p>
+ <h3>Mixing Elements from Different Namespaces</h3>
+
+ <p>Now comes the difficult part: elements from different namespaces can
+ be woven together under certain circumstances. This has a lot to do
+ with the Ant 1.6
+ <a href="../develop.html#nestedtype">add type introspection rules</a>:
+ Ant types and tasks are now free to accept arbitrary named types as
+ nested elements, as long as the concrete type implements the interface
+ expected by the task/type. The most obvious example for this is the
+ <code>&lt;condition&gt;</code> task, which supports various nested conditions, all
+ of which extend the interface <tt>Condition</tt>. To integrate a
+ custom condition in Ant, you can now simply <code>&lt;typedef&gt;</code> the
+ condition, and then use it anywhere nested conditions are allowed
+ (assuming the containing element has a generic <tt>add(Condition)</tt> or <tt>addConfigured(Condition)</tt> method):
+</p><pre> &lt;typedef resource="org/example/conditions.properties" uri="<a href="http://example.org/conditions">http://example.org/conditions</a>"/&gt;
+ &lt;condition property="prop" xmlns="<a href="http://example.org/conditions">http://example.org/conditions</a>"&gt;
+ &lt;and&gt;
+ &lt;available file="bla.txt"/&gt;
+ &lt;my:condition a="foo"/&gt;
+ &lt;/and&gt;
+ &lt;/condition&gt;
+</pre>
+ <p>
+ In Ant 1.6, this feature cannot be used as much as we'd all like to: a
+ lot of code has not yet been adapted to the new introspection rules,
+ and elements like Ant's built-in conditions and selectors are not
+ really types in 1.6. This is expected to change in Ant 1.7.
+ </p>
+ <h3>Namespaces and Antlib</h3>
+
+ <p>
+ The new <a href="antlib.html">AntLib</a>
+ feature is also very much integrated with the namespace support in Ant
+ 1.6. Basically, you can "import" Antlibs simply by using a special
+ scheme for the namespace URI: the <tt>antlib</tt> scheme, which expects the package name in which a special <tt>antlib.xml</tt> file is located.
+ </p>
+
+</body>
+</html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/patternset.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/patternset.html
new file mode 100644
index 00000000..4ad433db
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/patternset.html
@@ -0,0 +1,192 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>PatternSet Type</title>
+</head>
+
+<body>
+
+<h2><a name="patternset">PatternSet</a></h2>
+<p><a href="../dirtasks.html#patterns">Patterns</a> can be grouped to
+sets and later be referenced by their <code>id</code> attribute. They
+are defined via a <code>patternset</code> element, which can appear
+nested into a <a href="fileset.html">FileSet</a> or a directory-based
+task that constitutes an implicit FileSet. In addition,
+<code>patternset</code>s can be defined as a stand alone element at
+the same level as <code>target</code> &#151; i.e., as children of
+<code>project</code> as well as as children of
+<code>target</code>.</p> <p>Patterns can be specified by nested
+<code>&lt;include&gt;</code>, or <code>&lt;exclude&gt;</code> elements
+or the following attributes.</p>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Attribute</b></td>
+ <td valign="top"><b>Description</b></td>
+ </tr>
+ <tr>
+ <td valign="top">includes</td>
+ <td valign="top">comma- or space-separated list of patterns of files that must be
+ included. All files are included when omitted.</td>
+ </tr>
+ <tr>
+ <td valign="top">includesfile</td>
+ <td valign="top">the name of a file; each line of this file is
+ taken to be an include pattern. You can specify more than one
+ include file by using a nested includesfile elements.
+ <b>Note:</b> if the file is empty and there are no other
+ patterns defined for the fileset, all files will be included.
+ </td>
+ </tr>
+ <tr>
+ <td valign="top">excludes</td>
+ <td valign="top">comma- or space-separated list of patterns of files that must be
+ excluded; no files (except default excludes) are excluded when omitted.</td>
+ </tr>
+ <tr>
+ <td valign="top">excludesfile</td>
+ <td valign="top">the name of a file; each line of this file is
+ taken to be an exclude pattern. You can specify more than one
+ exclude file by using a nested excludesfile elements.</td>
+ </tr>
+</table>
+<h3>Parameters specified as nested elements</h3>
+<h4><code>include</code> and <code>exclude</code></h4>
+<p>Each such element defines a single pattern for files to include or
+exclude.</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">name</td>
+ <td valign="top">the <a href="../dirtasks.html#patterns">pattern</a>
+ to in/exclude.</td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">if</td>
+ <td valign="top">Only use this pattern <a href="../properties.html#if+unless">if the named property is set</a>.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">unless</td>
+ <td valign="top">Only use this pattern <a href="../properties.html#if+unless">if the named property is
+ <b>not</b> set</a>.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+</table>
+<h4><code>includesfile</code> and <code>excludesfile</code></h4>
+<p>If you want to list the files to include or exclude external to
+your build file, you should use the includesfile/excludesfile
+attributes or elements. Using the attribute, you can only specify a
+single file of each type, while the nested elements can be specified
+more than once - the nested elements also support if/unless attributes
+you can use to test the existence of a property.</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">name</td>
+ <td valign="top">the name of the file holding the patterns to
+ in/exclude.</td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">if</td>
+ <td valign="top">Only read this file <a href="../properties.html#if+unless">if the named property is set</a>.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">unless</td>
+ <td valign="top">Only read this file <a href="../properties.html#if+unless">if the named property is
+ <b>not</b> set</a>.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+</table>
+<h4><code>patternset</code></h4>
+<p>Patternsets may be nested within one another, adding the nested
+patterns to the parent patternset.</p>
+<h4><code>invert</code></h4>
+<p>A nested patternset can be inverted using the <code>&lt;invert&gt;</code>
+element. <em>Since Apache Ant 1.7.1</em></p>
+<h3>Examples</h3>
+<blockquote><pre>
+&lt;patternset id=&quot;non.test.sources&quot;&gt;
+ &lt;include name=&quot;**/*.java&quot;/&gt;
+ &lt;exclude name=&quot;**/*Test*&quot;/&gt;
+&lt;/patternset&gt;
+</pre></blockquote>
+<p>Builds a set of patterns that matches all <code>.java</code> files
+that do not contain the text <code>Test</code> in their name. This set
+can be <a href="../using.html#references">referred</a> to via
+<code>&lt;patternset refid=&quot;non.test.sources&quot;/&gt;</code>,
+by tasks that support this feature, or by FileSets.</p>
+<p>Note that while the <code>includes</code> and
+<code>excludes</code> attributes accept
+multiple elements separated by commas or spaces, the nested
+<code>&lt;include&gt;</code> and <code>&lt;exclude&gt;</code> elements expect their name
+attribute to hold a single pattern.</p>
+<p>The nested elements allow you to use if and unless arguments to
+specify that the element should only be used if a property is set, or
+that it should be used only if a property is not set.</p>
+<p>For example</p>
+<blockquote><pre>
+&lt;patternset id=&quot;sources&quot;&gt;
+ &lt;include name=&quot;std/**/*.java&quot;/&gt;
+ &lt;include name=&quot;prof/**/*.java&quot; if=&quot;professional&quot;/&gt;
+ &lt;exclude name=&quot;**/*Test*&quot;/&gt;
+&lt;/patternset&gt;
+</pre></blockquote>
+<p>will only include the files in the sub-directory <em>prof</em> if the property
+<em>professional</em> is set to some value.</p>
+<p>The two sets</p>
+<blockquote><pre>
+&lt;patternset includesfile=&quot;some-file&quot;/&gt;
+</pre></blockquote>
+<p>and</p>
+<blockquote><pre>
+&lt;patternset&gt;
+ &lt;includesfile name=&quot;some-file&quot;/&gt;
+&lt;patternset/&gt;
+</pre></blockquote>
+<p>are identical. The include patterns will be read from the file
+<code>some-file</code>, one pattern per line.</p>
+<blockquote><pre>
+&lt;patternset&gt;
+ &lt;includesfile name=&quot;some-file&quot;/&gt;
+ &lt;includesfile name=&quot;${some-other-file}&quot;
+ if=&quot;some-other-file&quot;
+ /&gt;
+&lt;patternset/&gt;
+</pre></blockquote>
+<p>will also read include patterns from the file the property
+<code>some-other-file</code> points to, if a property of that name has
+been defined.</p>
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/permissions.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/permissions.html
new file mode 100644
index 00000000..f7b90b78
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/permissions.html
@@ -0,0 +1,164 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Permissions type</title>
+</head>
+
+<body>
+
+<h2><a name="permissions">Permissions</a></h2>
+<p>
+Permissions represents a set of security permissions granted or revoked to
+a specific part code executed in the JVM where Apache Ant is running in.
+The actual Permissions are specified via a set of nested permission items either
+<code>&lt;grant&gt;</code>ed or <code>&lt;revoke&gt;</code>d.</p>
+<p>
+In the base situation a <a href="#baseset">base set</a> of permissions granted.
+Extra permissions can be
+granted. A granted permission can be overruled by revoking a permission.
+The security manager installed by the permissions will throw an
+<code>SecurityException</code> if
+the code subject to these permissions try to use an permission that has not been
+granted or that has been revoked.</p>
+<h3>Nested elements</h3>
+<h4>grant</h4>
+<p>
+Indicates a specific permission is always granted. Its attributes indicate which
+permissions are granted.</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">class</td>
+ <td valign="top">The fully qualified name of the Permission class.</td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">name</td>
+ <td valign="top">The name of the Permission. The actual contents depends on the
+ Permission class.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">actions</td>
+ <td valign="top">The actions allowed. The actual contents depend on the
+ Permission class and name.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+<p>
+Implied permissions are granted.
+</p>
+<p>
+Please note that some Permission classes may actually need a name and / or actions in order to function properly. The name and actions are parsed by the actual
+Permission class.
+</p>
+<h4>revoke</h4>
+<p>
+Indicates a specific permission is revoked.</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">class</td>
+ <td valign="top">The fully qualified name of the Permission class.</td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">name</td>
+ <td valign="top">The name of the Permission. The actual contents depends on the
+ Permission class.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">actions</td>
+ <td valign="top">The actions allowed. The actual contents depend on the
+ Permission class and name.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+<p>
+Implied permissions are not resolved and therefore also not revoked.
+</p>
+<p>
+The name can handle the * wildcard at the end of the name, in which case all
+permissions of the specified class of which the name starts with the specified name
+(excluding the *) are revoked. Note that the - wildcard often supported by the
+granted properties is not supported.
+If the name is left empty all names match, and are revoked.
+If the actions are left empty all actions match, and are revoked.
+</p>
+<h3><a name="baseset">Base set</a></h3>
+A permissions set implicitly contains the following permissions:
+<blockquote><pre>
+&lt;grant class=&quot;java.net.SocketPermission&quot; name=&quot;localhost:1024-&quot; actions=&quot;listen&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.version&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.vendor&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.vendor.url&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.class.version&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;os.name&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;os.version&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;os.arch&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;file.encoding&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;file.separator&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;path.separator&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;line.separator&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.specification.version&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.specification.vendor&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.specification.name&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.vm.specification.version&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.vm.specification.vendor&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.vm.specification.name&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.vm.version&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.vm.vendor&quot; actions=&quot;read&quot;&gt;
+&lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;java.vm.name&quot; actions=&quot;read&quot;&gt;
+</blockquote></pre>
+These permissions can be revoked via <code>&lt;revoke&gt;</code> elements if necessary.
+
+<h3>Examples</h3>
+<blockquote><pre>
+&lt;permissions&gt;
+ &lt;grant class=&quot;java.security.AllPermission&quot;/&gt;
+ &lt;revoke class=&quot;java.util.PropertyPermission&quot;/&gt;
+&lt;/permissions&gt;
+</pre></blockquote>
+<p>
+Grants all permissions to the code except for those handling Properties.
+</p>
+<blockquote><pre>
+&lt;permissions&gt;
+ &lt;grant class=&quot;java.net.SocketPermission&quot; name=&quot;foo.bar.com&quot; action=&quot;connect&quot;/&gt;
+ &lt;grant class=&quot;java.util.PropertyPermission&quot; name=&quot;user.home&quot; action=&quot;read,write&quot;/&gt;
+&lt;/permissions&gt;
+</pre></blockquote>
+<p>
+Grants the base set of permissions with the addition of a SocketPermission to connect
+to foo.bar.com and the permission to read and write the user.home system property.
+</p>
+
+</body>
+</html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/propertyset.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/propertyset.html
new file mode 100644
index 00000000..81d491e0
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/propertyset.html
@@ -0,0 +1,143 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>PropertySet Type</title>
+</head>
+
+<body>
+
+<h2><a name="propertyset">PropertySet</a></h2>
+<p><em>Since Apache Ant 1.6</em></p>
+
+<p>Groups a set of properties to be used by reference in a task that
+supports this.</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">dynamic</td>
+ <td valign="top">Whether to reevaluate the set every time the set
+ is used. Default is &quot;<code>true</code>&quot;.</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">negate</td>
+ <td valign="top">Whether to negate results. If
+ &quot;<code>true</code>&quot;, all properties <i>not</i>
+ selected by nested elements will be returned. Default is
+ &quot;<code>false</code>&quot;. <em>Since Ant 1.6.2</em>
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+<h3>Parameters specified as nested elements</h3>
+
+<h4>propertyref</h4>
+
+<p>Selects properties from the current project to be included in the
+set.</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">name</td>
+ <td valign="top">Select the property with the given name.</td>
+ <td align="center" valign="top" rowspan="4">Exactly one of these.</td>
+ </tr>
+ <tr>
+ <td valign="top">prefix</td>
+ <td valign="top">Select the properties whose name starts with the
+ given string.</td>
+ </tr>
+ <tr>
+ <td valign="top">regex</td>
+ <td valign="top">Select the properties that match the given
+ regular expression. Similar to <a
+ href="mapper.html#regexp-mapper">regexp type mappers</a>, this
+ requires a supported regular expression library.</td>
+ </tr>
+ <tr>
+ <td valign="top">builtin</td>
+ <td valign="top">Selects a builtin set of properties. Valid
+ values for this attribute are <code>all</code> for all Ant
+ properties, <code>system</code> for the system properties and
+ <code>commandline</code> for all properties specified on the
+ command line when invoking Ant (plus a number of special
+ internal Ant properties).</td>
+ </tr>
+</table>
+
+<h4>propertyset</h4>
+
+<p>A <code>propertyset</code> can be used as the set union of more
+<code>propertyset</code>s.</p>
+
+<p>For example:</p>
+
+<blockquote><pre>
+&lt;propertyset id=&quot;properties-starting-with-foo&quot;&gt;
+ &lt;propertyref prefix=&quot;foo&quot;/&gt;
+&lt;/propertyset&gt;
+&lt;propertyset id=&quot;properties-starting-with-bar&quot;&gt;
+ &lt;propertyref prefix=&quot;bar&quot;/&gt;
+&lt;/propertyset&gt;
+&lt;propertyset id=&quot;my-set&quot;&gt;
+ &lt;propertyset refid=&quot;properties-starting-with-foo&quot;/&gt;
+ &lt;propertyset refid=&quot;properties-starting-with-bar&quot;/&gt;
+&lt;/propertyset&gt;
+</pre></blockquote>
+
+<p>collects all properties whose name starts with either
+&quot;foo&quot; or &quot;bar&quot; in the set named
+&quot;my-set&quot;.</p>
+
+<h4>mapper</h4>
+
+<p>A <a href="mapper.html">mapper</a> - at maximum one mapper can be
+specified. The mapper is used to change the names of the property
+keys, for example:
+
+<blockquote><pre>
+&lt;propertyset id=&quot;properties-starting-with-foo&quot;&gt;
+ &lt;propertyref prefix=&quot;foo&quot;/&gt;
+ &lt;mapper type=&quot;glob&quot; from=&quot;foo*&quot; to=&quot;bar*&quot;/&gt;
+&lt;/propertyset&gt;
+</pre></blockquote>
+
+<p>collects all properties whose name starts with &quot;foo&quot;, but
+changes the names to start with &quot;bar&quot; instead.</p>
+
+<p>If supplied, the nested mapper will be applied
+subsequent to any negation of matched properties.</p>
+
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/redirector.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/redirector.html
new file mode 100644
index 00000000..d0e36838
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/redirector.html
@@ -0,0 +1,193 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Redirector Type</title>
+</head>
+
+<body>
+
+<h2><a name="redirector">I/O redirection</a></h2>
+<p>For many tasks, input and output can be defined in a fairly
+straightforward fashion. The <a href="../Tasks/exec.html">exec</a>
+task, used to execute an external process, stands as a very
+basic example. The executed process may accept input, produce
+output, or do either or both depending upon various circumstances.
+Output may be classified as &quot;output&quot; or as &quot;error
+output.&quot; The <code>&lt;redirector&gt;</code> type provides a concrete means
+of redirecting input and output featuring the use of
+<a href="./mapper.html">File Mapper</a>s to specify
+source (input) and destination (output/error) files. <em>Since Apache Ant 1.6.2</em>
+<p>The <code>&lt;redirector&gt;</code> element accepts the following attributes:</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">output</td>
+ <td valign="top">Name of a file to which output should be written.
+ If the error stream is not also redirected to a file or property,
+ it will appear in this output.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">error</td>
+ <td valign="top">The file to which the standard error of the
+ command should be redirected.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">logError</td>
+ <td valign="top">This attribute is used when you wish to see
+ error output in Ant's log and you are redirecting output to
+ a file/property. The error output will not be included in
+ the output file/property. If you redirect error with the
+ <i>error</i> or <i>errorProperty</i> attributes, this will
+ have no effect.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">append</td>
+ <td valign="top">Whether output and error files should be
+ appended to rather than overwritten. Defaults to
+ <code>false</code>.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">createemptyfiles</td>
+ <td valign="top">Whether output and error files should be
+ created even when empty. Defaults to <code>true</code>.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">outputproperty</td>
+ <td valign="top">The name of a property in which the output of the
+ command should be stored. Unless the error stream is redirected
+ to a separate file or stream, this property will include the
+ error output.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">errorproperty</td>
+ <td valign="top">The name of a property in which the standard error
+ of the command should be stored.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">input</td>
+ <td valign="top">A file from which the executed command's standard input
+ is taken. This attribute is mutually exclusive with the
+ <i>inputstring</i> attribute.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">inputstring</td>
+ <td valign="top">A string which serves as the input stream for the
+ executed command. This attribute is mutually exclusive with the
+ <i>input</i> attribute.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">inputencoding</td>
+ <td valign="top">The input encoding.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">outputencoding</td>
+ <td valign="top">The output encoding.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">errorencoding</td>
+ <td valign="top">The error encoding.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">alwayslog</td>
+ <td valign="top">Always send to the log in addition to
+ any other destination. <i>Since Ant 1.6.3</i>.
+ </td>
+ <td align="center" valign="top">No, default is <code>false</code></td>
+ </tr>
+ <tr>
+ <td valign="top">loginputstring</td>
+ <td valign="top">Controls the display of <i>inputstring</i>'s value in
+ log messages. Set to <code>false</code> when sending sensitive data
+ (e.g. passwords) to external processes. <i>Since Ant 1.6.3</i>.
+ </td>
+ <td align="center" valign="top">No, default is <code>true</code></td>
+ </tr>
+ <tr>
+ <td valign="top">binaryOutput</td>
+ <td valign="top">When set to true Ant will not try to split the
+ output into lines - which it will usually do in order to separate
+ error from normal output. This setting will not prevent binary
+ output from getting corrupted if you also specify filter chains.
+ <i>Since Ant 1.9.4</i>.
+ </td>
+ <td align="center" valign="top">No, default is <code>false</code></td>
+ </tr>
+</table>
+<h3>Parameters specified as nested elements</h3>
+<h4>inputmapper</h4>
+<p>A single <a href="./mapper.html">File Mapper</a> used to redirect process
+input. Multiple mapping results should concatenate all mapped files as input.
+Mapping will ordinarily be performed on a task-specified sourcefile;
+consult the documentation of the individual task for more details.
+A nested <code>&lt;inputmapper&gt;</code> is not compatible with either of the
+<i>input</i> or <i>inputstring</i> attributes.</p>
+<h4>outputmapper</h4>
+<p>A single <a href="./mapper.html">File Mapper</a> used to redirect process
+output. Mapping will ordinarily be performed on a task-specified sourcefile;
+consult the documentation of the individual task for more details.
+A nested <code>&lt;outputmapper&gt;</code> is not compatible with the
+<i>output</i> attribute.</p>
+<h4>errormapper</h4>
+<p>A single <a href="./mapper.html">File Mapper</a> used to redirect error
+output. Mapping will ordinarily be performed on a task-specified sourcefile;
+consult the documentation of the individual task for more details.
+A nested <code>&lt;errormapper&gt;</code> is not compatible with the
+<i>error</i> attribute.</p>
+<h4>inputfilterchain</h4>
+<p>A <a href="./filterchain.html">FilterChain</a> can be
+applied to the process input.</p>
+<h4>outputfilterchain</h4>
+<p>A <a href="./filterchain.html">FilterChain</a> can be
+applied to the process output.</p>
+<h4>errorfilterchain</h4>
+<p>A <a href="./filterchain.html">FilterChain</a> can be
+applied to the error output.</p>
+<h3>Usage</h3>
+Tasks known to support I/O redirection:
+<ul>
+<li><a href="../Tasks/exec.html">Exec</a></li>
+<li><a href="../Tasks/apply.html">Apply</a></li>
+<li><a href="../Tasks/java.html">Java</a></li>
+</ul>
+<p>The expected behavior of a <code>&lt;redirector&gt;</code> is to a great degree
+dependent on the supporting task. Any possible points of confusion
+should be noted at the task level.</p>
+
+
+</body>
+</html>
+
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/regexp.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/regexp.html
new file mode 100644
index 00000000..0628bb9b
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/regexp.html
@@ -0,0 +1,116 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Regexp Type</title>
+</head>
+
+<body>
+
+<h2><a name="regexp">Regexp</a></h2>
+<p>
+Regexp represents a regular expression.
+<h3>Parameters</h3>
+<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">pattern</td>
+ <td valign="top">regular expression pattern</td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+</table>
+
+<h3>Examples</h3>
+<blockquote><pre>
+ &lt;regexp id="myregexp" pattern="alpha(.+)beta"/&gt;<br>
+</pre></blockquote>
+<p>
+Defines a regular expression for later use with id myregexp.
+</p>
+<blockquote><pre>
+ &lt;regexp refid="myregexp"/&gt;<br>
+</pre></blockquote>
+<p>
+Use the regular expression with id myregexp.
+</p>
+<h3><a name="implementation">Choice of regular expression implementation</a></h3>
+<p>
+Apache Ant comes with
+wrappers for
+<a href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html" target="_top">the java.util.regex package</a>,
+<a href="http://attic.apache.org/projects/jakarta-regexp.html" target="_top">jakarta-regexp</a>
+and <a href="http://attic.apache.org/projects/jakarta-oro.html" target="_top">jakarta-ORO</a>,
+See <a href="../install.html#librarydependencies">installation dependencies</a>
+ concerning the supporting libraries.</p>
+<p>
+The property <code>ant.regexp.regexpimpl</code> governs which regular expression implementation will be chosen.
+Possible values for this property are :
+<ul>
+<li>
+org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp
+</li>
+<li>
+org.apache.tools.ant.util.regexp.JakartaOroRegexp
+</li>
+<li>
+org.apache.tools.ant.util.regexp.JakartaRegexpRegexp
+</li>
+</ul>
+It can also be another implementation of the interface <code>org.apache.tools.ant.util.regexp.Regexp</code>.
+If <code>ant.regexp.regexpimpl</code> is not defined, Ant uses Jdk14Regexp as this is always available.</p>
+<p>
+There are cross-platform issues for matches related to line terminator.
+For example if you use $ to anchor your regular expression on the end of a line
+the results might be very different depending on both your platform and the regular
+expression library you use. It is 'highly recommended' that you test your pattern on
+both Unix and Windows platforms before you rely on it.
+<ul>
+ <li>Jakarta Oro defines a line terminator as '\n' and is consistent with Perl.</li>
+ <li>Jakarta RegExp uses a system-dependent line terminator.</li>
+ <li>JDK 1.4 uses '\n', '\r\n', '\u0085', '\u2028', '\u2029' as a default
+ but is configured in the wrapper to use only '\n' (UNIX_LINE)</li>
+</ul>
+<em>We used to recommend that you use Jakarta ORO but since its
+ development has been retired Java's built-in regex package is likely
+ the best choice going forward.</em>
+</p>
+<h3>Usage</h3>
+The following tasks and types use the Regexp type :
+<ul>
+<li><a href="../Tasks/replaceregexp.html">ReplaceRegExp task</a></li>
+<li><a href="filterchain.html#linecontainsregexp">LineContainsRegexp filter</a></li>
+</ul>
+<p>
+These string filters also use the mechanism of regexp to choose a regular expression implementation :
+</p>
+<ul>
+<li><a href="filterchain.html#containsregex">ContainsRegex string filter</a></li>
+<li><a href="filterchain.html#replaceregex">ReplaceRegex string filter</a></li>
+<li><a href="selectors.html#filenameselect">filename selector</a></li>
+<li><a href="resources.html#rsel.name">name resource selector</a></li>
+<li><a href="selectors.html#regexpselect">containsregexp selector</a></li>
+</ul>
+
+</body>
+</html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/resources.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/resources.html
new file mode 100644
index 00000000..58cefde1
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/resources.html
@@ -0,0 +1,1380 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Resources and Resource Collections</title>
+</head>
+
+<body>
+
+<h2><a name="resource">Resources</a></h2>
+<p>
+A file-like entity can be abstracted to the concept of a <i>resource</i>.
+In addition to providing access to file-like attributes, a resource
+implementation should, when possible, provide the means to read content
+from and/or write content to the underlying entity. Although the resource
+concept was introduced in <i>Apache Ant 1.5.2</i>, resources are available for
+explicit use beginning in <b>Ant 1.7</b>.
+</p>
+
+<h3>The built-in resource types are:</h3>
+
+<ul>
+ <li><a href="#basic">resource</a> - a basic resource.</li>
+ <li><a href="#bzip2resource">bzip2resource</a> - a BZip2 compressed resource.</li>
+ <li><a href="#file">file</a> - a file.</li>
+ <li><a href="#gzipresource">gzipresource</a> - a GZip compressed resource.</li>
+ <li><a href="#javaresource">javaresource</a> - a resource loadable
+ via a Java classloader.</li>
+ <li><a href="#javaconstant">javaconstant</a> - a constant in a class loadable
+ via a Java classloader.</li>
+ <li><a href="#propertyresource">propertyresource</a> - an Ant property.</li>
+ <li><a href="#string">string</a> - a text string.</li>
+ <li><a href="#tarentry">tarentry</a> - an entry in a tar file.</li>
+ <li><a href="#url">url</a> - a URL.</li>
+ <li><a href="#zipentry">zipentry</a> - an entry in a zip file.</li>
+</ul>
+
+<h4><a name="basic">resource</a></h4>
+
+<p>A basic resource. Other resource types derive from this basic
+type; as such all its attributes are available, though in most cases
+irrelevant attributes will be ignored. This and all resource
+implementations are also usable as single-element
+<a href="#collection">Resource Collections</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">name</td>
+ <td valign="top">The name of this resource</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">exists</td>
+ <td valign="top">Whether this resource exists</td>
+ <td align="center" valign="top">No, default <i>true</i></td>
+ </tr>
+ <tr>
+ <td valign="top">lastmodified</td>
+ <td valign="top">The last modification time of this resource</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">directory</td>
+ <td valign="top">Whether this resource is directory-like</td>
+ <td align="center" valign="top">No, default <i>false</i></td>
+ </tr>
+ <tr>
+ <td valign="top">size</td>
+ <td valign="top">The size of this resource</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+</table>
+
+<h4><a name="file">file</a></h4>
+
+<p>Represents a file accessible via local filesystem conventions.</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">file</td>
+ <td valign="top">The file represented by this resource</td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">basedir</td>
+ <td valign="top">The base directory of this resource. When this
+ attribute is set, attempts to access the name of the resource
+ will yield a path relative to this location.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+</table>
+
+<h4><a name="javaresource">javaresource</a></h4>
+
+<p>Represents a resource loadable via a Java classloader.</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">name</td>
+ <td valign="top">The name of the resource.</td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">classpath</td>
+ <td valign="top">the classpath to use when looking up a resource.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">classpathref</td>
+ <td valign="top">the classpath to use when looking up a resource,
+ given as <a href="../using.html#references">reference</a>
+ to a <code>&lt;path&gt;</code> defined elsewhere..</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">loaderRef</td>
+ <td valign="top">the name of the loader that is
+ used to load the resource, constructed from the specified classpath.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">parentFirst</td>
+ <td valign="top">Whether to consult the parent classloader first -
+ the parent classloader most likely is the system classloader -
+ when using a nested classpath. Defaults
+ to <code>true</code>.<br/>
+ <em>Since Ant 1.8.0</em></td>
+ <td align="center" valign="top">No</td>
+ </tr>
+</table>
+
+<p>The classpath can also be specified as nested classpath element,
+where <b>&lt;classpath&gt;</b> is a <a
+href="../using.html#path">path-like structure</a>.</p>
+
+
+<h4><a name="javaconstant">javaconstant</a></h4>
+<p>Loads the value of a java constant. As a specialisation of
+<a href="#javaresource">javaresource</a> all of its attributes and nested elements are
+supported. A constant must be specified as <tt>public static</tt> otherwise it could not be loaded.</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">name</td>
+ <td valign="top">The name of the resource. Must be specified as full qualified
+ field name.
+ </td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+</table>
+<h5>Examples</h5>
+This loads the value of the constant <tt>VERSION</tt> of the <tt>org.acme.Main</tt> class
+into the <tt>version</tt>-property. The classpath for finding that class is provided via
+nested classpath element.
+<pre><code>&lt;loadresource property=&quot;version&quot;&gt;
+ &lt;javaconstant name=&quot;org.acme.Main.VERSION&quot;&gt;
+ &lt;classpath&gt;
+ &lt;pathelement location=&quot;${acme.lib.dir}&quot;/&gt;
+ &lt;/classpath&gt;
+ &lt;/javaconstant&gt;
+ &lt;/loadresource&gt;
+</code></pre>
+
+Create a new file <tt>c:/temp/org.apache.tools.ant.Main.DEFAULT_BUILD_FILENAME</tt> with the content
+of that constant (<tt>build.xml</tt>).
+<pre><code>&lt;copy todir=&quot;c:/temp&quot;&gt;
+ &lt;javaconstant name=&quot;org.apache.tools.ant.Main.DEFAULT_BUILD_FILENAME&quot;/&gt;
+&lt;/copy&gt;</code></pre>
+
+
+<h4><a name="zipentry">zipentry</a></h4>
+
+<p>Represents an entry in a ZIP archive. The archive can be specified
+using the archive attribute or a nested single-element resource
+collection. <code>zipentry</code> only supports file system resources
+as nested elements.</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">zipfile or its alias name archive</td>
+ <td valign="top">The zip file containing this resource</td>
+ <td align="center" valign="top">Yes, unless a nested resource
+ collection has been specified.</td>
+ </tr>
+ <tr>
+ <td valign="top">name</td>
+ <td valign="top">The name of the archived resource</td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">encoding</td>
+ <td valign="top">The encoding of the zipfile</td>
+ <td align="center" valign="top">No;
+ platform default used if unspecified</td>
+ </tr>
+</table>
+
+<h4><a name="tarentry">tarentry</a></h4>
+
+<p>Represents an entry in a TAR archive. The archive can be specified
+using the archive attribute or a nested single-element resource
+collection.</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">archive</td>
+ <td valign="top">The tar archive containing this resource</td>
+ <td align="center" valign="top">Yes, unless a nested resource
+ collection has been specified.</td>
+ </tr>
+ <tr>
+ <td valign="top">name</td>
+ <td valign="top">The name of the archived resource</td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+</table>
+
+<h4><a name="gzipresource">gzipresource</a></h4>
+
+<p>This is not a stand-alone resource, but a wrapper around another
+resource providing compression of the resource's contents on the fly.
+A single element resource collection must be specified as a nested
+element.</p>
+
+<h4><a name="bzip2resource">bzip2resource</a></h4>
+
+<p>This is not a stand-alone resource, but a wrapper around another
+resource providing compression of the resource's contents on the fly.
+A single element resource collection must be specified as a nested
+element.</p>
+
+<h4><a name="url">url</a></h4>
+
+<p>Represents a URL.</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">url</td>
+ <td valign="top">The url to expose</td>
+ <td rowspan="3" align="center" valign="middle">Exactly one of these</td>
+ </tr>
+ <tr>
+ <td valign="top">file</td>
+ <td valign="top">The file to expose as a file: url</td>
+ </tr>
+ <tr>
+ <td valign="top">baseUrl</td>
+ <td valign="top">The base URL which must be combined with relativePath</td>
+ </tr>
+ <tr>
+ <td valign="top">relativePath</td>
+ <td valign="top">Relative path that defines the url combined with
+ baseUrl</td>
+ <td align="center" valign="top">If using baseUrl</td>
+ </tr>
+</table>
+
+<h4><a name="string">string</a></h4>
+
+<p>Represents a Java String. It can be written to, but only once, after which
+it will be an error to write to again.</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">value</td>
+ <td valign="top">The value of this resource</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+</table>
+
+<p>The resource also supports nested text, which can only be supplied if the <code>value</code> attribute is unset:
+ </p>
+<pre>
+ &lt;string>
+ self.log("Ant version =${ant.version}");
+ &lt;/string>
+</pre>
+
+</p>
+
+<h4><a name="propertyresource">propertyresource</a></h4>
+
+<p>Represents an Ant property.</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">name</td>
+ <td valign="top">The property name</td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+</table>
+
+<hr>
+<h2><a name="collection">Resource Collections</a></h2>
+<p>
+A Resource Collection is an abstraction of an entity that groups
+together a number of <a href="#resource">resources</a>. Several of
+Ant's "legacy" datatypes have been modified to behave as Resource Collections:
+<ul>
+ <li><a href="fileset.html">fileset</a>,
+ <a href="dirset.html">dirset</a>,
+ <a href="multirootfileset.html">multirootfileset</a>,
+ <a href="filelist.html">filelist</a>, and
+ <a href="../using.html#path">path</a>
+ (and derivative types) expose <a href="#file">file</a> resources
+ </li>
+ <li><a href="tarfileset.html">tarfileset</a>
+ can expose <a href="#file">file</a> or <a href="#tarentry">tarentry</a>
+ resources depending on configuration
+ </li>
+ <li><a href="zipfileset.html">zipfileset</a>
+ can expose <a href="#file">file</a> or <a href="#zipentry">zipentry</a>
+ resources depending on configuration
+ </li>
+ <li><a href="propertyset.html">propertyset</a>
+ exposes <a href="#propertyresource">property</a> resources
+ </li>
+</ul>
+</p>
+<p>Strangely, some tasks can even legitimately behave as resource collections:
+<ul>
+ <li><a href="../Tasks/concat.html">concat</a>
+ exposes a concatenated resource, and adds e.g.
+ <a href="filterchain.html">filtering</a>
+ to Ant's resource-related capabilities.
+ </li>
+</ul>
+</p>
+<h3>The additional built-in resource collections are:</h3>
+<ul>
+ <li><a href="#resources">resources</a> - generic resource collection</li>
+ <li><a href="#files">files</a> - collection of files similar to
+ <a href="fileset.html">fileset</a></li>
+ <li><a href="#restrict">restrict</a> - restrict a resource collection
+ to include only resources meeting specified criteria</li>
+ <li><a href="#sort">sort</a> - sorted resource collection</li>
+ <li><a href="#first">first</a> - first <i>n</i> resources from a
+ nested collection</li>
+ <li><a href="#last">last</a> - last <i>n</i> resources from a
+ nested collection</li>
+ <li><a href="#allbutfirst">allbutfirst</a> - all except the
+ first <i>n</i> resources from a nested collection</li>
+ <li><a href="#allbutlast">allbutlast</a> - all except the last <i>n</i>
+ resources from a nested collection</li>
+ <li><a href="#tokens">tokens</a> - <a href="#string">string</a> tokens
+ gathered from a nested collection</li>
+ <li><a href="#union">union</a> - set union of nested resource collections</li>
+ <li><a href="#intersect">intersect</a> - set intersection
+ of nested resource collections</li>
+ <li><a href="#difference">difference</a> - set difference
+ of nested resource collections</li>
+ <li><a href="#mappedresources">mappedresources</a> - generic
+ resource collection wrapper that maps the names of the nested
+ resources using a <a href="mapper.html">mapper</a>.</li>
+ <li><a href="#archives">archives</a> - wraps around different
+ resource collections and treats the nested resources as ZIP or TAR
+ archives that will be extracted on the fly.</li>
+ <li><a href="#resourcelist">resourcelist</a> - a collection of
+ resources whose names have been read from another resource.</li>
+</ul>
+<h4><a name="resources">resources</a></h4>
+<p>A generic resource collection, designed for use with
+ <a href="../using.html#references">references</a>.
+ For example, if a third-party Ant task generates a Resource Collection
+ of an unknown type, it can still be accessed via a
+ <code>&lt;resources&gt;</code> collection. The secondary use of this
+ collection type is as a container of other resource collections,
+ preserving the order of nested collections as well as
+ duplicate resources (contrast with <a href="#union">union</a>).
+</p>
+<blockquote>
+ <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">cache</td>
+ <td valign="top">Whether to cache results. <em>since Ant 1.8.0</em></td>
+ <td valign="top" align="center">No, default <i>false</i></td>
+ </tr>
+ </table>
+</blockquote>
+
+<h4><a name="files">files</a></h4>
+<p>A group of files. These files are matched by <b>absolute</b> patterns
+ taken from a number of <a href="patternset.html">PatternSets</a>.
+ These can be specified as nested <code>&lt;patternset&gt;</code>
+ elements. In addition, <code>&lt;files&gt;</code> holds an implicit
+ PatternSet and supports the nested <code>&lt;include&gt;</code>,
+ <code>&lt;includesfile&gt;</code>, <code>&lt;exclude&gt;</code>
+ and <code>&lt;excludesfile&gt;</code> elements of PatternSet directly,
+ as well as PatternSet's attributes.
+</p>
+<p><a href="selectors.html">File Selectors</a> are available as nested
+ elements. A file must be selected by all selectors in order to be included;
+ <code>&lt;files&gt;</code> is thus equivalent to an
+ <code>&lt;and&gt;</code> file selector container.
+</p>
+<p><b>More simply put</b>, this type is equivalent to a
+ <a href="fileset.html">fileset</a> with no base directory.
+ <b>Please note</b> that without a base directory,
+ filesystem scanning is based entirely on include and exclude patterns.
+ A <a href="selectors.html#filenameselect">filename</a> (or any)
+ selector can <i>only</i> influence the scanning process <i>after</i>
+ the file has been included based on pattern-based selection.
+</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">includes</td>
+ <td valign="top">comma- or space-separated list of patterns
+ of files that must be included</td>
+ <td rowspan="2" valign="middle" align="center">At least one of these</td>
+ </tr>
+ <tr>
+ <td valign="top">includesfile</td>
+ <td valign="top">the name of a file; each line of this file is
+ taken to be an include pattern.</td>
+ </tr>
+ <tr>
+ <td valign="top">excludes</td>
+ <td valign="top">comma- or space-separated list of patterns
+ of files that must be excluded</td>
+ <td rowspan="2" valign="top" align="center">No, default none
+ (except default excludes when true)</td>
+ </tr>
+ <tr>
+ <td valign="top">excludesfile</td>
+ <td valign="top">the name of a file; each line of this file is
+ taken to be an exclude pattern.</td>
+ </tr>
+ <tr>
+ <td valign="top">defaultexcludes</td>
+ <td valign="top">Whether
+ <a href="../dirtasks.html#defaultexcludes">default excludes</a>
+ should be used</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ <tr>
+ <td valign="top">casesensitive</td>
+ <td valign="top">Whether patterns are case-sensitive</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ <tr>
+ <td valign="top">followsymlinks</td>
+ <td valign="top">Whether to follow symbolic links
+ (see note <a href="#symlink">below</a>)</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+</table>
+
+<p><a name="symlink"><b>Note</b></a>: All files/directories for which
+the canonical path is different from its path are considered symbolic
+links. On Unix systems this usually means the file really is a
+symbolic link but it may lead to false results on other
+platforms.
+</p>
+
+<h4><a name="restrict">restrict</a></h4>
+<p>Restricts a nested resource collection using resource selectors:
+<blockquote>
+ <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">cache</td>
+ <td valign="top">Whether to cache results; disabling
+ may seriously impact performance</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ </table>
+ <h4>Parameters specified as nested elements</h4>
+ <p>A single resource collection is required.</p>
+ <p>Nested resource selectors are used to "narrow down" the included
+ resources, combined via a logical <i>AND</i>. These are patterned
+ after <a href="selectors.html">file selectors</a> but are,
+ unsurprisingly, targeted to resources.
+ Several built-in resource selectors are available in the internal
+ <a href="antlib.html">antlib</a>
+ <code>org.apache.tools.ant.types.resources.selectors</code>:
+ </p>
+
+ <ul>
+ <li><a href="#rsel.name">name</a> - select resources by name.</li>
+ <li><a href="#rsel.exists">exists</a> - select existing resources.</li>
+ <li><a href="#rsel.date">date</a> - select resources by date.</li>
+ <li><a href="#rsel.type">type</a> - select resources by type.</li>
+ <li><a href="#rsel.size">size</a> - select resources by size.</li>
+ <li><a href="#rsel.instanceof">instanceof</a>
+ - select resources by class or Ant datatype.</li>
+ <li><a href="#rsel.and">and</a> - "and" nested resource selectors.</li>
+ <li><a href="#rsel.or">or</a> - "or" nested resource selectors.</li>
+ <li><a href="#rsel.not">not</a> - "not" a nested resource selector.</li>
+ <li><a href="#rsel.none">none</a>
+ - select resources selected by no nested resource selectors.</li>
+ <li><a href="#rsel.majority">majority</a> - select resources selected
+ by a majority of nested resource selectors.</li>
+ <li><a href="selectors.html#modified">modified</a> - select resources which
+ content has changed.</li>
+ <li><a href="selectors.html#containsselect">contains</a> - select resources
+ containing a particular text string.</li>
+ <li><a href="selectors.html#regexpselect">containsregexp</a> - select
+ resources whose contents match a particular regular expression.</li>
+ <li><a href="#rsel.compare">compare</a> - select resources
+ based on comparison to other resources.</li>
+ <li><a href="selectors.html#readable">readable</a> -
+ Select files (resources must be files) if they are readable.</li>
+ <li><a href="selectors.html#writable">writable</a> -
+ Select files (resources must be files) if they are writable.</li>
+ </ul>
+
+ <h4><a name="rsel.name">name</a></h4>
+ <p>Selects resources by name.</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">name</td>
+ <td valign="top">The name pattern to test using standard Ant
+ patterns.</td>
+ <td valign="top" align="center" rowspan="2">Exactly one of
+ the two</td>
+ </tr>
+ <tr>
+ <td valign="top">regex</td>
+ <td valign="top">The regular expression matching files to select.</td>
+ </tr>
+ <tr>
+ <td valign="top">casesensitive</td>
+ <td valign="top">Whether name comparisons are case-sensitive</td>
+ <td align="center" valign="top">No, default <i>true</i></td>
+ </tr>
+ <tr>
+ <td valign="top">handledirsep</td>
+ <td valign="top">
+ If this is specified, the mapper will treat a \ character in a
+ resource name or name attribute as a / for the purposes of
+ matching. This attribute can be true or false, the default is
+ false.
+ <em>Since Ant 1.8.0.</em>
+ <td align="center" valign="top">No</td>
+ </tr>
+ </table>
+
+ <h4><a name="rsel.exists">exists</a></h4>
+ <p>Selects existing resources.</p>
+
+ <h4><a name="rsel.date">date</a></h4>
+ <p>Selects resources by date.</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">millis</td>
+ <td valign="top">The comparison date/time in ms since January 1, 1970</td>
+ <td rowspan="2" align="center" valign="middle">One of these</td>
+ </tr>
+ <tr>
+ <td valign="top">datetime</td>
+ <td valign="top">The formatted comparison date/time</td>
+ </tr>
+ <tr>
+ <td valign="top">pattern</td>
+ <td valign="top">SimpleDateFormat-compatible pattern
+ for use with the <code>datetime</code> attribute</td>
+ <td align="center" valign="top">
+ No, default is "MM/DD/YYYY HH:MM AM_or_PM"</td>
+ </tr>
+ <tr>
+ <td valign="top">granularity</td>
+ <td valign="top">The number of milliseconds leeway to use when
+ comparing file modification times. This is needed because not
+ every file system supports tracking the last modified time to
+ the millisecond level.</td>
+ <td align="center" valign="top">No; default varies by platform:
+ FAT filesystems = 2 sec; Unix = 1 sec; NTFS = 1 ms.</td>
+ </tr>
+ <tr>
+ <td valign="top">when</td>
+ <td valign="top">One of "before", "after", "equal"</td>
+ <td align="center" valign="top">No, default "equal"</td>
+ </tr>
+ </table>
+
+ <h4><a name="rsel.type">type</a></h4>
+ <p>Selects resources by type (file or directory).</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">type</td>
+ <td valign="top">One of "file", "dir", "any" (since Ant 1.8)</td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+ </table>
+
+ <h4><a name="rsel.size">size</a></h4>
+ <p>Selects resources by size.</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">size</td>
+ <td valign="top">The size to compare</td>
+ <td align="center" valign="top">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">when</td>
+ <td valign="top">One of "equal", "eq", "greater", "gt", "less", "lt",
+ "ge" (greater or equal), "ne" (not equal), "le" (less or equal)</td>
+ <td align="center" valign="top">No, default "equal"</td>
+ </tr>
+ </table>
+
+ <h4><a name="rsel.instanceof">instanceof</a></h4>
+ <p>Selects resources by type.</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">class</td>
+ <td valign="top">The class of which the resource must be an instance</td>
+ <td rowspan="2" align="center" valign="middle">One of these</td>
+ </tr>
+ <tr>
+ <td valign="top">type</td>
+ <td valign="top">The Ant type that must
+ be assignable from the resource</td>
+ </tr>
+ <tr>
+ <td valign="top">uri</td>
+ <td valign="top">The uri in which <i>type</i> must be defined</td>
+ <td valign="top">No</td>
+ </tr>
+ </table>
+
+ <h4><a name="rsel.and">and</a></h4>
+ <p>Selects a resource if it is selected by all nested resource selectors.</p>
+
+ <h4><a name="rsel.or">or</a></h4>
+ <p>Selects a resource if it is selected
+ by at least one nested resource selector.</p>
+
+ <h4><a name="rsel.not">not</a></h4>
+ <p>Negates the selection result of the single
+ nested resource selector allowed.</p>
+
+ <h4><a name="rsel.none">none</a></h4>
+ <p>Selects a resource if it is selected
+ by no nested resource selectors.</p>
+
+ <h4><a name="rsel.majority">majority</a></h4>
+ <p>Selects a resource if it is selected
+ by the majority of nested resource selectors.</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">allowtie</td>
+ <td valign="top">Whether a tie (when there is an even number
+ of nested resource selectors) is considered a majority</td>
+ <td valign="top">No, default <i>true</i></td>
+ </tr>
+ </table>
+
+ <h4><a name="rsel.compare">compare</a></h4>
+ <p>Selects a resource based on its comparison to one or more "control"
+ resources using nested <a href="#rcmp">resource comparators</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">when</td>
+ <td valign="top">Comparison ("equal"/"eq", "greater"/"gt", "less"/"lt",
+ "le" (less or equal), "ge" (greater or equal), "ne" (not equal).</td>
+ <td valign="top">No, default "equal"</td>
+ </tr>
+ <tr>
+ <td valign="top">against</td>
+ <td valign="top">Quantifier ("all"/"each"/"every", "any"/"some",
+ (exactly) "one", "most"/"majority", "none".</td>
+ <td valign="top">No, default "all"</td>
+ </tr>
+ </table>
+ <h4>Parameters specified as nested elements</h4>
+ <p>The resources against which comparisons will be made must be specified
+ using the nested &lt;control&gt; element, which denotes a
+ <a href="#resources">resources</a> collection.</p>
+ <h4>Examples</h4>
+ <p>Assuming the namespace settings
+<pre><code> rsel="antlib:org.apache.tools.ant.types.resources.selectors"
+ rcmp="antlib:org.apache.tools.ant.types.resources.comparators"
+</code></pre></p>
+ <pre>
+&lt;restrict&gt;
+ &lt;fileset dir="src" includes="a,b,c,d,e,f,g" /&gt;
+ &lt;rsel:compare when="le" against="all"&gt;
+ &lt;control&gt;
+ &lt;resource name="d" /&gt;
+ &lt;/control&gt;
+ &lt;rcmp:name /&gt;
+ &lt;/rsel:compare&gt;
+&lt;/restrict&gt;
+ </pre>
+ <p>Selects files a, b, c, and d.</p>
+ <pre>
+ &lt;project rsel=&quot;antlib:org.apache.tools.ant.types.resources.selectors&quot;&gt;
+ &lt;macrodef name=&quot;copyFromPath&quot;&gt;
+ &lt;attribute name=&quot;todir&quot;/&gt;
+ &lt;attribute name=&quot;refid&quot;/&gt;
+ &lt;element name=&quot;nested-resource-selectors&quot; optional=&quot;yes&quot; implicit=&quot;true&quot;/&gt;
+ &lt;sequential&gt;
+ &lt;mkdir dir=&quot;@{todir}&quot; taskname=&quot;copyFromPath&quot;/&gt;
+ &lt;copy todir=&quot;@{todir}&quot; taskname=&quot;copyFromPath&quot;&gt;
+ &lt;restrict&gt;
+ &lt;path refid=&quot;@{refid}&quot;/&gt;
+ &lt;rsel:or&gt;
+ &lt;nested-resource-selectors/&gt;
+ &lt;/rsel:or&gt;
+ &lt;/restrict&gt;
+ &lt;flattenmapper/&gt;
+ &lt;/copy&gt;
+ &lt;/sequential&gt;
+ &lt;/macrodef&gt;
+ &lt;copyFromPath refid=&quot;classpath&quot; todir=&quot;todir&quot;&gt;
+ &lt;rsel:name name=&quot;log4j.properties&quot;/&gt;
+ &lt;rsel:name name=&quot;default.properties&quot;/&gt;
+ &lt;/copyFromPath&gt;
+ &lt;/project&gt;
+ </pre>
+ <p>Creates the <tt>todir</tt> directory and copies (if present) the
+ files <tt>log4j.properties</tt> and <tt>default.properties</tt>
+ from the Classpath (already used while compiling).
+ </p>
+
+ <pre>
+ &lt;project&gt;
+ &lt;filelist id=&quot;allfiles&quot; dir=&quot;${ant.home}/bin&quot; files=&quot;ant.cmd,foo.txt,ant.bat,bar.txt,ant&quot;/&gt;
+ &lt;restrict id=&quot;missingfiles&quot;&gt;
+ &lt;filelist refid=&quot;allfiles&quot;/&gt;
+ &lt;rsel:not xmlns:rsel=&quot;antlib:org.apache.tools.ant.types.resources.selectors&quot;&gt;
+ &lt;rsel:exists/&gt;
+ &lt;/rsel:not&gt;
+ &lt;/restrict&gt;
+ &lt;echo&gt;These files are missed: ${toString:missingfiles}&lt;/echo&gt;
+ &lt;/project&gt;
+ </pre>
+ <p>The resource collection <i>allfiles</i> defines a list of files which are expected. The restrict
+ <i>missingfiles</i> uses the <tt>&lt;not&gt;&lt;exists&gt;</tt> selector for getting all files
+ which are not present. Finally we use the <i>toString:</i> <a href="../using.html#pathshortcut">pathshortcut</a> for
+ getting them in a readable form: <tt>[echo] These files are missed: ....foo.txt;....bar.txt</tt></p>
+
+</blockquote>
+
+<h4><a name="sort">sort</a></h4>
+
+<p>Sorts a nested resource collection according to the resources'
+ natural order, or by one or more nested <a href="#rcmp">resource
+ comparators</a>:</p>
+<blockquote>
+ <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">cache</td>
+ <td valign="top">Whether to cache results; disabling
+ may seriously impact performance</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ </table>
+ <h4>Parameters specified as nested elements</h4>
+ <p>A single resource collection is required.</p>
+ <p>The sort can be controlled and customized by specifying one or more
+ resource comparators. Resources can be sorted according to multiple
+ criteria; the first specified is the "outermost", while the last
+ specified is the "innermost". Several built-in resource comparators
+ are available in the internal <a href="antlib.html">antlib</a>
+ <code>org.apache.tools.ant.types.resources.comparators</code>:
+ </p>
+ <h4><a name="rcmp">Resource Comparators:</a></h4>
+ <ul>
+ <li><a href="#rcmp.name">name</a> - sort resources by name</li>
+ <li><a href="#rcmp.exists">exists</a> - sort resources by existence</li>
+ <li><a href="#rcmp.date">date</a> - sort resources by date</li>
+ <li><a href="#rcmp.type">type</a> - sort resources by type</li>
+ <li><a href="#rcmp.size">size</a> - sort resources by size</li>
+ <li><a href="#rcmp.content">content</a> - sort resources by content</li>
+ <li><a href="#rcmp.reverse">reverse</a> - reverse the natural sort order,
+ or that of a single nested resource comparator</li>
+ </ul>
+
+ <h4><a name="rcmp.name">name</a></h4>
+ <p>Sort resources by name.</p>
+
+ <h4><a name="rcmp.exists">exists</a></h4>
+ <p>Sort resources by existence.
+ Not existing is considered "less than" existing.</p>
+
+ <h4><a name="rcmp.date">date</a></h4>
+ <p>Sort resources by date.</p>
+
+ <h4><a name="rcmp.type">type</a></h4>
+ <p>Sort resources by type (file or directory).
+ Because directories contain files, they are considered "greater".</p>
+
+ <h4><a name="rcmp.size">size</a></h4>
+ <p>Sort resources by size.</p>
+
+ <h4><a name="rcmp.content">content</a></h4>
+ <p>Sort resources by content.</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">binary</td>
+ <td valign="top">Whether content should be compared in binary mode.
+ If <i>false<i>, content will be compared without regard to
+ platform-specific line-ending conventions.</td>
+ <td valign="top">No, default <i>true</i></td>
+ </tr>
+ </table>
+
+ <h4><a name="rcmp.reverse">reverse</a></h4>
+ <p>Reverse the natural sort order, or that of a single nested comparator.</p>
+
+ <h4>Examples</h4>
+ <pre>
+ &lt;property name=&quot;eol&quot; value=&quot;${line.separator}&quot; /&gt;
+ &lt;pathconvert property=&quot;sorted&quot; pathsep=&quot;${eol}&quot;&gt;
+ &lt;sort&gt;
+ &lt;tokens&gt;
+ &lt;string value=&quot;foo bar etc baz&quot; /&gt;
+ &lt;stringtokenizer /&gt;
+ &lt;/tokens&gt;
+ &lt;/sort&gt;
+ &lt;/pathconvert&gt;</pre>
+ <p>The resource of type string &quot;foo bar etc baz&quot; is split into four tokens by
+ the stringtokenizer. These tokens are sorted and there <i>sorted</i> gets the value
+ of &quot;bar baz etc foo&quot;.</p>
+
+ <pre>
+ &lt;sort&gt;
+ &lt;fileset dir=&quot;foo&quot; /&gt;
+ &lt;reverse xmlns=&quot;antlib:org.apache.tools.ant.types.resources.comparators&quot;&gt;
+ &lt;date /&gt;
+ &lt;/reverse&gt;
+ &lt;/sort&gt;</pre>
+ <p>This takes all files from <i>foo</i>
+ and sorts them by modification date in reverse order.
+ Because the resource comparators used (<code>&lt;reverse&gt;</code>
+ and <code>&lt;date&gt;</code>) are in an internal antlib
+ their namespace must be set explicitly.
+ </p>
+
+</blockquote>
+
+<h4><a name="first">first</a></h4>
+<p>Includes the first <i>count</i> resources from a nested resource collection.
+This can be used in conjunction with the <a href="#sort">sort</a> collection,
+for example, to select the first few oldest, largest, etc. resources from a
+larger collection.</p>
+<blockquote>
+ <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">count</td>
+ <td valign="top">The number of resources to include</td>
+ <td valign="top" align="center">No, default 1</td>
+ </tr>
+ <tr>
+ <td valign="top">cache</td>
+ <td valign="top">Whether to cache results; disabling
+ may seriously impact performance</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ </table>
+ <h4>Parameters specified as nested elements</h4>
+ <p>A single resource collection is required.</p>
+</blockquote>
+
+<h4><a name="last">last</a></h4>
+<p>Includes the last <i>count</i> resources from a nested resource collection.
+This can be used in conjunction with the <a href="#sort">sort</a> collection,
+for example, to select the last few oldest, largest, etc. resources from a
+larger collection. <strong>Since Ant 1.7.1</strong>.</p>
+<blockquote>
+ <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">count</td>
+ <td valign="top">The number of resources to include</td>
+ <td valign="top" align="center">No, default 1</td>
+ </tr>
+ <tr>
+ <td valign="top">cache</td>
+ <td valign="top">Whether to cache results; disabling
+ may seriously impact performance</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ </table>
+ <h4>Parameters specified as nested elements</h4>
+ <p>A single resource collection is required.</p>
+</blockquote>
+
+<h4><a name="allbutfirst">allbutfirst</a></h4>
+<p>Includes all elements except for the first <i>count</i> resources
+from a nested resource collection. This can be used in conjunction
+with the <a href="#sort">sort</a> collection, for example, to select
+all but the first few oldest, largest, etc. resources from a larger
+collection. <strong>Since Ant 1.9.5</strong>.</p>
+<blockquote>
+ <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">count</td>
+ <td valign="top">The number of resources to exclude</td>
+ <td valign="top" align="center">No, default 1</td>
+ </tr>
+ <tr>
+ <td valign="top">cache</td>
+ <td valign="top">Whether to cache results; disabling
+ may seriously impact performance</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ </table>
+ <h4>Parameters specified as nested elements</h4>
+ <p>A single resource collection is required.</p>
+</blockquote>
+
+<h4><a name="allbutlast">allbutlast</a></h4>
+<p>Includes all elements except for the last <i>count</i> resources
+from a nested resource collection. This can be used in conjunction
+with the <a href="#sort">sort</a> collection, for example, to select
+all but the last few oldest, largest, etc. resources from a larger
+collection. <strong>Since Ant 1.9.5</strong>.</p>
+<blockquote>
+ <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">count</td>
+ <td valign="top">The number of resources to exclude</td>
+ <td valign="top" align="center">No, default 1</td>
+ </tr>
+ <tr>
+ <td valign="top">cache</td>
+ <td valign="top">Whether to cache results; disabling
+ may seriously impact performance</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ </table>
+ <h4>Parameters specified as nested elements</h4>
+ <p>A single resource collection is required.</p>
+</blockquote>
+
+<h4><a name="tokens">tokens</a></h4>
+<p>Includes the <a href="#string">string</a> tokens gathered from a nested
+ resource collection. Uses the same tokenizers supported by the
+<a href="filterchain.html#tokenfilter">TokenFilter</a>. Imaginative
+ use of this resource collection can implement equivalents for such Unix
+ functions as <code>sort</code>, <code>grep -c</code>, <code>wc</code> and
+ <code>wc -l</code>.</p>
+<blockquote>
+ <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">encoding</td>
+ <td valign="top">The encoding of the nested resources</td>
+ <td valign="top" align="center">No, default is platform default</td>
+ </tr>
+ <tr>
+ <td valign="top">cache</td>
+ <td valign="top">Whether to cache results; disabling
+ may seriously impact performance</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ </table>
+ <h4>Parameters specified as nested elements</h4>
+ <ul>
+ <li>A single resource collection is required.</li>
+ <li>One nested tokenizer may be specified. If omitted, a
+ <a href="filterchain.html#linetokenizer">LineTokenizer</a> will be used.
+ </li>
+ </ul>
+ <h4>Examples</h4>
+ <pre>&lt;concat&gt;
+ &lt;union&gt;
+ &lt;sort&gt;
+ &lt;tokens&gt;
+ &lt;resources refid="input" /&gt;
+ &lt;linetokenizer includedelims="true" /&gt;
+ &lt;/tokens&gt;
+ &lt;/sort&gt;
+ &lt;/union&gt;
+&lt;/concat&gt;
+ </pre>
+ <p>Implements Unix <i>sort -u</i> against resource collection <i>input</i>.</p>
+</blockquote>
+
+<h4><a name="setlogic">Set operations</a></h4>
+<blockquote>
+ <p>The following resource collections implement set operations:</p>
+ <ul>
+ <li><a href="#union">union</a></li>
+ <li><a href="#intersect">intersect</a></li>
+ <li><a href="#difference">difference</a></li>
+ </ul>
+
+ <h4><a name="union">union</a></h4>
+ <p>Union of nested resource collections.</p>
+
+ <h4><a name="intersect">intersect</a></h4>
+ <p>Intersection of nested resource collections.</p>
+
+ <h4><a name="difference">difference</a></h4>
+ <p>Difference of nested resource collections.</p>
+
+ <p>The following attributes apply to all set-operation resource collections:
+ </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">cache</td>
+ <td valign="top">Whether to cache results; disabling
+ may seriously impact performance</td>
+ <td valign="top" align="center">No, default <i>true</i></td>
+ </tr>
+ </table>
+
+ <h4>Examples</h4>
+ <pre>
+ &lt;resources id=&quot;A&quot;&gt;
+ &lt;string value=&quot;a&quot;/&gt;
+ &lt;string value=&quot;b&quot;/&gt;
+ &lt;/resources&gt;
+ &lt;resources id=&quot;B&quot;&gt;
+ &lt;string value=&quot;b&quot;/&gt;
+ &lt;string value=&quot;c&quot;/&gt;
+ &lt;/resources&gt;
+ &lt;union id=&quot;union&quot;&gt;&lt;resources refid=&quot;A&quot;/&gt;&lt;resources refid=&quot;B&quot;/&gt;&lt;/union&gt;
+ &lt;intersect id=&quot;intersect&quot;&gt;&lt;resources refid=&quot;A&quot;/&gt;&lt;resources refid=&quot;B&quot;/&gt;&lt;/intersect&gt;
+ &lt;difference id=&quot;difference&quot;&gt;&lt;resources refid=&quot;A&quot;/&gt;&lt;resources refid=&quot;B&quot;/&gt;&lt;/difference&gt;
+ &lt;echo&gt;
+ A: ${toString:A} = a;b
+ B: ${toString:B} = b;c
+
+ union : ${toString:union} = a;b;c
+ intersect : ${toString:intersect} = b
+ difference: ${toString:difference} = a;c
+ &lt;/echo&gt;
+ </pre>
+</blockquote>
+
+<h4><a name="mappedresources">mappedresources</a></h4>
+
+<p><em>Since Ant 1.8.0</em></p>
+
+<p>Wraps another resource collection and maps the names of the nested
+ resources using a <a href="mapper.html">mapper</a>.</p>
+
+<p>Even if <em>mappedresources</em> wraps a resource collection that
+ consists of file-system based resources, <em>mappedresources</em>
+ will not appear to be file-system based. This means you can't
+ use <em>mappedresources</em> with tasks that only allow file-system
+ based resources.</p>
+
+<blockquote>
+ <h4>Parameters specified as attributes</h4>
+
+ <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">cache</td>
+ <td valign="top">Whether to cache results; enabling
+ may improve performance. <em>Since Ant 1.8.1</em></td>
+ <td valign="top" align="center">No, default <i>false</i></td>
+ </tr>
+ <tr>
+ <td valign="top">enablemultiplemappings</td>
+ <td valign="top">
+ If true the the collection will use all the mappings for a
+ given source path. If false the it will only process the first
+ resource.
+ <em>since Ant 1.8.1</em>.</td>
+ <td align="center">No - defaults to false.</td>
+ </tr>
+ </table>
+
+ <h4>Parameters specified as nested elements</h4>
+ <p>A single resource collection is required.</p>
+ <p>A single <a href="mapper.html">mapper</a> can be used to map
+ names. If no mapper has been given (which doesn't make any sense,
+ honestly), an identity mapper will be used.</p>
+
+ <h4>Examples</h4>
+
+ <p>Copies all files from a given directory to a target directory
+ adding ".bak" as an extension. Note this could be done with a
+ <em>mapper</em> nested into <em>copy</em> directly as well.</p>
+
+ <pre>
+ &lt;copy todir="${target}"&gt;
+ &lt;mappedresources&gt;
+ &lt;fileset dir="${src}"/&gt;
+ &lt;globmapper from="*" to="*.bak"/&gt;
+ &lt;/mappedresources&gt;
+ &lt;/copy&gt;
+ </pre>
+
+ <p>Creates a WAR archive adding all CLASSPATH entries that are files
+ to the <code>WEB-INF/lib</code> directory without keeping their
+ files-system structure.</p>
+
+ <pre>
+ &lt;war destfile="${output}"&gt;
+ &lt;mappedresources&gt;
+ &lt;restrict&gt;
+ &lt;path path="${java.class.path}"/&gt;
+ &lt;type type="file"/&gt;
+ &lt;/restrict&gt;
+ &lt;chainedmapper&gt;
+ &lt;flattenmapper/&gt;
+ &lt;globmapper from="*" to="WEB-INF/lib/*"/&gt;
+ &lt;/chainedmapper&gt;
+ &lt;/mappedresources&gt;
+ &lt;/war&gt;
+ </pre>
+</blockquote>
+
+<h4><a name="archives">archives</a></h4>
+
+<p><em>Since Ant 1.8.0</em></p>
+
+<p>This resource collection accepts an arbitrary number of nested
+ resources and assumes that all those resources must be either ZIP or
+ TAR archives. The resources returned
+ by <code>&lt;archives&gt;</code> are the contents of the nested
+ archives.</p>
+
+<p>This resource collection is a generalization
+ of <a href="../Tasks/zip.html#zipgroupfileset">zipgroupfileset</a>
+ which is only supported by the zip family of tasks.</p>
+
+<p><em>archives</em> doesn't support any attributes.</p>
+
+<blockquote>
+ <h4>Parameters specified as nested elements</h4>
+
+ <p><code>&lt;archives&gt;</code> has two nested
+ elements <code>&lt;zips&gt;</code> and
+ <code>&lt;tars&gt;</code> that are <a href="#union">unions</a>
+ themselves, i.e. they accept arbitrary many resource(collection)s
+ as nested elements.</p>
+
+ <p>The nested resources of &lt;zips&gt; are treated as ZIP archives,
+ the nested resources of &lt;tars&gt; as TAR archives.</p>
+
+ <h4>Examples</h4>
+
+ <p>Copies all files from all jars that are on the classpath
+ to <code>${target}</code>.</p>
+
+ <pre>
+ &lt;copy todir="${target}"&gt;
+ &lt;archives&gt;
+ &lt;zips&gt;
+ &lt;restrict&gt;
+ &lt;path path="${java.class.path}"/&gt;
+ &lt;name name="*.jar"/&gt;
+ &lt;/restrict&gt;
+ &lt;/zips&gt;
+ &lt;/archives&gt;
+ &lt;/copy&gt;
+ </pre>
+</blockquote>
+
+<h4><a name="resourcelist">resourcelist</a></h4>
+
+<p><em>Since Ant 1.8.0</em></p>
+
+<p>This resource collection accepts an arbitrary number of nested
+ resources, reads those resources and returns a resource for each
+ line read.</p>
+
+<p>If the line contains a colon, Ant will try to use it as an URL and
+ if that fails (or the line doesn't contain a colon) will return a
+ file resource with the line's content as its name.</p>
+
+<p>Properties will be expanded for each line. If the property
+ expansion yields a resource object rather than a string (for example
+ because of custom property helpers), the resources will be returned
+ directly.</p>
+
+<p><code>&lt;resourcelist&gt;</code> is a generalization
+ of <a href="filelist.html"><code>&lt;filelist&gt;</code></a>.</p>
+
+<blockquote>
+ <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">encoding</td>
+ <td valign="top">The encoding of the nested resources</td>
+ <td valign="top" align="center">No, default is platform default</td>
+ </tr>
+ </table>
+</blockquote>
+
+<blockquote>
+ <h4>Parameters specified as nested elements</h4>
+
+ <p><code>&lt;resourcelist&gt;</code> accepts arbitrary many
+ resource(collection)s as nested elements.</p>
+
+ <p>In addition <code>&lt;resourcelist&gt;</code> supports
+ nested <code>&lt;filterchain&gt;</code> elements that can be used
+ to filter/modify the read resources before their lines get
+ expanded. Such a nested element corresponds to
+ a <a href="filterchain.html">filterchain</a>.</p>
+
+ <h4>Examples</h4>
+
+ <p>The following example copies a file from the first URL of
+ several alternatives that can actually be reached. It assumes
+ that the file mirrors.txt looks like</p>
+
+ <pre>
+ mirrors.txt:
+http://best.mirror.example.org/
+http://second.best.mirror.example.org/mirror/of/best/
+https://yet.another.mirror/
+http://the.original.site/
+ </pre>
+
+ <pre>
+ &lt;copy todir="${target}"&gt;
+ &lt;first&gt;
+ &lt;restrict&gt;
+ &lt;resourcelist&gt;
+ &lt;file file="mirrors.txt"/&gt;
+ &lt;/resourcelist&gt;
+ &lt;exists/&gt;
+ &lt;/restrict&gt;
+ &lt;/first&gt;
+ &lt;/copy&gt;
+ </pre>
+</blockquote>
+
+</body>
+</html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/selectors-program.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/selectors-program.html
new file mode 100644
index 00000000..074a5426
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/selectors-program.html
@@ -0,0 +1,244 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+ <head>
+ <meta http-equiv="Content-Language" content="en-us">
+ <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Programming Selectors in Apache Ant</title>
+ </head>
+
+ <body>
+ <h2>Programming your own Selectors</h2>
+
+ <h3>Selector Programming API</h3>
+
+ <p>Want to define your own selectors? It's easy!</p>
+
+ <p>First, pick the type of selector that you want to define. There
+ are three types, and a recipe for each one follows. Chances are
+ you'll want to work with the first one, Custom Selectors.</p>
+
+ <ol>
+ <li>Custom Selectors
+
+ <p>This is the category that Apache Ant provides specifically for you to
+ define your own Selectors. Anywhere you want to use your selector
+ you use the <code>&lt;custom&gt;</code> element and specify
+ the class name of your selector within it. See the
+ <a href="selectors.html#customselect">Custom Selectors</a>
+ section of the Selector page for details. The
+ <code>&lt;custom&gt;</code> element can be used anywhere
+ the core selectors can be used. It can be contained within
+ <a href="selectors.html#selectcontainers">Selector Containers</a>,
+ for example.</p>
+
+ <p>To create a new Custom Selector, you have to create a class that
+ implements
+ <code>org.apache.tools.ant.types.selectors.ExtendFileSelector</code>.
+ The easiest way to do that is through the convenience base class
+ <code>org.apache.tools.ant.types.selectors.BaseExtendSelector</code>,
+ which provides all of the methods for supporting
+ <code>&lt;param&gt;</code> tags. First, override the
+ <code>isSelected()</code> method, and optionally the
+ <code>verifySettings()</code> method. If your custom
+ selector requires parameters to be set, you can also override
+ the <code>setParameters()</code> method and interpret the
+ parameters that are passed in any way you like. Several of the
+ core selectors demonstrate how to do that because they can
+ also be used as custom selectors.</p>
+
+ <li>Core Selectors
+
+ <p>These are the selectors used by Ant itself. To implement one of
+ these, you will have to alter some of the classes contained within
+ Ant.</p>
+
+ <ul>
+ <li><p>First, create a class that implements
+ <code>org.apache.tools.ant.types.selectors.FileSelector</code>.
+ You can either choose to implement all methods yourself from
+ scratch, or you can extend
+ <code>org.apache.tools.ant.types.selectors.BaseSelector</code>
+ instead, a convenience class that provides reasonable default
+ behaviour for many methods.</p>
+
+ <p>There is only one method required.
+ <code>public boolean isSelected(File basedir, String filename,
+ File file)</code>
+ is the real purpose of the whole exercise. It returns true
+ or false depending on whether the given file should be
+ selected from the list or not.</p>
+
+ <p>If you are using
+ <code>org.apache.tools.ant.types.selectors.BaseSelector</code>
+ there are also some predefined behaviours you can take advantage
+ of. Any time you encounter a problem when setting attributes or
+ adding tags, you can call setError(String errmsg) and the class
+ will know that there is a problem. Then, at the top of your
+ <code>isSelected()</code> method call <code>validate()</code> and
+ a BuildException will be thrown with the contents of your error
+ message. The <code>validate()</code> method also gives you a
+ last chance to check your settings for consistency because it
+ calls <code>verifySettings()</code>. Override this method and
+ call <code>setError()</code> within it if you detect any
+ problems in how your selector is set up.</p>
+
+ <p>You may also want to override <code>toString()</code>.</p>
+
+ <li><p>Put an <code>add</code> method for your selector in
+ <code>org.apache.tools.ant.types.selectors.SelectorContainer</code>.
+ This is an interface, so you will also have to add an implementation
+ for the method in the classes which implement it, namely
+ <code>org.apache.tools.ant.types.AbstractFileSet</code>,
+ <code>org.apache.tools.ant.taskdefs.MatchingTask</code> and
+ <code>org.apache.tools.ant.types.selectors.BaseSelectorContainer</code>.
+ Once it is in there, it will be available everywhere that core
+ selectors are appropriate.</p>
+ </ul>
+
+ <li>Selector Containers
+ <p>Got an idea for a new Selector Container? Creating a new one is
+ no problem:</p>
+ <ul>
+ <li><p>Create a new class that implements
+ <code>org.apache.tools.ant.types.selectors.SelectorContainer</code>.
+ This will ensure that your new
+ Container can access any new selectors that come along. Again, there
+ is a convenience class available for you called
+ <code>org.apache.tools.ant.types.selectors.BaseSelectorContainer</code>.
+ </p>
+ <li><p>Implement the
+ <code>public boolean isSelected(String filename, File file)</code>
+ method to do the right thing. Chances are you'll want to iterate
+ over the selectors under you, so use
+ <code>selectorElements()</code> to get an iterator that will do
+ that.</p>
+ <li><p>Again, put an <code>add</code> method for your container in
+ <code>org.apache.tools.ant.types.selectors.SelectorContainer</code>
+ and its implementations
+ <code>org.apache.tools.ant.types.AbstractFileSet</code> and
+ <code>org.apache.tools.ant.types.selectors.BaseSelectorContainer</code>.
+ </p>
+ </ul>
+ </ol>
+
+ <h3>Testing Selectors</h3>
+
+ <p>For a robust component (and selectors are (Project)Components) tests are
+ necessary. For testing Tasks we use JUnit TestCases - more specific
+ <tt>org.apache.tools.ant.BuildFileRule extends org.junit.rules.ExternalResource</tt>.
+ Some of its features like configure the (test) project by reading its buildfile and
+ execute targets we need for selector tests also. Therefore we use that BuildFileRule.
+ But testing selectors requires some more work: having a set of files, instantiate
+ and configure the selector, check the selection work and more. Because we usually
+ extend <tt>BaseExtendSelector</tt> its features have to be tested also (e.g. setError()).
+ </p>
+
+ <p>That's why we have a test rule for doing our selector tests:
+ <tt>org.apache.tools.ant.types.selectors.BaseSelectorRule</tt>.</p>
+
+ <p>This class extends ExternalResource and therefore can included in the set of Ant's
+ unit tests. It holds an instance of preconfigured BuildFileRule. Configuration
+ is done by parsing the src/etc/testcases/types/selectors.xml. BaseSelectorRule
+ then gives us helper methods for handling multiple selections. </p>
+
+ <p>Because the term "testcase" or "testenvironment" are so often used, this
+ special testenvironment got a new name: <i>bed</i>. The setup and cleanup of
+ the bed is all handled by the BaseSelectorRule so any test only has to handle
+ the actual test scenarios</p>
+
+ <p>A usual test scenario is:</p>
+ <ol>
+ <li>instantiate the selector</li>
+ <li>configure the selector</li>
+ <li>let the selector do some work</li>
+ <li>verify the work</li>
+ </ol>
+
+
+
+ <p>An example test would be:<pre>
+package org.apache.tools.ant.types.selectors;
+
+public class MySelectorTest {
+
+ @Rule
+ public final BaseSelectorRule selectorRule = new BaseSelectorRule();
+
+ @Test
+ public void testCase1() {
+
+
+ // Configure the selector
+ MySelector s = new MySelector();
+ s.addParam("key1", "value1");
+ s.addParam("key2", "value2");
+ s.setXX(true);
+ s.setYY("a value");
+
+ // do the tests
+ assertEquals("FTTTTTTTT", selectorRule.selectionString(s));
+ }
+}
+ </pre>
+ As an example of an error JUnit could log<pre>
+ [junit] FAILED
+ [junit] Error for files: <font color=blue>.;copy.filterset.filtered;tar/gz/asf-logo.gif.tar.gz</font>
+ [junit] expected:&lt;<font color=blue>FTTTFTTTF...</font>&gt; but was:&lt;TTTTTTTTT...&gt;
+ [junit] junit.framework.ComparisonFailure: Error for files: .;copy.filterset.filtered;tar/gz/asf-logo.gif.tar.gz
+ [junit] expected:&lt;FTTTFTTTF...&gt; but was:&lt;TTTTTTTTT...&gt;
+ [junit] at junit.framework.Assert.assertEquals(Assert.java:81)
+ [junit] at org.apache.tools.ant.types.selectors.BaseSelectorTest.performTest(BaseSelectorTest.java:194)
+ </pre></p>
+
+ <p>Described above the test class should provide a <tt>getInstance()</tt>
+ method. But that isn't used here. The used <tt>getSelector()</tt> method is
+ implemented in the base class and gives an instance of an Ant Project to
+ the selector. This is usually done inside normal build file runs, but not
+ inside this special environment, so this method gives the selector the
+ ability to use its own Project object (<tt>getProject()</tt>), for example
+ for logging.</p>
+
+
+ <h3>Logging</h3>
+
+ <p>During development and maybe later you sometimes need the output of information.
+ Therefore Logging is needed. Because the selector extends BaseExtendSelector or directly
+ BaseSelector it is an Ant <tt>DataType</tt> and therefore a <tt>ProjectComponent</tt>. <br>
+ That means that you have access to the project object and its logging capability.
+ <tt>ProjectComponent</tt> itself provides <i>log</i> methods which will do the
+ access to the project instance. Logging is therefore done simply with:
+ <pre>
+ log( "message" );
+ </pre>
+ or
+ <pre>
+ log( "message" , loglevel );
+ </pre>
+ where the <tt>loglevel</tt> is one of the values <ul>
+ <li> org.apache.tools.ant.Project.MSG_ERR </li>
+ <li> org.apache.tools.ant.Project.MSG_WARN </li>
+ <li> org.apache.tools.ant.Project.MSG_INFO (= default) </li>
+ <li> org.apache.tools.ant.Project.MSG_VERBOSE </li>
+ <li> org.apache.tools.ant.Project.MSG_DEBUG </li>
+ </ul>
+ </p>
+
+
+ </body>
+
+</html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/selectors.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/selectors.html
new file mode 100644
index 00000000..560b416c
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/selectors.html
@@ -0,0 +1,1566 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+ <head>
+ <meta http-equiv="Content-Language" content="en-us">
+ <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+ <title>Selectors in Apache Ant</title>
+ </head>
+
+ <body>
+ <h2>Selectors</h2>
+
+ <p>Selectors are a mechanism whereby the files that make up a
+ <code>&lt;fileset&gt;</code> can be selected based on criteria
+ other than filename as provided by the <code>&lt;include&gt;</code>
+ and <code>&lt;exclude&gt;</code> tags.</p>
+
+ <h3>How to use a Selector</h3>
+
+ <p>A selector is an element of FileSet, and appears within it. It can
+ also be defined outside of any target by using the <code>&lt;selector&gt;</code> tag
+ and then using it as a reference.
+ </p>
+
+ <p>Different selectors have different attributes. Some selectors can
+ contain other selectors, and these are called
+ <a href="#selectcontainers"><code>Selector Containers</code></a>.
+ There is also a category of selectors that allow
+ user-defined extensions, called
+ <a href="#customselect"><code>Custom Selectors</code></a>.
+ The ones built in to Apache Ant are called
+ <a href="#coreselect"><code>Core Selectors</code></a>.
+ </p>
+
+ <h3><a name="coreselect">Core Selectors</a></h3>
+
+ <p>Core selectors are the ones that come standard
+ with Ant. They can be used within a fileset and can be contained
+ within Selector Containers.</p>
+
+ <p>The core selectors are:</p>
+
+ <ul>
+ <li><a href="#containsselect"><code>&lt;contains&gt;</code></a> - Select
+ files that contain a particular text string</li>
+ <li><a href="#dateselect"><code>&lt;date&gt;</code></a> - Select files
+ that have been modified either before or after a particular date
+ and time</li>
+ <li><a href="#dependselect"><code>&lt;depend&gt;</code></a> - Select files
+ that have been modified more recently than equivalent files
+ elsewhere</li>
+ <li><a href="#depthselect"><code>&lt;depth&gt;</code></a> - Select files
+ that appear so many directories down in a directory tree</li>
+ <li><a href="#differentselect"><code>&lt;different&gt;</code></a> - Select files
+ that are different from those elsewhere</li>
+ <li><a href="#filenameselect"><code>&lt;filename&gt;</code></a> - Select
+ files whose name matches a particular pattern. Equivalent to
+ the include and exclude elements of a patternset.</li>
+ <li><a href="#presentselect"><code>&lt;present&gt;</code></a> - Select
+ files that either do or do not exist in some other location</li>
+ <li><a href="#regexpselect"><code>&lt;containsregexp&gt;</code></a> - Select
+ files that match a regular expression</li>
+ <li><a href="#sizeselect"><code>&lt;size&gt;</code></a> - Select files
+ that are larger or smaller than a particular number of bytes.</li>
+ <li><a href="#typeselect"><code>&lt;type&gt;</code></a> - Select files
+ that are either regular files or directories.</li>
+ <li><a href="#modified"><code>&lt;modified&gt;</code></a> - Select files if
+ the return value of the configured algorithm is different from that
+ stored in a cache.</li>
+ <li><a href="#signedselector"><code>&lt;signedselector&gt;</code></a> - Select files if
+ they are signed, and optionally if they have a signature of a certain name.
+ </li>
+ <li><a href="#scriptselector"><code>&lt;scriptselector&gt;</code></a> -
+ Use a BSF or JSR 223 scripting language to create
+ your own selector
+ </li>
+ <li><a href="#readable"><code>&lt;readable&gt;</code></a> -
+ Select files if they are readable.</li>
+ <li><a href="#writable"><code>&lt;writable&gt;</code></a> -
+ Select files if they are writable.</li>
+ </ul>
+
+ <h4><a name="containsselect">Contains Selector</a></h4>
+
+ <p>The <code>&lt;contains&gt;</code> tag in a FileSet limits
+ the files defined by that fileset to only those which contain the
+ string specified by the <code>text</code> attribute.
+ .</p>
+ <p>The <code>&lt;contains&gt;</code> selector can be used as a
+ ResourceSelector (see the
+ <a href="resources.html#restrict">&lt;restrict&gt;</a>
+ ResourceCollection).</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">text</td>
+ <td valign="top">Specifies the text that every file must contain
+ </td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">casesensitive</td>
+ <td valign="top">Whether to pay attention to case when looking
+ for the string in the <code>text</code> attribute. Default is
+ true.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">ignorewhitespace</td>
+ <td valign="top">Whether to eliminate whitespace before checking
+ for the string in the <code>text</code> attribute. Default is
+ false.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">encoding</td>
+ <td valign="top">Encoding of the resources being selected.
+ Required in practice if the encoding of the files being
+ selected is different from the default encoding of the JVM
+ where Ant is running.
+ Since Ant 1.9.0
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the Contains Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${doc.path}&quot; includes=&quot;**/*.html&quot;&gt;
+ &lt;contains text=&quot;script&quot; casesensitive=&quot;no&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all the HTML files that contain the string
+ <code>script</code>.</p>
+
+
+ <h4><a name="dateselect">Date Selector</a></h4>
+
+ <p>The <code>&lt;date&gt;</code> tag in a FileSet will put
+ a limit on the files specified by the include tag, so that tags
+ whose last modified date does not meet the date limits specified
+ by the selector will not end up being selected.</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">datetime</td>
+ <td valign="top">Specifies the date and time to test for.
+ Should be in the format MM/DD/YYYY HH:MM AM_or_PM, or
+ an alternative pattern specified via the <i>pattern</i>
+ attribute.
+ </td>
+ <td valign="top" align="center" rowspan="2">At least one of the two.</td>
+ </tr>
+ <tr>
+ <td valign="top">millis</td>
+ <td valign="top">The number of milliseconds since 1970 that should
+ be tested for. It is usually much easier to use the datetime
+ attribute.
+ </td>
+ </tr>
+ <tr>
+ <td valign="top">when</td>
+ <td valign="top">Indicates how to interpret the date, whether
+ the files to be selected are those whose last modified times should
+ be before, after, or equal to the specified value. Acceptable
+ values for this attribute are:
+ <ul>
+ <li>before - select files whose last modified date is before the indicated date
+ <li>after - select files whose last modified date is after the indicated date
+ <li>equal - select files whose last modified date is this exact date
+ </ul>
+ The default is equal.
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">granularity</td>
+ <td valign="top">The number of milliseconds leeway to use when
+ comparing file modification times. This is needed because not every
+ file system supports tracking the last modified time to the
+ millisecond level. Default is 0 milliseconds, or 2 seconds on DOS systems.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">pattern</td>
+ <td valign="top">The <CODE>SimpleDateFormat</CODE>-compatible pattern
+ to use when interpreting the <i>datetime</i> attribute.
+ <i>Since Ant 1.6.2</i>
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">checkdirs</td>
+ <td valign="top">
+ Indicates whether or not to check dates on directories.
+ </td>
+ <td valign="top" align="center">No, defaults to <i>false</i></td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the Date Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${jar.path}&quot; includes=&quot;**/*.jar&quot;&gt;
+ &lt;date datetime=&quot;01/01/2001 12:00 AM&quot; when=&quot;before&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all JAR files which were last modified before midnight
+ January 1, 2001.</p>
+
+
+ <h4><a name="dependselect">Depend Selector</a></h4>
+
+ <p>The <code>&lt;depend&gt;</code> tag selects files
+ whose last modified date is later than another, equivalent file in
+ another location.</p>
+
+ <p>The <code>&lt;depend&gt;</code> tag supports the use of a
+ contained <a href="mapper.html"><code>&lt;mapper&gt;</code></a> element
+ to define the location of the file to be compared against. If no
+ <code>&lt;mapper&gt;</code> element is specified, the
+ <code>identity</code> type mapper is used.</p>
+
+ <p>The <code>&lt;depend&gt;</code> selector is case-sensitive.</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">targetdir</td>
+ <td valign="top">The base directory to look for the files to compare
+ against. The precise location depends on a combination of this
+ attribute and the <code>&lt;mapper&gt;</code> element, if any.
+ </td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">granularity</td>
+ <td valign="top">The number of milliseconds leeway to give before
+ deciding a file is out of date. This is needed because not every
+ file system supports tracking the last modified time to the
+ millisecond level. Default is 0 milliseconds, or 2 seconds on DOS systems.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the Depend Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${ant.1.5}/src/main&quot; includes=&quot;**/*.java&quot;&gt;
+ &lt;depend targetdir=&quot;${ant.1.4.1}/src/main&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all the Java source files which were modified in the
+ 1.5 release.
+ </p>
+
+
+ <h4><a name="depthselect">Depth Selector</a></h4>
+
+ <p>The <code>&lt;depth&gt;</code> tag selects files based on
+ how many directory levels deep they are in relation to the base
+ directory of the fileset.
+ </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">min</td>
+ <td valign="top">The minimum number of directory levels below
+ the base directory that a file must be in order to be selected.
+ Default is no limit.
+ </td>
+ <td valign="top" align="center" rowspan="2">At least one of the two.</td>
+ </tr>
+ <tr>
+ <td valign="top">max</td>
+ <td valign="top">The maximum number of directory levels below
+ the base directory that a file can be and still be selected.
+ Default is no limit.
+ </td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the Depth Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${doc.path}&quot; includes=&quot;**/*&quot;&gt;
+ &lt;depth max=&quot;1&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all files in the base directory and one directory below
+ that.</p>
+
+
+ <h4><a name="differentselect">Different Selector</a></h4>
+
+ <p>The <code>&lt;different&gt;</code> selector will select a file
+ if it is deemed to be 'different' from an equivalent file in
+ another location. The rules for determining difference between
+ the two files are as follows:
+ <ol>
+ <li>If a file is only present in the resource collection you apply
+ the selector to but not in targetdir (or after applying the
+ mapper) the file is selected.
+ <li>If a file is only present in targetdir (or after applying the
+ mapper) it is ignored.
+ <li> Files with different lengths are different.
+ <li> If <tt>ignoreFileTimes</tt> is turned off, then differing file
+ timestamps will cause files to be regarded as different.
+ <li> Unless <tt>ignoreContents</tt> is set to true,
+ a byte-for-byte check is run against the two files.
+ </ol>
+
+ This is a useful selector to work with programs and tasks that don't handle
+ dependency checking properly; even if a predecessor task always creates its
+ output files, followup tasks can be driven off copies made with a different
+ selector, so their dependencies are driven on the absolute state of the
+ files, not just a timestamp. For example: anything fetched from a web site,
+ or the output of some program. To reduce the amount of checking, when using
+ this task inside a <code>&lt;copy&gt;</code> task, set
+ <tt>preservelastmodified</tt> to <i>true</i> to propagate the timestamp
+ from the source file to the destination file.<p>
+
+ The <code>&lt;different&gt;</code> selector supports the use of a
+ contained <a href="mapper.html"><code>&lt;mapper&gt;</code></a> element
+ to define the location of the file to be compared against. If no
+ <code>&lt;mapper&gt;</code> element is specified, the
+ <code>identity</code> type mapper is used.</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">targetdir</td>
+ <td valign="top">The base directory to look for the files to compare
+ against. The precise location depends on a combination of this
+ attribute and the <code>&lt;mapper&gt;</code> element, if any.
+ </td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">ignoreFileTimes</td>
+ <td valign="top">Whether to use file times in the comparison or not.
+ Default is true (time differences are ignored).
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">ignoreContents</td>
+ <td valign="top">Whether to do a byte per byte compare.
+ Default is false (contents are compared).
+ Since Ant 1.6.3
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">granularity</td>
+ <td valign="top">The number of milliseconds leeway to give before
+ deciding a file is out of date. This is needed because not every
+ file system supports tracking the last modified time to the
+ millisecond level. Default is 0 milliseconds, or 2 seconds on DOS systems.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the Different Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${ant.1.5}/src/main&quot; includes=&quot;**/*.java&quot;&gt;
+ &lt;different targetdir=&quot;${ant.1.4.1}/src/main&quot;
+ ignoreFileTimes="true"/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Compares all the Java source files between the 1.4.1 and the 1.5 release
+ and selects those who are different, disregarding file times.
+ </p>
+
+ <h4><a name="filenameselect">Filename Selector</a></h4>
+
+ <p>The <code>&lt;filename&gt;</code> tag acts like the
+ <code>&lt;include&gt;</code> and <code>&lt;exclude&gt;</code>
+ tags within a fileset. By using a selector instead, however,
+ one can combine it with all the other selectors using whatever
+ <a href="#selectcontainers">selector container</a> is desired.
+ </p>
+
+ <p>The <code>&lt;filename&gt;</code> selector is
+ case-sensitive.</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">name</td>
+ <td valign="top">The name of files to select. The name parameter
+ can contain the standard Ant wildcard characters.
+ </td>
+ <td valign="top" align="center" rowspan="2">Exactly one of
+ the two</td>
+ </tr>
+ <tr>
+ <td valign="top">regex</td>
+ <td valign="top">The regular expression matching files to select.</td>
+ </tr>
+ <tr>
+ <td valign="top">casesensitive</td>
+ <td valign="top">Whether to pay attention to case when looking
+ at file names. Default is "true".
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">negate</td>
+ <td valign="top">Whether to reverse the effects of this filename
+ selection, therefore emulating an exclude rather than include
+ tag. Default is "false".
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the Filename Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${doc.path}&quot; includes=&quot;**/*&quot;&gt;
+ &lt;filename name=&quot;**/*.css&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all the cascading style sheet files.</p>
+
+
+ <h4><a name="presentselect">Present Selector</a></h4>
+
+ <p>The <code>&lt;present&gt;</code> tag selects files
+ that have an equivalent file in another directory tree.</p>
+
+ <p>The <code>&lt;present&gt;</code> tag supports the use of a
+ contained <a href="mapper.html"><code>&lt;mapper&gt;</code></a> element
+ to define the location of the file to be tested against. If no
+ <code>&lt;mapper&gt;</code> element is specified, the
+ <code>identity</code> type mapper is used.</p>
+
+ <p>The <code>&lt;present&gt;</code> selector is case-sensitive.</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">targetdir</td>
+ <td valign="top">The base directory to look for the files to compare
+ against. The precise location depends on a combination of this
+ attribute and the <code>&lt;mapper&gt;</code> element, if any.
+ </td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">present</td>
+ <td valign="top">Whether we are requiring that a file is present in
+ the src directory tree only, or in both the src and the target
+ directory tree. Valid values are:
+ <ul>
+ <li>srconly - select files only if they are in the src
+ directory tree but not in the target directory tree
+ <li>both - select files only if they are present both in the
+ src and target directory trees
+ </ul>
+ Default is both. Setting this attribute to &quot;srconly&quot;
+ is equivalent to wrapping the selector in the <code>&lt;not&gt;</code>
+ selector container.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the Present Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${ant.1.5}/src/main&quot; includes=&quot;**/*.java&quot;&gt;
+ &lt;present present=&quot;srconly&quot; targetdir=&quot;${ant.1.4.1}/src/main&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all the Java source files which are new in the
+ 1.5 release.
+ </p>
+
+ <h4><a name="regexpselect">Regular Expression Selector</a></h4>
+
+ <p>The <code>&lt;containsregexp&gt;</code> tag in a FileSet limits
+ the files defined by that fileset to only those which contents contain a
+ match to the regular expression specified by the <code>expression</code> attribute.
+ </p>
+ <p>The <code>&lt;containsregexp&gt;</code> selector can be used as a
+ ResourceSelector (see the
+ <a href="resources.html#restrict">&lt;restrict&gt;</a>
+ ResourceCollection).</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">expression</td>
+ <td valign="top">Specifies the regular expression that must
+ match true in every file</td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">casesensitive</td>
+ <td valign="top">Perform a case sensitive match. Default is
+ true. <em>since Ant 1.8.2</em></td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">multiline</td>
+ <td valign="top">
+ Perform a multi line match.
+ Default is false. <em>since Ant 1.8.2</em></td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">singleline</td>
+ <td valign="top">
+ This allows '.' to match new lines.
+ SingleLine is not to be confused with multiline, SingleLine is a perl
+ regex term, it corresponds to dotall in java regex.
+ Default is false. <em>since Ant 1.8.2</em></td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the regular expression Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${doc.path}&quot; includes=&quot;*.txt&quot;&gt;
+ &lt;containsregexp expression=&quot;[4-6]\.[0-9]&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all the text files that match the regular expression
+ (have a 4,5 or 6 followed by a period and a number from 0 to 9).
+
+
+ <h4><a name="sizeselect">Size Selector</a></h4>
+
+ <p>The <code>&lt;size&gt;</code> tag in a FileSet will put
+ a limit on the files specified by the include tag, so that tags
+ which do not meet the size limits specified by the selector will not
+ end up being selected.</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">value</td>
+ <td valign="top">The size of the file which should be tested for.
+ </td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">units</td>
+ <td valign="top">The units that the <code>value</code> attribute
+ is expressed in. When using the standard single letter SI
+ designations, such as &quot;k&quot;,&quot;M&quot;, or
+ &quot;G&quot;, multiples of 1000 are used. If you want to use
+ power of 2 units, use the IEC standard: &quot;Ki&quot; for 1024,
+ &quot;Mi&quot; for 1048576, and so on. The default is no units,
+ which means the <code>value</code> attribute expresses the exact
+ number of bytes.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">when</td>
+ <td valign="top">Indicates how to interpret the size, whether
+ the files to be selected should be larger, smaller, or equal to
+ that value. Acceptable values for this attribute are:
+ <ul>
+ <li>less - select files less than the indicated size
+ <li>more - select files greater than the indicated size
+ <li>equal - select files this exact size
+ </ul>
+ The default is equal.
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the Size Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${jar.path}&quot;&gt;
+ &lt;patternset&gt;
+ &lt;include name=&quot;**/*.jar&quot;/&gt;
+ &lt;/patternset&gt;
+ &lt;size value=&quot;4&quot; units=&quot;Ki&quot; when=&quot;more&quot;/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all JAR files that are larger than 4096 bytes.</p>
+
+ <h4><a name="typeselect">Type Selector</a></h4>
+
+ <p>The <code>&lt;type&gt;</code> tag selects files of a certain type:
+ directory or regular.</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">type</td>
+ <td valign="top">The type of file which should be tested for.
+ Acceptable values are:
+ <ul>
+ <li>file - regular files</li>
+ <li>dir - directories</li>
+ </ul>
+ </td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the Type Selector to select only
+ directories in <code>${src}</code></p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${src}&quot;&gt;
+ &lt;type type="dir"/&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>The Type Selector is often used in conjunction with other selectors.
+ For example, to select files that also exist in a <code>template</code>
+ directory, but avoid selecting empty directories, use:
+
+<blockquote><pre>
+&lt;fileset dir="${src}"&gt;
+ &lt;and&gt;
+ &lt;present targetdir="template"/&gt;
+ &lt;type type="file"/&gt;
+ &lt;/and&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+
+ <h4><a name="modified">Modified Selector</a></h4>
+ <p>The <code>&lt;modified&gt;</code> selector computes a value for a file, compares that
+ to the value stored in a cache and select the file, if these two values
+ differ.</p>
+ <p>Because this selector is highly configurable the order in which the selection is done
+ is: <ol>
+ <li> get the absolute path for the file </li>
+ <li> get the cached value from the configured cache (absolute path as key) </li>
+ <li> get the new value from the configured algorithm </li>
+ <li> compare these two values with the configured comparator </li>
+ <li> update the cache if needed and requested </li>
+ <li> do the selection according to the comparison result </li>
+ </ol>
+ <p>The comparison, computing of the hashvalue and the store is done by implementation
+ of special interfaces. Therefore they may provide additional parameters.</p>
+
+ <p>The <code>&lt;modified&gt;</code> selector can be used as a
+ ResourceSelector (see the
+ <a href="resources.html#restrict">&lt;restrict&gt;</a>
+ ResourceCollection).
+ In that case it maps simple file resources to files and does its job. If the
+ resource is from another type, the <code>&lt;modified&gt;</code> selector tries
+ to (<b>attention!</b>) copy the content into a local file for computing the
+ hashvalue.</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"> algorithm </td>
+ <td valign="top"> The type of algorithm should be used.
+ Acceptable values are (further information see later):
+ <ul>
+ <li> hashvalue - HashvalueAlgorithm </li>
+ <li> digest - DigestAlgorithm </li>
+ <li> checksum - ChecksumAlgorithm </li>
+ </ul>
+ </td>
+ <td valign="top" align="center"> No, defaults to <i>digest</i> </td>
+ </tr>
+ <tr>
+ <td valign="top"> cache </td>
+ <td valign="top"> The type of cache should be used.
+ Acceptable values are (further information see later):
+ <ul>
+ <li> propertyfile - PropertyfileCache </li>
+ </ul>
+ </td>
+ <td valign="top" align="center"> No, defaults to <i>propertyfile</i> </td>
+ </tr>
+ <tr>
+ <td valign="top"> comparator </td>
+ <td valign="top"> The type of comparator should be used.
+ Acceptable values are (further information see later):
+ <ul>
+ <li> equal - EqualComparator </li>
+ <li> rule - java.text.RuleBasedCollator
+ <!-- NOTE -->
+ <i>(see <a href="#ModSelNote">note</a> for restrictions)</i>
+ </li>
+ </ul>
+ </td>
+ <td valign="top" align="center"> No, defaults to <i>equal</i> </td>
+ </tr>
+ <tr>
+ <td valign="top"> algorithmclass </td>
+ <td valign="top"> Classname of custom algorithm implementation. Lower
+ priority than <i>algorithm</i>. </td>
+ <td valign="top" align="center"> No </td>
+ </tr>
+ <tr>
+ <td valign="top"> cacheclass </td>
+ <td valign="top"> Classname of custom cache implementation. Lower
+ priority than <i>cache</i>. </td>
+ <td valign="top" align="center"> No </td>
+ </tr>
+ <tr>
+ <td valign="top"> comparatorclass </td>
+ <td valign="top"> Classname of custom comparator implementation. Lower
+ priority than <i>comparator</i>. </td>
+ <td valign="top" align="center"> No </td>
+ </tr>
+ <tr>
+ <td valign="top"> update </td>
+ <td valign="top"> Should the cache be updated when values differ? (boolean) </td>
+ <td valign="top" align="center"> No, defaults to <i>true</i> </td>
+ </tr>
+ <tr>
+ <td valign="top"> seldirs </td>
+ <td valign="top"> Should directories be selected? (boolean) </td>
+ <td valign="top" align="center"> No, defaults to <i>true</i> </td>
+ </tr>
+ <tr>
+ <td valign="top"> selres </td>
+ <td valign="top"> Should Resources without an InputStream, and
+ therefore without checking, be selected? (boolean) </td>
+ <td valign="top" align="center"> No, defaults to <i>true</i>. Only relevant
+ when used as ResourceSelector. </td>
+ </tr>
+ <tr>
+ <td valign="top"> delayupdate </td>
+ <td valign="top"> If set to <i>true</i>, the storage of the cache will be delayed until the
+ next finished BuildEvent; task finished, target finished or build finished,
+ whichever comes first. This is provided for increased performance. If set
+ to <i>false</i>, the storage of the cache will happen with each change. This
+ attribute depends upon the <i>update</i> attribute. (boolean)</td>
+ <td valign="top" align="center"> No, defaults to <i>true</i> </td>
+ </tr>
+ </table>
+
+ <p>These attributes can be set with nested <code>&lt;param/&gt;</code> tags. With <code>&lt;param/&gt;</code>
+ tags you can set other values too - as long as they are named according to
+ the following rules: <ul>
+ <li> <b> algorithm </b>: same as attribute algorithm </li>
+ <li> <b> cache </b>: same as attribute cache </li>
+ <li> <b> comparator </b>: same as attribute comparator </li>
+ <li> <b> algorithmclass </b>: same as attribute algorithmclass </li>
+ <li> <b> cacheclass </b>: same as attribute cacheclass </li>
+ <li> <b> comparatorclass </b>: same as attribute comparatorclass </li>
+ <li> <b> update </b>: same as attribute update </li>
+ <li> <b> seldirs </b>: same as attribute seldirs </li>
+ <li> <b> algorithm.* </b>: Value is transferred to the algorithm via its
+ <i>set</i>XX-methods </li>
+ <li> <b> cache.* </b>: Value is transferred to the cache via its
+ <i>set</i>XX-methods </li>
+ <li> <b> comparator.* </b>: Value is transferred to the comparator via its
+ <i>set</i>XX-methods </li>
+ </ul>
+
+ <table border="1" cellpadding="2" cellspacing="0">
+ <tr><td colspan="2"><font size="+1"><b> Algorithm options</b></font></td></tr>
+ <tr>
+ <td valign="top"><b>Name</b></td>
+ <td valign="top"><b>Description</b></td>
+ </tr>
+ <tr>
+ <td valign="top"> hashvalue </td>
+ <td valign="top"> Reads the content of a file into a java.lang.String
+ and use thats hashValue(). No additional configuration required.
+ </td>
+ </tr>
+ <tr>
+ <td valign="top"> digest </td>
+ <td valign="top"> Uses java.security.MessageDigest. This Algorithm supports
+ the following attributes:
+ <ul>
+ <li><i>algorithm.algorithm</i> (optional): Name of the Digest algorithm
+ (e.g. 'MD5' or 'SHA', default = <i>MD5</i>) </li>
+ <li><i>algorithm.provider</i> (optional): Name of the Digest provider
+ (default = <i>null</i>) </li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top"> checksum </td>
+ <td valign="top"> Uses java.util.zip.Checksum. This Algorithm supports
+ the following attributes:
+ <ul>
+ <li><i>algorithm.algorithm</i> (optional): Name of the algorithm
+ (e.g. 'CRC' or 'ADLER', default = <i>CRC</i>) </li>
+ </ul>
+ </td>
+ </tr>
+ <tr><td colspan="2"><font size="+1"><b> Cache options </b></font></td></tr>
+ <tr>
+ <td valign="top"> propertyfile </td>
+ <td valign="top"> Use the java.util.Properties class and its possibility
+ to load and store to file.
+ This Cache implementation supports the following attributes:
+ <ul>
+ <li><i>cache.cachefile</i> (optional): Name of the properties-file
+ (default = <i>cache.properties</i>) </li>
+ </ul>
+ </td>
+ </tr>
+ <tr><td colspan="2"><font size="+1"><b> Comparator options</b></font></td></tr>
+ <tr>
+ <td valign="top"> equal </td>
+ <td valign="top"> Very simple object comparison. </td>
+ </tr>
+ <tr>
+ <td valign="top"> rule </td>
+ <td valign="top"> Uses <i>java.text.RuleBasedCollator</i> for Object
+ comparison.
+ <!-- NOTE -->
+ <i>(see <a href="#ModSelNote">note</a> for restrictions)</i>
+ </td>
+ </tr>
+ </table>
+
+ <p>The <code>&lt;modified&gt;</code> selector supports a nested
+ <code>&lt;classpath&gt;</code> element that represents a <a href="../using.html#path">
+ PATH like structure</a> for finding custom interface implementations. </p>
+
+ <p>Here are some examples of how to use the Modified Selector:</p>
+
+ <blockquote><pre>
+ &lt;copy todir="dest"&gt;
+ &lt;fileset dir="src"&gt;
+ &lt;modified/&gt;
+ &lt;/fileset&gt;
+ &lt;/copy&gt;
+ </pre></blockquote>
+ <p>This will copy all files from <i>src</i> to <i>dest</i> which content has changed.
+ Using an updating PropertyfileCache with cache.properties and
+ MD5-DigestAlgorithm.</p>
+
+ <blockquote><pre>
+ &lt;copy todir="dest"&gt;
+ &lt;fileset dir="src"&gt;
+ &lt;modified update="true"
+ seldirs="true"
+ cache="propertyfile"
+ algorithm="digest"
+ comparator="equal"&gt;
+ &lt;param name="cache.cachefile" value="cache.properties"/&gt;
+ &lt;param name="algorithm.algorithm" value="MD5"/&gt;
+ &lt;/modified&gt;
+ &lt;/fileset&gt;
+ &lt;/copy&gt;
+ </pre></blockquote>
+ <p>This is the same example rewritten as CoreSelector with setting the all the values
+ (same as defaults are).</p>
+
+ <blockquote><pre>
+ &lt;copy todir="dest"&gt;
+ &lt;fileset dir="src"&gt;
+ &lt;custom class="org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector"&gt;
+ &lt;param name="update" value="true"/&gt;
+ &lt;param name="seldirs" value="true"/&gt;
+ &lt;param name="cache" value="propertyfile"/&gt;
+ &lt;param name="algorithm" value="digest"/&gt;
+ &lt;param name="comparator" value="equal"/&gt;
+ &lt;param name="cache.cachefile" value="cache.properties"/&gt;
+ &lt;param name="algorithm.algorithm" value="MD5"/&gt;
+ &lt;/custom&gt;
+ &lt;/fileset&gt;
+ &lt;/copy&gt;
+ </pre></blockquote>
+ <p>And this is the same rewritten as CustomSelector.</p>
+
+ <blockquote><pre>
+ &lt;target name="generate-and-upload-site"&gt;
+ &lt;echo&gt; generate the site using forrest &lt;/echo&gt;
+ &lt;antcall target="site"/&gt;
+
+ &lt;echo&gt; upload the changed file &lt;/echo&gt;
+ &lt;ftp server="${ftp.server}" userid="${ftp.user}" password="${ftp.pwd}"&gt;
+ &lt;fileset dir="htdocs/manual"&gt;
+ &lt;modified/&gt;
+ &lt;/fileset&gt;
+ &lt;/ftp&gt;
+ &lt;/target&gt;
+ </pre></blockquote>
+ <p>A useful scenario for this selector inside a build environment
+ for homepage generation (e.g. with <a href="http://xml.apache.org/forrest/">
+ Apache Forrest</a>). Here all <b>changed</b> files are uploaded to the server. The
+ CacheSelector saves therefore much upload time.</p>
+
+ <blockquote><pre>
+ &lt;modified cacheclassname="com.mycompany.MyCache"&gt;
+ &lt;classpath&gt;
+ &lt;pathelement location="lib/mycompany-antutil.jar"/&gt;
+ &lt;/classpath&gt;
+ &lt;/modified&gt;
+ </pre></blockquote>
+ <p>Uses <tt>com.mycompany.MyCache</tt> from a jar outside of Ants own classpath
+ as cache implementation</p>
+
+ <h4><a name="ModSelNote">Note on RuleBasedCollator</a></h4>
+ <p>The RuleBasedCollator needs a format for its work, but its needed while
+ instantiation. There is a problem in the initialization algorithm for this
+ case. Therefore you should not use this (or tell me the workaround :-).</p>
+
+ <h4><a name="signedselector">Signed Selector</a></h4>
+
+ <p>
+ The <code>&lt;signedselector&gt;</code> tag selects signed files and optionally
+ signed with a certain name.
+ </p>
+ <p>
+ This selector has been added in Apache Ant 1.7.
+ </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">name</td>
+ <td valign="top"> The signature name to check for.</td>
+ <td valign="top" align="center">no</td>
+ </tr>
+ </table>
+
+ <h4><a name="readable">Readable Selector</a></h4>
+
+ <p>The <code>&lt;readable&gt;</code> selector selects only files
+ that are readable. Ant only invokes
+ <code>java.io.File#canRead</code> so if a file is unreadable
+ but the Java VM cannot detect this state, this selector will
+ still select the file.</p>
+
+ <h4><a name="writable">Writable Selector</a></h4>
+
+ <p>The <code>&lt;writable&gt;</code> selector selects only files
+ that are writable. Ant only invokes
+ <code>java.io.File#canWrite</code> so if a file is unwritable
+ but the Java VM cannot detect this state, this selector will
+ still select the file.</p>
+
+ <h4><a name="scriptselector">Script Selector</a></h4>
+
+ <p>
+ The <code>&lt;scriptselector&gt;</code> element enables you
+ to write a complex selection algorithm in any
+ <a href="http://jakarta.apache.org/bsf" target="_top">Apache BSF</a>
+ or
+ <a href="https://scripting.dev.java.net">JSR 223</a>
+ supported language.
+ See the <a href="../Tasks/script.html">Script</a> task for
+ an explanation of scripts and dependencies.
+ </p>
+ <p>
+ This selector was added in Apache Ant 1.7.
+ </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">language</td>
+ <td valign="top">language of the script.</td>
+ <td valign="top" align="center">yes</td>
+ </tr>
+ <tr>
+ <td valign="top">manager</td>
+ <td valign="top">
+ The script engine manager to use.
+ See the <a href="../Tasks/script.html">script</a> task
+ for using this attribute.
+ </td>
+ <td valign="top" align="center">No - default is "auto"</td>
+ </tr>
+ <tr>
+ <td valign="top">src</td>
+ <td valign="top">filename of the script</td>
+ <td valign="top" align="center">no</td>
+ </tr>
+ <tr>
+ <td valign="top">setbeans</td>
+ <td valign="top">whether to have all properties, references and targets as
+ global variables in the script.</td>
+ <td valign="top" align="center">No, default is "true".</td>
+ </tr>
+ <tr>
+ <td valign="top">classpath</td>
+ <td valign="top">
+ The classpath to pass into the script.
+ </td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">classpathref</td>
+ <td valign="top">The classpath to use, given as a
+ <a href="../using.html#references">reference</a> to a path defined elsewhere.
+ <td align="center" valign="top">No</td>
+ </tr>
+ </table>
+ <p>
+ This selector can take a nested &lt;classpath&gt; element.
+ See the <a href="../Tasks/script.html">script</a> task
+ on how to use this element.
+ </p>
+ <p>
+ If no <code>src</code> attribute is supplied, the script must be nested
+ inside the selector declaration.
+ </p>
+ <p>The embedded script is invoked for every test, with
+ the bean <code>self</code>
+ is bound to the selector. It has an attribute <code>selected</code>
+ must can be set using <code>setSelected(boolean)</code> to select that
+ file.
+
+ <p>
+
+ The following beans are configured for every script, alongside
+ the classic set of project, properties, and targets.
+
+ <table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Bean</b></td>
+ <td valign="top"><b>Description</b></td>
+ <td valign="top"><b>Type</b></td>
+ </tr>
+ <tr>
+ <td valign="top">self</td>
+ <td valign="top">selector instance</td>
+ <td valign="top">org.apache.tools.ant.types.optional</td>
+ </tr>
+ <tr>
+ <td valign="top">filename</td>
+ <td valign="top">filename of the selection</td>
+ <td valign="top" >String</td>
+ </tr>
+ <tr>
+ <td valign="top">file</td>
+ <td valign="top">file of the selection</td>
+ <td valign="top" >java.io.File</td>
+ </tr>
+ <tr>
+ <td valign="top">basedir</td>
+ <td valign="top">Fileset base directory</td>
+ <td valign="top" >java.io.File</td>
+ </tr>
+
+ </table>
+ <p>
+ The <code>self</code> bean maps to the selector, which has the following
+ attributes. Only the <code>selected</code> flag is writable, the rest
+ are read only via their getter methods.
+
+ <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>Type</b></td>
+ </tr>
+ <tr>
+ <td valign="top">selected</td>
+ <td valign="top">writeable flag to select this file</td>
+ <td valign="top" align="center">boolean</td>
+ </tr>
+ <tr>
+ <td valign="top">filename</td>
+ <td valign="top">filename of the selection</td>
+ <td valign="top" >String</td>
+ </tr>
+ <tr>
+ <td valign="top">file</td>
+ <td valign="top">file of the selection</td>
+ <td valign="top" >java.io.File</td>
+ </tr>
+ <tr>
+ <td valign="top">basedir</td>
+ <td valign="top">Fileset base directory</td>
+ <td valign="top" >java.io.File</td>
+ </tr>
+ </table>
+
+ <p>
+ Example
+ </p>
+<pre>
+ &lt;scriptselector language=&quot;javascript&quot;&gt;
+ self.setSelected(true);
+ &lt;/scriptselector&gt;
+</pre>
+ <p>
+ Selects every file.
+ </p>
+
+<pre>
+ &lt;scriptselector language=&quot;javascript&quot;&gt;
+ self.setSelected((filename.length%2)==0);
+ &lt;/scriptselector&gt;
+</pre>
+Select files whose filename length is even.
+
+ <h3><a name="selectcontainers">Selector Containers</a></h3>
+
+ <p>To create more complex selections, a variety of selectors that
+ contain other selectors are available for your use. They combine the
+ selections of their child selectors in various ways.</p>
+
+ <p>The selector containers are:</p>
+
+ <ul>
+ <li><a href="#andselect"><code>&lt;and&gt;</code></a> - select a file only if all
+ the contained selectors select it.
+ <li><a href="#majorityselect"><code>&lt;majority&gt;</code></a> - select a file
+ if a majority of its selectors select it.
+ <li><a href="#noneselect"><code>&lt;none&gt;</code></a> - select a file only if
+ none of the contained selectors select it.
+ <li><a href="#notselect"><code>&lt;not&gt;</code></a> - can contain only one
+ selector, and reverses what it selects and doesn't select.
+ <li><a href="#orselect"><code>&lt;or&gt;</code></a> - selects a file if any one
+ of the contained selectors selects it.
+ <li><a href="#selectorselect"><code>&lt;selector&gt;</code></a> - contains only one
+ selector and forwards all requests to it without alteration, provided
+ that any <code>&quot;if&quot;</code> or
+ <code>&quot;unless&quot;</code> conditions are met. This
+ is the selector to use if you want to define a reference. It is
+ usable as an element of <code>&lt;project&gt;</code>. It is also
+ the one to use if you want selection of files to be dependent on
+ Ant property settings.
+ </ul>
+
+ <p>All selector containers can contain any other selector, including
+ other containers, as an element. Using containers, the selector tags
+ can be arbitrarily deep. Here is a complete list of allowable
+ selector elements within a container:</p>
+
+ <ul>
+ <li><code>&lt;and&gt;</code></li>
+ <li><code>&lt;contains&gt;</code></li>
+ <li><code>&lt;custom&gt;</code></li>
+ <li><code>&lt;date&gt;</code></li>
+ <li><code>&lt;depend&gt;</code></li>
+ <li><code>&lt;depth&gt;</code></li>
+ <li><code>&lt;filename&gt;</code></li>
+ <li><code>&lt;majority&gt;</code></li>
+ <li><code>&lt;none&gt;</code></li>
+ <li><code>&lt;not&gt;</code></li>
+ <li><code>&lt;or&gt;</code></li>
+ <li><code>&lt;present&gt;</code></li>
+ <li><code>&lt;selector&gt;</code></li>
+ <li><code>&lt;size&gt;</code></li>
+ </ul>
+
+ <h4><a name="andselect">And Selector</a></h4>
+
+ <p>The <code>&lt;and&gt;</code> tag selects files that are
+ selected by all of the elements it contains. It returns as
+ soon as it finds a selector that does not select the file,
+ so it is not guaranteed to check every selector.
+ </p>
+
+ <p>Here is an example of how to use the And Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${dist}&quot; includes=&quot;**/*.jar&quot;&gt;
+ &lt;and&gt;
+ &lt;size value=&quot;4&quot; units=&quot;Ki&quot; when=&quot;more&quot;/&gt;
+ &lt;date datetime=&quot;01/01/2001 12:00 AM&quot; when=&quot;before&quot;/&gt;
+ &lt;/and&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all the JAR file larger than 4096 bytes which haven't been update
+ since the last millennium.
+ </p>
+
+
+ <h4><a name="majorityselect">Majority Selector</a></h4>
+
+ <p>The <code>&lt;majority&gt;</code> tag selects files provided
+ that a majority of the contained elements also select it. Ties are
+ dealt with as specified by the <code>allowtie</code> attribute.
+ </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">allowtie</td>
+ <td valign="top">Whether files should be selected if there
+ are an even number of selectors selecting them as are
+ not selecting them. Default is true.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+
+ <p>Here is an example of how to use the Majority Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${docs}&quot; includes=&quot;**/*.html&quot;&gt;
+ &lt;majority&gt;
+ &lt;contains text=&quot;project&quot; casesensitive="false"/&gt;
+ &lt;contains text=&quot;taskdef&quot; casesensitive="false"/&gt;
+ &lt;contains text=&quot;IntrospectionHelper&quot; casesensitive="true"/&gt;
+ &lt;/majority&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all the HTML files which contain at least two of the three
+ phrases "project", "taskdef", and "IntrospectionHelper" (this last phrase must
+ match case exactly).
+ </p>
+
+
+ <h4><a name="noneselect">None Selector</a></h4>
+
+ <p>The <code>&lt;none&gt;</code> tag selects files that are
+ not selected by any of the elements it contains. It returns as
+ soon as it finds a selector that selects the file,
+ so it is not guaranteed to check every selector.
+ </p>
+
+ <p>Here is an example of how to use the None Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${src}&quot; includes=&quot;**/*.java&quot;&gt;
+ &lt;none&gt;
+ &lt;present targetdir=&quot;${dest}&quot;/&gt;
+ &lt;present targetdir=&quot;${dest}&quot;&gt;
+ &lt;mapper type=&quot;glob&quot; from=&quot;*.java&quot; to=&quot;*.class&quot;/&gt;
+ &lt;/present&gt;
+ &lt;/none&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects only Java files which do not have equivalent java or
+ class files in the dest directory.
+ </p>
+
+
+ <h4><a name="notselect">Not Selector</a></h4>
+
+ <p>The <code>&lt;not&gt;</code> tag reverses the meaning of the
+ single selector it contains.
+ </p>
+
+ <p>Here is an example of how to use the Not Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${src}&quot; includes=&quot;**/*.java&quot;&gt;
+ &lt;not&gt;
+ &lt;contains text=&quot;test&quot;/&gt;
+ &lt;/not&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all the files in the src directory that do not contain the
+ string "test".
+ </p>
+
+
+ <h4><a name="orselect">Or Selector</a></h4>
+
+ <p>The <code>&lt;or&gt;</code> tag selects files that are
+ selected by any one of the elements it contains. It returns as
+ soon as it finds a selector that selects the file,
+ so it is not guaranteed to check every selector.
+ </p>
+
+ <p>Here is an example of how to use the Or Selector:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${basedir}&quot;&gt;
+ &lt;or&gt;
+ &lt;depth max=&quot;0&quot;/&gt;
+ &lt;filename name="*.png"/&gt;
+ &lt;filename name="*.gif"/&gt;
+ &lt;filename name="*.jpg"/&gt;
+ &lt;/or&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all the files in the top directory along with all the
+ image files below it.
+ </p>
+
+
+ <h4><a name="selectorselect">Selector Reference</a></h4>
+
+ <p>The <code>&lt;selector&gt;</code> tag is used to create selectors
+ that can be reused through references. It is the only selector which can
+ be used outside of
+ any target, as an element of the <code>&lt;project&gt;</code> tag. It
+ can contain only one other selector, but of course that selector can
+ be a container.
+ </p>
+
+ <p>The <code>&lt;selector&gt;</code> tag can also be used to select
+ files conditionally based on whether an Ant property exists or not.
+ This functionality is realized using the <code>&quot;if&quot;</code> and
+ <code>&quot;unless&quot;</code> attributes in exactly the same way they
+ are used on targets or on the <code>&lt;include&gt;</code> and
+ <code>&lt;exclude&gt;</code> tags within a
+ <code>&lt;patternset&gt;</code>.</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">if</td>
+ <td valign="top">Allow files to be selected only <a href="../properties.html#if+unless">if the named
+ property is set</a>.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">unless</td>
+ <td valign="top">Allow files to be selected only <a href="../properties.html#if+unless">if the named
+ property is <b>not</b> set</a>.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+ <p>Here is an example of how to use the Selector Reference:</p>
+
+ <blockquote><pre>
+&lt;project default=&quot;all&quot; basedir=&quot;./ant&quot;&gt;
+
+ &lt;selector id=&quot;completed&quot;&gt;
+ &lt;none&gt;
+ &lt;depend targetdir=&quot;build/classes&quot;&gt;
+ &lt;mapper type=&quot;glob&quot; from=&quot;*.java&quot; to=&quot;*.class&quot;/&gt;
+ &lt;/depend&gt;
+ &lt;depend targetdir=&quot;docs/manual/api&quot;&gt;
+ &lt;mapper type=&quot;glob&quot; from=&quot;*.java&quot; to=&quot;*.html&quot;/&gt;
+ &lt;/depend&gt;
+ &lt;/none&gt;
+ &lt;/selector&gt;
+
+ &lt;target&gt;
+ &lt;zip&gt;
+ &lt;fileset dir=&quot;src/main&quot; includes=&quot;**/*.java&quot;&gt;
+ &lt;selector refid=&quot;completed&quot;/&gt;
+ &lt;/fileset&gt;
+ &lt;/zip&gt;
+ &lt;/target&gt;
+
+&lt;/project&gt;
+</pre></blockquote>
+
+ <p>Zips up all the Java files which have an up-to-date equivalent
+ class file and javadoc file associated with them.
+ </p>
+
+ <p>And an example of selecting files conditionally, based on whether
+ properties are set:</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${working.copy}&quot;&gt;
+ &lt;or&gt;
+ &lt;selector if=&quot;include.tests&quot;&gt;
+ &lt;filename name=&quot;**/*Test.class&quot;&gt;
+ &lt;/selector&gt;
+ &lt;selector if=&quot;include.source&quot;&gt;
+ &lt;and&gt;
+ &lt;filename name=&quot;**/*.java&quot;&gt;
+ &lt;not&gt;
+ &lt;selector unless=&quot;include.tests&quot;&gt;
+ &lt;filename name=&quot;**/*Test.java&quot;&gt;
+ &lt;/selector&gt;
+ &lt;/not&gt;
+ &lt;/and&gt;
+ &lt;/selector&gt;
+ &lt;/or&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>A fileset that conditionally contains Java source files and Test
+ source and class files.</p>
+
+ <h3><a name="customselect">Custom Selectors</a></h3>
+
+ <p>You can write your own selectors and use them within the selector
+ containers by specifying them within the <code>&lt;custom&gt;</code> tag.</p>
+
+ <p>First, you have to write your selector class in Java. The only
+ requirement it must meet in order to be a selector is that it implements
+ the <code>org.apache.tools.ant.types.selectors.FileSelector</code>
+ interface, which contains a single method. See
+ <a href="selectors-program.html">Programming Selectors in Ant</a> for
+ more information.</p>
+
+ <p>Once that is written, you include it in your build file by using
+ the <code>&lt;custom&gt;</code> tag.
+ </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">classname</td>
+ <td valign="top">The name of your class that implements
+ <code>org.apache.tools.ant.types.selectors.FileSelector</code>.
+ </td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">classpath</td>
+ <td valign="top">The classpath to use in order to load the
+ custom selector class. If neither this classpath nor the
+ classpathref are specified, the class will be
+ loaded from the classpath that Ant uses.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">classpathref</td>
+ <td valign="top">A reference to a classpath previously
+ defined. If neither this reference nor the
+ classpath above are specified, the class will be
+ loaded from the classpath that Ant uses.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </table>
+
+ <p>Here is how you use <code>&lt;custom&gt;</code> to
+ use your class as a selector:
+ </p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${mydir}&quot; includes=&quot;**/*&quot;&gt;
+ &lt;custom classname=&quot;com.mydomain.MySelector&quot;&gt;
+ &lt;param name=&quot;myattribute&quot; value=&quot;myvalue&quot;/&gt;
+ &lt;/custom&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>A number of core selectors can also be used as custom selectors
+ by specifying their attributes using <code>&lt;param&gt;</code> elements. These
+ are</p>
+
+ <ul>
+ <li><a href="#containsselect">Contains Selector</a> with
+ classname <code>org.apache.tools.ant.types.selectors.ContainsSelector</code>
+ <li><a href="#dateselect">Date Selector</a> with
+ classname <code>org.apache.tools.ant.types.selectors.DateSelector</code>
+ <li><a href="#depthselect">Depth Selector</a> with
+ classname <code>org.apache.tools.ant.types.selectors.DepthSelector</code>
+ <li><a href="#filenameselect">Filename Selector</a> with
+ classname <code>org.apache.tools.ant.types.selectors.FilenameSelector</code>
+ <li><a href="#sizeselect">Size Selector</a> with
+ classname <code>org.apache.tools.ant.types.selectors.SizeSelector</code>
+ </ul>
+
+ <p>Here is the example from the Depth Selector section rewritten
+ to use the selector through <code>&lt;custom&gt;</code>.</p>
+
+ <blockquote><pre>
+&lt;fileset dir=&quot;${doc.path}&quot; includes=&quot;**/*&quot;&gt;
+ &lt;custom classname=&quot;org.apache.tools.ant.types.selectors.DepthSelector&quot;&gt;
+ &lt;param name=&quot;max&quot; value=&quot;1&quot;/&gt;
+ &lt;/custom&gt;
+&lt;/fileset&gt;
+</pre></blockquote>
+
+ <p>Selects all files in the base directory and one directory below
+ that.</p>
+
+ <p>For more details concerning writing your own selectors, consult
+ <a href="selectors-program.html">Programming Selectors in Ant</a>.</p>
+
+
+
+ </body>
+
+</html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/tarfileset.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/tarfileset.html
new file mode 100644
index 00000000..499ed798
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/tarfileset.html
@@ -0,0 +1,182 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Language" content="en-us">
+ <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>TarFileSet Type</title>
+</head>
+<body>
+<h2><a name="fileset">TarFileSet</a></h2>
+
+<p><em>TarFileSet</em> has been added as a stand-alone type in Apache Ant
+1.7.</p>
+
+<p>A <code>&lt;tarfileset&gt;</code> is a special form of a <code>&lt;<a
+ href="fileset.html">fileset</a>&gt;</code> which can behave in 2
+different ways : <br>
+</p>
+<ul>
+ <li>When the <span style="font-style: italic;">src</span> attribute
+ is used - or a nested resource collection has been specified, the
+ tarfileset is populated with tar entries found in the file <span
+ style="font-style: italic;">src</span>.<br>
+ </li>
+ <li>When the <span style="font-style: italic;">dir</span> attribute
+is used, the tarfileset is populated with filesystem files found under <span
+ style="font-style: italic;">dir</span>.<br>
+ </li>
+</ul>
+<p><code>&lt;tarfileset&gt;</code> supports all attributes of <code>&lt;<a
+ href="fileset.html">fileset</a>&gt;</code>
+ in addition to those listed below. Note that tar archives in general
+ don't contain entries with leading slashes so you shouldn't use
+ include/exclude patterns that start with slashes either.
+</p>
+<p>A tarfileset can be defined with the <span style="font-style:
+italic;">id </span>attribute and referred to with the <span
+style="font-style: italic;">refid</span> attribute. This is also true
+for tarfileset which has been added in Ant 1.7.<br>
+</p>
+<h3>Parameters</h3>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td valign="top"><b>Attribute</b></td>
+ <td valign="top"><b>Description</b></td>
+ <td valign="top" align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td valign="top">prefix</td>
+ <td valign="top">all files in the fileset are prefixed with that
+path in the archive.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">fullpath</td>
+ <td valign="top">the file described by the fileset is placed at
+that exact location in the archive.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">src</td>
+ <td valign="top">may be used in place of the <i>dir</i> attribute
+ to specify a tar file whose contents will be extracted and included
+in the archive.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">filemode</td>
+ <td valign="top">A 3 digit octal string, specify the user, group
+and other modes in the standard Unix fashion. Only applies to
+plain files. Default is 644.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">dirmode</td>
+ <td valign="top">A 3 digit octal string, specify the user, group
+and other modes in the standard Unix fashion. Only applies to
+directories. Default is 755.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">username</td>
+ <td valign="top">The username for the tar entry. This is not the same as the UID.
+ </td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">group</td>
+ <td valign="top">The groupname for the tar entry. This is not the same as the GID.
+ </td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">uid</td>
+ <td valign="top">The user identifier (UID) for the tar entry. This is an integer value
+ and is not the same as the username.
+ </td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">gid</td>
+ <td valign="top">The group identifier (GID) for the tar entry.
+ </td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">erroronmissingarchive</td>
+ <td valign="top">
+ Specify what happens if the archive does not exist.
+ If true, a build error will happen; if false, the fileset
+ will be ignored/empty.
+ Defaults to true.
+ <em>Since Ant 1.8.0</em>
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">encoding</td>
+ <td valign="top">The character encoding to use for filenames
+ inside the zip file. For a list of possible values see the <a
+ href="http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html">Supported Encodings</a>.
+ Defaults to the platform's default character encoding.
+ <em>Since Ant 1.9.5</em>
+ <td align="center" valign="top">No</td>
+ </tr>
+ </tbody>
+</table>
+<p>The <i>fullpath</i> attribute can only be set for filesets that
+represent a single file. The <i>prefix</i> and <i>fullpath</i>
+attributes cannot both be set on the same fileset.</p>
+<p>When using the <i>src</i> attribute, include and exclude patterns
+may be used to specify a subset of the archive for inclusion in the
+archive as with the <i>dir</i> attribute.</p>
+
+<p>Please note that currently only the <a
+href="../Tasks/tar.html">tar</a> task uses the permission and
+ownership attributes.</p>
+
+<h3>Parameters specified as nested elements</h3>
+
+<h4>any <a href="resources.html">resource</a> or single element
+resource collection</h4>
+
+<p>The specified resource will be used as src.</p>
+
+<h4>Examples</h4>
+<blockquote>
+<pre>
+ &lt;copy todir="some-dir"&gt;
+ &lt;tarfileset includes="lib/**"&gt;
+ &lt;bzip2resource&gt;
+ &lt;url url="http://example.org/dist/some-archive.tar.bz2"/&gt;
+ &lt;/bzip2resource&gt;
+ &lt;/tarfileset&gt;
+ &lt;/copy&gt;
+ </pre></blockquote>
+
+<p>downloads the archive some-archive.tar.bz2, uncompresses and
+extracts it on the fly, copies the contents of the lib directory into
+some-dir and discards the rest of the archive. File timestamps will
+be compared between the archive's entries and files inside the target
+directory, no files get overwritten unless they are out-of-date.</p>
+
+
+</body>
+</html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/xmlcatalog.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/xmlcatalog.html
new file mode 100644
index 00000000..a0ddafc0
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/xmlcatalog.html
@@ -0,0 +1,306 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>XMLCatalog Type</title>
+</head>
+
+<body>
+
+<h2><a name="XMLCatalog">XMLCatalog</a></h2>
+
+<p>An XMLCatalog is a catalog of public resources such as DTDs or
+entities that are referenced in an XML document. Catalogs are
+typically used to make web references to resources point to a locally
+cached copy of the resource.</p>
+
+<p>This allows the XML Parser, XSLT Processor or other consumer of XML
+documents
+to efficiently allow a local substitution for a resource available on the
+web.
+</p>
+<p><b>Note:</b> This task <em>uses, but does not depend on</em> external
+libraries not included in the Apache Ant distribution. See <a
+ href="../install.html#librarydependencies">Library Dependencies</a> for more
+information.</p>
+<p>This data type provides a catalog of resource locations based
+on the <a
+href="http://oasis-open.org/committees/entity/spec-2001-08-06.html">
+OASIS "Open Catalog" standard</a>. The catalog entries are used
+both for Entity resolution and URI resolution, in accordance with
+the <code>org.xml.sax.EntityResolver</code> and <code>
+javax.xml.transform.URIResolver</code> interfaces as defined
+in the <a href="https://jaxp.dev.java.net/">Java API for XML
+Processing (JAXP) Specification</a>.</p>
+<p>For example, in a <code>web.xml</code> file, the DTD is referenced as:
+<pre>
+&lt;!DOCTYPE web-app PUBLIC &quot;-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN&quot;
+ &quot;http://java.sun.com/j2ee/dtds/web-app_2_2.dtd&quot;&gt;
+</pre>
+The XML processor, without XMLCatalog support, would need to retrieve the
+DTD from
+the URL specified whenever validation of the document was required.
+</p>
+<p>This can be very time consuming during the build process,
+especially where network throughput is limited. Alternatively, you
+can do the following:
+<ol>
+<li>Copy <code>web-app_2_2.dtd</code> onto your local disk somewhere (either in the
+filesystem or even embedded inside a jar or zip file on the classpath).</li>
+<li>Create an <code>&lt;xmlcatalog&gt;</code> with a <code>&lt;dtd&gt;</code>
+element whose <code>location</code> attribute points to the file.</li>
+<li>Success! The XML processor will now use the local copy instead of calling out
+to the internet.</li>
+</ol>
+</p>
+<p>XMLCatalogs can appear inside tasks
+that support this feature or at the same level as <code>target</code>
+- i.e., as children of <code>project</code> for reuse across different
+tasks,
+e.g. XML Validation and XSLT Transformation. The XML Validate task
+uses XMLCatalogs for entity resolution. The XSLT Transformation
+task uses XMLCatalogs for both entity and URI resolution.</p>
+<p>XMLCatalogs are specified as either a reference to another
+XMLCatalog, defined previously in a build file, or as a list of
+<code>dtd</code> or <code>entity</code> locations. In addition,
+external catalog files may be specified in a nested <code>catalogpath</code> ,
+but they will be ignored unless the resolver library from
+xml-commons is available in the system classpath. <b>Due to backwards
+incompatible changes in the resolver code after the release of
+resolver 1.0, Ant will not support resolver.jar in version 1.0 - we
+expect a resolver release 1.1 to happen before Ant 1.6 gets
+released.</b> A separate classpath for entity resolution may be
+specified inline via nested <code>classpath</code> elements; otherwise
+the system classpath is used for this as well.</p>
+<p>XMLCatalogs can also be nested inside other XMLCatalogs. For
+example, a "superset" XMLCatalog could be made by including several
+nested XMLCatalogs that referred to other, previously defined
+XMLCatalogs.</p>
+<p>Resource locations can be specified either in-line or in
+external catalog file(s), or both. In order to use an external
+catalog file, the xml-commons resolver library ("resolver.jar")
+must be in your path. External catalog files may be either <a
+href="http://oasis-open.org/committees/entity/background/9401.html">
+plain text format</a> or <a
+href="http://www.oasis-open.org/committees/entity/spec-2001-08-06.html">
+XML format</a>. If the xml-commons resolver library is not found in the
+classpath, external catalog files, specified in <code>catalogpath</code>,
+will be ignored and a warning
+will be logged. In this case, however, processing of inline entries will
+proceed normally.</p>
+<p>Currently, only <code>&lt;dtd&gt;</code> and
+<code>&lt;entity&gt;</code> elements may be specified inline; these
+roughly correspond to OASIS catalog entry types <code>PUBLIC</code> and
+<code>URI</code> respectively. By contrast, external catalog files
+may use any of the entry types defined in the
+<a href="http://oasis-open.org/committees/entity/spec-2001-08-06.html">
++OASIS specification</a>.</p>
+<h3><a name="ResolverAlgorithm">Entity/DTD/URI Resolution Algorithm</a></h3>
+
+When an entity, DTD, or URI is looked up by the XML processor, the
+XMLCatalog searches its list of entries to see if any match. That is,
+it attempts to match the <code>publicId</code> attribute of each entry
+with the PublicID or URI of the entity to be resolved. Assuming a
+matching entry is found, XMLCatalog then executes the following steps:
+
+<h4>1. Filesystem lookup</h4>
+
+<p>The <code>location</code> is first looked up in the filesystem. If
+the <code>location</code> is a relative path, the ant project basedir
+attribute is used as the base directory. If the <code>location</code>
+specifies an absolute path, it is used as is. Once we have an
+absolute path in hand, we check to see if a valid and readable file
+exists at that path. If so, we are done. If not, we proceed to the
+next step.</p>
+
+<h4>2. Classpath lookup</h4>
+
+<p>The <code>location</code> is next looked up in the classpath.
+Recall that jar files are merely fancy zip files. For classpath
+lookup, the <code>location</code> is used as is (no base is
+prepended). We use a Classloader to attempt to load the resource from
+the classpath. For example, if hello.jar is in the classpath and it
+contains <code>foo/bar/blat.dtd</code> it will resolve an entity whose
+<code>location</code> is <code>foo/bar/blat.dtd</code>. Of course, it
+will <em>not</em> resolve an entity whose <code>location</code> is
+<code>blat.dtd</code>.
+
+
+<h4>3a. Apache xml-commons resolver lookup</h4>
+
+<p>What happens next depends on whether the resolver library from
+xml-commons is available on the classpath. If so, we defer all
+further attempts at resolving to it. The resolver library supports
+extremely sophisticated functionality like URL rewriting and so on,
+which can be accessed by making the appropriate entries in external
+catalog files (XMLCatalog does not yet provide inline support for all
+of the entries defined in the <a
+href="http://oasis-open.org/committees/entity/spec-2001-08-06.html">OASIS
+standard</a>).</p>
+
+<h4>3. URL-space lookup</h4>
+
+<p>Finally, we attempt to make a URL out of the <code>location</code>.
+At first this may seem like this would defeat the purpose of
+XMLCatalogs -- why go back out to the internet? But in fact, this can
+be used to (in a sense) implement HTTP redirects, substituting one URL
+for another. The mapped-to URL might also be served by a local web
+server. If the URL resolves to a valid and readable resource, we are
+done. Otherwise, we give up. In this case, the XML processor will
+perform its normal resolution algorithm. Depending on the processor
+configuration, further resolution failures may or may not result in
+fatal (i.e. build-ending) errors.</p>
+
+<h3>XMLCatalog attributes</h3>
+<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">id</td>
+ <td valign="top">a unique name for an XMLCatalog, used for referencing
+the
+ XMLCatalog's contents from another XMLCatalog</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ <tr>
+ <td valign="top">refid</td>
+ <td valign="top">the <code>id</code> of another XMLCatalog whose
+contents
+ you would like to be used for this XMLCatalog</td>
+ <td valign="top" align="center">No</td>
+ </tr>
+</table>
+
+<h3>XMLCatalog nested elements</h3>
+<h4>dtd/entity</h4>
+<p>The <code>dtd</code> and <code>entity</code> elements used to specify
+XMLCatalogs are identical in their structure</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">publicId</td>
+ <td valign="top">The public identifier used when defining a dtd or
+entity,
+ e.g. <code>&quot;-//Sun Microsystems, Inc.//DTD Web Application
+2.2//EN&quot;</code>
+ </td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td valign="top">location</td>
+ <td valign="top">The location of the local replacement to be used for
+the public identifier specified. This may be specified as a file name,
+resource name found on the classpath, or a URL. Relative paths will
+be resolved according to the base, which by default is the Ant project
+basedir.
+ </td>
+ <td valign="top" align="center">Yes</td>
+ </tr>
+</table>
+<h4>classpath</h4>
+<p>The classpath to use for <a href="#ResolverAlgorithm">entity
+resolution</a>. The nested <code>&lt;classpath&gt;</code> is a
+<a href="../using.html#path">path</a>-like structure.</p>
+<h4>catalogpath</h4>
+<p>
+The nested <code>catalogpath</code> element is a <a
+href="../using.html#path">path</a>-like structure listing catalog files to
+search. All files in this path are assumed to be OASIS catalog files, in
+either
+<a href="http://oasis-open.org/committees/entity/background/9401.html">
+plain text format</a> or <a
+href="http://www.oasis-open.org/committees/entity/spec-2001-08-06.html">
+XML format</a>. Entries specifying nonexistent files will be ignored. If the
+resolver library from xml-commons is not available in the classpath, all
+<code>catalogpaths</code> will be ignored and a warning will be logged.
+</p>
+<h3>Examples</h3>
+<p>Set up an XMLCatalog with a single dtd referenced locally in a user's
+home
+directory:</p>
+<blockquote><pre>
+ &lt;xmlcatalog&gt;
+ &lt;dtd
+ publicId=&quot;-//OASIS//DTD DocBook XML V4.1.2//EN&quot;
+ location=&quot;/home/dion/downloads/docbook/docbookx.dtd&quot;/&gt;
+ &lt;/xmlcatalog&gt;
+</pre></blockquote>
+<p>Set up an XMLCatalog with a multiple dtds to be found either in the
+filesystem (relative to the Ant project basedir) or in the classpath:
+</p>
+<blockquote><pre>
+ &lt;xmlcatalog id=&quot;commonDTDs&quot;&gt;
+ &lt;dtd
+ publicId=&quot;-//OASIS//DTD DocBook XML V4.1.2//EN&quot;
+ location=&quot;docbook/docbookx.dtd&quot;/&gt;
+ &lt;dtd
+ publicId=&quot;-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN&quot;
+ location=&quot;web-app_2_2.dtd&quot;/&gt;
+ &lt;/xmlcatalog&gt;
+</pre></blockquote>
+
+<p>Set up an XMLCatalog with a combination of DTDs and entities as
+well as a nested XMLCatalog and external catalog files in both
+formats:</p>
+
+<blockquote><pre>
+ &lt;xmlcatalog id=&quot;allcatalogs&quot;&gt;
+ &lt;dtd
+ publicId=&quot;-//ArielPartners//DTD XML Article V1.0//EN&quot;
+ location=&quot;com/arielpartners/knowledgebase/dtd/article.dtd&quot;/&gt;
+ &lt;entity
+ publicId=&quot;LargeLogo&quot;
+ location=&quot;com/arielpartners/images/ariel-logo-large.gif&quot;/&gt;
+ &lt;xmlcatalog refid="commonDTDs"/&gt;
+ &lt;catalogpath&gt;
+ &lt;pathelement location="/etc/sgml/catalog"/&gt;
+ &lt;fileset
+ dir=&quot;/anetwork/drive&quot;
+ includes=&quot;**/catalog&quot;/&gt;
+ &lt;fileset
+ dir=&quot;/my/catalogs&quot;
+ includes=&quot;**/catalog.xml&quot;/&gt;
+ &lt;/catalogpath&gt;
+ &lt;/xmlcatalog&gt;
+ &lt;/xmlcatalog&gt;
+</pre></blockquote>
+<p>To reference the above XMLCatalog in an <code>xslt</code> task:<p>
+<blockquote><pre>
+ &lt;xslt basedir="${source.doc}"
+ destdir="${dest.xdocs}"
+ extension=".xml"
+ style="${source.xsl.converter.docbook}"
+ includes="**/*.xml"
+ force="true"&gt;
+ &lt;xmlcatalog refid=&quot;allcatalogs&quot;/&gt;
+ &lt;/xslt&gt;
+</pre></blockquote>
+
+
+
+</body>
+</html>
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Types/zipfileset.html b/framework/src/ant/apache-ant-1.9.6/manual/Types/zipfileset.html
new file mode 100644
index 00000000..955e2718
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/manual/Types/zipfileset.html
@@ -0,0 +1,148 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Language" content="en-us">
+ <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>ZipFileSet Type</title>
+</head>
+<body>
+<h2><a name="fileset">ZipFileSet</a></h2>
+
+<p>A <code>&lt;zipfileset&gt;</code> is a special form of a <code>&lt;<a
+ href="fileset.html">fileset</a>&gt;</code> which can behave in 2
+different ways : <br>
+</p>
+<ul>
+ <li>When the <span style="font-style: italic;">src</span> attribute
+ is used - or a nested resource collection has been specified
+ (<em>since Apache Ant 1.7</em>), the zipfileset is populated with
+ zip entries found in the file <span style="font-style:
+ italic;">src</span>.<br>
+ </li>
+ <li>When the <span style="font-style: italic;">dir</span> attribute
+is used, the zipfileset is populated with filesystem files found under <span
+ style="font-style: italic;">dir</span>.<br>
+ </li>
+</ul>
+<p><code>&lt;zipfileset&gt;</code> supports all attributes of <code>&lt;<a
+ href="fileset.html">fileset</a>&gt;</code>
+ in addition to those listed below. Note that zip archives in general
+ don't contain entries with leading slashes so you shouldn't use
+ include/exclude patterns that start with slashes either.</p>
+
+<p>Since Ant 1.6, a zipfileset can be defined with the <span
+ style="font-style: italic;">id </span>attribute and referred to with
+the <span style="font-style: italic;">refid</span> attribute.<br>
+</p>
+<h3>Parameters</h3>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td valign="top"><b>Attribute</b></td>
+ <td valign="top"><b>Description</b></td>
+ <td valign="top" align="center"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td valign="top">prefix</td>
+ <td valign="top">all files in the fileset are prefixed with that
+path in the archive.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">fullpath</td>
+ <td valign="top">the file described by the fileset is placed at
+that exact location in the archive.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">src</td>
+ <td valign="top">may be used in place of the <i>dir</i> attribute
+ to specify a zip file whose contents will be extracted and included
+in the archive.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">filemode</td>
+ <td valign="top">A 3 digit octal string, specify the user, group
+and other modes in the standard Unix fashion. Only applies to
+plain files. Default is 644. <em>since Ant 1.5.2</em>.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">dirmode</td>
+ <td valign="top">A 3 digit octal string, specify the user, group
+and other modes in the standard Unix fashion. Only applies to
+directories. Default is 755. <em>since Ant 1.5.2</em>.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">encoding</td>
+ <td valign="top">The character encoding to use for filenames
+ inside the zip file. For a list of possible values see the <a
+ href="http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html">Supported Encodings</a>.
+ Defaults to the platform's default character encoding.
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">erroronmissingarchive</td>
+ <td valign="top">
+ Specify what happens if the archive does not exist.
+ If true, a build error will happen; if false, the fileset
+ will be ignored/empty.
+ Defaults to true.
+ <em>Since Ant 1.8.0</em>
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
+ </tbody>
+</table>
+<p>The <i>fullpath</i> attribute can only be set for filesets that
+represent a single file. The <i>prefix</i> and <i>fullpath</i>
+attributes cannot both be set on the same fileset.</p>
+<p>When using the <i>src</i> attribute, include and exclude patterns
+may be used to specify a subset of the archive for inclusion in the
+archive as with the <i>dir</i> attribute.</p>
+
+<p>Please note that currently only the <a
+href="../Tasks/tar.html">tar</a> and <a
+href="../Tasks/zip.html">zip</a> tasks use the permission.</p>
+
+<h3>Parameters specified as nested elements</h3>
+
+<h4>any file system based <a href="resources.html">resource</a> or
+single element resource collection</h4>
+
+<p>The specified resource will be used as src.</p>
+
+<h4>Examples</h4>
+<blockquote>
+ <pre> &lt;zip destfile="${dist}/manual.zip"&gt;<br> &lt;zipfileset dir="htdocs/manual" prefix="docs/user-guide"/&gt;<br> &lt;zipfileset dir="." includes="ChangeLog27.txt" fullpath="docs/ChangeLog.txt"/&gt;<br> &lt;zipfileset src="examples.zip" includes="**/*.html" prefix="docs/examples"/&gt;<br> &lt;/zip&gt;<br></pre>
+ <p>zips all files in the <code>htdocs/manual</code> directory into
+the <code>docs/user-guide</code> directory in the archive, adds the
+file <code>ChangeLog27.txt</code> in the current directory as <code>docs/ChangeLog.txt</code>,
+and includes all the html files in <code>examples.zip</code> under <code>docs/examples</code>.
+The archive might end up containing the files:</p>
+ <code> docs/user-guide/html/index.html<br>
+docs/ChangeLog.txt<br>
+docs/examples/index.html<br>
+ </code></blockquote>
+
+
+</body>
+</html>