git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273081 13f79535-47bb-0310-9956-ffa450edef68master
@@ -0,0 +1,71 @@ | |||||
This license came from: | |||||
http://www.w3.org/Consortium/Legal/copyright-software-19980720 | |||||
W3C® SOFTWARE NOTICE AND LICENSE | |||||
Copyright © 1994-2001 World | |||||
Wide Web Consortium, <a href="http://www.w3.org/">World | |||||
Wide Web Consortium</a>, (<a href= | |||||
"http://www.lcs.mit.edu/">Massachusetts Institute of | |||||
Technology</a>, <a href="http://www.inria.fr/">Institut National de | |||||
Recherche en Informatique et en Automatique</a>, <a href= | |||||
"http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved. | |||||
http://www.w3.org/Consortium/Legal/ | |||||
This W3C work (including software, documents, or other related | |||||
items) is being provided by the copyright holders under the | |||||
following license. By obtaining, using and/or copying this work, | |||||
you (the licensee) agree that you have read, understood, and will | |||||
comply with the following terms and conditions: | |||||
Permission to use, copy, modify, and distribute this software | |||||
and its documentation, with or without modification, for any | |||||
purpose and without fee or royalty is hereby granted, provided that | |||||
you include the following on ALL copies of the software and | |||||
documentation or portions thereof, including modifications, that | |||||
you make: | |||||
The full text of this NOTICE in a location viewable to users of | |||||
the redistributed or derivative work. | |||||
Any pre-existing intellectual property disclaimers, notices, or | |||||
terms and conditions. If none exist, a short notice of the | |||||
following form (hypertext is preferred, text is permitted) should | |||||
be used within the body of any redistributed or derivative code: | |||||
"Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of | |||||
Technology, Institut National de | |||||
Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. | |||||
http://www.w3.org/Consortium/Legal/" | |||||
Notice of any changes or modifications to the W3C files, | |||||
including the date changes were made. (We recommend you provide | |||||
URIs to the location from which the code is derived.) | |||||
THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND | |||||
COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR | |||||
IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF | |||||
MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE | |||||
USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD | |||||
PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. | |||||
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, | |||||
SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE | |||||
SOFTWARE OR DOCUMENTATION. | |||||
The name and trademarks of copyright holders may NOT be used in | |||||
advertising or publicity pertaining to the software without | |||||
specific, written prior permission. Title to copyright in this | |||||
software and any associated documentation will at all times remain | |||||
with copyright holders. | |||||
____________________________________ | |||||
This formulation of W3C's notice and license became active on | |||||
August 14 1998 so as to improve compatibility with GPL. This | |||||
version ensures that W3C software licensing terms are no more | |||||
restrictive than GPL and consequently W3C software may be | |||||
distributed in GPL packages. See the older formulation for the | |||||
policy prior to this date. Please see our Copyright FAQ for common | |||||
questions about using materials from | |||||
our site, including specific terms and conditions for packages like | |||||
libwww, Amaya, and Jigsaw. | |||||
Other questions about this notice can be | |||||
directed to site-policy@w3.org. | |||||
webmaster |
@@ -0,0 +1,20 @@ | |||||
This license came from: http://www.megginson.com/SAX/copying.html | |||||
However please note future versions of SAX may be covered | |||||
under http://saxproject.org/?selected=pd | |||||
This page is now out of date -- see the new SAX site at | |||||
http://www.saxproject.org/ for more up-to-date | |||||
releases and other information. Please change your bookmarks. | |||||
SAX2 is Free! | |||||
I hereby abandon any property rights to SAX 2.0 (the Simple API for | |||||
XML), and release all of the SAX 2.0 source code, compiled code, and | |||||
documentation contained in this distribution into the Public Domain. | |||||
SAX comes with NO WARRANTY or guarantee of fitness for any | |||||
purpose. | |||||
David Megginson, david@megginson.com | |||||
2000-05-05 |
@@ -54,7 +54,7 @@ | |||||
Documentation is available in HTML format, in the docs/ directory. | Documentation is available in HTML format, in the docs/ directory. | ||||
For information about building and installing Ant, see | For information about building and installing Ant, see | ||||
docs/manual/index.html | |||||
docs/manual/index.html | |||||
Licensing | Licensing | ||||
@@ -13,8 +13,297 @@ properties files and output them instead of Ant's properties. | |||||
* <input> has a new attribute that allows you to specify a default value. | * <input> has a new attribute that allows you to specify a default value. | ||||
Changes from Ant 1.4.1 to Ant 1.5 | |||||
================================= | |||||
Changes from Ant 1.5beta3 to Ant 1.5 | |||||
==================================== | |||||
Changes that could break older environments: | |||||
-------------------------------------------- | |||||
* The filesetmanifest attribute added to <jar> after the 1.4.1 | |||||
release has been removed for now. This change may affect only | |||||
the 1.5Beta/1.6Alpha users. An attempt will be made to add this | |||||
feature back into Ant 1.6. | |||||
Fixed bugs: | |||||
----------- | |||||
* <zip> and friends would always update existing archive if you set | |||||
the update attribute to true. | |||||
* To support backward compatibility with older versions, <pathconvert> | |||||
will once again set the property, even if the result is the empty | |||||
string, unless the new 'setonempty' attribute is set to false|no|off | |||||
(default is "true"). | |||||
* The manifest task would crash XmlLogger | |||||
Other changes: | |||||
-------------- | |||||
* added **/.svn and **/.svn/** to the default excludes | |||||
Changes from Ant 1.5beta2 to Ant 1.5beta3 | |||||
========================================= | |||||
Changes that could break older environments: | |||||
-------------------------------------------- | |||||
* Project.getBuildListeners now returns a clone of the listener | |||||
list. Changes to the returned list will not affect the listeners | |||||
currently attached to the Project. It also means that it is safe to | |||||
iterate over the returned list if listeners are added or removed | |||||
during the traversal. | |||||
* <pvcs> default filenameformat has been different from Ant 1.4.1. | |||||
Now it is different from 1.5beta1 and 1.5beta2. | |||||
* Some messages that are printed during startup will not be | |||||
written to the logfile specified via -logfile as they might destroy | |||||
the format of the file for special BuildLoggers (like XmlLogger). | |||||
* <pathconvert> won't set the property if the result is the empty string. | |||||
Fixed bugs: | |||||
----------- | |||||
* <available> could fail to find files or directories that happen to | |||||
start with the name of the project's basedir but are not children of | |||||
the basedir. | |||||
* Nested <property>'s inside <ant> can now be overriden by subsequent | |||||
<ant> and <antcall> tasks. | |||||
* <xslt>'s outputtype attribute wouldn't do anything. | |||||
* <linecontains> filterreader could swallow lines. | |||||
* <sequential> used to configure the tasks (set their attributes) | |||||
before the first task has been executed. This means that properties | |||||
that have been set by nested task seemed to be unset for the other | |||||
tasks in the same <sequential> element. | |||||
* <javac>'s sourcepath setting has been ignored by some compiler | |||||
implementations. | |||||
* <javadoc>'s packagelist attribute didn't work. | |||||
* the plain mailer would always use port 25 in <mail>. | |||||
* Ant's default logger could swallow empty lines. | |||||
* ejbjar's iPlanet nested element now can process multiple descriptors. | |||||
* IPlanetEjbc was looking in the wrong place for four iiop files. | |||||
* <javac> would pass the -source switch to JDK 1.3's javac, even | |||||
though it doesn't support it. | |||||
Other changes: | |||||
-------------- | |||||
* <checksum> now uses a buffer (of configurable size). | |||||
* The "Trying to override task definition" warning has been degraded | |||||
to verbose level if the two task definitions only differ in the class | |||||
loader instance that has loaded the definition. | |||||
* Add a jvmargs to the ejbjar's weblogic element to allow additional | |||||
arguments to be provided to the VM runnign ejbc. Document the | |||||
jvmdebuglevel attribute which can be used to avoid warnings about | |||||
interface classess being found on the classpath. Document the new | |||||
<sysproperty> element which allows JVM properties to be defined. | |||||
Added an outputdir attribute to allow the destination to be a | |||||
directory into which the exploded jar is written. | |||||
* ejbjar now supports Borland Enterprise Server 5 and Jonas 2.5 | |||||
Changes from Ant 1.5beta1 to Ant 1.5beta2 | |||||
========================================= | |||||
Changes that could break older environments: | |||||
-------------------------------------------- | |||||
* Properties will now be expanded in mail message bodies. This means | |||||
that one $ sign will be stripped if your mail message contains the text | |||||
$$. | |||||
* org.apache.tools.ant.taskdefs.Expand no longer extends MatchingTask. | |||||
* Available#setFile now again uses a File argument as it did in 1.4, | |||||
this may break environments that have been adapted to the String | |||||
argument version present in 1.5beta1. | |||||
Fixed bugs: | |||||
----------- | |||||
* When <move> attempts a rename, it deletes the destination file, if it | |||||
exists, before renaming the source file. However, <move> was not | |||||
checking if the destination file was actually a directory before | |||||
trying to delete it. | |||||
* Make CVS Tasks to work under Cygwin. | |||||
* Fix LineContains to handle huge files elegantly without causing | |||||
Stack Overflows. | |||||
* if you ask for the "classic" compiler on Java1.4, you get upgraded to | |||||
"modern" because there is no classic compiler any more. | |||||
* the <http> condition was viewing 404 'not found' exceptions as success. Now | |||||
it defaults to viewing any response >=400 as an error, and has an errorsBeginAt | |||||
attribute you can use if you want a higher or lower value. | |||||
* <get> throws a build exception on an http authorization error, unless you | |||||
have set ignoreerrors to true. | |||||
* <wsdltodotnet> was spelt in Wintel case: <WsdlToDotnet>. It is now lower | |||||
case, though the old spelling is retained for anyone who used it. | |||||
* Merging of Manifests in jar now works as documented. | |||||
* paths that have been separated by colons would be incorrectly parsed | |||||
on NetWare. | |||||
* runant.pl now supports NetWare. | |||||
* <tempfile> and <setproxy> tasks were in beta1, but not defined by | |||||
default; They now are. <tempfile> fills a property with the name of a | |||||
temporary file; <setproxy> lets you set the JVM's http, ftp and socks proxy | |||||
settings. | |||||
* <available classname="foo" ignoresystemclasses="true"> failed for | |||||
JDK 1.1 and 1.2, even if the class could be found on the | |||||
user-specified classpath. | |||||
* <property environment=... /> now works on z/OS. | |||||
* forked <javac> failed for the wrong reason on JDK 1.1 - Ant would | |||||
use a temporary file to hold the names of the files to compile under | |||||
some conditons, but 1.1 doesn't support this feature. Ant will no | |||||
longer try this, but you may run into problems with the length of the | |||||
command line now. | |||||
* the refid attribute for <property>s nested into <ant> or <param>s | |||||
nested into <antcall> didn't work. | |||||
* <replaceregexp> didn't work for nested <fileset>s. | |||||
* <javadoc> dropped sourcepath entries if no "interesting" .java | |||||
source files could be found below them. This has been backwards | |||||
incompatible and caused problems with custom doclets like xdoclet. | |||||
* Using the doclet, docletpath or docletpathref attributes of | |||||
<javadoc> may have caused NullPointerExceptions. | |||||
* nested <filesets> of <javadoc> would include too much. | |||||
* <dependset> will no longer choke on <targetfileset>s that point to | |||||
non-existing directories. | |||||
* <patch> didn't work at all. | |||||
* <replace> and <replaceregexp> now fail if the file they are working | |||||
on is locked. | |||||
* <javadoc> would pick up the wrong executable in the combination JDK | |||||
1.2 and AIX. | |||||
Other changes: | |||||
-------------- | |||||
* z/OS now gets detected by the os condition. | |||||
* <fileset> and <dirset> now have an optional followsymlink attribute | |||||
that can prevent Ant from following symbolic links on some platforms. | |||||
* BeanShell is now supported in the <script> task. | |||||
* <ejbjar> under Weblogic attempts to use the ejbc20 compiler for 2.0 beans | |||||
based on the deployment descriptor's DTD reference. Under weblogic 7.00 Beta | |||||
this ejbc class has been deprecated. To avoid the deprecation warning use | |||||
ejbcclass="weblogic.ejbc". | |||||
* <ejbjar> will add a manifest to the generated jar based on the naming | |||||
convention in use. This overrides the manifest specified in the | |||||
<ejbjar> attribute | |||||
Changes from Ant 1.4.1 to 1.5beta1 | |||||
================================== | |||||
Changes that could break older environments: | |||||
-------------------------------------------- | |||||
* Important: Single $ signs are no longer silently stripped! | |||||
======= | |||||
* Project.getBuildListeners now returns a clone of the listener | |||||
list. Changes to the returned list will not affect the listeners | |||||
currently attached to the Project. It also means that it is safe to | |||||
iterate over the returned list if listeners are added or removed | |||||
during the traversal. | |||||
* <pvcs> default filenameformat has been different from Ant 1.4.1. | |||||
Now it is different from 1.5beta1 and 1.5beta2. | |||||
* Some messages that are printed during startup will not be | |||||
written to the logfile specified via -logfile as they might destroy | |||||
the format of the file for special BuildLoggers (like XmlLogger). | |||||
Fixed bugs: | |||||
----------- | |||||
* <available> could fail to find files or directories that happen to | |||||
start with the name of the project's basedir but are not children of | |||||
the basedir. | |||||
* Nested <property>'s inside <ant> can now be overriden by subsequent | |||||
<ant> and <antcall> tasks. | |||||
* <xslt>'s outputtype attribute wouldn't do anything. | |||||
* <linecontains> filterreader could swallow lines. | |||||
* <sequential> used to configure the tasks (set their attributes) | |||||
before the first task has been executed. This means that properties | |||||
that have been set by nested task seemed to be unset for the other | |||||
tasks in the same <sequential> element. | |||||
* <javac>'s sourcepath setting has been ignored by some compiler | |||||
implementations. | |||||
* <javadoc>'s packagelist attribute didn't work. | |||||
* the plain mailer would always use port 25 in <mail>. | |||||
* Ant's default logger could swallow empty lines. | |||||
* ejbjar's iPlanet nested element now can process multiple descriptors. | |||||
* IPlanetEjbc was looking in the wrong place for four iiop files. | |||||
* <javac> would pass the -source switch to JDK 1.3's javac, even | |||||
though it doesn't support it. | |||||
Other changes: | |||||
-------------- | |||||
* <checksum> now uses a buffer (of configurable size). | |||||
* The "Trying to override task definition" warning has been degraded | |||||
to verbose level if the two task definitions only differ in the class | |||||
loader instance that has loaded the definition. | |||||
* Add a jvmargs to the ejbjar's weblogic element to allow additional | |||||
arguments to be provided to the VM runnign ejbc. Document the | |||||
jvmdebuglevel attribute which can be used to avoid warnings about | |||||
interface classess being found on the classpath. Document the new | |||||
<sysproperty> element which allows JVM properties to be defined. | |||||
Added an outputdir attribute to allow the destination to be a | |||||
directory into which the exploded jar is written. | |||||
* ejbjar now supports Borland Enterprise Server 5 and Jonas 2.5 | |||||
Changes from Ant 1.5beta1 to Ant 1.5beta2 | |||||
========================================= | |||||
Changes that could break older environments: | Changes that could break older environments: | ||||
-------------------------------------------- | -------------------------------------------- | ||||
@@ -129,8 +418,38 @@ Changes from Ant 1.4.1 to 1.5beta1 | |||||
Changes that could break older environments: | Changes that could break older environments: | ||||
-------------------------------------------- | -------------------------------------------- | ||||
<<<<<<< WHATSNEW | |||||
* Important: Single $ signs are no longer silently stripped! | * Important: Single $ signs are no longer silently stripped! | ||||
======= | ======= | ||||
* The filesetmanifest attribute added to <jar> after the 1.4.1 | |||||
release has been removed for now. This change may affect only | |||||
the 1.5Beta/1.6Alpha users. An attempt will be made to add this | |||||
feature back into Ant 1.6. | |||||
Fixed bugs: | |||||
----------- | |||||
* <zip> and friends would always update existing archive if you set | |||||
the update attribute to true. | |||||
* To support backward compatibility with older versions, <pathconvert> | |||||
will once again set the property, even if the result is the empty | |||||
string, unless the new 'setonempty' attribute is set to false|no|off | |||||
(default is "true"). | |||||
* The manifest task would crash XmlLogger | |||||
Other changes: | |||||
-------------- | |||||
* added **/.svn and **/.svn/** to the default excludes | |||||
Changes from Ant 1.5beta2 to Ant 1.5beta3 | |||||
========================================= | |||||
Changes that could break older environments: | |||||
-------------------------------------------- | |||||
* Project.getBuildListeners now returns a clone of the listener | * Project.getBuildListeners now returns a clone of the listener | ||||
list. Changes to the returned list will not affect the listeners | list. Changes to the returned list will not affect the listeners | ||||
currently attached to the Project. It also means that it is safe to | currently attached to the Project. It also means that it is safe to | ||||
@@ -144,6 +463,8 @@ Changes that could break older environments: | |||||
written to the logfile specified via -logfile as they might destroy | written to the logfile specified via -logfile as they might destroy | ||||
the format of the file for special BuildLoggers (like XmlLogger). | the format of the file for special BuildLoggers (like XmlLogger). | ||||
* <pathconvert> won't set the property if the result is the empty string. | |||||
Fixed bugs: | Fixed bugs: | ||||
----------- | ----------- | ||||
@@ -431,7 +752,7 @@ Other changes: | |||||
* <ejbjar> now allows control over which additional classes and interfaces | * <ejbjar> now allows control over which additional classes and interfaces | ||||
are added to the generated EJB jars. A new attribute "dependency" can be | are added to the generated EJB jars. A new attribute "dependency" can be | ||||
defines which classes are added. The addition of classes now uses | |||||
defined which controls what classes are added. The addition of classes now uses | |||||
the Jakarta-BCEL library rather than reflection, meaning bean classes are | the Jakarta-BCEL library rather than reflection, meaning bean classes are | ||||
no longer loaded into Ant's JVM. The default dependency analyzer is known as | no longer loaded into Ant's JVM. The default dependency analyzer is known as | ||||
the ancestor analyzer. It provides the same behaviour as the 1.4.1 version of | the ancestor analyzer. It provides the same behaviour as the 1.4.1 version of | ||||
@@ -465,7 +786,8 @@ Other changes: | |||||
* New tasks <replaceregexp>, <checksum>, <translate>, <waitfor>, | * New tasks <replaceregexp>, <checksum>, <translate>, <waitfor>, | ||||
<manifest>, <vsscp>, <vssadd>, <vsscreate>, <splash>, <basename>, <dirname>, | <manifest>, <vsscp>, <vssadd>, <vsscreate>, <splash>, <basename>, <dirname>, | ||||
<concat>. | |||||
<concat>, <sourceoffsite>, <jarlib-available>, <jarlib-display>, | |||||
<jarlib-manifest>, <jarlib-resolve>. | |||||
* A new combined <mail> task, which replaces the old <mail> and | * A new combined <mail> task, which replaces the old <mail> and | ||||
<mimemail> tasks, has been added. The <mimemail> task, and | <mimemail> tasks, has been added. The <mimemail> task, and | ||||
@@ -27,6 +27,7 @@ | |||||
<property name="chmod.fail" value="true" /> | <property name="chmod.fail" value="true" /> | ||||
<property name="deprecation" value="false" /> | <property name="deprecation" value="false" /> | ||||
<property name="optimize" value="true" /> | <property name="optimize" value="true" /> | ||||
<property name="javac.target" value="1.1" /> | |||||
<property name="junit.fork" value="false" /> | <property name="junit.fork" value="false" /> | ||||
<property name="junit.filtertrace" value="off"/> | <property name="junit.filtertrace" value="off"/> | ||||
<property name="junit.summary" value="no"/> | <property name="junit.summary" value="no"/> | ||||
@@ -135,6 +136,10 @@ | |||||
unless="jdk1.2+" /> | unless="jdk1.2+" /> | ||||
<exclude name="${optional.package}/ejb/IPlanet*.java" | <exclude name="${optional.package}/ejb/IPlanet*.java" | ||||
unless="jdk1.2+" /> | unless="jdk1.2+" /> | ||||
<exclude name="${optional.package}/ejb/Borland*.java" | |||||
unless="jdk1.2+" /> | |||||
<exclude name="${optional.package}/j2ee/*.java" | |||||
unless="jdk1.2+" /> | |||||
<!-- uses the context classloader --> | <!-- uses the context classloader --> | ||||
<exclude name="${optional.package}/junit/JUnitClassLoaderTest.java" | <exclude name="${optional.package}/junit/JUnitClassLoaderTest.java" | ||||
unless="jdk1.2+" /> | unless="jdk1.2+" /> | ||||
@@ -307,6 +312,20 @@ | |||||
<exclude name="${ant.package}/types/XMLCatalogTest.java"/> | <exclude name="${ant.package}/types/XMLCatalogTest.java"/> | ||||
</patternset> | </patternset> | ||||
<!-- | |||||
=================================================================== | |||||
Set up a patternsets that matches the parts of our JUnit testsuite | |||||
that may be useful for task developers. | |||||
=================================================================== | |||||
--> | |||||
<patternset id="useful.tests"> | |||||
<include name="${ant.package}/BuildFileTest*" /> | |||||
<include name="${regexp.package}/RegexpMatcherTest*" /> | |||||
<include name="${regexp.package}/RegexpTest*" /> | |||||
<include name="${optional.package}/AbstractXSLTLiaisonTest*" /> | |||||
<include name="${ant.package}/types/AbstractFileSetTest*" /> | |||||
</patternset> | |||||
<!-- | <!-- | ||||
=================================================================== | =================================================================== | ||||
Set up a patternsets that matches the parts of our JUnit testsuite | Set up a patternsets that matches the parts of our JUnit testsuite | ||||
@@ -559,6 +578,7 @@ | |||||
destdir="${build.classes}" | destdir="${build.classes}" | ||||
debug="${debug}" | debug="${debug}" | ||||
deprecation="${deprecation}" | deprecation="${deprecation}" | ||||
target="${javac.target}" | |||||
optimize="${optimize}" > | optimize="${optimize}" > | ||||
<classpath refid="classpath" /> | <classpath refid="classpath" /> | ||||
@@ -635,6 +655,8 @@ | |||||
<fileset dir="."> | <fileset dir="."> | ||||
<include name="LICENSE" /> | <include name="LICENSE" /> | ||||
<include name="LICENSE.xerces" /> | <include name="LICENSE.xerces" /> | ||||
<include name="LICENSE.dom" /> | |||||
<include name="LICENSE.sax" /> | |||||
</fileset> | </fileset> | ||||
<mapper type="glob" from="*" to="*.txt" /> | <mapper type="glob" from="*" to="*.txt" /> | ||||
</copy> | </copy> | ||||
@@ -656,7 +678,7 @@ | |||||
<metainf dir="${build.dir}" includes="LICENSE.txt"/> | <metainf dir="${build.dir}" includes="LICENSE.txt"/> | ||||
<manifest> | <manifest> | ||||
<section name="${ant.package}"> | |||||
<section name="${ant.package}/"> | |||||
<attribute name="Extension-name" | <attribute name="Extension-name" | ||||
value="org.apache.tools.ant" /> | value="org.apache.tools.ant" /> | ||||
<attribute name="Specification-Title" | <attribute name="Specification-Title" | ||||
@@ -696,7 +718,7 @@ | |||||
<metainf dir="${build.dir}" includes="LICENSE.txt"/> | <metainf dir="${build.dir}" includes="LICENSE.txt"/> | ||||
<manifest> | <manifest> | ||||
<section name="${optional.package}"> | |||||
<section name="${optional.package}/"> | |||||
<attribute name="Extension-name" | <attribute name="Extension-name" | ||||
value="org.apache.tools.ant.taskdefs.optional" /> | value="org.apache.tools.ant.taskdefs.optional" /> | ||||
<attribute name="Specification-Title" | <attribute name="Specification-Title" | ||||
@@ -817,9 +839,12 @@ | |||||
<include name="README"/> | <include name="README"/> | ||||
<include name="LICENSE"/> | <include name="LICENSE"/> | ||||
<include name="LICENSE.xerces"/> | <include name="LICENSE.xerces"/> | ||||
<include name="LICENSE.dom"/> | |||||
<include name="LICENSE.sax"/> | |||||
<include name="TODO"/> | <include name="TODO"/> | ||||
<include name="WHATSNEW"/> | <include name="WHATSNEW"/> | ||||
<include name="KEYS"/> | <include name="KEYS"/> | ||||
<include name="welcome.html"/> | |||||
</fileset> | </fileset> | ||||
</copy> | </copy> | ||||
@@ -901,6 +926,8 @@ | |||||
<include name="README"/> | <include name="README"/> | ||||
<include name="LICENSE"/> | <include name="LICENSE"/> | ||||
<include name="LICENSE.xerces"/> | <include name="LICENSE.xerces"/> | ||||
<include name="LICENSE.dom"/> | |||||
<include name="LICENSE.sax"/> | |||||
<include name="TODO"/> | <include name="TODO"/> | ||||
<include name="WHATSNEW"/> | <include name="WHATSNEW"/> | ||||
<include name="KEYS"/> | <include name="KEYS"/> | ||||
@@ -909,6 +936,7 @@ | |||||
<include name="bootstrap.bat"/> | <include name="bootstrap.bat"/> | ||||
<include name="bootstrap.sh"/> | <include name="bootstrap.sh"/> | ||||
<include name="build.xml"/> | <include name="build.xml"/> | ||||
<include name="welcome.html"/> | |||||
</fileset> | </fileset> | ||||
</copy> | </copy> | ||||
@@ -1147,6 +1175,7 @@ | |||||
<javac srcdir="${tests.dir}" | <javac srcdir="${tests.dir}" | ||||
destdir="${build.tests}" | destdir="${build.tests}" | ||||
debug="${debug}" | debug="${debug}" | ||||
target="${javac.target}" | |||||
deprecation="${deprecation}" > | deprecation="${deprecation}" > | ||||
<classpath refid="tests-classpath" /> | <classpath refid="tests-classpath" /> | ||||
@@ -35,13 +35,13 @@ development, maintenance and code size reasons. | |||||
Execute will spawn off separate programs under all the platforms which | Execute will spawn off separate programs under all the platforms which | ||||
ant supports, dealing with Java version issues as well as platform | ant supports, dealing with Java version issues as well as platform | ||||
issues. Always use this task to invoke other programs. | |||||
issues. Always use this task to invoke other programs. | |||||
<h4>Java, ExecuteJava</h4> | <h4>Java, ExecuteJava</h4> | ||||
These classes can be used to spawn Java programs in a separate VM (they | These classes can be used to spawn Java programs in a separate VM (they | ||||
use execute) or in the same VM -with or without a different classloader. | |||||
When deriving tasks from this, it often benefits users to permit the | |||||
use execute) or in the same VM -with or without a different classloader. | |||||
When deriving tasks from this, it often benefits users to permit the | |||||
classpath to be specified, and for forking to be an optional attribute. | classpath to be specified, and for forking to be an optional attribute. | ||||
@@ -84,17 +84,16 @@ editors and platforms. Some IDEs (JEdit) can highlight tabs, to stop you | |||||
accidentally inserting them | accidentally inserting them | ||||
<h2>Attributes and elements</h2> | <h2>Attributes and elements</h2> | ||||
Use the Ant introspection based mapping of attributes into Java datatypes, | Use the Ant introspection based mapping of attributes into Java datatypes, | ||||
rather than implementing all your attributes as setFoo(String) and doing | rather than implementing all your attributes as setFoo(String) and doing | ||||
the mapping to Int, bool or file yourself. This saves work on your part, | the mapping to Int, bool or file yourself. This saves work on your part, | ||||
lets Java callers use you in a typesafe manner, and will let the Xdocs | |||||
documentation generator work out what the parameters are. | |||||
lets Java callers use you in a typesafe manner, and will let the Xdocs | |||||
documentation generator work out what the parameters are. | |||||
<p> | <p> | ||||
The ant1.x tasks are very inconsistent regarding naming of attributes | The ant1.x tasks are very inconsistent regarding naming of attributes | ||||
-some tasks use <tt>source<tt>, others <tt>src</tt>tt>. | |||||
Here is a list of preferred attribute names. | |||||
-some tasks use <tt>source</tt>, others <tt>src</tt>. | |||||
Here is a list of preferred attribute names. | |||||
<table> | <table> | ||||
<tr> | <tr> | ||||
@@ -102,7 +101,7 @@ Here is a list of preferred attribute names. | |||||
failonerror | failonerror | ||||
</td> | </td> | ||||
<td> | <td> | ||||
boolean to control whether failure to execute should throw a | |||||
boolean to control whether failure to execute should throw a | |||||
<tt>BuildException</tt> or just print an error. | <tt>BuildException</tt> or just print an error. | ||||
Parameter validation failures should always throw an error, regardless | Parameter validation failures should always throw an error, regardless | ||||
of this flag | of this flag | ||||
@@ -156,32 +155,32 @@ to their ant system configuration. | |||||
Keep member variables private. If read access by subclasses is required. | Keep member variables private. If read access by subclasses is required. | ||||
add accessor methods rather than change the accessiblity of the member. | add accessor methods rather than change the accessiblity of the member. | ||||
This enables subclasses to access the contents, yet | This enables subclasses to access the contents, yet | ||||
still be decoupled from the actual implementation. | |||||
still be decoupled from the actual implementation. | |||||
<p> | <p> | ||||
The other common re-use mechanism in ant is for one task to create and | The other common re-use mechanism in ant is for one task to create and | ||||
configure another. This is fairly simple. | |||||
configure another. This is fairly simple. | |||||
<h2>Do your own Dependency Checking</h2> | <h2>Do your own Dependency Checking</h2> | ||||
Make has the edge over Ant in its integrated dependency checking: the | Make has the edge over Ant in its integrated dependency checking: the | ||||
command line apps make invokes dont need to do their own work. Ant tasks | command line apps make invokes dont need to do their own work. Ant tasks | ||||
do have to do their own dependency work, but if this can be done then | |||||
do have to do their own dependency work, but if this can be done then | |||||
it can be done well. A good dependency aware task can work out the dependencies | it can be done well. A good dependency aware task can work out the dependencies | ||||
without explicit dependency information in the build file, and be smart | |||||
without explicit dependency information in the build file, and be smart | |||||
enough to work out the real dependencies, perhaps through a bit of file parsing. | enough to work out the real dependencies, perhaps through a bit of file parsing. | ||||
The <tt>depends</tt> task is the best example of this. Some of the zip/jar | The <tt>depends</tt> task is the best example of this. Some of the zip/jar | ||||
tasks are pretty good too, as they can update the archive when needed. | tasks are pretty good too, as they can update the archive when needed. | ||||
Most tasks just compare source and destination timestamps and work from there. | |||||
Most tasks just compare source and destination timestamps and work from there. | |||||
Tasks which don't do any dependency checking do not help users as much as | Tasks which don't do any dependency checking do not help users as much as | ||||
they can, because their needless work can trickle through the entire build, test | they can, because their needless work can trickle through the entire build, test | ||||
and deploy process. | |||||
and deploy process. | |||||
<h2>Support Java 1.1 through Java 1.4</h2> | <h2>Support Java 1.1 through Java 1.4</h2> | ||||
Ant is designed to support Java1.1: to build on it, to run on it. Sometimes | Ant is designed to support Java1.1: to build on it, to run on it. Sometimes | ||||
functionality of tasks have to degrade in that environment -<touch> | functionality of tasks have to degrade in that environment -<touch> | ||||
is a case in point- this is usually due to library limitations; | |||||
is a case in point- this is usually due to library limitations; | |||||
such behaviour change must always be noted in the documentation. | such behaviour change must always be noted in the documentation. | ||||
<p> | <p> | ||||
What is problematic is code which is dependent on Java1.2 features | What is problematic is code which is dependent on Java1.2 features | ||||
@@ -189,20 +188,20 @@ What is problematic is code which is dependent on Java1.2 features | |||||
These can not be used directly by any code and still be able to compile | These can not be used directly by any code and still be able to compile | ||||
and run on a Java 1.1 system. So please stick to the older collection | and run on a Java 1.1 system. So please stick to the older collection | ||||
classes, and the older IO classes. If a new method in an existing class | classes, and the older IO classes. If a new method in an existing class | ||||
is to be used, it must be used via reflection and the | |||||
<tt>NoSuchMethodException</tt> handled somehow. | |||||
is to be used, it must be used via reflection and the | |||||
<tt>NoSuchMethodException</tt> handled somehow. | |||||
<p> | <p> | ||||
What if code simply does not work on Java1.1? It can happen. It will | |||||
probably be OK to have the task as an optional task, with compilation | |||||
restricted to Java1.2 or later through build.xml modifications. | |||||
What if code simply does not work on Java1.1? It can happen. It will | |||||
probably be OK to have the task as an optional task, with compilation | |||||
restricted to Java1.2 or later through build.xml modifications. | |||||
Better still, use reflection to link to the classes at run time. | Better still, use reflection to link to the classes at run time. | ||||
<p> | <p> | ||||
Java 1.4 adds a new optional change to the language itself, the | |||||
Java 1.4 adds a new optional change to the language itself, the | |||||
<tt>assert</tt> keyword, which is only enabled if the compiler is told | <tt>assert</tt> keyword, which is only enabled if the compiler is told | ||||
to compile 1.4 version source. Clearly with the 1.1 compatibility requirement, | to compile 1.4 version source. Clearly with the 1.1 compatibility requirement, | ||||
Ant tasks can not use this keyword. They also need to move away from | Ant tasks can not use this keyword. They also need to move away from | ||||
using the JUnit <tt>assert()</tt> method and call <tt>assertTrue()</tt> | using the JUnit <tt>assert()</tt> method and call <tt>assertTrue()</tt> | ||||
instead. | |||||
instead. | |||||
@@ -233,7 +232,7 @@ your task -feel free to do so! | |||||
<p> | <p> | ||||
A well written set of test cases will break the Ant task while it is in | A well written set of test cases will break the Ant task while it is in | ||||
development, until the code is actually complete. And every bug which | |||||
development, until the code is actually complete. And every bug which | |||||
surfaces later should have a test case added to demonstrate the problem, | surfaces later should have a test case added to demonstrate the problem, | ||||
and to fix it. | and to fix it. | ||||
@@ -253,7 +252,7 @@ and patches do what they say. If you've got test cases it increases your | |||||
credibility significantly. To be precise, we hate submissions without | credibility significantly. To be precise, we hate submissions without | ||||
test cases, as it means we have to write them ourselves. This is | test cases, as it means we have to write them ourselves. This is | ||||
something that only gets done if we need the task or it is perceived as | something that only gets done if we need the task or it is perceived as | ||||
utterly essential to many users. | |||||
utterly essential to many users. | |||||
<p> | <p> | ||||
@@ -323,7 +322,7 @@ Tasks calling such code can use the 'exec' or 'java' tasks to run the | |||||
programs, as you are just executing them at this point, not linking to | programs, as you are just executing them at this point, not linking to | ||||
them. | them. | ||||
<p> | <p> | ||||
Even if we cannot include your task into the Apache codebase, we can | |||||
Even if we cannot include your task into the Apache codebase, we can | |||||
still point to where you host it -just submit a diff to | still point to where you host it -just submit a diff to | ||||
xdocs/external.html pointing to your task. | xdocs/external.html pointing to your task. | ||||
@@ -337,14 +336,14 @@ was already implemented in a small corner of another task, or it has | |||||
been submitted by someone else and not committed. You can avoid this | been submitted by someone else and not committed. You can avoid this | ||||
by being aware of what is in the latest CVS tree -keep getting the daily | by being aware of what is in the latest CVS tree -keep getting the daily | ||||
source updates, look at manual changes and subscribe to the ant-dev | source updates, look at manual changes and subscribe to the ant-dev | ||||
mailing list. | |||||
mailing list. | |||||
<p> | <p> | ||||
If you are thinking of writing a task, posting a note on your thoughts | If you are thinking of writing a task, posting a note on your thoughts | ||||
to the list can be informative -you well get other peoples insight and | to the list can be informative -you well get other peoples insight and | ||||
maybe some half written task to do the basics, all without writing a | maybe some half written task to do the basics, all without writing a | ||||
line of code. | |||||
line of code. | |||||
<h2>Submitting to Ant</h2> | <h2>Submitting to Ant</h2> | ||||
@@ -357,7 +356,7 @@ It helps to be on this list, as you will see other submissions, and | |||||
any debate about your own submission. | any debate about your own submission. | ||||
<p> | <p> | ||||
Patches to existing files should be generated with | |||||
Patches to existing files should be generated with | |||||
<code>cvs diff -u filename</code> | <code>cvs diff -u filename</code> | ||||
and save the output to a file. If you want to get | and save the output to a file. If you want to get | ||||
the changes made to multiple files in a directory , just use <code>cvs | the changes made to multiple files in a directory , just use <code>cvs | ||||
@@ -376,22 +375,22 @@ made. | |||||
New submissions should be proceeded with [SUBMIT]. The mailer-daemon | New submissions should be proceeded with [SUBMIT]. The mailer-daemon | ||||
will reject any messages over 100KB, so any large update should be | will reject any messages over 100KB, so any large update should be | ||||
zipped up. If your submission is bigger than that, why not break it up | zipped up. If your submission is bigger than that, why not break it up | ||||
into separate tasks. | |||||
into separate tasks. | |||||
<p> | <p> | ||||
We also like submissions to be added to | |||||
We also like submissions to be added to | |||||
<a href="http://nagoya.apache.org/bugzilla/">bugzilla</a>, so that they | <a href="http://nagoya.apache.org/bugzilla/">bugzilla</a>, so that they | ||||
dont get lost. Please submit them by first filing the report with a | dont get lost. Please submit them by first filing the report with a | ||||
meaningful name, then adding files as attachments. Use CVS diff files | meaningful name, then adding files as attachments. Use CVS diff files | ||||
please! | please! | ||||
<p> | <p> | ||||
If you hear nothing after a couple of weeks, remind the mailing list. | |||||
If you hear nothing after a couple of weeks, remind the mailing list. | |||||
Sometimes really good submissions get lost in the noise of other issues. | Sometimes really good submissions get lost in the noise of other issues. | ||||
This is particularly the case just prior to a new point release of | |||||
This is particularly the case just prior to a new point release of | |||||
the product. At that time anything other than bug fixes will tend | the product. At that time anything other than bug fixes will tend | ||||
to be neglected. | to be neglected. | ||||
<h2>Checklists</h2> | <h2>Checklists</h2> | ||||
These are the things you should verify before submitting patches and new | These are the things you should verify before submitting patches and new | ||||
@@ -401,14 +400,14 @@ can be addressed in the process. But by the time the code is committed, | |||||
everything including the documentation and some test cases will have | everything including the documentation and some test cases will have | ||||
been done, so by getting them out the way up front can save time. | been done, so by getting them out the way up front can save time. | ||||
The committers look more favourably on patches and submissions with test | The committers look more favourably on patches and submissions with test | ||||
cases, while documentation helps sell the reason for a task. | |||||
cases, while documentation helps sell the reason for a task. | |||||
<h3>Checklist before submitting a patch</h3> | <h3>Checklist before submitting a patch</h3> | ||||
<ul> | <ul> | ||||
<li>Added code complies with style guidelines | <li>Added code complies with style guidelines | ||||
<li>Code compiles and runs on Java1.1 | <li>Code compiles and runs on Java1.1 | ||||
<li>New member variables are private, and provide public accessor methods | <li>New member variables are private, and provide public accessor methods | ||||
if access is actually needed. | |||||
if access is actually needed. | |||||
<li>Existing test cases succeed. | <li>Existing test cases succeed. | ||||
<li>New test cases written and succeed. | <li>New test cases written and succeed. | ||||
<li>Documentation page extended as appropriate. | <li>Documentation page extended as appropriate. | ||||
@@ -417,7 +416,7 @@ cases, while documentation helps sell the reason for a task. | |||||
<li>Message to ant-dev contains [PATCH], task name and patch reason in | <li>Message to ant-dev contains [PATCH], task name and patch reason in | ||||
subject. | subject. | ||||
<li>Message body contains a rationale for the patch. | <li>Message body contains a rationale for the patch. | ||||
<li>Message attachment contains the patch file(s). | |||||
<li>Message attachment contains the patch file(s). | |||||
</ul> | </ul> | ||||
<h3>Checklist before submitting a new task</h3> | <h3>Checklist before submitting a new task</h3> | ||||
@@ -427,7 +426,7 @@ subject. | |||||
<li>Source code complies with style guidelines | <li>Source code complies with style guidelines | ||||
<li>Code compiles and runs on Java1.1 | <li>Code compiles and runs on Java1.1 | ||||
<li>Member variables are private, and provide public accessor methods | <li>Member variables are private, and provide public accessor methods | ||||
if access is actually needed. | |||||
if access is actually needed. | |||||
<li><i>Maybe</i> Task has failonerror attribute to control failure behaviour | <li><i>Maybe</i> Task has failonerror attribute to control failure behaviour | ||||
<li>New test cases written and succeed | <li>New test cases written and succeed | ||||
<li>Documentation page written | <li>Documentation page written | ||||
@@ -51,7 +51,7 @@ | |||||
<td valign="top">append</td> | <td valign="top">append</td> | ||||
<td valign="top"> | <td valign="top"> | ||||
Specifies whether or not the file specified by 'destfile' | Specifies whether or not the file specified by 'destfile' | ||||
should be overwritten. Defaults to "yes". | |||||
should be overwritten. Defaults to "no". | |||||
</td> | </td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
@@ -170,6 +170,13 @@ of 400 or greater are viewed as invalid.</p> | |||||
are detected</td> | are detected</td> | ||||
<td align="center">No</td> | <td align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">errorsBeginAt</td> | |||||
<td valign="top">The lowest HTTP response code that signals an error; | |||||
by default '400'; server errors, not-authorized, not-found and the like | |||||
are detected</td> | |||||
<td align="center">No</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<h4>socket</h4> | <h4>socket</h4> | ||||
@@ -263,8 +270,8 @@ that is "true","yes", or "on"</p> | |||||
<pre> | <pre> | ||||
<istrue value="${someproperty}" /> | <istrue value="${someproperty}" /> | ||||
<istrue value="false" /> | <istrue value="false" /> | ||||
</pre> | |||||
</pre> | |||||
<h4>isfalse</h4> | <h4>isfalse</h4> | ||||
<p>Tests whether a string is not true, the negation of <istrue> | <p>Tests whether a string is not true, the negation of <istrue> | ||||
</p> | </p> | ||||
@@ -283,8 +290,8 @@ that is "true","yes", or "on"</p> | |||||
<pre> | <pre> | ||||
<isfalse value="${someproperty}" /> | <isfalse value="${someproperty}" /> | ||||
<isfalse value="false" /> | <isfalse value="false" /> | ||||
</pre> | |||||
</pre> | |||||
<hr> | <hr> | ||||
<p align="center">Copyright © 2001-2002 Apache Software | <p align="center">Copyright © 2001-2002 Apache Software | ||||
Foundation. All rights Reserved.</p> | Foundation. All rights Reserved.</p> | ||||
@@ -31,9 +31,7 @@ multiple ones to merge together different trees of files into one JAR. | |||||
The extended fileset and groupfileset attributes from the zip task are | The extended fileset and groupfileset attributes from the zip task are | ||||
also available in the jar task. | also available in the jar task. | ||||
See the <a href="zip.html">Zip</a> task for more details and examples.</p> | See the <a href="zip.html">Zip</a> task for more details and examples.</p> | ||||
<p>If the manifest is omitted, a simple one will be supplied by Ant. | |||||
If there is a manifest or manifests in your set of files, these manifests can | |||||
be used if <i>filesetmanifests</i> is set to <i>merge</i> or <i>mergewithoutmain</i>.</p> | |||||
<p>If the manifest is omitted, a simple one will be supplied by Ant.</p> | |||||
<p>The <code>update</code> parameter controls what happens if the | <p>The <code>update</code> parameter controls what happens if the | ||||
JAR file already exists. When set to <code>yes</code>, the JAR file is | JAR file already exists. When set to <code>yes</code>, the JAR file is | ||||
updated with the files specified. When set to <code>no</code> (the | updated with the files specified. When set to <code>no</code> (the | ||||
@@ -121,19 +119,6 @@ being wrapped and continued on the next line. | |||||
<td valign="top">the manifest file to use. This can be either the location of a manifest, or the name of a jar added through a fileset. If its the name of an added jar, the task expects the manifest to be in the jar at META-INF/MANIFEST.MF</td> | <td valign="top">the manifest file to use. This can be either the location of a manifest, or the name of a jar added through a fileset. If its the name of an added jar, the task expects the manifest to be in the jar at META-INF/MANIFEST.MF</td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">filesetmanifest</td> | |||||
<td valign="top">behavior when a Manifest is found in a zipfileset or | |||||
zipgroupfileset file is found. Valid values are "skip", | |||||
"merge", and "mergewithoutmain". "merge" | |||||
will merge all of manifests together, and merge this into any other | |||||
specified manifests. "mergewithoutmain" merges everything | |||||
but the Main section of the manifests. Default value is "skip". | |||||
<b>Note:</b> if this attribute's value is not "skip", the | |||||
created jar will not be readable by using java.util.jar.JarInputStream | |||||
</td> | |||||
<td valign="top" align="center">No</td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td valign="top">update</td> | <td valign="top">update</td> | ||||
<td valign="top">indicates whether to update or overwrite | <td valign="top">indicates whether to update or overwrite | ||||
@@ -72,6 +72,11 @@ drive letters to Unix paths, and vice-versa.</p> | |||||
<td valign="top" align="center">No; if omitted, a nested | <td valign="top" align="center">No; if omitted, a nested | ||||
<code><path></code> element must be supplied.</td> | <code><path></code> element must be supplied.</td> | ||||
</tr> | </tr> | ||||
<td valign="top">setonempty</td> | |||||
<td valign="top">Should the property be set, even if the result | |||||
is the empty string? | |||||
<td valign="top" align="center">No; default is "true". | |||||
</tr> | |||||
</table> | </table> | ||||
<h3>Parameters specified as nested elements</h3> | <h3>Parameters specified as nested elements</h3> | ||||
<h4>map</h4> | <h4>map</h4> | ||||
@@ -23,13 +23,13 @@ finally with the <i>defaultexcludes</i> attribute, you can specify whether you | |||||
want to use default exclusions or not. See the section on <a | want to use default exclusions or not. See the section on <a | ||||
href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on how the | href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on how the | ||||
inclusion/exclusion of files works, and how to write patterns.</p> | inclusion/exclusion of files works, and how to write patterns.</p> | ||||
<p>This task forms an implicit <a href="../CoreTypes/fileset.html">FileSet</a> and supports all | |||||
attributes of <code><fileset></code> (<code>dir</code> becomes <code>basedir</code>) | |||||
as well as the nested <code><include></code>, <code><exclude></code> | |||||
<p>This task forms an implicit <a href="../CoreTypes/fileset.html">FileSet</a> and supports all | |||||
attributes of <code><fileset></code> (<code>dir</code> becomes <code>basedir</code>) | |||||
as well as the nested <code><include></code>, <code><exclude></code> | |||||
and <code><patternset></code> elements.</p> | and <code><patternset></code> elements.</p> | ||||
<p>This task supports the use of a nested <param> element which is used to pass values | |||||
<p>This task supports the use of a nested <param> element which is used to pass values | |||||
to an <xsl:param> declaration.</p> | to an <xsl:param> declaration.</p> | ||||
<p>This task supports the use of a nested <a href="../CoreTypes/xmlcatalog.html">xmlcatalog</a> | |||||
<p>This task supports the use of a nested <a href="../CoreTypes/xmlcatalog.html">xmlcatalog</a> | |||||
element which is used to perform Entity and URI resolution</p> | element which is used to perform Entity and URI resolution</p> | ||||
<p><i><style> and <xslt> refer to the same Ant task and can be used interchangeably.</i></p> | <p><i><style> and <xslt> refer to the same Ant task and can be used interchangeably.</i></p> | ||||
<p>If you want to use Xalan-J 1 or XSL:P, you also need Ant's optional.jar</p> | <p>If you want to use Xalan-J 1 or XSL:P, you also need Ant's optional.jar</p> | ||||
@@ -54,7 +54,7 @@ element which is used to perform Entity and URI resolution</p> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">extension</td> | <td valign="top">extension</td> | ||||
<td valign="top">desired file extension to be used for the targets. If not | |||||
<td valign="top">desired file extension to be used for the targets. If not | |||||
specified, the default is ".html".</td> | specified, the default is ".html".</td> | ||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
@@ -68,7 +68,7 @@ element which is used to perform Entity and URI resolution</p> | |||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">classpath</td> | |||||
<td valign="top">classpath</td> | |||||
<td valign="top">the classpath to use when looking up the XSLT | <td valign="top">the classpath to use when looking up the XSLT | ||||
processor.</td> | processor.</td> | ||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
@@ -89,39 +89,40 @@ element which is used to perform Entity and URI resolution</p> | |||||
<td valign="top">processor</td> | <td valign="top">processor</td> | ||||
<td valign="top">name of the XSLT processor to use. Permissible values are | <td valign="top">name of the XSLT processor to use. Permissible values are | ||||
"trax" for a TraX compliant processor, | |||||
"trax" for a TraX compliant processor (ie JAXP interface | |||||
implementation such as Xalan 2 or Saxon), | |||||
"xslp" for the XSL:P processor, "xalan" for | "xslp" for the XSL:P processor, "xalan" for | ||||
the Apache XML Xalan (version 1) processor the name of an | the Apache XML Xalan (version 1) processor the name of an | ||||
arbitrary XSLTLiaison class. Defaults to trax, followed by xalan | arbitrary XSLTLiaison class. Defaults to trax, followed by xalan | ||||
and then xslp (in that order). The first one found in your class | and then xslp (in that order). The first one found in your class | ||||
path is the one that is used. | path is the one that is used. | ||||
<em><strong>DEPRECATED</strong> - XSL:P is deprecated and will | |||||
be removed in the next version. Use trax or xalan instead.</em>. | |||||
<em><strong>DEPRECATED</strong> - XSL:P and xalan are deprecated and no | |||||
more supported.</em>. | |||||
</td> | </td> | ||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">includes</td> | <td valign="top">includes</td> | ||||
<td valign="top">comma- or space-separated list of patterns of files that must be included. | |||||
<td valign="top">comma- or space-separated list of patterns of files that must be included. | |||||
All files are included when omitted.</td> | All files are included when omitted.</td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">includesfile</td> | <td valign="top">includesfile</td> | ||||
<td valign="top">the name of a file. Each line of this file is taken to be | |||||
<td valign="top">the name of a file. Each line of this file is taken to be | |||||
an include pattern</td> | an include pattern</td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">excludes</td> | <td valign="top">excludes</td> | ||||
<td valign="top">comma- or space-separated list of patterns of files that must be excluded. | |||||
<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> | No files (except default excludes) are excluded when omitted.</td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">excludesfile</td> | <td valign="top">excludesfile</td> | ||||
<td valign="top">the name of a file. Each line of this file is taken to be | |||||
<td valign="top">the name of a file. Each line of this file is taken to be | |||||
an exclude pattern</td> | an exclude pattern</td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
@@ -133,23 +134,16 @@ element which is used to perform Entity and URI resolution</p> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">in</td> | <td valign="top">in</td> | ||||
<td valign="top">specifies a single XML document to be styled. Should be used | |||||
<td valign="top">specifies a single XML document to be styled. Should be used | |||||
with the out attribute.</td> | with the out attribute.</td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">out</td> | <td valign="top">out</td> | ||||
<td valign="top">specifies the output name for the styled result from the | |||||
<td valign="top">specifies the output name for the styled result from the | |||||
in attribute.</td> | in attribute.</td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">outputtype</td> | |||||
<td valign="top">specifies the output method to be used. Only "xml" is | |||||
guaranteed to be supported by all translators. Xalan2 supports "xml", | |||||
"html", and "text"</td> | |||||
<td valign="top" align="center">No</td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td valign="top">scanincludeddirectories</td> | <td valign="top">scanincludeddirectories</td> | ||||
<td valign="top">If any directories are matched by the | <td valign="top">If any directories are matched by the | ||||
@@ -161,32 +155,58 @@ element which is used to perform Entity and URI resolution</p> | |||||
<h3>Parameters specified as nested elements</h3> | <h3>Parameters specified as nested elements</h3> | ||||
<h4>classpath</h4> | <h4>classpath</h4> | ||||
<p>The classpath to load the processor from can be specified via a | <p>The classpath to load the processor from can be specified via a | ||||
nested <code><classpath></code>, as well - that is, a | |||||
nested <code><classpath></code>, as well - that is, a | |||||
<a href="../using.html#path">path</a>-like structure.</p> | <a href="../using.html#path">path</a>-like structure.</p> | ||||
<h4>xmlcatalog</h4> | <h4>xmlcatalog</h4> | ||||
<p>The <a href="../CoreTypes/xmlcatalog.html">xmlcatalog</a> | |||||
<p>The <a href="../CoreTypes/xmlcatalog.html">xmlcatalog</a> | |||||
element is used to perform Entity and URI resolution.</p> | element is used to perform Entity and URI resolution.</p> | ||||
<h4>param</h4> | <h4>param</h4> | ||||
<p>Param is used to pass a parameter to the XSL stylesheet.</p> | <p>Param is used to pass a parameter to the XSL stylesheet.</p> | ||||
<h4>Parameters</h4> | <h4>Parameters</h4> | ||||
<table width="60%" border="1" cellpadding="2" cellspacing="0"> | <table width="60%" border="1" cellpadding="2" cellspacing="0"> | ||||
<tr> | |||||
<tr> | |||||
<td valign="top"><b>Attribute</b></td> | <td valign="top"><b>Attribute</b></td> | ||||
<td valign="top"><b>Description</b></td> | <td valign="top"><b>Description</b></td> | ||||
<td align="center" valign="top"><b>Required</b></td> | <td align="center" valign="top"><b>Required</b></td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<tr> | |||||
<td valign="top">name</td> | <td valign="top">name</td> | ||||
<td valign="top">Name of the XSL parameter</td> | <td valign="top">Name of the XSL parameter</td> | ||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<tr> | |||||
<td valign="top">expression</td> | <td valign="top">expression</td> | ||||
<td valign="top">XSL expression to be placed into the param. To pass a text | |||||
<td valign="top">XSL expression to be placed into the param. To pass a text | |||||
value into the style sheet it needs to be escaped using single quotes.</td> | value into the style sheet it needs to be escaped using single quotes.</td> | ||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
</table> | </table> | ||||
<h4>outputproperty ('trax' processors only)</h4> | |||||
<p>Used to specify how you wish the result tree to be output | |||||
as specified in the <a href="http://www.w3.org/TR/xslt#output"> | |||||
XSLT specifications</a>. | |||||
<h4>Parameters</h4> | |||||
<table width="60%" 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">Name of the property</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">value</td> | |||||
<td valign="top">value of the property.</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
</tr> | |||||
</table> | |||||
<h3>Examples</h3> | <h3>Examples</h3> | ||||
<blockquote> | <blockquote> | ||||
<pre> | <pre> | ||||
@@ -201,7 +221,7 @@ element is used to perform Entity and URI resolution.</p> | |||||
<xslt basedir="doc" destdir="build/doc" | <xslt basedir="doc" destdir="build/doc" | ||||
extension=".html" style="style/apache.xsl"> | extension=".html" style="style/apache.xsl"> | ||||
<xmlcatalog> | <xmlcatalog> | ||||
<dtd | |||||
<dtd | |||||
publicId="-//ArielPartners//DTD XML Article V1.0//EN" | publicId="-//ArielPartners//DTD XML Article V1.0//EN" | ||||
location="com/arielpartners/knowledgebase/dtd/article.dtd"/> | location="com/arielpartners/knowledgebase/dtd/article.dtd"/> | ||||
</xmlcatalog> | </xmlcatalog> | ||||
@@ -216,6 +236,17 @@ element is used to perform Entity and URI resolution.</p> | |||||
element <xsl:param name="date"/>, the variable | element <xsl:param name="date"/>, the variable | ||||
<code>$date</code> will subsequently have the value 07-01-2000. | <code>$date</code> will subsequently have the value 07-01-2000. | ||||
</p> | </p> | ||||
<h4>Using output properties</h4> | |||||
<pre><xslt in="doc.xml" out="build/doc/output.xml" | |||||
style="style/apache.xsl"> | |||||
<outputproperty name="method" value="xml";/> | |||||
<outputproperty name="standalone" value="yes"/> | |||||
<outputproperty name="encoding" value="iso8859_1"/> | |||||
<outputproperty name="indent" value="yes"/> | |||||
</xslt></pre> | |||||
</blockquote> | </blockquote> | ||||
<hr> | <hr> | ||||
<p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights | <p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights | ||||
@@ -57,8 +57,8 @@ support VAJ has not (out of the box).</P> | |||||
To Tool API'. Therefore builds containing VAJ tasks can also be executed | To Tool API'. Therefore builds containing VAJ tasks can also be executed | ||||
from the command line (Kudos to Glenn McAllister for describing the | from the command line (Kudos to Glenn McAllister for describing the | ||||
concept and providing source code at | concept and providing source code at | ||||
<A href="http://www7.software.ibm.com/vad.nsf/Data/Document4366"> | |||||
http://www7.software.ibm.com/vad.nsf/Data/Document4366</A>. | |||||
<A href="http://www7.software.ibm.com/vad.nsf/Data/Document4366"> | |||||
http://www7.software.ibm.com/vad.nsf/Data/Document4366</A>. | |||||
<LI>It is possible to cancel a running build | <LI>It is possible to cancel a running build | ||||
executed from the plugin | executed from the plugin | ||||
@@ -125,14 +125,7 @@ workspace.</P> | |||||
<td valign="top">version</TD> | <td valign="top">version</TD> | ||||
<td valign="top">name of the requested version</TD> | <td valign="top">name of the requested version</TD> | ||||
<td valign="top" align="middle">yes</TD></TR> | <td valign="top" align="middle">yes</TD></TR> | ||||
<tr> | |||||
<td valign="top">remote</TD> | |||||
<td valign="top"> | |||||
<P>name and port of a remote tool server. (format: | |||||
<servername>:<port no>).<BR>If this | |||||
attribute is set, the tasks will be executed on the specified tool | |||||
server. </P></TD> | |||||
<td valign="top" align="middle">no</TD></TR></TABLE> | |||||
</TABLE> | |||||
<h3>Example</H3> | <h3>Example</H3> | ||||
<pre><vajload remote="localhost:32767"> | <pre><vajload remote="localhost:32767"> | ||||
@@ -246,11 +239,11 @@ This example exports all packages in the VAJ project 'MyProject', except | |||||
packages starting with 'test'. | packages starting with 'test'. | ||||
<h3>Default Excludes</H3> | <h3>Default Excludes</H3> | ||||
The default excludes are:<br> | The default excludes are:<br> | ||||
<pre> IBM*/** | |||||
Java class libraries/** | |||||
Sun class libraries*/** | |||||
JSP Page Compile Generated Code/** | |||||
VisualAge*/** | |||||
<pre> IBM*/** | |||||
Java class libraries/** | |||||
Sun class libraries*/** | |||||
JSP Page Compile Generated Code/** | |||||
VisualAge*/** | |||||
</PRE> | </PRE> | ||||
<hr> | <hr> | ||||
<h2><a name="vajimport"></A>VAJImport</H2> | <h2><a name="vajimport"></A>VAJImport</H2> | ||||
@@ -273,17 +266,17 @@ from the file system into VAJ. These imports can be specified with a fileset. | |||||
<td valign="top" align="middle">yes</TD></TR> | <td valign="top" align="middle">yes</TD></TR> | ||||
<tr> | <tr> | ||||
<td valign="top">importSources</TD> | <td valign="top">importSources</TD> | ||||
<td valign="top">export source files (default: | |||||
<td valign="top">import source files (default: | |||||
"yes")</TD> | "yes")</TD> | ||||
<td valign="top" align="middle">no</TD></TR> | <td valign="top" align="middle">no</TD></TR> | ||||
<tr valign="top"> | <tr valign="top"> | ||||
<td valign="top">importResources</TD> | <td valign="top">importResources</TD> | ||||
<td valign="top">export resource files (default: | |||||
<td valign="top">import resource files (default: | |||||
"yes")</TD> | "yes")</TD> | ||||
<td valign="top" align="middle">no</TD></TR> | <td valign="top" align="middle">no</TD></TR> | ||||
<tr valign="top"> | <tr valign="top"> | ||||
<td valign="top">importClasses</TD> | <td valign="top">importClasses</TD> | ||||
<td valign="top">export class files (default: "no")</TD> | |||||
<td valign="top">import class files (default: "no")</TD> | |||||
<td valign="top" align="middle">no</TD></TR> | <td valign="top" align="middle">no</TD></TR> | ||||
<tr> | <tr> | ||||
<td valign="top">remote</TD> | <td valign="top">remote</TD> | ||||
@@ -369,8 +362,8 @@ install directory. If You have installed it elsewhere, adapt the pathes below. | |||||
For | For | ||||
a good introduction into the VAJ Remote Tool Access see the | a good introduction into the VAJ Remote Tool Access see the | ||||
great introduction from Glenn McAllister at | great introduction from Glenn McAllister at | ||||
<A href="http://www7.software.ibm.com/vad.nsf/Data/Document4366"> | |||||
http://www7.software.ibm.com/vad.nsf/Data/Document4366</A>. It | |||||
<A href="http://www7.software.ibm.com/vad.nsf/Data/Document4366"> | |||||
http://www7.software.ibm.com/vad.nsf/Data/Document4366</A>. It | |||||
is highly recommended to read this article before doing the installation (to | is highly recommended to read this article before doing the installation (to | ||||
understand what you do :-) ). | understand what you do :-) ). | ||||
<LI>insert the following lines into | <LI>insert the following lines into | ||||
@@ -169,6 +169,13 @@ or are out of date, the ejbc tool is run to generate new versions.</p> | |||||
processed.</td> | processed.</td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">keepgenerated</td> | |||||
<td>Controls whether ejbc will keep the | |||||
intermediate Java files used to build the class files. This can be | |||||
useful when debugging.</td> | |||||
<td>No, defaults to false.</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<h3>Examples</h3> | <h3>Examples</h3> | ||||
<pre><ejbc descriptors="${gen.classes}" | <pre><ejbc descriptors="${gen.classes}" | ||||
@@ -323,7 +330,7 @@ and hence ant, will not complete until the weblogic instance is stopped.</p> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">BEA Home</td> | <td valign="top">BEA Home</td> | ||||
<td valign="top">The location of the BEA Home qwhere the server's config is defined. | |||||
<td valign="top">The location of the BEA Home where the server's config is defined. | |||||
If this attribute is present, wlrun assumes that the server will | If this attribute is present, wlrun assumes that the server will | ||||
be running under Weblogic 6.0</td> | be running under Weblogic 6.0</td> | ||||
<td valign="top" align="center">N/A</td> | <td valign="top" align="center">N/A</td> | ||||
@@ -407,8 +414,8 @@ and hence ant, will not complete until the weblogic instance is stopped.</p> | |||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">args</td> | |||||
<td valign="top">Additional argument string passed to the Weblogic instance.</td> | |||||
<td valign="top">weblogicMainClass</td> | |||||
<td valign="top">name of the main class for weblogic</td> | |||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
@@ -473,7 +480,7 @@ specify the BEA Home to have this task work correctly under 6.0</p> | |||||
<tr> | <tr> | ||||
<td valign="top">classpath</td> | <td valign="top">classpath</td> | ||||
<td valign="top">The classpath to be used with the Java Virtual Machine that runs the Weblogic | <td valign="top">The classpath to be used with the Java Virtual Machine that runs the Weblogic | ||||
Shutdown comment.</td> | |||||
Shutdown command.</td> | |||||
<td valign="top" align="center">Yes</td> | <td valign="top" align="center">Yes</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -502,7 +509,7 @@ specify the BEA Home to have this task work correctly under 6.0</p> | |||||
<h3>Nested Element</h3> | <h3>Nested Element</h3> | ||||
<p>The classpath of the welstop task can be set by a <classpath> nested element.</p> | |||||
<p>The classpath of the wlstop task can be set by a <classpath> nested element.</p> | |||||
<h3>Examples</h3> | <h3>Examples</h3> | ||||
@@ -1002,8 +1009,8 @@ define this as META-INF/Customer-weblogic-cmp-rdbms-jar.xml.</p> | |||||
the weblogic class hierarchy. This should not be necessary if you | the weblogic class hierarchy. This should not be necessary if you | ||||
have weblogic in your classpath. If you do not, you should use a | have weblogic in your classpath. If you do not, you should use a | ||||
nested <dtd> element, described above. If you do choose | nested <dtd> element, described above. If you do choose | ||||
to use an attribute, you should use the ejbdtd attribute in | |||||
preference to this one, anyway. | |||||
to use an attribute, you should use a | |||||
nested <dtd> element. | |||||
</td> | </td> | ||||
<td valign="top" align="center">No.</td> | <td valign="top" align="center">No.</td> | ||||
</tr> | </tr> | ||||
@@ -1071,7 +1078,7 @@ define this as META-INF/Customer-weblogic-cmp-rdbms-jar.xml.</p> | |||||
<tr> | <tr> | ||||
<td valign="top">outputdir</td> | <td valign="top">outputdir</td> | ||||
<td valign="top">If set ejbc will be given this directory as the output | <td valign="top">If set ejbc will be given this directory as the output | ||||
desitination rather than a jar file. This allows for the | |||||
destination rather than a jar file. This allows for the | |||||
generation of "exploded" jars. | generation of "exploded" jars. | ||||
</td> | </td> | ||||
<td valign="top" align="center">No.</td> | <td valign="top" align="center">No.</td> | ||||
@@ -1286,7 +1293,7 @@ the classpath of the ejbdeploy tool (look at the examples below). | |||||
<td valign="top" align="center">No, defaults to false</td> | <td valign="top" align="center">No, defaults to false</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">alwaysrebuild</td> | |||||
<td valign="top">rebuild</td> | |||||
<td valign="top">This controls whether ejbdeploy is called although no changes | <td valign="top">This controls whether ejbdeploy is called although no changes | ||||
have occurred.</td> | have occurred.</td> | ||||
<td valign="top" align="center">No, defaults to false</td> | <td valign="top" align="center">No, defaults to false</td> | ||||
@@ -1308,6 +1315,7 @@ the classpath of the ejbdeploy tool (look at the examples below). | |||||
<li>SQL92</li> <li>SQL99</li> <li>DB2UDBWIN_V71</li> | <li>SQL92</li> <li>SQL99</li> <li>DB2UDBWIN_V71</li> | ||||
<li>DB2UDBOS390_V6</li> <li>DB2UDBAS400_V4R5</li> <li>ORACLE_V8</li> | <li>DB2UDBOS390_V6</li> <li>DB2UDBAS400_V4R5</li> <li>ORACLE_V8</li> | ||||
<li>INFORMIX_V92</li> <li>SYBASE_V1192</li> <li>MYSQL_V323</li> | <li>INFORMIX_V92</li> <li>SYBASE_V1192</li> <li>MYSQL_V323</li> | ||||
<li>MSSQLSERVER_V7</li> | |||||
</ul> | </ul> | ||||
This is also used to determine the name of the Map.mapxmi and | This is also used to determine the name of the Map.mapxmi and | ||||
Schema.dbxmi files, for example Account-DB2UDBWIN_V71-Map.mapxmi | Schema.dbxmi files, for example Account-DB2UDBWIN_V71-Map.mapxmi | ||||
@@ -1623,6 +1631,7 @@ documentation for more details.</p> | |||||
<tr> | <tr> | ||||
<td valign="Top">verbose</td> | <td valign="Top">verbose</td> | ||||
<td valign="Top">Indicates whether or not to use -verbose switch. If | <td valign="Top">Indicates whether or not to use -verbose switch. If | ||||
omitted, it defaults to <code>false</code>.</td> | omitted, it defaults to <code>false</code>.</td> | ||||
<td align="Center" valign="Top">No</td> | <td align="Center" valign="Top">No</td> | ||||
</tr> | </tr> | ||||
@@ -54,65 +54,57 @@ Perform code covering functions by comparing source code line execution to the p | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">home</td> | <td valign="top">home</td> | ||||
<td valign="top">The directory where is intalled JProbe.</td> | |||||
<td valign="top">The directory where JProbe is intalled.</td> | |||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">vm</td> | <td valign="top">vm</td> | ||||
<td valign="top"> | <td valign="top"> | ||||
Indicates which virtual machine to run. | |||||
Must be one of "jdk117", "jdk118" or "java2".If "java2" is specified, the user is | |||||
also required to specify a path via <tt>javahome</tt>, otherwise it will check if | |||||
the current executing VM is 1.2+ and use its java.home property to determine its | |||||
location. | |||||
in the registry for the default 1.2.x (Java 2) VM.</td> | |||||
Indicates which virtual machine to run. | |||||
Must be one of "jdk117", "jdk118" or "java2".If "java2" is specified, the user is | |||||
also required to specify a path via <tt>javaexe</tt>, otherwise it will check if | |||||
the current executing VM is 1.2+ and use its java.home property to determine its | |||||
location.</td> | |||||
<td align="center" valign="top">No, default to embedded VM if 1.2+</td> | <td align="center" valign="top">No, default to embedded VM if 1.2+</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">javahome</td> | |||||
<td valign="top">For Java 2 only, specifies the path of the jdk1.2.x virtual | |||||
machine to be used. This is only valid when specifying the <tt>vm="java2"</tt>.</td> | |||||
<td align="center" valign="top">No, use only for java2</td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td valign="top">javaexe</td> | <td valign="top">javaexe</td> | ||||
<td valign="top">Similar to <tt>javahome</tt>, except this is the path to | |||||
the java executable.</td> | |||||
<td align="center" valign="top">No, use only for java2</td> | |||||
<td valign="top">The path to the java executable.</td> | |||||
<td align="center" valign="top">No, use only for java2 vm.</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">applet</td> | <td valign="top">applet</td> | ||||
<td valign="top">Run an applet. The default is false, unless the file under | <td valign="top">Run an applet. The default is false, unless the file under | ||||
analysis ends with htm or html.</td> | |||||
analysis ends with htm or html.</td> | |||||
<td align="center" valign="top">No, default is "false".</td> | <td align="center" valign="top">No, default is "false".</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">seedname</td> | <td valign="top">seedname</td> | ||||
<td valign="top">Seed name for the temporary snapshot files (files will be named | <td valign="top">Seed name for the temporary snapshot files (files will be named | ||||
seed.jpc, seed1.jpc, seed2.jpc, ...)</td> | |||||
seed.jpc, seed1.jpc, seed2.jpc, ...)</td> | |||||
<td align="center" valign="top">No, default to "snapshot"</td> | <td align="center" valign="top">No, default to "snapshot"</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">exitprompt</td> | <td valign="top">exitprompt</td> | ||||
<td valign="top">Toggles display of the console prompt: "Press Enter to close | <td valign="top">Toggles display of the console prompt: "Press Enter to close | ||||
this window." "always": Always displays the prompt. "never": Never displays the | |||||
prompt. "error": Only displays prompt after an error.</td> | |||||
this window." "always": Always displays the prompt. "never": Never displays the | |||||
prompt. "error": Only displays prompt after an error.</td> | |||||
<td align="center" valign="top">No, default is "never"</td> | <td align="center" valign="top">No, default is "never"</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">finalsnapshot</td> | <td valign="top">finalsnapshot</td> | ||||
<td valign="top">Type of snapshot to send at program termination. Must be one | <td valign="top">Type of snapshot to send at program termination. Must be one | ||||
of "none","coverage","all"</td> | |||||
of "none","coverage","all"</td> | |||||
<td align="center" valign="top">No, default to "coverage"</td> | <td align="center" valign="top">No, default to "coverage"</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">recordfromstart</td> | <td valign="top">recordfromstart</td> | ||||
<td valign="top">Must be one of "coverage", "all", "none". If you want | <td valign="top">Must be one of "coverage", "all", "none". If you want | ||||
Coverage to start analyzing as soon as the program begins to run, use "all". | |||||
If not, select "none".</td> | |||||
Coverage to start analyzing as soon as the program begins to run, use "all". | |||||
If not, select "none".</td> | |||||
<td align="center" valign="top">No, default to "coverage"</td> | <td align="center" valign="top">No, default to "coverage"</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -123,8 +115,8 @@ Perform code covering functions by comparing source code line execution to the p | |||||
<tr> | <tr> | ||||
<td valign="top">snapshotdir</td> | <td valign="top">snapshotdir</td> | ||||
<td valign="top">The path to the directory where snapshot files are stored. | <td valign="top">The path to the directory where snapshot files are stored. | ||||
Choose a directory that is reachable by both the remote and local computers, | |||||
and enter the same path on the command line and in the viewer.</td> | |||||
Choose a directory that is reachable by both the remote and local computers, | |||||
and enter the same path on the command line and in the viewer.</td> | |||||
<td align="center" valign="top">No, default to current directory</td> | <td align="center" valign="top">No, default to current directory</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -135,7 +127,7 @@ Perform code covering functions by comparing source code line execution to the p | |||||
<tr> | <tr> | ||||
<td valign="top">tracknatives</td> | <td valign="top">tracknatives</td> | ||||
<td valign="top">Test native methods. Note that testing native methods with | <td valign="top">Test native methods. Note that testing native methods with | ||||
Java 2 disables the JIT</td> | |||||
Java 2 disables the JIT</td> | |||||
<td align="center" valign="top">No, default to "false".</td> | <td align="center" valign="top">No, default to "false".</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -214,14 +206,14 @@ The syntax is filters is similar to a <a href="../CoreTypes/fileset.html">filese | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">defaultexclude</td> | <td valign="top">defaultexclude</td> | ||||
<td valign="top">As a default, the coverage exclude all classes and methods. | |||||
<td valign="top">As a default, the coverage excludes all classes and methods. | |||||
Default filters are equivalent to | Default filters are equivalent to | ||||
<pre> | <pre> | ||||
<filters> | <filters> | ||||
<exclude class="*" method="*"/> | <exclude class="*" method="*"/> | ||||
</filters> | </filters> | ||||
</pre> | |||||
</td> | |||||
</pre> | |||||
</td> | |||||
<td align="center">No, default to "true"</td> | <td align="center">No, default to "true"</td> | ||||
</tr> | </tr> | ||||
</table> | </table> | ||||
@@ -239,12 +231,17 @@ with a <tt>name</tt> attribute. | |||||
<tr> | <tr> | ||||
<td valign="top">class</td> | <td valign="top">class</td> | ||||
<td valign="top">The class mask as a simple regular expression</td> | <td valign="top">The class mask as a simple regular expression</td> | ||||
<td align="center">No, default to *</td> | |||||
<td align="center">No, defaults to "*"</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">method</td> | <td valign="top">method</td> | ||||
<td valign="top">The method mask as a simple regular expression</td> | <td valign="top">The method mask as a simple regular expression</td> | ||||
<td align="center">No, default to *</td> | |||||
<td align="center">No, defaults to "*"</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">enabled</td> | |||||
<td valign="top">is the filter enabled?</td> | |||||
<td align="center">No, defaults to true</td> | |||||
</tr> | </tr> | ||||
</table> | </table> | ||||
</blockquote> | </blockquote> | ||||
@@ -280,21 +277,21 @@ on method) and it has the following attributes: | |||||
<tr> | <tr> | ||||
<td valign="top">name</td> | <td valign="top">name</td> | ||||
<td valign="top">The name of the method(s) as a regular expression. The name | <td valign="top">The name of the method(s) as a regular expression. The name | ||||
is the fully qualified name on the form <tt>package.classname.method</tt></td> | |||||
is the fully qualified name on the form <tt>package.classname.method</tt></td> | |||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">event</td> | <td valign="top">event</td> | ||||
<td valign="top">the event on the method that will trigger the action. Must be | <td valign="top">the event on the method that will trigger the action. Must be | ||||
"enter" or "exit".</td> | |||||
"enter" or "exit".</td> | |||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">action</td> | <td valign="top">action</td> | ||||
<td valign="top">the action to execute. Must be one of "clear", | <td valign="top">the action to execute. Must be one of "clear", | ||||
"pause", "resume", "snapshot", "suspend", | |||||
or "exit". They respectively clear recording, pause recording, | |||||
resume recording, take a snapshot, suspend the recording and exit the program. | |||||
"pause", "resume", "snapshot", "suspend", | |||||
or "exit". They respectively clear recording, pause recording, | |||||
resume recording, take a snapshot, suspend the recording and exit the program. | |||||
</td> | </td> | ||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
@@ -323,26 +320,26 @@ same class.</p> | |||||
<h3>Parameters</h3> | <h3>Parameters</h3> | ||||
<table border="1" cellpadding="2" cellspacing="0"> | <table border="1" cellpadding="2" cellspacing="0"> | ||||
<tr> | <tr> | ||||
<td width="12%" valign="top"><b>Attribute</b></td> | |||||
<td width="78%" valign="top"><b>Description</b></td> | |||||
<td width="10%" valign="top"><b>Required</b></td> | |||||
<td width="12%" valign="top"><b>Attribute</b></td> | |||||
<td width="78%" valign="top"><b>Description</b></td> | |||||
<td width="10%" valign="top"><b>Required</b></td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">home</td> | |||||
<td valign="top">The directory where is installed JProbe.</td> | |||||
<td valign="top">home</td> | |||||
<td valign="top">The directory where JProbe is installed.</td> | |||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">tofile</td> | |||||
<td valign="top">the output filename that will be the result | |||||
of the name.</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
<td valign="top">tofile</td> | |||||
<td valign="top">the output filename that will be the result | |||||
of the name.</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">verbose</td> | |||||
<td valign="top">Perform the merge in verbose mode giving | |||||
details about the snapshot processing.</td> | |||||
<td align="center" valign="top">No. Default to false</td> | |||||
<td valign="top">verbose</td> | |||||
<td valign="top">Perform the merge in verbose mode giving | |||||
details about the snapshot processing.</td> | |||||
<td align="center" valign="top">No. Default to false</td> | |||||
</tr> | </tr> | ||||
</table> | </table> | ||||
@@ -377,47 +374,47 @@ Oro</a> in Ant classpath, to run the <tt>reference</tt> feature.</p> | |||||
<h3>Parameters</h3> | <h3>Parameters</h3> | ||||
<table border="1" cellpadding="2" cellspacing="0"> | <table border="1" cellpadding="2" cellspacing="0"> | ||||
<tr> | <tr> | ||||
<td width="12%" valign="top"><b>Attribute</b></td> | |||||
<td width="78%" valign="top"><b>Description</b></td> | |||||
<td width="10%" valign="top"><b>Required</b></td> | |||||
<td width="12%" valign="top"><b>Attribute</b></td> | |||||
<td width="78%" valign="top"><b>Description</b></td> | |||||
<td width="10%" valign="top"><b>Required</b></td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">home</td> | |||||
<td valign="top">The directory where is intalled JProbe.</td> | |||||
<td valign="top">home</td> | |||||
<td valign="top">The directory where JProbe is intalled.</td> | |||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">format</td> | |||||
<td valign="top">The format of the generated report. Must be "xml", "html" or "text"</td> | |||||
<td align="center" valign="top">No, default to "html"</td> | |||||
<td valign="top">format</td> | |||||
<td valign="top">The format of the generated report. Must be "xml", "html" or "text"</td> | |||||
<td align="center" valign="top">No, default to "html"</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">type</td> | |||||
<td valign="top">The type of report to be generated. Must be "executive", | |||||
"summary", "detailed" or "verydetailed"</td> | |||||
<td align="center" valign="top">No. Default to "detailed"</td> | |||||
<td valign="top">type</td> | |||||
<td valign="top">The type of report to be generated. Must be "executive", | |||||
"summary", "detailed" or "verydetailed"</td> | |||||
<td align="center" valign="top">No. Default to "detailed"</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">percent</td> | |||||
<td valign="top">A numeric value for the threshold for printing methods. Must | |||||
be between 0 and 100.</td> | |||||
<td align="center" valign="top">No, default to 100</td> | |||||
<td valign="top">percent</td> | |||||
<td valign="top">A numeric value for the threshold for printing methods. Must | |||||
be between 0 and 100.</td> | |||||
<td align="center" valign="top">No, default to 100</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">snapshot</td> | |||||
<td valign="top">The name of the snapshot file that is the source to the report.</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
<td valign="top">snapshot</td> | |||||
<td valign="top">The name of the snapshot file that is the source to the report.</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">tofile</td> | |||||
<td valign="top">The name of the generated output file</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
<td valign="top">tofile</td> | |||||
<td valign="top">The name of the generated output file</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">includesource</td> | |||||
<td valign="top">Include text of the source code lines. Only applies to | |||||
<td valign="top">includesource</td> | |||||
<td valign="top">Include text of the source code lines. Only applies to | |||||
format="xml" and type="verydetailed"</td> | format="xml" and type="verydetailed"</td> | ||||
<td align="center" valign="top">No. Defaults to "yes"</td> | |||||
<td align="center" valign="top">No. Defaults to "yes"</td> | |||||
</tr> | </tr> | ||||
</table> | </table> | ||||
@@ -526,7 +523,7 @@ one for JUnit. It needs either Xalan 1.2.2 or Xalan 2.x.</p> | |||||
</p> | </p> | ||||
<pre><style processor="xalan" in="./reports/xml/results.xml" out="./reports/html/dummy.file" | <pre><style processor="xalan" in="./reports/xml/results.xml" out="./reports/html/dummy.file" | ||||
style="${ant.home}/etc/coverage-frames.xsl"> | style="${ant.home}/etc/coverage-frames.xsl"> | ||||
<param name="output.dir" expression="'${basedir}/reports/html'"/> | |||||
<param name="output.dir" expression="'${basedir}/reports/html'"/> | |||||
</style></pre> | </style></pre> | ||||
<p>Xalan 2.x (note the parameter without single quote)</p> | <p>Xalan 2.x (note the parameter without single quote)</p> | ||||
<pre><style processor="trax" in="./reports/xml/results.xml" out="./reports/html/dummy.file" | <pre><style processor="trax" in="./reports/xml/results.xml" out="./reports/html/dummy.file" | ||||
@@ -535,7 +532,7 @@ one for JUnit. It needs either Xalan 1.2.2 or Xalan 2.x.</p> | |||||
</style></pre> | </style></pre> | ||||
<hr> | <hr> | ||||
<p align="center">Copyright © 2001 Apache Software Foundation. All rights | |||||
<p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | |||||
Reserved.</p> | Reserved.</p> | ||||
</body> | </body> | ||||
</html> | </html> |
@@ -174,10 +174,6 @@ classpath. | |||||
<h4>classpathref</h4> | <h4>classpathref</h4> | ||||
a reference to an existing classpath | a reference to an existing classpath | ||||
<h4>compilerclasspath</h4> | |||||
The classpath used to locate an optional compiler adapter specified by | |||||
<code>compiler</code> | |||||
<h4>webapp</h4> | <h4>webapp</h4> | ||||
Instructions to jasper to build an entire web application. | Instructions to jasper to build an entire web application. | ||||
The base directory must have a WEB-INF subdirectory beneath it. | The base directory must have a WEB-INF subdirectory beneath it. | ||||
@@ -279,8 +279,8 @@ although P4Edit can open files to the default change, P4Submit cannot yet submi | |||||
<h3>Examples</h3> | <h3>Examples</h3> | ||||
<pre> | <pre> | ||||
<p4edit | <p4edit | ||||
view="//depot/projects/projectfoo/main/src/Blah.java..." | |||||
change="${p4.change}" /> | |||||
view="//depot/projects/projectfoo/main/src/Blah.java..." | |||||
change="${p4.change}" /> | |||||
</pre> | </pre> | ||||
<hr> | <hr> | ||||
@@ -16,7 +16,7 @@ by | |||||
<li>Don Jeffery (<a href="mailto:donj@apogeenet.com">donj@apogeenet.com</a>)</li> | <li>Don Jeffery (<a href="mailto:donj@apogeenet.com">donj@apogeenet.com</a>)</li> | ||||
</ul> | </ul> | ||||
Version 1.1 - 2001/06/27<br> | Version 1.1 - 2001/06/27<br> | ||||
<p>Problems with UNC pathnames and the use of () in paths are fixed and an updateonly | |||||
<p>Problems with UNC pathnames and the use of () in paths are fixed and an updateonly | |||||
argument introduced.</p> | argument introduced.</p> | ||||
Version 1.0 - 2001/01/31<br> | Version 1.0 - 2001/01/31<br> | ||||
<p>Initial release.</p> | <p>Initial release.</p> | ||||
@@ -34,7 +34,7 @@ The pvcs task allows the user of ant to extract the latest edition | |||||
of the source code from a PVCS repository. PVCS is a version control system | of the source code from a PVCS repository. PVCS is a version control system | ||||
developed by <a href="http://www.merant.com/products/pvcs">Merant</a>. | developed by <a href="http://www.merant.com/products/pvcs">Merant</a>. | ||||
<br> | <br> | ||||
Before using this tag, the user running ant must have access to the commands | |||||
Before using this tag, the user running ant must have access to the commands | |||||
of PVCS (get and pcli) and must have access to the repository. Note that the way to specify | of PVCS (get and pcli) and must have access to the repository. Note that the way to specify | ||||
the repository is platform dependent so use property to specify location of repository. | the repository is platform dependent so use property to specify location of repository. | ||||
<br> | <br> | ||||
@@ -88,8 +88,8 @@ specified)</td> | |||||
<tr> | <tr> | ||||
<td VALIGN=TOP WIDTH="12%">promotiongroup</td> | <td VALIGN=TOP WIDTH="12%">promotiongroup</td> | ||||
<td VALIGN=TOP WIDTH="78%">Only files within this promotion group are extracted. Using | |||||
both the <i>label</i> and the <i>promotiongroup</i> tag will cause the files in the | |||||
<td VALIGN=TOP WIDTH="78%">Only files within this promotion group are extracted. Using | |||||
both the <i>label</i> and the <i>promotiongroup</i> tag will cause the files in the | |||||
promotion group and with that label to be extracted. | promotion group and with that label to be extracted. | ||||
</td> | </td> | ||||
@@ -125,34 +125,34 @@ tag expects the executables to be found using the PATH environment variable.</td | |||||
<td VALIGN=TOP WIDTH="10%">No</td> | <td VALIGN=TOP WIDTH="10%">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<tr> | |||||
<td VALIGN=TOP WIDTH="12%">ignorereturncode</td> | <td VALIGN=TOP WIDTH="12%">ignorereturncode</td> | ||||
<td VALIGN=TOP WIDTH="78%">If set to <i>true</i> the return value from executing | |||||
<td VALIGN=TOP WIDTH="78%">If set to <i>true</i> the return value from executing | |||||
the pvcs commands are ignored.</td> | the pvcs commands are ignored.</td> | ||||
<td VALIGN=TOP WIDTH="10%">No</td> | <td VALIGN=TOP WIDTH="10%">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<tr> | |||||
<td VALIGN=TOP WIDTH="12%">updateonly</td> | <td VALIGN=TOP WIDTH="12%">updateonly</td> | ||||
<td VALIGN=TOP WIDTH="78%">If set to <i>true</i> files are gotten only if | |||||
<td VALIGN=TOP WIDTH="78%">If set to <i>true</i> files are gotten only if | |||||
newer than existing local files.</td> | newer than existing local files.</td> | ||||
<td VALIGN=TOP WIDTH="10%">No</td> | <td VALIGN=TOP WIDTH="10%">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<tr> | |||||
<td valign="TOP">filenameformat</td> | <td valign="TOP">filenameformat</td> | ||||
<td valign="TOP">The format of your folder names in a | <td valign="TOP">The format of your folder names in a | ||||
format suitable for <code>java.text.MessageFormat</code>. | format suitable for <code>java.text.MessageFormat</code>. | ||||
Index 1 of the format will be used as the file name. | |||||
Defaults to <code>{0}-arc({1})</code>.</td> | |||||
Defaults to <code>{0}-arc({1})</code>. Repositories where | |||||
the archive extension is not <code>-arc</code> should set | |||||
this.</td> | |||||
<td valign="TOP">No</td> | <td valign="TOP">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<tr> | |||||
<td valign="TOP">linestart</td> | <td valign="TOP">linestart</td> | ||||
<td valign="TOP">What a valid return value from PVCS looks like | |||||
when it describes a file. Defaults to <code>"P:</code>. | |||||
If you are not using an UNC name for your repository and the | |||||
drive letter <code>P</code> is incorrect for your setup, you may | |||||
need to change this value, UNC names will always be | |||||
accepted.</td> | |||||
<td valign="TOP">Used to parse the output of the pcli | |||||
command. It defaults to <code>"P:</code>. The parser already | |||||
knows about / and \\, this property is useful in cases where the | |||||
repository is accessed on a Windows platform via a drive letter | |||||
mapping.</td> | |||||
<td valign="TOP">No</td> | <td valign="TOP">No</td> | ||||
</tr> | </tr> | ||||
</table> | </table> | ||||
@@ -66,10 +66,10 @@ We <b>strongly</b> recommend that you use Jakarta Oro. | |||||
<td valign="top">flags</td> | <td valign="top">flags</td> | ||||
<td valign="top">The flags to use when matching the regular expression. For more | <td valign="top">The flags to use when matching the regular expression. For more | ||||
information, consult the Perl5 syntax<br /> | information, consult the Perl5 syntax<br /> | ||||
g --> Global replacement. Replace all occurences found<br /> | |||||
i --> Case Insensitive. Do not consider case in the match<br /> | |||||
m --> Multiline. Treat the string as multiple lines of input, using "^" and "$" as the start or end of any line, respectively, rather than start or end of string.<br /> | |||||
s --> Singleline. Treat the string as a single line of input, using "." to match any character, including a newline, which normally, it would not match.<br /> | |||||
g : Global replacement. Replace all occurences found<br /> | |||||
i : Case Insensitive. Do not consider case in the match<br /> | |||||
m : Multiline. Treat the string as multiple lines of input, using "^" and "$" as the start or end of any line, respectively, rather than start or end of string.<br /> | |||||
s : Singleline. Treat the string as a single line of input, using "." to match any character, including a newline, which normally, it would not match.<br /> | |||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -37,7 +37,7 @@ | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">cleanBuildDir</td> | <td valign="top">cleanBuildDir</td> | ||||
<td valign="top">his will remove the generated files in the BUILD | |||||
<td valign="top">This will remove the generated files in the BUILD | |||||
directory.</td> | directory.</td> | ||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
@@ -47,6 +47,12 @@ directory.</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">removeSource</td> | |||||
<td valign="top"> Flag (optional, default=false) | |||||
to remove the sources after the build. | |||||
See the the <tt>--rmsource</tt> option of rpmbuild.</td> | |||||
<td align="center" valign="top">No</td> | |||||
</tr> <tr> | |||||
<td valign="top">command</td> | <td valign="top">command</td> | ||||
<td valign="top">very similar idea to the cvs task. the default is "-bb"</td> | <td valign="top">very similar idea to the cvs task. the default is "-bb"</td> | ||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
@@ -59,7 +65,7 @@ directory.</td> | |||||
</table> | </table> | ||||
<hr> | <hr> | ||||
<p align="center">Copyright © 2001 Apache Software Foundation. All rights | |||||
<p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | |||||
Reserved.</p> | Reserved.</p> | ||||
</body> | </body> | ||||
@@ -35,7 +35,7 @@ still required. | |||||
<td valign="top">language</td> | <td valign="top">language</td> | ||||
<td valign="top">The programming language the script is written in. | <td valign="top">The programming language the script is written in. | ||||
Must be a supported BSF language</td> | Must be a supported BSF language</td> | ||||
<td valign="top" align="center">No</td> | |||||
<td valign="top" align="center">Yes</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">src</td> | <td valign="top">src</td> | ||||
@@ -190,7 +190,7 @@ required for all actions. | |||||
It is in the form <code><component>:<target1>,<target2>...</code> | It is in the form <code><component>:<target1>,<target2>...</code> | ||||
Where component is the archive name (minus the .jar, .ear, .war | Where component is the archive name (minus the .jar, .ear, .war | ||||
extension). Targets are the servers where the components will be deployed</td> | extension). Targets are the servers where the components will be deployed</td> | ||||
<td>Yes</td> | |||||
<td>no</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">debug</td> | <td valign="top">debug</td> | ||||
@@ -222,7 +222,7 @@ WebLogic server:</p> | |||||
<pre> | <pre> | ||||
<serverdeploy action="delete" source="${lib.dir}/ejb_myApp.jar"/> | <serverdeploy action="delete" source="${lib.dir}/ejb_myApp.jar"/> | ||||
<weblogic application="myapp" | |||||
<weblogic application="myapp" | |||||
server="t3://myserver:7001" | server="t3://myserver:7001" | ||||
classpath="${weblogic.home}/lib/weblogic.jar" | classpath="${weblogic.home}/lib/weblogic.jar" | ||||
username="${user.name}" | username="${user.name}" | ||||
@@ -23,7 +23,7 @@ Version 1.1 2002/01/23 | |||||
<h2>Contents</h2> | <h2>Contents</h2> | ||||
<ul> | <ul> | ||||
<li><a href="#intro">Introduction</a></li> | |||||
<li><a href="#intro">Introduction</a></li> | |||||
<li><a href="#tasks">The Tasks</a></li> | <li><a href="#tasks">The Tasks</a></li> | ||||
</ul> | </ul> | ||||
@@ -55,17 +55,17 @@ have been tested with Linux, Solaris & Windows2000.</p> | |||||
<td>Retrieves a read-only copy of the specified project or file.</td> | <td>Retrieves a read-only copy of the specified project or file.</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td><a href="#SOSLabel"> soslabel</a></td> | |||||
<td><a href="#SOSLabel">soslabel</a></td> | |||||
<td>Assigns a label to the specified project.</td> | <td>Assigns a label to the specified project.</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td><a href="#SOSCheckIn"> soscheckin</a></td> | |||||
<td><a href="#SOSCheckIn">soscheckin</a></td> | |||||
<td>Updates VSS with changes made to a checked out file or project, | <td>Updates VSS with changes made to a checked out file or project, | ||||
and unlocks the VSS master copy.</td> | and unlocks the VSS master copy.</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td><a href="#SOSCheckOut"> soscheckout</a></td> | |||||
<td>Retrieves a read-write copy of the specified project | |||||
<td><a href="#SOSCheckOut">soscheckout</a></td> | |||||
<td>Retrieves a read-write copy of the specified project | |||||
or file, locking the VSS master copy</td> | or file, locking the VSS master copy</td> | ||||
</tr> | </tr> | ||||
@@ -28,6 +28,26 @@ whilst waiting for your builds to complete...</p> | |||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
<td valign="top" align="center">antlogo.gif from the classpath</td> | <td valign="top" align="center">antlogo.gif from the classpath</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">showduration</td> | |||||
<td valign="top">Initial period to pause the build to show the | |||||
splash in milliseconds.</td> | |||||
<td valign="top" align="center">No</td> | |||||
<td valign="top" align="center">5000 ms</td> | |||||
</tr> | |||||
</table> | |||||
<h3>Deprecated properties</h3> | |||||
The following properties can be used to configure the proxy settings to retrieve | |||||
an image from behind a firewall. However, the settings apply not just to this | |||||
task, but to all following tasks. Therefore they are now mostly deprecated in | |||||
preference to the <setproxy> task, that makes it clear to readers of | |||||
the build exactly what is going on. We say mostly as this task's support | |||||
includes proxy authentication, so you may still need to use its | |||||
proxy attributes. | |||||
<table border="1" cellpadding="2" cellspacing="0"> | |||||
<tr> | <tr> | ||||
<td valign="top">useproxy</td> | <td valign="top">useproxy</td> | ||||
<td valign="top">Use a proxy to access imgurl. Note: Only tested | <td valign="top">Use a proxy to access imgurl. Note: Only tested | ||||
@@ -60,13 +80,7 @@ whilst waiting for your builds to complete...</p> | |||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
<td valign="top" align="center">None</td> | <td valign="top" align="center">None</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">showduration</td> | |||||
<td valign="top">Initial period to pause the build to show the | |||||
splash in milliseconds.</td> | |||||
<td valign="top" align="center">No</td> | |||||
<td valign="top" align="center">5000 ms</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<h3>Examples</h3> | <h3>Examples</h3> | ||||
<blockquote><pre> | <blockquote><pre> | ||||
@@ -76,15 +90,10 @@ whilst waiting for your builds to complete...</p> | |||||
<blockquote><pre> | <blockquote><pre> | ||||
<splash imageurl="http://jakarta.apache.org/images/jakarta-logo.gif" | <splash imageurl="http://jakarta.apache.org/images/jakarta-logo.gif" | ||||
useproxy="true" | useproxy="true" | ||||
showduration="5000" | |||||
proxy="proxy.mydomain.com" | |||||
port="8080" | |||||
user="BuildEng" | |||||
password="LetMePass"/> | |||||
showduration="5000"/> | |||||
</pre></blockquote> | </pre></blockquote> | ||||
<p>Splashes the jakarta logo, via a connection through the proxy at | |||||
proxy.mydomain.com on port 8080 (as user BuildEng/LetMePass) for | |||||
<p>Splashes the jakarta logo, for | |||||
an initial period of 5 seconds.</p> | an initial period of 5 seconds.</p> | ||||
<hr> | <hr> | ||||
<p align="center">Copyright © 2002 Apache Software Foundation. All rights | <p align="center">Copyright © 2002 Apache Software Foundation. All rights | ||||
@@ -170,7 +170,7 @@ If false (default) has no effect. | |||||
username="auser" | username="auser" | ||||
password="secret" | password="secret" | ||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
force="true" | |||||
force="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
@@ -184,7 +184,7 @@ created for them and any non-StarTeam files found in the tree will be deleted. | |||||
username="auser" | username="auser" | ||||
password="secret" | password="secret" | ||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
And this is a simpler way of accomplishing the same thing as the previous example, using the URL attribute. | And this is a simpler way of accomplishing the same thing as the previous example, using the URL attribute. | ||||
@@ -197,7 +197,7 @@ And this is a simpler way of accomplishing the same thing as the previous exampl | |||||
rootstarteamfolder="\Dev" | rootstarteamfolder="\Dev" | ||||
excludes="*.bak *.old" | excludes="*.bak *.old" | ||||
label="v2.6.001" | label="v2.6.001" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
@@ -211,7 +211,7 @@ end in <i>.bak</i> or <i>.old</i> with the label <i>v2.6.001</i>. | |||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
includes="*.htm,*.html" | includes="*.htm,*.html" | ||||
excludes="index.*" | excludes="index.*" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
@@ -227,8 +227,8 @@ not be checked out by this command. | |||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
includes="*.htm,*.html" | includes="*.htm,*.html" | ||||
excludes="index.*" | excludes="index.*" | ||||
forced="true" | |||||
recursive="false" | |||||
forced="true" | |||||
recursive="false" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
This example is like the previous one, but will only check out files in | This example is like the previous one, but will only check out files in | ||||
@@ -240,7 +240,7 @@ C:\dev\buildtest\co, because of the turning off of the recursive attribute. | |||||
password="secret" | password="secret" | ||||
rootstarteamfolder="src/java" | rootstarteamfolder="src/java" | ||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
<br></br> | <br></br> | ||||
@@ -258,7 +258,7 @@ C:\dev\buildtest\co, because of the turning off of the recursive attribute. | |||||
password="secret" | password="secret" | ||||
rootstarteamfolder="src/java" | rootstarteamfolder="src/java" | ||||
rootlocalfolder="C:\dev\buildtest\co\src\java" | rootlocalfolder="C:\dev\buildtest\co\src\java" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
@@ -351,7 +351,7 @@ change it. If false (default) lock status will not change. | |||||
username="auser" | username="auser" | ||||
password="secret" | password="secret" | ||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
@@ -365,7 +365,7 @@ For files and folders in the local tree but not in starteam, nothing will be don | |||||
username="auser" | username="auser" | ||||
password="secret" | password="secret" | ||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
And this is a simpler way of giving the same commands as the command above using the URL shortcut. | And this is a simpler way of giving the same commands as the command above using the URL shortcut. | ||||
@@ -377,7 +377,7 @@ And this is a simpler way of giving the same commands as the command above using | |||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
rootstarteamfolder="\Dev" | rootstarteamfolder="\Dev" | ||||
excludes="*.bak *.old" | excludes="*.bak *.old" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
@@ -391,7 +391,7 @@ end in <i>.bak</i> or <i>.old</i> from the tree rooted at"C:\dev\buildtest\co" . | |||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
includes="*.htm,*.html" | includes="*.htm,*.html" | ||||
excludes="index.*" | excludes="index.*" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
@@ -408,8 +408,8 @@ not be checked in by this command. | |||||
rootstarteamfolder="src/java" | rootstarteamfolder="src/java" | ||||
includes="*.htm,*.html" | includes="*.htm,*.html" | ||||
excludes="index.*" | excludes="index.*" | ||||
forced="true" | |||||
recursive="false" | |||||
forced="true" | |||||
recursive="false" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
This example is like the previous one, but will only check in files from | This example is like the previous one, but will only check in files from | ||||
@@ -422,8 +422,8 @@ C:\dev\buildtest\co, because of the turning off of the recursive attribute. | |||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
rootstarteamfolder="src/java" | rootstarteamfolder="src/java" | ||||
includes="version.txt" | includes="version.txt" | ||||
forced="true" | |||||
recursive="false" | |||||
forced="true" | |||||
recursive="false" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
This example is like the previous one, but will only check only in one file, C:\dev\buildtest\co\version.txt to the StarTeam folder src/java. | This example is like the previous one, but will only check only in one file, C:\dev\buildtest\co\version.txt to the StarTeam folder src/java. | ||||
@@ -435,10 +435,10 @@ This example is like the previous one, but will only check only in one file, C:\ | |||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
rootstarteamfolder="src/java" | rootstarteamfolder="src/java" | ||||
includes="version.java" | includes="version.java" | ||||
forced="true" | |||||
recursive="false" | |||||
addUncontrolled="true" | |||||
comment="Fix Bug #667" | |||||
forced="true" | |||||
recursive="false" | |||||
addUncontrolled="true" | |||||
comment="Fix Bug #667" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
This example is like the previous one, but will only check only in one file, C:\dev\buildtest\co\version.java to the StarTeam folder src/java. Because the <i>addUncontrolled</i> attribute has been set, if StarTeam does not already control this file in this location, it will be added to the repository. Also, it will write a comment to the repository for this version of the file. | This example is like the previous one, but will only check only in one file, C:\dev\buildtest\co\version.java to the StarTeam folder src/java. Because the <i>addUncontrolled</i> attribute has been set, if StarTeam does not already control this file in this location, it will be added to the repository. Also, it will write a comment to the repository for this version of the file. | ||||
@@ -449,7 +449,7 @@ This example is like the previous one, but will only check only in one file, C:\ | |||||
password="secret" | password="secret" | ||||
rootstarteamfolder="src/java" | rootstarteamfolder="src/java" | ||||
rootlocalfolder="C:\dev\buildtest\co" | rootlocalfolder="C:\dev\buildtest\co" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
<br></br> | <br></br> | ||||
@@ -467,7 +467,7 @@ This example is like the previous one, but will only check only in one file, C:\ | |||||
password="secret" | password="secret" | ||||
rootstarteamfolder="src/java" | rootstarteamfolder="src/java" | ||||
rootlocalfolder="C:\dev\buildtest\co\src\java" | rootlocalfolder="C:\dev\buildtest\co\src\java" | ||||
forced="true" | |||||
forced="true" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
@@ -606,8 +606,8 @@ while adding a <i>rootlocalfolder</i> and an <i>excludes</i> param ... | |||||
<stlist url="WASHINGTON:49201/build" | <stlist url="WASHINGTON:49201/build" | ||||
username="auser" | username="auser" | ||||
password="secret" | password="secret" | ||||
rootlocalfolder="srcdir2" | |||||
excludes="*.properties" | |||||
rootlocalfolder="srcdir2" | |||||
excludes="*.properties" | |||||
/> | /> | ||||
</pre> | </pre> | ||||
@@ -14,6 +14,11 @@ Unlike the commandline version of this tool, all three arguments | |||||
are required to run stylebook.</p> | are required to run stylebook.</p> | ||||
<p><b>Note:</b> This task depends on external libraries not included in the Ant distribution. | <p><b>Note:</b> This task depends on external libraries not included in the Ant distribution. | ||||
See <a href="../install.html#librarydependencies">Library Dependencies</a> for more information.</p> | See <a href="../install.html#librarydependencies">Library Dependencies</a> for more information.</p> | ||||
<p> | |||||
Being extended from <Java>, all the parent's attributes | |||||
and options are available. Do not set any apart from the <tt>classpath</tt> | |||||
as they are not guaranteed to be there in future. | |||||
</p> | |||||
<h3>Parameters</h3> | <h3>Parameters</h3> | ||||
<table border="1" cellpadding="2" cellspacing="0"> | <table border="1" cellpadding="2" cellspacing="0"> | ||||
@@ -57,7 +62,7 @@ The above will generate documentation in build/docs starting from the book | |||||
src/xdocs/book.xml and using the skin located in directory src/skins/myskin. | src/xdocs/book.xml and using the skin located in directory src/skins/myskin. | ||||
<hr> | <hr> | ||||
<p align="center">Copyright © 2001 Apache Software Foundation. All rights | |||||
<p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | |||||
Reserved.</p> | Reserved.</p> | ||||
</body> | </body> | ||||
@@ -31,7 +31,11 @@ The <code>org.apache.tools.ant.taskdefs.optional.vss</code> package consists of | |||||
vss functionality as well as some Ant tasks encapsulating frequently used vss commands. | vss functionality as well as some Ant tasks encapsulating frequently used vss commands. | ||||
Although it is possible to use these commands on the desktop, | Although it is possible to use these commands on the desktop, | ||||
they were primarily intended to be used by automated build systems.</p> | they were primarily intended to be used by automated build systems.</p> | ||||
<p> | |||||
If you get a CreateProcesss IOError=2 when running these, it means | |||||
that ss.exe was not found. Check to see if you can run it from the | |||||
command line -you may need to alter your path, or set the <tt>ssdir</tt> | |||||
property. | |||||
<h2><a name="tasks">The Tasks</a></h2> | <h2><a name="tasks">The Tasks</a></h2> | ||||
<table border="0" cellspacing="0" cellpadding="3"> | <table border="0" cellspacing="0" cellpadding="3"> | ||||
@@ -64,9 +68,9 @@ they were primarily intended to be used by automated build systems.</p> | |||||
<td>Change the current project being used in VSS</td> | <td>Change the current project being used in VSS</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td><a href="#vsscreate">vsscreate</a></td> | |||||
<td>Creates a project in VSS.</td> | |||||
</tr> | |||||
<td><a href="#vsscreate">vsscreate</a></td> | |||||
<td>Creates a project in VSS.</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<hr> | <hr> | ||||
@@ -114,17 +118,17 @@ label only one will be used in the order version, date, label.</p> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td>serverPath</td> | <td>serverPath</td> | ||||
<td>directory where <code>srssafe.ini</code> resides.</td> | |||||
<td>directory where <code>ss.ini</code> resides.</td> | |||||
<td>No</td> | <td>No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td>writable</td> | <td>writable</td> | ||||
<td>true or false</td> | |||||
<td>true or false<; default false/td> | |||||
<td>No</td> | <td>No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td>recursive</td> | <td>recursive</td> | ||||
<td>true or false</td> | |||||
<td>true or false; default false</td> | |||||
<td>No</td> | <td>No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -303,7 +307,7 @@ Task to perform HISTORY commands to Microsoft Visual SourceSafe. | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td>toDate</td> | <td>toDate</td> | ||||
<td>Start date for comparison</td> | |||||
<td>End date for comparison</td> | |||||
<td>See below</td> | <td>See below</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -343,6 +347,11 @@ Task to perform HISTORY commands to Microsoft Visual SourceSafe. | |||||
<td>brief, codediff, default or nofile. The default is default.</td> | <td>brief, codediff, default or nofile. The default is default.</td> | ||||
<td>No</td> | <td>No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td>user</td> | |||||
<td>Name the user whose changes we would like to see</td> | |||||
<td>No</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<h4>Specifying the time-frame</h4> | <h4>Specifying the time-frame</h4> | ||||
@@ -15,8 +15,8 @@ task uses the SAX2 parser implementation provided by JAXP by default | |||||
SAX1/2 parser if needed.</p> | SAX1/2 parser if needed.</p> | ||||
<p>This task supports the use of nested <a | <p>This task supports the use of nested <a | ||||
href="../CoreTypes/xmlcatalog.html">xmlcatalog</a> elements and/or nested | |||||
<dtd> elements which are used to resolve DTDs and entities.</p> | |||||
href="../CoreTypes/xmlcatalog.html">xmlcatalog</a> elements and/or nested | |||||
<tt><dtd></tt> elements which are used to resolve DTDs and entities.</p> | |||||
<h3>Parameters</h3> | <h3>Parameters</h3> | ||||
<table border="1" cellpadding="2" cellspacing="0"> | <table border="1" cellpadding="2" cellspacing="0"> | ||||
@@ -34,7 +34,7 @@ href="../CoreTypes/xmlcatalog.html">xmlcatalog</a> elements and/or nested | |||||
<td valign="top">lenient</td> | <td valign="top">lenient</td> | ||||
<td valign="top"> | <td valign="top"> | ||||
if true, only check the xml document is well formed | if true, only check the xml document is well formed | ||||
(ignored if the specified parser is as SAX1 parser) | |||||
(ignored if the specified parser is as SAX1 parser) | |||||
</td> | </td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
@@ -70,19 +70,19 @@ href="../CoreTypes/xmlcatalog.html">xmlcatalog</a> elements and/or nested | |||||
<td width="10%" valign="top"><b>Required</b></td> | <td width="10%" valign="top"><b>Required</b></td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">publicId</td> | |||||
<td valign="top">publicId</td> | |||||
<td valign="top">Public ID of the DTD to resolve</td> | <td valign="top">Public ID of the DTD to resolve</td> | ||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">location</td> | |||||
<td valign="top">location</td> | |||||
<td valign="top">Location of the DTD to use, which can be a file, | <td valign="top">Location of the DTD to use, which can be a file, | ||||
a resource, or a URL</td> | a resource, or a URL</td> | ||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
</table> | </table> | ||||
<h4>xmlcatalog</h4> | <h4>xmlcatalog</h4> | ||||
<p>The <a href="../CoreTypes/xmlcatalog.html">xmlcatalog</a> | |||||
<p>The <a href="../CoreTypes/xmlcatalog.html">xmlcatalog</a> | |||||
element is used to perform Entity resolution.</p> | element is used to perform Entity resolution.</p> | ||||
@@ -93,9 +93,9 @@ element is used to perform Entity resolution.</p> | |||||
<xmlvalidate failonerror="no" lenient="yes" warn="yes" | <xmlvalidate failonerror="no" lenient="yes" warn="yes" | ||||
classname="org.apache.xerces.parsers.SAXParser" > | classname="org.apache.xerces.parsers.SAXParser" > | ||||
classpath="lib/xerces.jar"> | classpath="lib/xerces.jar"> | ||||
<fileset dir="src" includes="style/*.xsl"/> | |||||
<fileset dir="src" includes="style/*.xsl"/> | |||||
</xmlvalidate> | </xmlvalidate> | ||||
<xmlvalidate file="struts-config.xml" warn="false"> | <xmlvalidate file="struts-config.xml" warn="false"> | ||||
<dtd publicId="-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" | <dtd publicId="-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" | ||||
location="struts-config_1_0.dtd"/> | location="struts-config_1_0.dtd"/> | ||||
@@ -109,7 +109,7 @@ element is used to perform Entity resolution.</p> | |||||
<xmlvalidate failonerror="no"> | <xmlvalidate failonerror="no"> | ||||
<fileset dir="${project.dir}" includes="**/*.xml"/> | <fileset dir="${project.dir}" includes="**/*.xml"/> | ||||
<xmlcatalog> | <xmlcatalog> | ||||
<dtd | |||||
<dtd | |||||
publicId="-//ArielPartners//DTD XML Article V1.0//EN" | publicId="-//ArielPartners//DTD XML Article V1.0//EN" | ||||
location="com/arielpartners/knowledgebase/dtd/article.dtd"/> | location="com/arielpartners/knowledgebase/dtd/article.dtd"/> | ||||
</xmlcatalog> | </xmlcatalog> | ||||
@@ -11,6 +11,8 @@ | |||||
<h2><a href="toc.html" target="navFrame">Table of Contents</a></h2> | <h2><a href="toc.html" target="navFrame">Table of Contents</a></h2> | ||||
<a href="optionaltasklist.html" target="navFrame">Optional Tasks</a><br> | <a href="optionaltasklist.html" target="navFrame">Optional Tasks</a><br> | ||||
<a href="tasksoverview.html" target="mainFrame">Overview of Ant Tasks</a><br> | |||||
<a href="conceptstypeslist.html" target="navFrame">Concepts and Types</a><br> | |||||
<h3>Core Tasks</h3> | <h3>Core Tasks</h3> | ||||
<a href="CoreTasks/ant.html">Ant</a><br> | <a href="CoreTasks/ant.html">Ant</a><br> | ||||
@@ -74,6 +76,7 @@ | |||||
<a href="CoreTasks/style.html">Style</a><br> | <a href="CoreTasks/style.html">Style</a><br> | ||||
<a href="CoreTasks/tar.html">Tar</a><br> | <a href="CoreTasks/tar.html">Tar</a><br> | ||||
<a href="CoreTasks/taskdef.html">Taskdef</a><br> | <a href="CoreTasks/taskdef.html">Taskdef</a><br> | ||||
<a href="CoreTasks/tempfile.html">Tempfile</a><br> | |||||
<a href="CoreTasks/touch.html">Touch</a><br> | <a href="CoreTasks/touch.html">Touch</a><br> | ||||
<a href="CoreTasks/tstamp.html">TStamp</a><br> | <a href="CoreTasks/tstamp.html">TStamp</a><br> | ||||
<a href="CoreTasks/typedef.html">Typedef</a><br> | <a href="CoreTasks/typedef.html">Typedef</a><br> | ||||
@@ -161,6 +161,8 @@ They are:</p> | |||||
**/SCCS | **/SCCS | ||||
**/SCCS/** | **/SCCS/** | ||||
**/vssver.scc | **/vssver.scc | ||||
**/.svn | |||||
**/.svn/** | |||||
</pre> | </pre> | ||||
<p>If you do not want these default excludes applied, you may disable them with the | <p>If you do not want these default excludes applied, you may disable them with the | ||||
<code>defaultexcludes="no"</code> attribute.</p> | <code>defaultexcludes="no"</code> attribute.</p> | ||||
@@ -67,10 +67,25 @@ compiler is supported. | |||||
</p> | </p> | ||||
<hr> | <hr> | ||||
<h2><a name="installing">Installing Ant</a></h2> | <h2><a name="installing">Installing Ant</a></h2> | ||||
<p>The binary distribution of Ant consists of three directories: | |||||
<code>bin</code>, | |||||
<code>docs</code> and | |||||
<code>lib</code> | |||||
<p>The binary distribution of Ant consists of the following directory layout: | |||||
<pre> | |||||
ant | |||||
+--- bin // contains launcher scripts | |||||
| | |||||
+--- lib // contains Ant jars plus necessary dependencies | |||||
| | |||||
+--- docs // contains documentation | |||||
| +--- ant2 // a brief description of ant2 requirements | |||||
| | | |||||
| +--- images // various logos for html documentation | |||||
| | | |||||
| +--- manual // Ant documentation (a must read ;-) | |||||
| | |||||
+--- etc // contains xsl goodies to: | |||||
// - create an enhanced report from xml output of various tasks. | |||||
// - migrate your build files and get rid of 'deprecated' warning | |||||
// - ... and more ;-) | |||||
</pre> | |||||
Only the <code>bin</code> and <code>lib</code> directories are | Only the <code>bin</code> and <code>lib</code> directories are | ||||
required to run Ant. | required to run Ant. | ||||
@@ -193,7 +208,7 @@ for examples on how to do this for your operating system. </p> | |||||
<p>Make sure you have downloaded any auxiliary jars required to | <p>Make sure you have downloaded any auxiliary jars required to | ||||
build tasks you are interested in. These should either be available | build tasks you are interested in. These should either be available | ||||
on the CLASSPATH or added to the <code>lib/optional</code> | |||||
on the CLASSPATH or added to the <code>lib</code> | |||||
directory. | directory. | ||||
See <a href="#librarydependencies">Library Dependencies</a> | See <a href="#librarydependencies">Library Dependencies</a> | ||||
for a list of jar requirements for various features. | for a list of jar requirements for various features. | ||||
@@ -11,6 +11,8 @@ | |||||
<h2><a href="toc.html" target="navFrame">Table of Contents</a></h2> | <h2><a href="toc.html" target="navFrame">Table of Contents</a></h2> | ||||
<a href="coretasklist.html" target="navFrame">Core Tasks</a><br> | <a href="coretasklist.html" target="navFrame">Core Tasks</a><br> | ||||
<a href="tasksoverview.html" target="mainFrame">Overview of Ant Tasks</a><br> | |||||
<a href="conceptstypeslist.html" target="navFrame">Concepts and Types</a><br> | |||||
<h3>Optional Tasks</h3> | <h3>Optional Tasks</h3> | ||||
<a href="OptionalTasks/dotnet.html">.NET Tasks</a><br> | <a href="OptionalTasks/dotnet.html">.NET Tasks</a><br> | ||||
@@ -23,10 +25,10 @@ | |||||
<a href="OptionalTasks/echoproperties.html">Echoproperties</a><br> | <a href="OptionalTasks/echoproperties.html">Echoproperties</a><br> | ||||
<a href="OptionalTasks/ftp.html">FTP</a><br> | <a href="OptionalTasks/ftp.html">FTP</a><br> | ||||
<a href="OptionalTasks/icontract.html">IContract</a><br> | <a href="OptionalTasks/icontract.html">IContract</a><br> | ||||
<a href="OptionalTasks/jarlib-available.html">jarlib-available</a><br> | |||||
<a href="OptionalTasks/jarlib-display.html">jarlib-display</a><br> | |||||
<a href="OptionalTasks/jarlib-manifest.html">jarlib-manifest</a><br> | |||||
<a href="OptionalTasks/jarlib-resolve.html">jarlib-resolve</a><br> | |||||
<a href="OptionalTasks/jarlib-available.html">Jarlib-available</a><br> | |||||
<a href="OptionalTasks/jarlib-display.html">Jarlib-display</a><br> | |||||
<a href="OptionalTasks/jarlib-manifest.html">Jarlib-manifest</a><br> | |||||
<a href="OptionalTasks/jarlib-resolve.html">Jarlib-resolve</a><br> | |||||
<a href="OptionalTasks/javacc.html">JavaCC</a><br> | <a href="OptionalTasks/javacc.html">JavaCC</a><br> | ||||
<a href="OptionalTasks/javah.html">Javah</a><br> | <a href="OptionalTasks/javah.html">Javah</a><br> | ||||
<a href="OptionalTasks/jspc.html">JspC</a><br> | <a href="OptionalTasks/jspc.html">JspC</a><br> | ||||
@@ -49,6 +51,7 @@ | |||||
<a href="OptionalTasks/replaceregexp.html">ReplaceRegExp</a><br> | <a href="OptionalTasks/replaceregexp.html">ReplaceRegExp</a><br> | ||||
<a href="OptionalTasks/rpm.html">Rpm</a><br> | <a href="OptionalTasks/rpm.html">Rpm</a><br> | ||||
<a href="OptionalTasks/serverdeploy.html">ServerDeploy</a><br> | <a href="OptionalTasks/serverdeploy.html">ServerDeploy</a><br> | ||||
<a href="OptionalTasks/setproxy.html">Setproxy</a><br> | |||||
<a href="OptionalTasks/script.html">Script</a><br> | <a href="OptionalTasks/script.html">Script</a><br> | ||||
<a href="OptionalTasks/sound.html">Sound</a><br> | <a href="OptionalTasks/sound.html">Sound</a><br> | ||||
<a href="OptionalTasks/sos.html">SourceOffSite</a><br> | <a href="OptionalTasks/sos.html">SourceOffSite</a><br> | ||||
@@ -21,6 +21,7 @@ documentation.</p> | |||||
<a href="#ejb">EJB Tasks</a><br> | <a href="#ejb">EJB Tasks</a><br> | ||||
<a href="#exec">Execution Tasks</a><br> | <a href="#exec">Execution Tasks</a><br> | ||||
<a href="#file">File Tasks</a><br> | <a href="#file">File Tasks</a><br> | ||||
<a href="#extensions">Java2 Extensions Tasks</a><br> | |||||
<a href="#log">Logging Tasks</a><br> | <a href="#log">Logging Tasks</a><br> | ||||
<a href="#mail">Mail Tasks</a><br> | <a href="#mail">Mail Tasks</a><br> | ||||
<a href="#misc">Miscellaneous Tasks</a><br> | <a href="#misc">Miscellaneous Tasks</a><br> | ||||
@@ -561,6 +562,12 @@ documentation.</p> | |||||
files.</p></td> | files.</p></td> | ||||
</tr> | </tr> | ||||
<tr valign="top"> | |||||
<td nowrap><a href="CoreTasks/tempfile.html">Tempfile</a></td> | |||||
<td><p>Generates a name for a new temporary file and sets the specified | |||||
property to that name.</p></td> | |||||
</tr> | |||||
<tr valign="top"> | <tr valign="top"> | ||||
<td nowrap><a href="CoreTasks/touch.html">Touch</a></td> | <td nowrap><a href="CoreTasks/touch.html">Touch</a></td> | ||||
<td><p>Changes the modification time of a file and possibly creates it at | <td><p>Changes the modification time of a file and possibly creates it at | ||||
@@ -568,6 +575,60 @@ documentation.</p> | |||||
</tr> | </tr> | ||||
</table> | </table> | ||||
<p></p> | |||||
<table width="100%" border="0" cellpadding="4" cellspacing="0"> | |||||
<th align="left"> | |||||
<font size="+0" face="arial,helvetica,sanserif"> | |||||
<a name="extensions">Java2 Extensions Tasks</a></th> | |||||
</font> | |||||
<font size="-1" face="arial,helvetica,sanserif"> | |||||
<th align="right"><a href="#top">[Back to top]</a></th> | |||||
</font> | |||||
</table> | |||||
<table width="100%" border="1" cellpadding="4" cellspacing="0"> | |||||
<tr valign="top"> | |||||
<th nowrap>Task Name</th> | |||||
<th>Description</th> | |||||
</tr> | |||||
<tr valign="top"> | |||||
<td nowrap> | |||||
<a href="OptionalTasks/jarlib-available.html">Jarlib-available</a></td> | |||||
<td><p>Check whether an extension is present in a FileSet or an | |||||
ExtensionSet. If the extension is present, the specified property is | |||||
set.</p> | |||||
</td> | |||||
</tr> | |||||
<tr valign="top"> | |||||
<td nowrap> | |||||
<a href="OptionalTasks/jarlib-display.html">Jarlib-display</a></td> | |||||
<td><p>Display the "Optional Package" and | |||||
"Package Specification" information contained within the | |||||
specified jars.</p> | |||||
</td> | |||||
</tr> | |||||
<tr valign="top"> | |||||
<td nowrap> | |||||
<a href="OptionalTasks/jarlib-manifest.html">Jarlib-manifest</a></td> | |||||
<td><p>Task to generate a manifest that declares all the dependencies | |||||
in manifest. The dependencies are determined by looking in the | |||||
specified path and searching for Extension/"Optional Package" | |||||
specifications in the manifests of the jars.</p> | |||||
</td> | |||||
</tr> | |||||
<tr valign="top"> | |||||
<td nowrap> | |||||
<a href="OptionalTasks/jarlib-resolve.html">Jarlib-resolve</a></td> | |||||
<td><p>Try to locate a jar to satisfy an extension, and place the | |||||
location of the jar into the specified property.</p> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
<p></p> | |||||
<p></p> | <p></p> | ||||
<table width="100%" border="0" cellpadding="4" cellspacing="0"> | <table width="100%" border="0" cellpadding="4" cellspacing="0"> | ||||
<th align="left"> | <th align="left"> | ||||
@@ -949,7 +1010,13 @@ documentation.</p> | |||||
nested <code><read></code> and <code><write></code> tags | nested <code><read></code> and <code><write></code> tags | ||||
to indicate strings to wait for and specify text to send.</p></td> | to indicate strings to wait for and specify text to send.</p></td> | ||||
</tr> | </tr> | ||||
<tr valign="top"> | |||||
<td nowrap><a href="OptionalTasks/setproxy.html">setproxy</a></td> | |||||
<td><p>Sets Java's web proxy properties, so that tasks and code run | |||||
in the same JVM can have through-the-firewall access to remote web sites.</p></td> | |||||
</tr> | |||||
</table> | </table> | ||||
<p></p> | <p></p> | ||||
@@ -30,7 +30,7 @@ to be unique. (For additional information, see the | |||||
<tr> | <tr> | ||||
<td valign="top">default</td> | <td valign="top">default</td> | ||||
<td valign="top">the default target to use when no target is supplied.</td> | <td valign="top">the default target to use when no target is supplied.</td> | ||||
<td align="center" valign="top">No. Will default to "main" if not specified.</td> | |||||
<td align="center" valign="top">Yes.</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">basedir</td> | <td valign="top">basedir</td> | ||||
@@ -2,7 +2,14 @@ Please refer to the Ant manual under Installing Ant / Library | |||||
Dependencies for a list of the jar requirements for various optional | Dependencies for a list of the jar requirements for various optional | ||||
tasks and features. | tasks and features. | ||||
This directory contains xercesImpl.jar and xmlParserAPIs from the | |||||
2.0.1 release of Apache Xerces. For more information or newer | |||||
releases see <http://xml.apache.org/xerces2-j/>. | |||||
This directory contains xercesImpl.jar from the 2.0.2 release of | |||||
Apache Xerces. For more information or newer releases see | |||||
<http://xml.apache.org/xerces2-j/>. See the file LICENSE.xerces for | |||||
the terms of distribution. | |||||
It also contains xml-apis.jar, an Apache-controlled collection of | |||||
standard classes from the 1.0b2 release of the Apache XML-Commons | |||||
release. For more information or newer releases see | |||||
<http://xml.apache.org/commons/>. See the files LICENSE.dom and | |||||
LICENSE.sax for the terms of distribution. | |||||
@@ -0,0 +1,17 @@ | |||||
<?xml version="1.0"?> | |||||
<!DOCTYPE project [ | |||||
<!ENTITY included_file SYSTEM "file:./included_file.xml"> | |||||
]> | |||||
<project name="test" default="test" basedir="."> | |||||
<target name="setup"> | |||||
</target> | |||||
&included_file; | |||||
<target name="test" depends="included-target"> | |||||
<echo>test target ran.</echo> | |||||
</target> | |||||
</project> |
@@ -0,0 +1,4 @@ | |||||
<target name="included-target"> | |||||
extraneous_text | |||||
<echo>included-target ran.</echo> | |||||
</target> |
@@ -0,0 +1,17 @@ | |||||
<?xml version="1.0"?> | |||||
<!DOCTYPE project [ | |||||
<!ENTITY included_file SYSTEM "file:./included_file.xml"> | |||||
]> | |||||
<project name="test" default="test" basedir="."> | |||||
<target name="setup"> | |||||
</target> | |||||
&included_file; | |||||
<target name="test" depends="included-target"> | |||||
<echo>test target ran.</echo> | |||||
</target> | |||||
</project> |
@@ -0,0 +1,4 @@ | |||||
<target name="included-target"> | |||||
<copy file="nonexistent-file" todir="/non/existent/dir"/> | |||||
<echo>included-target ran.</echo> | |||||
</target> |
@@ -0,0 +1,19 @@ | |||||
<?xml version="1.0"?> | |||||
<!DOCTYPE project [ | |||||
<!ENTITY included_file SYSTEM "file:./included_file.xml"> | |||||
]> | |||||
<project name="test" default="test" basedir="."> | |||||
<target name="setup"> | |||||
</target> | |||||
&included_file; | |||||
extraneous_text | |||||
<target name="test" depends="included-target"> | |||||
<echo>test target ran.</echo> | |||||
</target> | |||||
</project> |
@@ -0,0 +1,3 @@ | |||||
<target name="included-target"> | |||||
<echo>included-target ran.</echo> | |||||
</target> |
@@ -0,0 +1,18 @@ | |||||
<?xml version="1.0"?> | |||||
<!DOCTYPE project [ | |||||
<!ENTITY included_file SYSTEM "file:./included_file.xml"> | |||||
]> | |||||
<project name="test" default="test" basedir="."> | |||||
<target name="setup"> | |||||
</target> | |||||
&included_file; | |||||
<target name="test" depends="included-target"> | |||||
<copy file="nonexistent-file" todir="/non/existent/dir"/> | |||||
<echo>test target ran.</echo> | |||||
</target> | |||||
</project> |
@@ -0,0 +1,3 @@ | |||||
<target name="included-target"> | |||||
<echo>included-target ran.</echo> | |||||
</target> |
@@ -0,0 +1,8 @@ | |||||
<root> | |||||
<a>this is the first line</a> | |||||
<b><c>not indented</c></b> | |||||
<b> | |||||
<c>indented</c> | |||||
</b> | |||||
</root> | |||||
@@ -0,0 +1,8 @@ | |||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> | |||||
<!-- Copy every node and attributes recursively --> | |||||
<xsl:template match="node()|@*"> | |||||
<xsl:copy> | |||||
<xsl:apply-templates select="@*|node()"/> | |||||
</xsl:copy> | |||||
</xsl:template> | |||||
</xsl:stylesheet> |
@@ -31,5 +31,16 @@ | |||||
</style> | </style> | ||||
</target> | </target> | ||||
<target name="testOutputProperty" depends="init"> | |||||
<style in="xml/test.xml" | |||||
out="xml/out/test-out.xml" | |||||
style="xml/test.xsl"> | |||||
<outputproperty name="method" value="xml"/> | |||||
<outputproperty name="standalone" value="yes"/> | |||||
<outputproperty name="encoding" value="iso8859_1"/> | |||||
<outputproperty name="indent" value="yes"/> | |||||
</style> | |||||
</target> | |||||
</project> | </project> |
@@ -78,6 +78,22 @@ | |||||
</zip> | </zip> | ||||
</target> | </target> | ||||
<target name="testUpdateNotNecessary" depends="feather"> | |||||
<zip destFile="asf-logo.gif.zip" | |||||
basedir=".." | |||||
includes="asf-logo.gif" | |||||
update="true" /> | |||||
</target> | |||||
<target name="testUpdateIsNecessary" depends="feather"> | |||||
<sleep seconds="5" /> | |||||
<touch file="../dummyfile" /> | |||||
<zip destFile="asf-logo.gif.zip" | |||||
basedir=".." | |||||
includes="asf-logo.gif,dummyfile" | |||||
update="true" /> | |||||
</target> | |||||
<target name="cleanup"> | <target name="cleanup"> | ||||
<delete file="test3.zip"/> | <delete file="test3.zip"/> | ||||
<delete file="test4.zip"/> | <delete file="test4.zip"/> | ||||
@@ -88,5 +104,6 @@ | |||||
<delete file="test8.zip"/> | <delete file="test8.zip"/> | ||||
<delete file="asf-logo.gif.zip"/> | <delete file="asf-logo.gif.zip"/> | ||||
<delete file="zipgroupfileset.zip"/> | <delete file="zipgroupfileset.zip"/> | ||||
<delete file="../dummyfile" /> | |||||
</target> | </target> | ||||
</project> | </project> |
@@ -5,6 +5,8 @@ | |||||
<property name="etc.dir" value=".."/> | <property name="etc.dir" value=".."/> | ||||
<property name="test.dir" | <property name="test.dir" | ||||
value="selectortest"/> | value="selectortest"/> | ||||
<property name="mirror.dir" | |||||
value="selectortest2"/> | |||||
<target name="setupfiles"> | <target name="setupfiles"> | ||||
<mkdir dir="${test.dir}" /> | <mkdir dir="${test.dir}" /> | ||||
@@ -57,4 +59,27 @@ | |||||
<delete dir="${test.dir}" /> | <delete dir="${test.dir}" /> | ||||
</target> | </target> | ||||
<target name="mirrorfiles"> | |||||
<mkdir dir="${mirror.dir}" /> | |||||
<mkdir dir="${mirror.dir}/zip" /> | |||||
<mkdir dir="${mirror.dir}/tar" /> | |||||
<mkdir dir="${mirror.dir}/tar/gz" /> | |||||
<mkdir dir="${mirror.dir}/tar/bz2" /> | |||||
<touch file="${mirror.dir}/asf-logo.gif.md5"/> | |||||
<touch file="${mirror.dir}/asf-logo.gif.bz2"/> | |||||
<sleep seconds="2"/> | |||||
<touch file="${mirror.dir}/zip/asf-logo.gif.zip"/> | |||||
<sleep seconds="3"/> | |||||
<touch file="${mirror.dir}/tar/asf-logo.gif.tar"/> | |||||
<sleep seconds="2"/> | |||||
<touch file="${mirror.dir}/tar/asf-logo-huge.tar"/> | |||||
<touch file="${mirror.dir}/tar/gz/asf-logo.gif.tar.gz"/> | |||||
<touch file="${mirror.dir}/tar/bz2/asf-logo.gif.tar.bz2"/> | |||||
<touch file="${mirror.dir}/tar/bz2/asf-logo-huge.tar.bz2"/> | |||||
</target> | |||||
<target name="cleanup.mirrorfiles"> | |||||
<delete dir="${mirror.dir}" /> | |||||
</target> | |||||
</project> | </project> |
@@ -0,0 +1,307 @@ | |||||
/* | |||||
* The Apache Software License, Version 1.1 | |||||
* | |||||
* Copyright (c) 2002 The Apache Software Foundation. All rights | |||||
* reserved. | |||||
* | |||||
* Redistribution and use in source and binary forms, with or without | |||||
* modification, are permitted provided that the following conditions | |||||
* are met: | |||||
* | |||||
* 1. Redistributions of source code must retain the above copyright | |||||
* notice, this list of conditions and the following disclaimer. | |||||
* | |||||
* 2. Redistributions in binary form must reproduce the above copyright | |||||
* notice, this list of conditions and the following disclaimer in | |||||
* the documentation and/or other materials provided with the | |||||
* distribution. | |||||
* | |||||
* 3. The end-user documentation included with the redistribution, if | |||||
* any, must include the following acknowlegement: | |||||
* "This product includes software developed by the | |||||
* Apache Software Foundation (http://www.apache.org/)." | |||||
* Alternately, this acknowlegement may appear in the software itself, | |||||
* if and wherever such third-party acknowlegements normally appear. | |||||
* | |||||
* 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||||
* Foundation" must not be used to endorse or promote products derived | |||||
* from this software without prior written permission. For written | |||||
* permission, please contact apache@apache.org. | |||||
* | |||||
* 5. Products derived from this software may not be called "Apache" | |||||
* nor may "Apache" appear in their names without prior written | |||||
* permission of the Apache Group. | |||||
* | |||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
* SUCH DAMAGE. | |||||
* ==================================================================== | |||||
* | |||||
* This software consists of voluntary contributions made by many | |||||
* individuals on behalf of the Apache Software Foundation. For more | |||||
* information on the Apache Software Foundation, please see | |||||
* <http://www.apache.org/>. | |||||
*/ | |||||
package org.apache.tools.ant; | |||||
import java.io.File; | |||||
import java.io.FilenameFilter; | |||||
import java.io.PrintStream; | |||||
import java.io.InputStream; | |||||
import java.io.IOException; | |||||
import java.util.Enumeration; | |||||
import java.util.Properties; | |||||
import java.lang.reflect.Method; | |||||
import java.lang.reflect.InvocationTargetException; | |||||
/** | |||||
* A little diagnostic helper that output some information that may help | |||||
* in support. It should quickly give correct information about the | |||||
* jar existing in ant.home/lib and the jar versions... | |||||
* | |||||
* @since Ant 1.5 | |||||
* @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a> | |||||
*/ | |||||
public final class Diagnostics { | |||||
/** utility class */ | |||||
private Diagnostics(){ | |||||
} | |||||
/** | |||||
* Check if optional tasks are available. Not that it does not check | |||||
* for implementation version. Use <tt>validateVersion()</tt> for this. | |||||
* @return <tt>true</tt> if optional tasks are available. | |||||
*/ | |||||
public static boolean isOptionalAvailable() { | |||||
try { | |||||
Class.forName("org.apache.tools.ant.taskdefs.optional.Test"); | |||||
} catch (ClassNotFoundException e){ | |||||
return false; | |||||
} | |||||
return true; | |||||
} | |||||
/** | |||||
* Check if core and optional implementation version do match. | |||||
* @throws BuildException if the implementation version of optional tasks | |||||
* does not match the core implementation version. | |||||
*/ | |||||
public static void validateVersion() throws BuildException { | |||||
try { | |||||
Class optional = Class.forName("org.apache.tools.ant.taskdefs.optional.Test"); | |||||
String coreVersion = getImplementationVersion(Main.class); | |||||
String optionalVersion = getImplementationVersion(optional); | |||||
if (coreVersion != null && !coreVersion.equals(optionalVersion) ){ | |||||
throw new BuildException( | |||||
"Invalid implementation version between Ant core and Ant optional tasks.\n" + | |||||
" core : " + coreVersion + "\n" + | |||||
" optional: " + optionalVersion); | |||||
} | |||||
} catch (ClassNotFoundException e){ | |||||
} | |||||
} | |||||
/** | |||||
* return the list of jar files existing in ANT_HOME/lib | |||||
* and that must have been picked up by Ant script. | |||||
* @return the list of jar files existing in ant.home/lib or | |||||
* <tt>null</tt> if an error occurs. | |||||
*/ | |||||
public static File[] listLibraries() { | |||||
String home = System.getProperty("ant.home"); | |||||
File libDir = new File(home, "lib"); | |||||
FilenameFilter filter = new FilenameFilter() { | |||||
public boolean accept(File dir, String name) { | |||||
return name.endsWith(".jar"); | |||||
} | |||||
}; | |||||
// listFiles is JDK 1.2+ method... | |||||
String[] filenames = libDir.list(filter); | |||||
File[] files = new File[filenames.length]; | |||||
for (int i = 0; i < filenames.length; i++){ | |||||
files[i] = new File(libDir, filenames[i]); | |||||
} | |||||
return files; | |||||
} | |||||
/** | |||||
* main entry point for command line | |||||
* @param args command line arguments. | |||||
*/ | |||||
public static void main(String[] args){ | |||||
doReport(System.out); | |||||
} | |||||
/** | |||||
* Helper method to get the implementation version. | |||||
* @param clazz the class to get the information from. | |||||
* @return null if there is no package or implementation version. | |||||
* '?.?' for JDK 1.0 or 1.1. | |||||
*/ | |||||
private static String getImplementationVersion(Class clazz){ | |||||
try { | |||||
// Package pkg = clazz.getPackage(); | |||||
Method method = Class.class.getMethod("getPackage", new Class[0]); | |||||
Object pkg = method.invoke(clazz, null); | |||||
if (pkg != null) { | |||||
// pkg.getImplementationVersion(); | |||||
method = pkg.getClass().getMethod("getImplementationVersion", new Class[0]); | |||||
Object version = method.invoke(pkg, null); | |||||
return (String)version; | |||||
} | |||||
} catch (Exception e){ | |||||
// JDK < 1.2 should land here because the methods above don't exist. | |||||
return "?.?"; | |||||
} | |||||
return null; | |||||
} | |||||
/** | |||||
* Print a report to the given stream. | |||||
* @param out the stream to print the report to. | |||||
*/ | |||||
public static void doReport(PrintStream out){ | |||||
out.println("------- Ant diagnostics report -------"); | |||||
out.println(Main.getAntVersion()); | |||||
out.println(); | |||||
out.println("-------------------------------------------"); | |||||
out.println(" Implementation Version (JDK1.2+ only)"); | |||||
out.println("-------------------------------------------"); | |||||
out.println("core tasks : " + getImplementationVersion(Main.class)); | |||||
Class optional = null; | |||||
try { | |||||
optional = Class.forName( | |||||
"org.apache.tools.ant.taskdefs.optional.Test"); | |||||
out.println("optional tasks : " + getImplementationVersion(optional)); | |||||
} catch (ClassNotFoundException e){ | |||||
out.println("optional tasks : not available"); | |||||
} | |||||
out.println(); | |||||
out.println("-------------------------------------------"); | |||||
out.println(" ANT_HOME/lib jar listing"); | |||||
out.println("-------------------------------------------"); | |||||
doReportLibraries(out); | |||||
out.println(); | |||||
out.println("-------------------------------------------"); | |||||
out.println(" Tasks availability"); | |||||
out.println("-------------------------------------------"); | |||||
doReportTasksAvailability(out); | |||||
out.println(); | |||||
out.println("-------------------------------------------"); | |||||
out.println(" org.apache.env.Which diagnostics"); | |||||
out.println("-------------------------------------------"); | |||||
doReportWhich(out); | |||||
out.println(); | |||||
out.println("-------------------------------------------"); | |||||
out.println(" System properties"); | |||||
out.println("-------------------------------------------"); | |||||
doReportSystemProperties(out); | |||||
out.println(); | |||||
} | |||||
/** | |||||
* Report a listing of system properties existing in the current vm. | |||||
* @param out the stream to print the properties to. | |||||
*/ | |||||
private static void doReportSystemProperties(PrintStream out){ | |||||
for( Enumeration keys = System.getProperties().keys(); | |||||
keys.hasMoreElements(); ){ | |||||
String key = (String)keys.nextElement(); | |||||
out.println(key + " : " + System.getProperty(key)); | |||||
} | |||||
} | |||||
/** | |||||
* Report the content of ANT_HOME/lib directory | |||||
* @param out the stream to print the content to | |||||
*/ | |||||
private static void doReportLibraries(PrintStream out){ | |||||
File[] libs = listLibraries(); | |||||
for (int i = 0; i < libs.length; i++){ | |||||
out.println(libs[i].getName() | |||||
+ " (" + libs[i].length() + " bytes)"); | |||||
} | |||||
} | |||||
/** | |||||
* Call org.apache.env.Which if available | |||||
* @param out the stream to print the content to. | |||||
*/ | |||||
private static void doReportWhich(PrintStream out){ | |||||
Throwable error = null; | |||||
try { | |||||
Class which = Class.forName("org.apache.env.Which"); | |||||
Method method = which.getMethod("main", new Class[]{ String[].class }); | |||||
method.invoke(null, new Object[]{new String[]{}}); | |||||
} catch (ClassNotFoundException e) { | |||||
out.println("Not available."); | |||||
out.println("Download it at http://xml.apache.org/commons/"); | |||||
} catch (InvocationTargetException e) { | |||||
error = e.getTargetException() == null ? e : e.getTargetException(); | |||||
} catch (Exception e) { | |||||
error = e; | |||||
} | |||||
// report error if something weird happens...this is diagnostic. | |||||
if (error != null) { | |||||
out.println("Error while running org.apache.env.Which"); | |||||
error.printStackTrace(); | |||||
} | |||||
} | |||||
/** | |||||
* Create a report about non-available tasks that are defined in the | |||||
* mapping but could not be found via lookup. It might generally happen | |||||
* because Ant requires multiple libraries to compile and one of them | |||||
* was missing when compiling Ant. | |||||
* @param out the stream to print the tasks report to | |||||
* @param is the stream defining the mapping task name/classname, can be | |||||
* <tt>null</tt> for a missing stream (ie mapping). | |||||
*/ | |||||
private static void doReportTasksAvailability(PrintStream out){ | |||||
InputStream is = Main.class.getResourceAsStream("/org/apache/tools/ant/taskdefs/defaults.properties"); | |||||
if (is == null) { | |||||
out.println("None available"); | |||||
} else { | |||||
Properties props = new Properties(); | |||||
try { | |||||
props.load(is); | |||||
for (Enumeration keys = props.keys(); keys.hasMoreElements();){ | |||||
String key = (String)keys.nextElement(); | |||||
String classname = props.getProperty(key); | |||||
try { | |||||
Class.forName(classname); | |||||
props.remove(key); | |||||
} catch (ClassNotFoundException e){ | |||||
out.println(key + " : Not Available"); | |||||
} | |||||
} | |||||
if (props.size() == 0){ | |||||
out.println("All defined tasks are available"); | |||||
} | |||||
} catch (IOException e){ | |||||
out.println(e.getMessage()); | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -169,7 +169,9 @@ public class DirectoryScanner implements FileScanner, SelectorScanner { | |||||
"**/.cvsignore", | "**/.cvsignore", | ||||
"**/SCCS", | "**/SCCS", | ||||
"**/SCCS/**", | "**/SCCS/**", | ||||
"**/vssver.scc" | |||||
"**/vssver.scc", | |||||
"**/.svn", | |||||
"**/.svn/**" | |||||
}; | }; | ||||
/** The base directory to be scanned. */ | /** The base directory to be scanned. */ | ||||
@@ -176,6 +176,7 @@ public class Main { | |||||
Main m = null; | Main m = null; | ||||
try { | try { | ||||
Diagnostics.validateVersion(); | |||||
m = new Main(args); | m = new Main(args); | ||||
} catch (Throwable exc) { | } catch (Throwable exc) { | ||||
printMessage(exc); | printMessage(exc); | ||||
@@ -264,6 +265,9 @@ public class Main { | |||||
} else if (arg.equals("-version")) { | } else if (arg.equals("-version")) { | ||||
printVersion(); | printVersion(); | ||||
return; | return; | ||||
} else if (arg.equals("-diagnostics")){ | |||||
Diagnostics.doReport(System.out); | |||||
return; | |||||
} else if (arg.equals("-quiet") || arg.equals("-q")) { | } else if (arg.equals("-quiet") || arg.equals("-q")) { | ||||
msgOutputLevel = Project.MSG_WARN; | msgOutputLevel = Project.MSG_WARN; | ||||
} else if (arg.equals("-verbose") || arg.equals("-v")) { | } else if (arg.equals("-verbose") || arg.equals("-v")) { | ||||
@@ -589,7 +593,7 @@ public class Main { | |||||
} | } | ||||
project.setUserProperty("ant.file", | project.setUserProperty("ant.file", | ||||
buildFile.getAbsolutePath()); | |||||
buildFile.getAbsolutePath()); | |||||
ProjectHelper.configureProject(project, buildFile); | ProjectHelper.configureProject(project, buildFile); | ||||
@@ -732,6 +736,8 @@ public class Main { | |||||
msg.append(" -help print this message" + lSep); | msg.append(" -help print this message" + lSep); | ||||
msg.append(" -projecthelp print project help information" + lSep); | msg.append(" -projecthelp print project help information" + lSep); | ||||
msg.append(" -version print the version information and exit" + lSep); | msg.append(" -version print the version information and exit" + lSep); | ||||
msg.append(" -diagnostics print information that might be helpful to" + lSep); | |||||
msg.append(" diagnose or report problems." + lSep); | |||||
msg.append(" -quiet, -q be extra quiet" + lSep); | msg.append(" -quiet, -q be extra quiet" + lSep); | ||||
msg.append(" -verbose, -v be extra verbose" + lSep); | msg.append(" -verbose, -v be extra verbose" + lSep); | ||||
msg.append(" -debug print debugging information" + lSep); | msg.append(" -debug print debugging information" + lSep); | ||||
@@ -785,7 +791,6 @@ public class Main { | |||||
props.load(in); | props.load(in); | ||||
in.close(); | in.close(); | ||||
String lSep = System.getProperty("line.separator"); | |||||
StringBuffer msg = new StringBuffer(); | StringBuffer msg = new StringBuffer(); | ||||
msg.append("Apache Ant version "); | msg.append("Apache Ant version "); | ||||
msg.append(props.getProperty("VERSION")); | msg.append(props.getProperty("VERSION")); | ||||
@@ -155,7 +155,7 @@ public class ProjectHelperImpl extends ProjectHelper { | |||||
parser.parse(inputSource); | parser.parse(inputSource); | ||||
} catch (SAXParseException exc) { | } catch (SAXParseException exc) { | ||||
Location location = | Location location = | ||||
new Location(buildFile.toString(), exc.getLineNumber(), | |||||
new Location(exc.getSystemId(), exc.getLineNumber(), | |||||
exc.getColumnNumber()); | exc.getColumnNumber()); | ||||
Throwable t = exc.getException(); | Throwable t = exc.getException(); | ||||
@@ -452,7 +452,9 @@ public class ProjectHelperImpl extends ProjectHelper { | |||||
} | } | ||||
if (def == null) { | if (def == null) { | ||||
helperImpl.project.setDefaultTarget("main"); | |||||
throw new SAXParseException("The default attribute of project " | |||||
+ "is required", | |||||
helperImpl.locator); | |||||
} else { | } else { | ||||
helperImpl.project.setDefaultTarget(def); | helperImpl.project.setDefaultTarget(def); | ||||
} | } | ||||
@@ -791,7 +793,7 @@ public class ProjectHelperImpl extends ProjectHelper { | |||||
task.setTaskName(tag); | task.setTaskName(tag); | ||||
} | } | ||||
task.setLocation(new Location(helperImpl.buildFile.toString(), helperImpl.locator.getLineNumber(), | |||||
task.setLocation(new Location(helperImpl.locator.getSystemId(), helperImpl.locator.getLineNumber(), | |||||
helperImpl.locator.getColumnNumber())); | helperImpl.locator.getColumnNumber())); | ||||
helperImpl.configureId(task, attrs); | helperImpl.configureId(task, attrs); | ||||
@@ -72,7 +72,7 @@ import java.util.Hashtable; | |||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
/** | /** | ||||
* Call Ant in a sub-project. | |||||
* Build a sub-project. | |||||
* | * | ||||
* <pre> | * <pre> | ||||
* <target name="foo" depends="init"> | * <target name="foo" depends="init"> | ||||
@@ -329,7 +329,10 @@ public class Ant extends Task { | |||||
if (dir != null) { | if (dir != null) { | ||||
newProject.setBaseDir(dir); | newProject.setBaseDir(dir); | ||||
newProject.setUserProperty("basedir" , dir.getAbsolutePath()); | |||||
if (savedDir != null) { // has been set explicitly | |||||
newProject.setInheritedProperty("basedir" , | |||||
dir.getAbsolutePath()); | |||||
} | |||||
} else { | } else { | ||||
dir = project.getBaseDir(); | dir = project.getBaseDir(); | ||||
} | } | ||||
@@ -487,7 +490,7 @@ public class Ant extends Task { | |||||
} | } | ||||
/** | /** | ||||
* The directory to use as a basedir for the new Ant project. | |||||
* The directory to use as a base directory for the new Ant project. | |||||
* Defaults to the current project's basedir, unless inheritall | * Defaults to the current project's basedir, unless inheritall | ||||
* has been set to false, in which case it doesn't have a default | * has been set to false, in which case it doesn't have a default | ||||
* value. This will override the basedir setting of the called project. | * value. This will override the basedir setting of the called project. | ||||
@@ -59,8 +59,8 @@ import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
/** | /** | ||||
* Task to determine the basename of a specified file, optionally minus a | |||||
* specified suffix. | |||||
* Sets a property to the base name of a specified file, optionally minus a | |||||
* suffix. | |||||
* | * | ||||
* This task can accept the following attributes: | * This task can accept the following attributes: | ||||
* <ul> | * <ul> | ||||
@@ -63,7 +63,8 @@ import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
/** | /** | ||||
* This is a basic task that can be used to track build numbers. It will first | |||||
* Read, increment, and write a build number in a file | |||||
* It will first | |||||
* attempt to read a build number from a file, then set the property | * attempt to read a build number from a file, then set the property | ||||
* "build.number" to the value that was read in (or 0 if no such value). Then | * "build.number" to the value that was read in (or 0 if no such value). Then | ||||
* it will increment the build number by one and write it back out into the | * it will increment the build number by one and write it back out into the | ||||
@@ -67,9 +67,7 @@ import java.io.FileWriter; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
/** | /** | ||||
* CVSLogin | |||||
* | |||||
* Adds an new entry to a CVS password file | |||||
* Adds an new entry to a CVS password file. | |||||
* | * | ||||
* @author <a href="jeff@custommonkey.org">Jeff Martin</a> | * @author <a href="jeff@custommonkey.org">Jeff Martin</a> | ||||
* @version $Revision$ | * @version $Revision$ | ||||
@@ -136,7 +136,6 @@ public class CallTarget extends Task { | |||||
location); | location); | ||||
} | } | ||||
callee.setDir(getProject().getBaseDir()); | |||||
callee.setAntfile(getProject().getProperty("ant.file")); | callee.setAntfile(getProject().getProperty("ant.file")); | ||||
callee.setTarget(subTarget); | callee.setTarget(subTarget); | ||||
callee.setInheritAll(inheritAll); | callee.setInheritAll(inheritAll); | ||||
@@ -68,7 +68,7 @@ import org.apache.tools.ant.types.PatternSet; | |||||
* Chmod equivalent for unix-like environments. | * Chmod equivalent for unix-like environments. | ||||
* | * | ||||
* @author costin@eng.sun.com | * @author costin@eng.sun.com | ||||
* @author Mariusz Nowostawski (Marni) | |||||
* @author Mariusz Nowostawski (Marni) | |||||
* <a href="mailto:mnowostawski@infoscience.otago.ac.nz">mnowostawski@infoscience.otago.ac.nz</a> | * <a href="mailto:mnowostawski@infoscience.otago.ac.nz">mnowostawski@infoscience.otago.ac.nz</a> | ||||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | ||||
* | * | ||||
@@ -233,29 +233,26 @@ public class Chmod extends ExecuteOn { | |||||
} | } | ||||
/** | /** | ||||
* Not supported. | |||||
* @param e | |||||
* @ant.attribute ignore="true" | |||||
*/ | */ | ||||
public void setExecutable(String e) { | public void setExecutable(String e) { | ||||
throw new BuildException(taskType | |||||
throw new BuildException(taskType | |||||
+ " doesn\'t support the executable attribute", location); | + " doesn\'t support the executable attribute", location); | ||||
} | } | ||||
/** | /** | ||||
* Not supported. | |||||
* @param cmdl | |||||
* @ant.attribute ignore="true" | |||||
*/ | */ | ||||
public void setCommand(Commandline cmdl) { | public void setCommand(Commandline cmdl) { | ||||
throw new BuildException(taskType | |||||
throw new BuildException(taskType | |||||
+ " doesn\'t support the command attribute", location); | + " doesn\'t support the command attribute", location); | ||||
} | } | ||||
/** | /** | ||||
* Not supported. | |||||
* @param skip | |||||
* @ant.attribute ignore="true" | |||||
*/ | */ | ||||
public void setSkipEmptyFilesets(boolean skip) { | public void setSkipEmptyFilesets(boolean skip) { | ||||
throw new BuildException(taskType | |||||
throw new BuildException(taskType | |||||
+ " doesn\'t support the skipemptyfileset attribute", location); | + " doesn\'t support the skipemptyfileset attribute", location); | ||||
} | } | ||||
@@ -76,7 +76,7 @@ import java.util.Hashtable; | |||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
/** | /** | ||||
* A consolidated copy task. Copies a file or directory to a new file | |||||
* Copies a file or directory to a new file | |||||
* or directory. Files are only copied if the source file is newer | * or directory. Files are only copied if the source file is newer | ||||
* than the destination file, or when the destination file does not | * than the destination file, or when the destination file does not | ||||
* exist. It is possible to explicitly overwrite existing files.</p> | * exist. It is possible to explicitly overwrite existing files.</p> | ||||
@@ -85,7 +85,7 @@ import java.util.Enumeration; | |||||
* document, the following mailing list discussions, and the | * document, the following mailing list discussions, and the | ||||
* copyfile/copydir tasks.</p> | * copyfile/copydir tasks.</p> | ||||
* | * | ||||
* @author Glenn McAllister | |||||
* @author Glenn McAllister | |||||
* <a href="mailto:glennm@ca.ibm.com">glennm@ca.ibm.com</a> | * <a href="mailto:glennm@ca.ibm.com">glennm@ca.ibm.com</a> | ||||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | ||||
* @author <A href="gholam@xtra.co.nz">Michael McCallum</A> | * @author <A href="gholam@xtra.co.nz">Michael McCallum</A> | ||||
@@ -122,7 +122,7 @@ public class Copy extends Task { | |||||
private String encoding = null; | private String encoding = null; | ||||
/** | /** | ||||
* Copy task constructor. | |||||
* Copy task constructor. | |||||
*/ | */ | ||||
public Copy() { | public Copy() { | ||||
fileUtils = FileUtils.newFileUtils(); | fileUtils = FileUtils.newFileUtils(); | ||||
@@ -316,12 +316,12 @@ public class Copy extends Task { | |||||
// will be removed in validateAttributes | // will be removed in validateAttributes | ||||
savedFileSet = (FileSet) filesets.elementAt(0); | savedFileSet = (FileSet) filesets.elementAt(0); | ||||
} | } | ||||
// make sure we don't have an illegal set of options | // make sure we don't have an illegal set of options | ||||
validateAttributes(); | validateAttributes(); | ||||
try { | try { | ||||
// deal with the single file | // deal with the single file | ||||
if (file != null) { | if (file != null) { | ||||
if (file.exists()) { | if (file.exists()) { | ||||
@@ -331,10 +331,10 @@ public class Copy extends Task { | |||||
if (forceOverwrite || | if (forceOverwrite || | ||||
(file.lastModified() > destFile.lastModified())) { | (file.lastModified() > destFile.lastModified())) { | ||||
fileCopyMap.put(file.getAbsolutePath(), | |||||
fileCopyMap.put(file.getAbsolutePath(), | |||||
destFile.getAbsolutePath()); | destFile.getAbsolutePath()); | ||||
} else { | } else { | ||||
log(file + " omitted as " + destFile | |||||
log(file + " omitted as " + destFile | |||||
+ " is up to date.", Project.MSG_VERBOSE); | + " is up to date.", Project.MSG_VERBOSE); | ||||
} | } | ||||
} else { | } else { | ||||
@@ -353,7 +353,7 @@ public class Copy extends Task { | |||||
FileSet fs = (FileSet) filesets.elementAt(i); | FileSet fs = (FileSet) filesets.elementAt(i); | ||||
DirectoryScanner ds = fs.getDirectoryScanner(project); | DirectoryScanner ds = fs.getDirectoryScanner(project); | ||||
File fromDir = fs.getDir(project); | File fromDir = fs.getDir(project); | ||||
String[] srcFiles = ds.getIncludedFiles(); | String[] srcFiles = ds.getIncludedFiles(); | ||||
String[] srcDirs = ds.getIncludedDirectories(); | String[] srcDirs = ds.getIncludedDirectories(); | ||||
boolean isEverythingIncluded = ds.isEverythingIncluded(); | boolean isEverythingIncluded = ds.isEverythingIncluded(); | ||||
@@ -363,7 +363,7 @@ public class Copy extends Task { | |||||
} | } | ||||
scan(fromDir, destDir, srcFiles, srcDirs); | scan(fromDir, destDir, srcFiles, srcDirs); | ||||
} | } | ||||
// do all the copy operations now... | // do all the copy operations now... | ||||
doFileOperations(); | doFileOperations(); | ||||
} finally { | } finally { | ||||
@@ -447,7 +447,7 @@ public class Copy extends Task { | |||||
* Compares source files to destination files to see if they should be | * Compares source files to destination files to see if they should be | ||||
* copied. | * copied. | ||||
*/ | */ | ||||
protected void scan(File fromDir, File toDir, String[] files, | |||||
protected void scan(File fromDir, File toDir, String[] files, | |||||
String[] dirs) { | String[] dirs) { | ||||
FileNameMapper mapper = null; | FileNameMapper mapper = null; | ||||
if (mapperElement != null) { | if (mapperElement != null) { | ||||
@@ -496,8 +496,8 @@ public class Copy extends Task { | |||||
*/ | */ | ||||
protected void doFileOperations() { | protected void doFileOperations() { | ||||
if (fileCopyMap.size() > 0) { | if (fileCopyMap.size() > 0) { | ||||
log("Copying " + fileCopyMap.size() | |||||
+ " file" + (fileCopyMap.size() == 1 ? "" : "s") | |||||
log("Copying " + fileCopyMap.size() | |||||
+ " file" + (fileCopyMap.size() == 1 ? "" : "s") | |||||
+ " to " + destDir.getAbsolutePath()); | + " to " + destDir.getAbsolutePath()); | ||||
Enumeration e = fileCopyMap.keys(); | Enumeration e = fileCopyMap.keys(); | ||||
@@ -513,20 +513,20 @@ public class Copy extends Task { | |||||
try { | try { | ||||
log("Copying " + fromFile + " to " + toFile, verbosity); | log("Copying " + fromFile + " to " + toFile, verbosity); | ||||
FilterSetCollection executionFilters = | |||||
FilterSetCollection executionFilters = | |||||
new FilterSetCollection(); | new FilterSetCollection(); | ||||
if (filtering) { | if (filtering) { | ||||
executionFilters | executionFilters | ||||
.addFilterSet(project.getGlobalFilterSet()); | .addFilterSet(project.getGlobalFilterSet()); | ||||
} | } | ||||
for (Enumeration filterEnum = filterSets.elements(); | |||||
for (Enumeration filterEnum = filterSets.elements(); | |||||
filterEnum.hasMoreElements();) { | filterEnum.hasMoreElements();) { | ||||
executionFilters | executionFilters | ||||
.addFilterSet((FilterSet) filterEnum.nextElement()); | .addFilterSet((FilterSet) filterEnum.nextElement()); | ||||
} | } | ||||
fileUtils.copyFile(fromFile, toFile, executionFilters, | |||||
filterChains, forceOverwrite, | |||||
preserveLastModified, encoding, | |||||
fileUtils.copyFile(fromFile, toFile, executionFilters, | |||||
filterChains, forceOverwrite, | |||||
preserveLastModified, encoding, | |||||
project); | project); | ||||
} catch (IOException ioe) { | } catch (IOException ioe) { | ||||
String msg = "Failed to copy " + fromFile + " to " + toFile | String msg = "Failed to copy " + fromFile + " to " + toFile | ||||
@@ -543,7 +543,7 @@ public class Copy extends Task { | |||||
File d = new File((String) e.nextElement()); | File d = new File((String) e.nextElement()); | ||||
if (!d.exists()) { | if (!d.exists()) { | ||||
if (!d.mkdirs()) { | if (!d.mkdirs()) { | ||||
log("Unable to create directory " | |||||
log("Unable to create directory " | |||||
+ d.getAbsolutePath(), Project.MSG_ERR); | + d.getAbsolutePath(), Project.MSG_ERR); | ||||
} else { | } else { | ||||
count++; | count++; | ||||
@@ -66,7 +66,7 @@ import org.apache.tools.ant.types.FileSet; | |||||
import org.apache.tools.ant.types.FileList; | import org.apache.tools.ant.types.FileList; | ||||
/** | /** | ||||
* A Task to record explicit dependencies. If any of the target files | |||||
* Examines and removes out of date target files. If any of the target files | |||||
* are out of date with respect to any of the source files, all target | * are out of date with respect to any of the source files, all target | ||||
* files are removed. This is useful where dependencies cannot be | * files are removed. This is useful where dependencies cannot be | ||||
* computed (for example, dynamically interpreted parameters or files | * computed (for example, dynamically interpreted parameters or files | ||||
@@ -60,7 +60,7 @@ import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
/** | /** | ||||
* Task to determine the directory name of the specified file. | |||||
* Determines the directory name of the specified file. | |||||
* | * | ||||
* This task can accept the following attributes: | * This task can accept the following attributes: | ||||
* <ul> | * <ul> | ||||
@@ -63,7 +63,7 @@ import java.io.File; | |||||
import java.io.FileWriter; | import java.io.FileWriter; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
/** | /** | ||||
* Echo | |||||
* Writes a message to the Ant logging facilities. | |||||
* | * | ||||
* @author costin@dnt.ro | * @author costin@dnt.ro | ||||
* | * | ||||
@@ -99,9 +99,9 @@ public class ExecTask extends Task { | |||||
private boolean failIfExecFails = true; | private boolean failIfExecFails = true; | ||||
private boolean append = false; | private boolean append = false; | ||||
/** | |||||
/** | |||||
* Controls whether the VM (1.3 and above) is used to execute the | * Controls whether the VM (1.3 and above) is used to execute the | ||||
* command | |||||
* command | |||||
*/ | */ | ||||
private boolean vmLauncher = true; | private boolean vmLauncher = true; | ||||
@@ -147,8 +147,7 @@ public class ExecTask extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Deprecated, use executable instead. | |||||
* The full commandline to execute, executable + arguments. | |||||
* @ant.attribute ignore="true" | |||||
*/ | */ | ||||
public void setCommand(Commandline cmdl) { | public void setCommand(Commandline cmdl) { | ||||
log("The command attribute is deprecated. " + | log("The command attribute is deprecated. " + | ||||
@@ -209,9 +208,9 @@ public class ExecTask extends Task { | |||||
public void setResultProperty(String resultProperty) { | public void setResultProperty(String resultProperty) { | ||||
this.resultProperty = resultProperty; | this.resultProperty = resultProperty; | ||||
} | } | ||||
/** | /** | ||||
* helper method to set result property to the | |||||
* helper method to set result property to the | |||||
* passed in value if appropriate | * passed in value if appropriate | ||||
*/ | */ | ||||
protected void maybeSetResultPropertyValue(int result) { | protected void maybeSetResultPropertyValue(int result) { | ||||
@@ -220,16 +219,16 @@ public class ExecTask extends Task { | |||||
project.setNewProperty(resultProperty, res); | project.setNewProperty(resultProperty, res); | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* Stop the build if program cannot be started. Defaults to true. | * Stop the build if program cannot be started. Defaults to true. | ||||
* | * | ||||
* @since Ant 1.5 | |||||
* @since Ant 1.5 | |||||
*/ | */ | ||||
public void setFailIfExecutionFails(boolean flag) { | public void setFailIfExecutionFails(boolean flag) { | ||||
failIfExecFails = flag; | failIfExecFails = flag; | ||||
} | } | ||||
/** | /** | ||||
* Whether output should be appended to or overwrite an existing file. | * Whether output should be appended to or overwrite an existing file. | ||||
* Defaults to false. | * Defaults to false. | ||||
@@ -281,7 +280,7 @@ public class ExecTask extends Task { | |||||
log("Current OS is " + myos, Project.MSG_VERBOSE); | log("Current OS is " + myos, Project.MSG_VERBOSE); | ||||
if ((os != null) && (os.indexOf(myos) < 0)){ | if ((os != null) && (os.indexOf(myos) < 0)){ | ||||
// this command will be executed only on the specified OS | // this command will be executed only on the specified OS | ||||
log("This OS, " + myos | |||||
log("This OS, " + myos | |||||
+ " was not found in the specified list of valid OSes: " + os, | + " was not found in the specified list of valid OSes: " + os, | ||||
Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
return false; | return false; | ||||
@@ -330,7 +329,7 @@ public class ExecTask extends Task { | |||||
err = exe.execute(); | err = exe.execute(); | ||||
//test for and handle a forced process death | //test for and handle a forced process death | ||||
if (exe.killedProcess()) { | if (exe.killedProcess()) { | ||||
log("Timeout: killed the sub-process", Project.MSG_WARN); | |||||
log("Timeout: killed the sub-process", Project.MSG_WARN); | |||||
} | } | ||||
maybeSetResultPropertyValue(err); | maybeSetResultPropertyValue(err); | ||||
if (err != 0) { | if (err != 0) { | ||||
@@ -390,10 +389,10 @@ public class ExecTask extends Task { | |||||
log("Output redirected to " + out, Project.MSG_VERBOSE); | log("Output redirected to " + out, Project.MSG_VERBOSE); | ||||
return new PumpStreamHandler(fos); | return new PumpStreamHandler(fos); | ||||
} catch (FileNotFoundException fne) { | } catch (FileNotFoundException fne) { | ||||
throw new BuildException("Cannot write to " + out, fne, | |||||
throw new BuildException("Cannot write to " + out, fne, | |||||
location); | location); | ||||
} catch (IOException ioe) { | } catch (IOException ioe) { | ||||
throw new BuildException("Cannot write to " + out, ioe, | |||||
throw new BuildException("Cannot write to " + out, ioe, | |||||
location); | location); | ||||
} | } | ||||
} else if (outputprop != null) { | } else if (outputprop != null) { | ||||
@@ -184,6 +184,10 @@ public class ExecuteOn extends ExecTask { | |||||
return mapperElement; | return mapperElement; | ||||
} | } | ||||
/** | |||||
* @todo using taskName here is brittle, as a user could override it. | |||||
* this should probably be modified to use the classname instead. | |||||
*/ | |||||
protected void checkConfiguration() { | protected void checkConfiguration() { | ||||
if ("execon".equals(taskName)) { | if ("execon".equals(taskName)) { | ||||
log("!! execon is deprecated. Use apply instead. !!"); | log("!! execon is deprecated. Use apply instead. !!"); | ||||
@@ -1,7 +1,7 @@ | |||||
/* | /* | ||||
* The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
* | * | ||||
* Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||||
* Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||||
* reserved. | * reserved. | ||||
* | * | ||||
* Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
@@ -59,7 +59,7 @@ import org.apache.tools.ant.BuildException; | |||||
/** | /** | ||||
* Exit the active build, giving an additional message | |||||
* Exits the active build, giving an additional message | |||||
* if available. | * if available. | ||||
* | * | ||||
* @author <a href="mailto:nico@seessle.de">Nico Seessle</a> | * @author <a href="mailto:nico@seessle.de">Nico Seessle</a> | ||||
@@ -68,7 +68,7 @@ import org.apache.tools.ant.BuildException; | |||||
* | * | ||||
* @ant.task name="fail" category="control" | * @ant.task name="fail" category="control" | ||||
*/ | */ | ||||
public class Exit extends Task { | |||||
public class Exit extends Task { | |||||
private String message; | private String message; | ||||
private String ifCondition, unlessCondition; | private String ifCondition, unlessCondition; | ||||
@@ -100,7 +100,7 @@ public class Exit extends Task { | |||||
public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
if (testIfCondition() && testUnlessCondition()) { | if (testIfCondition() && testUnlessCondition()) { | ||||
if (message != null && message.length() > 0) { | |||||
if (message != null && message.length() > 0) { | |||||
throw new BuildException(message); | throw new BuildException(message); | ||||
} else { | } else { | ||||
throw new BuildException("No message"); | throw new BuildException("No message"); | ||||
@@ -122,7 +122,7 @@ public class Exit extends Task { | |||||
if (ifCondition == null || "".equals(ifCondition)) { | if (ifCondition == null || "".equals(ifCondition)) { | ||||
return true; | return true; | ||||
} | } | ||||
return project.getProperty(ifCondition) != null; | return project.getProperty(ifCondition) != null; | ||||
} | } | ||||
@@ -61,11 +61,11 @@ import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
/** | /** | ||||
* Sets a token filter that is used by the file copy methods | |||||
* of the project to do token substitution, or sets mutiple tokens by | |||||
* Sets a token filter that is used by the file copy tasks | |||||
* to do token substitution. Sets mutiple tokens by | |||||
* reading these from a file. | * reading these from a file. | ||||
* | * | ||||
* @author Stefano Mazzocchi | |||||
* @author Stefano Mazzocchi | |||||
* <a href="mailto:stefano@apache.org">stefano@apache.org</a> | * <a href="mailto:stefano@apache.org">stefano@apache.org</a> | ||||
* @author Gero Vermaas <a href="mailto:gero@xs4all.nl">gero@xs4all.nl</a> | * @author Gero Vermaas <a href="mailto:gero@xs4all.nl">gero@xs4all.nl</a> | ||||
* @author <A href="gholam@xtra.co.nz">Michael McCallum</A> | * @author <A href="gholam@xtra.co.nz">Michael McCallum</A> | ||||
@@ -107,26 +107,26 @@ public class Filter extends Task { | |||||
} | } | ||||
public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
boolean isFiltersFromFile = | |||||
boolean isFiltersFromFile = | |||||
filtersFile != null && token == null && value == null; | filtersFile != null && token == null && value == null; | ||||
boolean isSingleFilter = | |||||
boolean isSingleFilter = | |||||
filtersFile == null && token != null && value != null; | filtersFile == null && token != null && value != null; | ||||
if (!isFiltersFromFile && !isSingleFilter) { | if (!isFiltersFromFile && !isSingleFilter) { | ||||
throw new BuildException("both token and value parameters, or " | throw new BuildException("both token and value parameters, or " | ||||
+ "only a filtersFile parameter is " | + "only a filtersFile parameter is " | ||||
+ "required", location); | + "required", location); | ||||
} | } | ||||
if (isSingleFilter) { | if (isSingleFilter) { | ||||
project.getGlobalFilterSet().addFilter(token, value); | project.getGlobalFilterSet().addFilter(token, value); | ||||
} | } | ||||
if (isFiltersFromFile) { | if (isFiltersFromFile) { | ||||
readFilters(); | readFilters(); | ||||
} | } | ||||
} | } | ||||
protected void readFilters() throws BuildException { | protected void readFilters() throws BuildException { | ||||
log("Reading filters from " + filtersFile, Project.MSG_VERBOSE); | log("Reading filters from " + filtersFile, Project.MSG_VERBOSE); | ||||
project.getGlobalFilterSet().readFiltersFromFile(filtersFile); | project.getGlobalFilterSet().readFiltersFromFile(filtersFile); | ||||
@@ -449,7 +449,7 @@ public class FixCRLF extends MatchingTask { | |||||
break; | break; | ||||
case IN_MULTI_COMMENT: | case IN_MULTI_COMMENT: | ||||
endComment | |||||
endComment | |||||
= lineString.indexOf("*/", line.getNext()); | = lineString.indexOf("*/", line.getNext()); | ||||
if (endComment >= 0) { | if (endComment >= 0) { | ||||
// End of multiLineComment on this line | // End of multiLineComment on this line | ||||
@@ -486,7 +486,7 @@ public class FixCRLF extends MatchingTask { | |||||
if (line.getNextCharInc() == '\t') { | if (line.getNextCharInc() == '\t') { | ||||
line.setColumn(line.getColumn() + | line.setColumn(line.getColumn() + | ||||
tablength - | tablength - | ||||
(line.getColumn() | |||||
(line.getColumn() | |||||
% tablength)); | % tablength)); | ||||
} else { | } else { | ||||
line.incColumn(); | line.incColumn(); | ||||
@@ -495,7 +495,7 @@ public class FixCRLF extends MatchingTask { | |||||
// Now output the substring | // Now output the substring | ||||
try { | try { | ||||
outWriter.write(line.substring(begin, | |||||
outWriter.write(line.substring(begin, | |||||
line.getNext())); | line.getNext())); | ||||
} catch (IOException e) { | } catch (IOException e) { | ||||
throw new BuildException(e); | throw new BuildException(e); | ||||
@@ -547,7 +547,7 @@ public class FixCRLF extends MatchingTask { | |||||
lines.close(); | lines.close(); | ||||
lines = null; | lines = null; | ||||
} catch (IOException e) { | } catch (IOException e) { | ||||
throw new BuildException("Unable to close source file " | |||||
throw new BuildException("Unable to close source file " | |||||
+ srcFile); | + srcFile); | ||||
} | } | ||||
@@ -69,7 +69,7 @@ import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.util.JavaEnvUtils; | import org.apache.tools.ant.util.JavaEnvUtils; | ||||
/** | /** | ||||
* Get a particular file from a URL source. | |||||
* Gets a particular file from a URL source. | |||||
* Options include verbose reporting, timestamp based fetches and controlling | * Options include verbose reporting, timestamp based fetches and controlling | ||||
* actions on failures. NB: access through a firewall only works if the whole | * actions on failures. NB: access through a firewall only works if the whole | ||||
* Java runtime is correctly configured. | * Java runtime is correctly configured. | ||||
@@ -83,7 +83,7 @@ import java.sql.Statement; | |||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.taskdefs.JDBCTask; | import org.apache.tools.ant.taskdefs.JDBCTask; | ||||
public class SQLExampleTask extends JDBCTask { | |||||
public class SQLExampleTask extends JDBCTask { | |||||
private String tableName; | private String tableName; | ||||
@@ -93,7 +93,7 @@ public class SQLExampleTask extends JDBCTask { | |||||
try { | try { | ||||
if (tableName == null ) { | if (tableName == null ) { | ||||
throw new BuildException("TableName must be specified",location); | throw new BuildException("TableName must be specified",location); | ||||
} | |||||
} | |||||
String sql = "SELECT * FROM "+tableName; | String sql = "SELECT * FROM "+tableName; | ||||
stmt= conn.createStatement(); | stmt= conn.createStatement(); | ||||
ResultSet rs = stmt.executeQuery(sql); | ResultSet rs = stmt.executeQuery(sql); | ||||
@@ -101,7 +101,7 @@ public class SQLExampleTask extends JDBCTask { | |||||
log(rs.getObject(1).toString()); | log(rs.getObject(1).toString()); | ||||
} | } | ||||
} catch (SQLException e) { | } catch (SQLException e) { | ||||
} finally { | } finally { | ||||
if (stmt != null) { | if (stmt != null) { | ||||
try {stmt.close();}catch (SQLException ingore){} | try {stmt.close();}catch (SQLException ingore){} | ||||
@@ -117,7 +117,7 @@ public class SQLExampleTask extends JDBCTask { | |||||
} | } | ||||
</pre></code> | </pre></code> | ||||
@@ -182,7 +182,7 @@ public abstract class JDBCTask extends Task { | |||||
private String version = null; | private String version = null; | ||||
/** | /** | ||||
* Sets the classpath. | |||||
* Sets the classpath for loading the driver. | |||||
* @param classpath The classpath to set | * @param classpath The classpath to set | ||||
*/ | */ | ||||
public void setClasspath(Path classpath) { | public void setClasspath(Path classpath) { | ||||
@@ -200,7 +200,7 @@ public abstract class JDBCTask extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Add the classpath for loading the driver; | |||||
* Add a path to the classpath for loading the driver. | |||||
*/ | */ | ||||
public Path createClasspath() { | public Path createClasspath() { | ||||
if (this.classpath == null) { | if (this.classpath == null) { | ||||
@@ -210,7 +210,7 @@ public abstract class JDBCTask extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Set the classpath for loading the driver | |||||
* Set the classpath for loading the driver | |||||
* using the classpath reference. | * using the classpath reference. | ||||
*/ | */ | ||||
public void setClasspathRef(Reference r) { | public void setClasspathRef(Reference r) { | ||||
@@ -218,7 +218,7 @@ public abstract class JDBCTask extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Class name of the jdbc driver; required. | |||||
* Class name of the JDBC driver; required. | |||||
* @param driver The driver to set | * @param driver The driver to set | ||||
*/ | */ | ||||
public void setDriver(String driver) { | public void setDriver(String driver) { | ||||
@@ -226,20 +226,13 @@ public abstract class JDBCTask extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Sets the database connection url; required. | |||||
* Sets the database connection URL; required. | |||||
* @param url The url to set | * @param url The url to set | ||||
*/ | */ | ||||
public void setUrl(String url) { | public void setUrl(String url) { | ||||
this.url = url; | this.url = url; | ||||
} | } | ||||
/** | |||||
* Set the user name for the connection; required. | |||||
*/ | |||||
public void setUserid(String userId) { | |||||
this.userId = userId; | |||||
} | |||||
/** | /** | ||||
* Sets the password; required. | * Sets the password; required. | ||||
* @param password The password to set | * @param password The password to set | ||||
@@ -258,7 +251,7 @@ public abstract class JDBCTask extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Execute task only if the lower case product name | |||||
* Execute task only if the lower case product name | |||||
* of the DB matches this | * of the DB matches this | ||||
* @param rdbms The rdbms to set | * @param rdbms The rdbms to set | ||||
*/ | */ | ||||
@@ -267,7 +260,7 @@ public abstract class JDBCTask extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Sets the version string, execute task only if | |||||
* Sets the version string, execute task only if | |||||
* rdbms version match; optional. | * rdbms version match; optional. | ||||
* @param version The version to set | * @param version The version to set | ||||
*/ | */ | ||||
@@ -460,10 +453,10 @@ public abstract class JDBCTask extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Sets the userId. | |||||
* Set the user name for the connection; required. | |||||
* @param userId The userId to set | * @param userId The userId to set | ||||
*/ | */ | ||||
public void setUserId(String userId) { | |||||
public void setUserid(String userId) { | |||||
this.userId = userId; | this.userId = userId; | ||||
} | } | ||||
@@ -137,9 +137,7 @@ public class Jar extends Zip { | |||||
} | } | ||||
/** | /** | ||||
* Not supported. | |||||
* | |||||
* @param we | |||||
* @ant.attribute ignore="true" | |||||
*/ | */ | ||||
public void setWhenempty(WhenEmpty we) { | public void setWhenempty(WhenEmpty we) { | ||||
log("JARs are never empty, they contain at least a manifest file", | log("JARs are never empty, they contain at least a manifest file", | ||||
@@ -246,10 +244,12 @@ public class Jar extends Zip { | |||||
* | * | ||||
* @param config setting for found manifest behavior. | * @param config setting for found manifest behavior. | ||||
*/ | */ | ||||
/* | |||||
public void setFilesetmanifest(FilesetManifestConfig config) { | public void setFilesetmanifest(FilesetManifestConfig config) { | ||||
filesetManifestConfig = config; | filesetManifestConfig = config; | ||||
mergeManifestsMain = "merge".equals(config.getValue()); | mergeManifestsMain = "merge".equals(config.getValue()); | ||||
} | } | ||||
*/ | |||||
/** | /** | ||||
* Adds a zipfileset to include in the META-INF directory. | * Adds a zipfileset to include in the META-INF directory. | ||||
@@ -439,7 +439,13 @@ public class Jar extends Zip { | |||||
Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
try { | try { | ||||
Manifest newManifest = getManifest(new InputStreamReader(is)); | |||||
Manifest newManifest = null; | |||||
if (is != null) { | |||||
newManifest = getManifest(new InputStreamReader(is)); | |||||
} else { | |||||
newManifest = getManifest(file); | |||||
} | |||||
if (filesetManifest == null) { | if (filesetManifest == null) { | ||||
filesetManifest = newManifest; | filesetManifest = newManifest; | ||||
} else { | } else { | ||||
@@ -72,7 +72,7 @@ import java.io.IOException; | |||||
import java.util.Vector; | import java.util.Vector; | ||||
/** | /** | ||||
* This task acts as a loader for java applications but allows to use | |||||
* Launcher for Java applications. Allows use of | |||||
* the same JVM for the called application thus resulting in much | * the same JVM for the called application thus resulting in much | ||||
* faster operation. | * faster operation. | ||||
* | * | ||||
@@ -231,6 +231,7 @@ public class Java extends Task { | |||||
/** | /** | ||||
* Deprecated: use nested arg instead. | * Deprecated: use nested arg instead. | ||||
* Set the command line arguments for the class. | * Set the command line arguments for the class. | ||||
* @ant.attribute ignore="true" | |||||
*/ | */ | ||||
public void setArgs(String s) { | public void setArgs(String s) { | ||||
log("The args attribute is deprecated. " + | log("The args attribute is deprecated. " + | ||||
@@ -97,7 +97,7 @@ import java.io.File; | |||||
* compile decision based on timestamp. | * compile decision based on timestamp. | ||||
* | * | ||||
* @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a> | * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a> | ||||
* @author Robin Green | |||||
* @author Robin Green | |||||
* <a href="mailto:greenrd@hotmail.com">greenrd@hotmail.com</a> | * <a href="mailto:greenrd@hotmail.com">greenrd@hotmail.com</a> | ||||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | ||||
* @author <a href="mailto:jayglanville@home.com">J D Glanville</a> | * @author <a href="mailto:jayglanville@home.com">J D Glanville</a> | ||||
@@ -198,7 +198,7 @@ public class Javac extends MatchingTask { | |||||
* | * | ||||
* If you use this attribute together with jikes, you must | * If you use this attribute together with jikes, you must | ||||
* make sure that your version of jikes supports the -source switch. | * make sure that your version of jikes supports the -source switch. | ||||
* Legal values are 1.3 and 1.4 – by default, no -source argument | |||||
* Legal values are 1.3 and 1.4 - by default, no -source argument | |||||
* will be used at all. | * will be used at all. | ||||
* | * | ||||
* @param v Value to assign to source. | * @param v Value to assign to source. | ||||
@@ -220,7 +220,7 @@ public class Javac extends MatchingTask { | |||||
} | } | ||||
/** | /** | ||||
* Recreate src | |||||
* Recreate src. | |||||
* | * | ||||
* @return a nested src element. | * @return a nested src element. | ||||
*/ | */ | ||||
@@ -296,7 +296,7 @@ public class Javac extends MatchingTask { | |||||
/** | /** | ||||
* Set the classpath to be used for this compilation. | * Set the classpath to be used for this compilation. | ||||
* | |||||
* | |||||
* @param classpath an Ant Path object containing the compilation classpath. | * @param classpath an Ant Path object containing the compilation classpath. | ||||
*/ | */ | ||||
public void setClasspath(Path classpath) { | public void setClasspath(Path classpath) { | ||||
@@ -417,8 +417,7 @@ public class Javac extends MatchingTask { | |||||
} | } | ||||
/** | /** | ||||
* Proceed if compilation fails, but use | |||||
* failonerror instead. | |||||
* @ant.attribute ignore="true" | |||||
*/ | */ | ||||
public void setProceed(boolean proceed) { | public void setProceed(boolean proceed) { | ||||
failOnError = !proceed; | failOnError = !proceed; | ||||
@@ -654,7 +653,7 @@ public class Javac extends MatchingTask { | |||||
facade.setImplementation(chosen); | facade.setImplementation(chosen); | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* Executes the task. | * Executes the task. | ||||
@@ -669,8 +668,8 @@ public class Javac extends MatchingTask { | |||||
for (int i = 0; i < list.length; i++) { | for (int i = 0; i < list.length; i++) { | ||||
File srcDir = project.resolveFile(list[i]); | File srcDir = project.resolveFile(list[i]); | ||||
if (!srcDir.exists()) { | if (!srcDir.exists()) { | ||||
throw new BuildException("srcdir \"" | |||||
+ srcDir.getPath() | |||||
throw new BuildException("srcdir \"" | |||||
+ srcDir.getPath() | |||||
+ "\" does not exist!", location); | + "\" does not exist!", location); | ||||
} | } | ||||
@@ -748,9 +747,9 @@ public class Javac extends MatchingTask { | |||||
* <p>If fork has been set to true, the result will be extJavac | * <p>If fork has been set to true, the result will be extJavac | ||||
* and not classic or java1.2 - no matter what the compiler | * and not classic or java1.2 - no matter what the compiler | ||||
* attribute looks like.</p> | * attribute looks like.</p> | ||||
* | |||||
* | |||||
* @see #getCompilerVersion | * @see #getCompilerVersion | ||||
* | |||||
* | |||||
* @since Ant 1.5 | * @since Ant 1.5 | ||||
*/ | */ | ||||
public String getCompiler() { | public String getCompiler() { | ||||
@@ -776,7 +775,7 @@ public class Javac extends MatchingTask { | |||||
* | * | ||||
* <p>This method does not take the fork attribute into | * <p>This method does not take the fork attribute into | ||||
* account.</p> | * account.</p> | ||||
* | |||||
* | |||||
* @see #getCompiler | * @see #getCompiler | ||||
* | * | ||||
* @since Ant 1.5 | * @since Ant 1.5 | ||||
@@ -794,17 +793,17 @@ public class Javac extends MatchingTask { | |||||
*/ | */ | ||||
protected void checkParameters() throws BuildException { | protected void checkParameters() throws BuildException { | ||||
if (src == null) { | if (src == null) { | ||||
throw new BuildException("srcdir attribute must be set!", | |||||
throw new BuildException("srcdir attribute must be set!", | |||||
location); | location); | ||||
} | } | ||||
if (src.size() == 0) { | if (src.size() == 0) { | ||||
throw new BuildException("srcdir attribute must be set!", | |||||
throw new BuildException("srcdir attribute must be set!", | |||||
location); | location); | ||||
} | } | ||||
if (destDir != null && !destDir.isDirectory()) { | if (destDir != null && !destDir.isDirectory()) { | ||||
throw new BuildException("destination directory \"" | |||||
+ destDir | |||||
throw new BuildException("destination directory \"" | |||||
+ destDir | |||||
+ "\" does not exist " | + "\" does not exist " | ||||
+ "or is not a directory", location); | + "or is not a directory", location); | ||||
} | } | ||||
@@ -831,7 +830,7 @@ public class Javac extends MatchingTask { | |||||
} | } | ||||
} | } | ||||
CompilerAdapter adapter = | |||||
CompilerAdapter adapter = | |||||
CompilerAdapterFactory.getCompiler(compilerImpl, this); | CompilerAdapterFactory.getCompiler(compilerImpl, this); | ||||
// now we need to populate the compiler adapter | // now we need to populate the compiler adapter | ||||
@@ -853,7 +852,7 @@ public class Javac extends MatchingTask { | |||||
* filter command line attributes based on the current | * filter command line attributes based on the current | ||||
* implementation. | * implementation. | ||||
*/ | */ | ||||
public class ImplementationSpecificArgument extends | |||||
public class ImplementationSpecificArgument extends | |||||
org.apache.tools.ant.util.facade.ImplementationSpecificArgument { | org.apache.tools.ant.util.facade.ImplementationSpecificArgument { | ||||
public void setCompiler(String impl) { | public void setCompiler(String impl) { | ||||
@@ -1654,7 +1654,6 @@ public class Javadoc extends Task { | |||||
} | } | ||||
} | } | ||||
if (la.isLinkOffline()) { | if (la.isLinkOffline()) { | ||||
File packageListLocation = la.getPackagelistLoc(); | File packageListLocation = la.getPackagelistLoc(); | ||||
if (packageListLocation == null) { | if (packageListLocation == null) { | ||||
@@ -58,9 +58,6 @@ import java.util.Vector; | |||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
import java.io.BufferedReader; | import java.io.BufferedReader; | ||||
import java.io.File; | |||||
import java.io.FileReader; | |||||
import java.io.FileWriter; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.InputStream; | import java.io.InputStream; | ||||
import java.io.InputStreamReader; | import java.io.InputStreamReader; | ||||
@@ -70,16 +67,11 @@ import java.io.StringWriter; | |||||
import java.io.UnsupportedEncodingException; | import java.io.UnsupportedEncodingException; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.Project; | |||||
import org.apache.tools.ant.Task; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
import org.apache.tools.ant.util.CollectionUtils; | import org.apache.tools.ant.util.CollectionUtils; | ||||
/** | /** | ||||
* Holds the data of a jar manifest. | |||||
* | * | ||||
* Creates a manifest file for inclusion in a JAR. | |||||
* This task can be used to write a Manifest file, optionally | |||||
* replacing or updating an existing file. | |||||
* Manifests are processed according to the | * Manifests are processed according to the | ||||
* {@link <a href="http://java.sun.com/j2se/1.4/docs/guide/jar/jar.html">Jar | * {@link <a href="http://java.sun.com/j2se/1.4/docs/guide/jar/jar.html">Jar | ||||
* file specification.</a>}. | * file specification.</a>}. | ||||
@@ -89,16 +81,13 @@ import org.apache.tools.ant.util.CollectionUtils; | |||||
* greater than 72 bytes being wrapped and continued on the next | * greater than 72 bytes being wrapped and continued on the next | ||||
* line. If an application can not handle the continuation mechanism, it | * line. If an application can not handle the continuation mechanism, it | ||||
* is a defect in the application, not this task. | * is a defect in the application, not this task. | ||||
* @author Conor MacNeill | * @author Conor MacNeill | ||||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | ||||
* @author <a href="mailto:j_a_fernandez@yahoo.com">Jose Alberto Fernandez</a> | * @author <a href="mailto:j_a_fernandez@yahoo.com">Jose Alberto Fernandez</a> | ||||
* | * | ||||
* @since Ant 1.4 | * @since Ant 1.4 | ||||
* | |||||
* @ant.task category="java" | |||||
*/ | */ | ||||
public class Manifest extends Task { | |||||
public class Manifest { | |||||
/** The standard manifest version header */ | /** The standard manifest version header */ | ||||
public static final String ATTRIBUTE_MANIFEST_VERSION | public static final String ATTRIBUTE_MANIFEST_VERSION | ||||
= "Manifest-Version"; | = "Manifest-Version"; | ||||
@@ -131,20 +120,6 @@ public class Manifest extends Task { | |||||
/** The End-Of-Line marker in manifests */ | /** The End-Of-Line marker in manifests */ | ||||
public static final String EOL = "\r\n"; | public static final String EOL = "\r\n"; | ||||
/** | |||||
* Helper class for Manifest's mode attribute. | |||||
*/ | |||||
public static class Mode extends EnumeratedAttribute { | |||||
/** | |||||
* Get Allowed values for the mode attribute. | |||||
* | |||||
* @return a String array of the allowed values. | |||||
*/ | |||||
public String[] getValues() { | |||||
return new String[] {"update", "replace"}; | |||||
} | |||||
} | |||||
/** | /** | ||||
* An attribute for the manifest. | * An attribute for the manifest. | ||||
* Those attributes that are not nested into a section will be added to the "Main" section. | * Those attributes that are not nested into a section will be added to the "Main" section. | ||||
@@ -704,7 +679,7 @@ public class Manifest extends Task { | |||||
Section rhsSection = (Section) rhs; | Section rhsSection = (Section) rhs; | ||||
return attributes.equals(rhsSection.attributes); | |||||
return CollectionUtils.equals(attributes, rhsSection.attributes); | |||||
} | } | ||||
} | } | ||||
@@ -721,16 +696,6 @@ public class Manifest extends Task { | |||||
/** Index of sections - used to retain order of sections in manifest */ | /** Index of sections - used to retain order of sections in manifest */ | ||||
private Vector sectionIndex = new Vector(); | private Vector sectionIndex = new Vector(); | ||||
/** | |||||
* The file to which the manifest should be written when used as a task | |||||
*/ | |||||
private File manifestFile; | |||||
/** | |||||
* The mode with which the manifest file is written | |||||
*/ | |||||
private Mode mode; | |||||
/** | /** | ||||
* Construct a manifest from Ant's default manifest file. | * Construct a manifest from Ant's default manifest file. | ||||
* | * | ||||
@@ -760,8 +725,6 @@ public class Manifest extends Task { | |||||
/** Construct an empty manifest */ | /** Construct an empty manifest */ | ||||
public Manifest() { | public Manifest() { | ||||
mode = new Mode(); | |||||
mode.setValue("replace"); | |||||
manifestVersion = null; | manifestVersion = null; | ||||
} | } | ||||
@@ -843,7 +806,14 @@ public class Manifest extends Task { | |||||
*/ | */ | ||||
public void addConfiguredAttribute(Attribute attribute) | public void addConfiguredAttribute(Attribute attribute) | ||||
throws ManifestException { | throws ManifestException { | ||||
mainSection.addConfiguredAttribute(attribute); | |||||
if (attribute.getKey() == null || attribute.getValue() == null) { | |||||
throw new BuildException("Attributes must have name and value"); | |||||
} | |||||
if (attribute.getKey().equalsIgnoreCase(ATTRIBUTE_MANIFEST_VERSION)) { | |||||
manifestVersion = attribute.getValue(); | |||||
} else { | |||||
mainSection.addConfiguredAttribute(attribute); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
@@ -1017,24 +987,7 @@ public class Manifest extends Task { | |||||
return false; | return false; | ||||
} | } | ||||
return sections.equals(rhsManifest.sections); | |||||
} | |||||
/** | |||||
* The name of the manifest file to create/update. | |||||
* Required if used as a task. | |||||
* @param f the Manifest file to be written | |||||
*/ | |||||
public void setFile(File f) { | |||||
manifestFile = f; | |||||
} | |||||
/** | |||||
* Update policy: either "update" or "replace"; default is "replace". | |||||
* @param m the mode value - update or replace. | |||||
*/ | |||||
public void setMode(Mode m) { | |||||
mode = m; | |||||
return CollectionUtils.equals(sections, rhsManifest.sections); | |||||
} | } | ||||
/** | /** | ||||
@@ -1074,73 +1027,4 @@ public class Manifest extends Task { | |||||
public Enumeration getSectionNames() { | public Enumeration getSectionNames() { | ||||
return sectionIndex.elements(); | return sectionIndex.elements(); | ||||
} | } | ||||
/** | |||||
* Create or update the Manifest when used as a task. | |||||
* | |||||
* @throws BuildException if the manifest cannot be written. | |||||
*/ | |||||
public void execute() throws BuildException { | |||||
if (manifestFile == null) { | |||||
throw new BuildException("the file attribute is required"); | |||||
} | |||||
Manifest toWrite = getDefaultManifest(); | |||||
Manifest current = null; | |||||
BuildException error = null; | |||||
if (manifestFile.exists()) { | |||||
FileReader f = null; | |||||
try { | |||||
f = new FileReader(manifestFile); | |||||
current = new Manifest(f); | |||||
} catch (ManifestException m) { | |||||
error = new BuildException("Existing manifest " + manifestFile | |||||
+ " is invalid", m, location); | |||||
} catch (IOException e) { | |||||
error = new BuildException("Failed to read " + manifestFile, | |||||
e, location); | |||||
} finally { | |||||
if (f != null) { | |||||
try { | |||||
f.close(); | |||||
} catch (IOException e) {} | |||||
} | |||||
} | |||||
} | |||||
try { | |||||
if (mode.getValue().equals("update") && manifestFile.exists()) { | |||||
if (current != null) { | |||||
toWrite.merge(current); | |||||
} else if (error != null) { | |||||
throw error; | |||||
} | |||||
} | |||||
toWrite.merge(this); | |||||
} catch (ManifestException m) { | |||||
throw new BuildException("Manifest is invalid", m, location); | |||||
} | |||||
if (toWrite.equals(current)) { | |||||
log("Manifest has not changed, do not recreate", | |||||
Project.MSG_VERBOSE); | |||||
return; | |||||
} | |||||
PrintWriter w = null; | |||||
try { | |||||
w = new PrintWriter(new FileWriter(manifestFile)); | |||||
toWrite.write(w); | |||||
} catch (IOException e) { | |||||
throw new BuildException("Failed to write " + manifestFile, | |||||
e, location); | |||||
} finally { | |||||
if (w != null) { | |||||
w.close(); | |||||
} | |||||
} | |||||
} | |||||
} | } |
@@ -0,0 +1,226 @@ | |||||
/* | |||||
* The Apache Software License, Version 1.1 | |||||
* | |||||
* Copyright (c) 2002 The Apache Software Foundation. All rights | |||||
* reserved. | |||||
* | |||||
* Redistribution and use in source and binary forms, with or without | |||||
* modification, are permitted provided that the following conditions | |||||
* are met: | |||||
* | |||||
* 1. Redistributions of source code must retain the above copyright | |||||
* notice, this list of conditions and the following disclaimer. | |||||
* | |||||
* 2. Redistributions in binary form must reproduce the above copyright | |||||
* notice, this list of conditions and the following disclaimer in | |||||
* the documentation and/or other materials provided with the | |||||
* distribution. | |||||
* | |||||
* 3. The end-user documentation included with the redistribution, if | |||||
* any, must include the following acknowlegement: | |||||
* "This product includes software developed by the | |||||
* Apache Software Foundation (http://www.apache.org/)." | |||||
* Alternately, this acknowlegement may appear in the software itself, | |||||
* if and wherever such third-party acknowlegements normally appear. | |||||
* | |||||
* 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||||
* Foundation" must not be used to endorse or promote products derived | |||||
* from this software without prior written permission. For written | |||||
* permission, please contact apache@apache.org. | |||||
* | |||||
* 5. Products derived from this software may not be called "Apache" | |||||
* nor may "Apache" appear in their names without prior written | |||||
* permission of the Apache Group. | |||||
* | |||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
* SUCH DAMAGE. | |||||
* ==================================================================== | |||||
* | |||||
* This software consists of voluntary contributions made by many | |||||
* individuals on behalf of the Apache Software Foundation. For more | |||||
* information on the Apache Software Foundation, please see | |||||
* <http://www.apache.org/>. | |||||
*/ | |||||
package org.apache.tools.ant.taskdefs; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.Project; | |||||
import org.apache.tools.ant.Task; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
import java.io.File; | |||||
import java.io.FileReader; | |||||
import java.io.FileWriter; | |||||
import java.io.IOException; | |||||
import java.io.PrintWriter; | |||||
/** | |||||
* Creates a manifest file for inclusion in a JAR, Ant task wrapper | |||||
* around {@link Manifest Manifest}. This task can be used to write a | |||||
* Manifest file, optionally replacing or updating an existing file. | |||||
* | |||||
* @author Conor MacNeill | |||||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||||
* @author <a href="mailto:j_a_fernandez@yahoo.com">Jose Alberto Fernandez</a> | |||||
* | |||||
* @since Ant 1.5 | |||||
* | |||||
* @ant.task category="java" | |||||
*/ | |||||
public class ManifestTask extends Task { | |||||
/** | |||||
* Holds the real data. | |||||
*/ | |||||
private Manifest nestedManifest = new Manifest(); | |||||
/** | |||||
* The file to which the manifest should be written when used as a task | |||||
*/ | |||||
private File manifestFile; | |||||
/** | |||||
* The mode with which the manifest file is written | |||||
*/ | |||||
private Mode mode; | |||||
/** | |||||
* Helper class for Manifest's mode attribute. | |||||
*/ | |||||
public static class Mode extends EnumeratedAttribute { | |||||
/** | |||||
* Get Allowed values for the mode attribute. | |||||
* | |||||
* @return a String array of the allowed values. | |||||
*/ | |||||
public String[] getValues() { | |||||
return new String[] {"update", "replace"}; | |||||
} | |||||
} | |||||
public ManifestTask() { | |||||
mode = new Mode(); | |||||
mode.setValue("replace"); | |||||
} | |||||
/** | |||||
* Add a section to the manifest | |||||
* | |||||
* @param section the manifest section to be added | |||||
* | |||||
* @exception ManifestException if the secti0on is not valid. | |||||
*/ | |||||
public void addConfiguredSection(Manifest.Section section) | |||||
throws ManifestException { | |||||
nestedManifest.addConfiguredSection(section); | |||||
} | |||||
/** | |||||
* Add an attribute to the manifest - it is added to the main section. | |||||
* | |||||
* @param attribute the attribute to be added. | |||||
* | |||||
* @exception ManifestException if the attribute is not valid. | |||||
*/ | |||||
public void addConfiguredAttribute(Manifest.Attribute attribute) | |||||
throws ManifestException { | |||||
nestedManifest.addConfiguredAttribute(attribute); | |||||
} | |||||
/** | |||||
* The name of the manifest file to create/update. | |||||
* Required if used as a task. | |||||
* @param f the Manifest file to be written | |||||
*/ | |||||
public void setFile(File f) { | |||||
manifestFile = f; | |||||
} | |||||
/** | |||||
* Update policy: either "update" or "replace"; default is "replace". | |||||
* @param m the mode value - update or replace. | |||||
*/ | |||||
public void setMode(Mode m) { | |||||
mode = m; | |||||
} | |||||
/** | |||||
* Create or update the Manifest when used as a task. | |||||
* | |||||
* @throws BuildException if the manifest cannot be written. | |||||
*/ | |||||
public void execute() throws BuildException { | |||||
if (manifestFile == null) { | |||||
throw new BuildException("the file attribute is required"); | |||||
} | |||||
Manifest toWrite = Manifest.getDefaultManifest(); | |||||
Manifest current = null; | |||||
BuildException error = null; | |||||
if (manifestFile.exists()) { | |||||
FileReader f = null; | |||||
try { | |||||
f = new FileReader(manifestFile); | |||||
current = new Manifest(f); | |||||
} catch (ManifestException m) { | |||||
error = new BuildException("Existing manifest " + manifestFile | |||||
+ " is invalid", m, location); | |||||
} catch (IOException e) { | |||||
error = new BuildException("Failed to read " + manifestFile, | |||||
e, location); | |||||
} finally { | |||||
if (f != null) { | |||||
try { | |||||
f.close(); | |||||
} catch (IOException e) {} | |||||
} | |||||
} | |||||
} | |||||
try { | |||||
if (mode.getValue().equals("update") && manifestFile.exists()) { | |||||
if (current != null) { | |||||
toWrite.merge(current); | |||||
} else if (error != null) { | |||||
throw error; | |||||
} | |||||
} | |||||
toWrite.merge(nestedManifest); | |||||
} catch (ManifestException m) { | |||||
throw new BuildException("Manifest is invalid", m, location); | |||||
} | |||||
if (toWrite.equals(current)) { | |||||
log("Manifest has not changed, do not recreate", | |||||
Project.MSG_VERBOSE); | |||||
return; | |||||
} | |||||
PrintWriter w = null; | |||||
try { | |||||
w = new PrintWriter(new FileWriter(manifestFile)); | |||||
toWrite.write(w); | |||||
} catch (IOException e) { | |||||
throw new BuildException("Failed to write " + manifestFile, | |||||
e, location); | |||||
} finally { | |||||
if (w != null) { | |||||
w.close(); | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -66,12 +66,12 @@ import java.util.StringTokenizer; | |||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
/** | /** | ||||
* This is an abstract task that should be used by all those tasks that | |||||
* This is an abstract task that should be used by all those tasks that | |||||
* require to include or exclude files based on pattern matching. | * require to include or exclude files based on pattern matching. | ||||
* | * | ||||
* @author Arnout J. Kuiper | |||||
* <a href="mailto:ajkuiper@wxs.nl">ajkuiper@wxs.nl</a> | |||||
* @author Stefano Mazzocchi | |||||
* @author Arnout J. Kuiper | |||||
* <a href="mailto:ajkuiper@wxs.nl">ajkuiper@wxs.nl</a> | |||||
* @author Stefano Mazzocchi | |||||
* <a href="mailto:stefano@apache.org">stefano@apache.org</a> | * <a href="mailto:stefano@apache.org">stefano@apache.org</a> | ||||
* @author Sam Ruby <a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a> | * @author Sam Ruby <a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a> | ||||
* @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | ||||
@@ -99,14 +99,14 @@ public abstract class MatchingTask extends Task implements SelectorContainer { | |||||
public PatternSet.NameEntry createInclude() { | public PatternSet.NameEntry createInclude() { | ||||
return fileset.createInclude(); | return fileset.createInclude(); | ||||
} | } | ||||
/** | /** | ||||
* add a name entry on the include files list | * add a name entry on the include files list | ||||
*/ | */ | ||||
public PatternSet.NameEntry createIncludesFile() { | public PatternSet.NameEntry createIncludesFile() { | ||||
return fileset.createIncludesFile(); | return fileset.createIncludesFile(); | ||||
} | } | ||||
/** | /** | ||||
* add a name entry on the exclude list | * add a name entry on the exclude list | ||||
*/ | */ | ||||
@@ -120,7 +120,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer { | |||||
public PatternSet.NameEntry createExcludesFile() { | public PatternSet.NameEntry createExcludesFile() { | ||||
return fileset.createExcludesFile(); | return fileset.createExcludesFile(); | ||||
} | } | ||||
/** | /** | ||||
* add a set of patterns | * add a set of patterns | ||||
*/ | */ | ||||
@@ -149,7 +149,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer { | |||||
log("The items attribute is deprecated. " + | log("The items attribute is deprecated. " + | ||||
"Please use the includes attribute.", | "Please use the includes attribute.", | ||||
Project.MSG_WARN); | Project.MSG_WARN); | ||||
if (itemString == null || itemString.equals("*") | |||||
if (itemString == null || itemString.equals("*") | |||||
|| itemString.equals(".")) { | || itemString.equals(".")) { | ||||
createInclude().setName("**"); | createInclude().setName("**"); | ||||
} else { | } else { | ||||
@@ -162,7 +162,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* Sets the set of exclude patterns. Patterns may be separated by a comma | * Sets the set of exclude patterns. Patterns may be separated by a comma | ||||
* or a space. | * or a space. | ||||
@@ -174,7 +174,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer { | |||||
} | } | ||||
/** | /** | ||||
* List of filenames and directory names to not include. They should be | |||||
* List of filenames and directory names to not include. They should be | |||||
* either , or " " (space) separated. The ignored files will be logged. | * either , or " " (space) separated. The ignored files will be logged. | ||||
* | * | ||||
* @param ignoreString the string containing the files to ignore. | * @param ignoreString the string containing the files to ignore. | ||||
@@ -232,6 +232,25 @@ public abstract class MatchingTask extends Task implements SelectorContainer { | |||||
fileset.setExcludesfile(excludesfile); | fileset.setExcludesfile(excludesfile); | ||||
} | } | ||||
/** | |||||
* Sets case sensitivity of the file system | |||||
* | |||||
* @param isCaseSensitive "true"|"on"|"yes" if file system is case | |||||
* sensitive, "false"|"off"|"no" when not. | |||||
*/ | |||||
public void setCaseSensitive(boolean isCaseSensitive) { | |||||
fileset.setCaseSensitive(isCaseSensitive); | |||||
} | |||||
/** | |||||
* Sets whether or not symbolic links should be followed. | |||||
* | |||||
* @param followSymlinks whether or not symbolic links should be followed | |||||
*/ | |||||
public void setFollowSymlinks(boolean followSymlinks) { | |||||
fileset.setFollowSymlinks(followSymlinks); | |||||
} | |||||
/** | /** | ||||
* Indicates whether there are any selectors here. | * Indicates whether there are any selectors here. | ||||
* | * | ||||
@@ -69,7 +69,7 @@ import java.util.Vector; | |||||
import java.io.File; | import java.io.File; | ||||
/** | /** | ||||
* This task converts path and classpath information to a specific target OS | |||||
* Converts path and classpath information to a specific target OS | |||||
* format. The resulting formatted path is placed into the specified property. | * format. The resulting formatted path is placed into the specified property. | ||||
* | * | ||||
* @author Larry Streepy <a href="mailto:streepy@healthlanguage.com"> | * @author Larry Streepy <a href="mailto:streepy@healthlanguage.com"> | ||||
@@ -100,6 +100,10 @@ public class PathConvert extends Task { | |||||
* Set if we're running on windows | * Set if we're running on windows | ||||
*/ | */ | ||||
private boolean onWindows = false; | private boolean onWindows = false; | ||||
/** | |||||
* Set if we should create a new property even if the result is empty | |||||
*/ | |||||
private boolean setonempty = true; | |||||
/** | /** | ||||
* The property to receive the conversion | * The property to receive the conversion | ||||
*/ | */ | ||||
@@ -268,6 +272,17 @@ public class PathConvert extends Task { | |||||
targetWindows = !targetOS.equals("unix"); | targetWindows = !targetOS.equals("unix"); | ||||
} | } | ||||
/** | |||||
* Set setonempty | |||||
* | |||||
* If false, don't set the new property if the result is the empty string. | |||||
* @param setonempty true or false | |||||
* | |||||
* @since Ant 1.5 | |||||
*/ | |||||
public void setSetonempty(boolean setonempty) { | |||||
this.setonempty = setonempty; | |||||
} | |||||
/** | /** | ||||
* The property into which the converted path will be placed. | * The property into which the converted path will be placed. | ||||
@@ -401,13 +416,20 @@ public class PathConvert extends Task { | |||||
} | } | ||||
} | } | ||||
// Place the result into the specified property | |||||
if( rslt.length() > 0 ) { | |||||
String value = rslt.toString(); | |||||
log("Set property " + property + " = " + value, | |||||
Project.MSG_VERBOSE); | |||||
getProject().setNewProperty(property, value); | |||||
} | |||||
// Place the result into the specified property, | |||||
// unless setonempty == false | |||||
String value = rslt.toString(); | |||||
if(setonempty) { | |||||
log("Set property " + property + " = " + value, | |||||
Project.MSG_VERBOSE); | |||||
getProject().setNewProperty(property, value); | |||||
} else { | |||||
if(rslt.length() > 0) { | |||||
log("Set property " + property + " = " + value, | |||||
Project.MSG_VERBOSE); | |||||
getProject().setNewProperty(property, value); | |||||
} | |||||
} | |||||
} finally { | } finally { | ||||
path = savedPath; | path = savedPath; | ||||
dirSep = savedDirSep; | dirSep = savedDirSep; | ||||
@@ -162,12 +162,10 @@ public class Property extends Task { | |||||
* Sets the value of the property. | * Sets the value of the property. | ||||
* @param value value to assign | * @param value value to assign | ||||
*/ | */ | ||||
public void setValue(String value) { | public void setValue(String value) { | ||||
this.value = value; | this.value = value; | ||||
} | } | ||||
public String getValue() { | public String getValue() { | ||||
return value; | return value; | ||||
} | } | ||||
@@ -250,7 +248,6 @@ public class Property extends Task { | |||||
* will be ${env.Path} not ${env.PATH} on Windows 2000. | * will be ${env.Path} not ${env.PATH} on Windows 2000. | ||||
* @param env prefix | * @param env prefix | ||||
*/ | */ | ||||
public void setEnvironment(String env) { | public void setEnvironment(String env) { | ||||
this.env = env; | this.env = env; | ||||
} | } | ||||
@@ -262,12 +259,10 @@ public class Property extends Task { | |||||
return env; | return env; | ||||
} | } | ||||
/** | /** | ||||
* The classpath to use when looking up a resource. | * The classpath to use when looking up a resource. | ||||
* @param classpath to add to any existing classpath | * @param classpath to add to any existing classpath | ||||
*/ | */ | ||||
public void setClasspath(Path classpath) { | public void setClasspath(Path classpath) { | ||||
if (this.classpath == null) { | if (this.classpath == null) { | ||||
this.classpath = classpath; | this.classpath = classpath; | ||||
@@ -67,7 +67,7 @@ import java.io.IOException; | |||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
/** | /** | ||||
* Add a listener to the current build process that records the | |||||
* Adds a listener to the current build process that records the | |||||
* output to a file. | * output to a file. | ||||
* <p>Several recorders can exist at the same time. Each recorder is | * <p>Several recorders can exist at the same time. Each recorder is | ||||
* associated with a file. The filename is used as a unique identifier for | * associated with a file. The filename is used as a unique identifier for | ||||
@@ -79,7 +79,6 @@ import java.util.Hashtable; | |||||
* <p>Some technical issues: the file's print stream is flushed for "finished" | * <p>Some technical issues: the file's print stream is flushed for "finished" | ||||
* events (buildFinished, targetFinished and taskFinished), and is closed on | * events (buildFinished, targetFinished and taskFinished), and is closed on | ||||
* a buildFinished event.</p> | * a buildFinished event.</p> | ||||
* @author <a href="mailto:jayglanville@home.com">J D Glanville</a> | * @author <a href="mailto:jayglanville@home.com">J D Glanville</a> | ||||
* @see RecorderEntry | * @see RecorderEntry | ||||
* @version 0.5 | * @version 0.5 | ||||
@@ -1,7 +1,7 @@ | |||||
/* | /* | ||||
* The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
* | * | ||||
* Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||||
* Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||||
* reserved. | * reserved. | ||||
* | * | ||||
* Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
@@ -54,15 +54,10 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.Task; | |||||
import org.apache.tools.ant.AntClassLoader; | |||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.DirectoryScanner; | import org.apache.tools.ant.DirectoryScanner; | ||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.apache.tools.ant.types.EnumeratedAttribute; | import org.apache.tools.ant.types.EnumeratedAttribute; | ||||
import org.apache.tools.ant.types.Path; | |||||
import org.apache.tools.ant.types.Reference; | |||||
import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
import java.io.File; | import java.io.File; | ||||
@@ -79,39 +74,36 @@ import java.io.FileInputStream; | |||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
import java.util.StringTokenizer; | import java.util.StringTokenizer; | ||||
import java.util.Vector; | import java.util.Vector; | ||||
import java.util.Properties; | |||||
import java.util.Hashtable; | |||||
import java.sql.Connection; | import java.sql.Connection; | ||||
import java.sql.Statement; | import java.sql.Statement; | ||||
import java.sql.Driver; | |||||
import java.sql.SQLException; | import java.sql.SQLException; | ||||
import java.sql.DatabaseMetaData; | |||||
import java.sql.SQLWarning; | import java.sql.SQLWarning; | ||||
import java.sql.ResultSet; | import java.sql.ResultSet; | ||||
import java.sql.ResultSetMetaData; | import java.sql.ResultSetMetaData; | ||||
/** | /** | ||||
* <p>Executes a series of SQL statements via JDBC to a database. Statements can | |||||
* either be read in from a text file using the <i>src</i> attribute or from | |||||
* Executes a series of SQL statements on a database using JDBC. | |||||
* | |||||
* <p>Statements can | |||||
* either be read in from a text file using the <i>src</i> attribute or from | |||||
* between the enclosing SQL tags.</p> | * between the enclosing SQL tags.</p> | ||||
* | |||||
* <p>Multiple statements can be provided, separated by semicolons (or the | |||||
* defined <i>delimiter</i>). Individual lines within the statements can be | |||||
* | |||||
* <p>Multiple statements can be provided, separated by semicolons (or the | |||||
* defined <i>delimiter</i>). Individual lines within the statements can be | |||||
* commented using either --, // or REM at the start of the line.</p> | * commented using either --, // or REM at the start of the line.</p> | ||||
* | |||||
* <p>The <i>autocommit</i> attribute specifies whether auto-commit should be | |||||
* turned on or off whilst executing the statements. If auto-commit is turned | |||||
* on each statement will be executed and committed. If it is turned off the | |||||
* | |||||
* <p>The <i>autocommit</i> attribute specifies whether auto-commit should be | |||||
* turned on or off whilst executing the statements. If auto-commit is turned | |||||
* on each statement will be executed and committed. If it is turned off the | |||||
* statements will all be executed as one transaction.</p> | * statements will all be executed as one transaction.</p> | ||||
* | |||||
* <p>The <i>onerror</i> attribute specifies how to proceed when an error occurs | |||||
* during the execution of one of the statements. | |||||
* | |||||
* <p>The <i>onerror</i> attribute specifies how to proceed when an error occurs | |||||
* during the execution of one of the statements. | |||||
* The possible values are: <b>continue</b> execution, only show the error; | * The possible values are: <b>continue</b> execution, only show the error; | ||||
* <b>stop</b> execution and commit transaction; | * <b>stop</b> execution and commit transaction; | ||||
* and <b>abort</b> execution and transaction and fail task.</p> | * and <b>abort</b> execution and transaction and fail task.</p> | ||||
* | |||||
* | |||||
* @author <a href="mailto:jeff@custommonkey.org">Jeff Martin</a> | * @author <a href="mailto:jeff@custommonkey.org">Jeff Martin</a> | ||||
* @author <A href="mailto:gholam@xtra.co.nz">Michael McCallum</A> | * @author <A href="mailto:gholam@xtra.co.nz">Michael McCallum</A> | ||||
* @author <A href="mailto:tim.stephenson@sybase.com">Tim Stephenson</A> | * @author <A href="mailto:tim.stephenson@sybase.com">Tim Stephenson</A> | ||||
@@ -133,13 +125,13 @@ public class SQLExec extends JDBCTask { | |||||
} | } | ||||
} | } | ||||
private int goodSql = 0; | private int goodSql = 0; | ||||
private int totalSql = 0; | private int totalSql = 0; | ||||
/** | |||||
/** | |||||
* Database connection | * Database connection | ||||
*/ | */ | ||||
private Connection conn = null; | private Connection conn = null; | ||||
@@ -173,13 +165,13 @@ public class SQLExec extends JDBCTask { | |||||
* SQL Statement delimiter | * SQL Statement delimiter | ||||
*/ | */ | ||||
private String delimiter = ";"; | private String delimiter = ";"; | ||||
/** | /** | ||||
* The delimiter type indicating whether the delimiter will | * The delimiter type indicating whether the delimiter will | ||||
* only be recognized on a line by itself | * only be recognized on a line by itself | ||||
*/ | */ | ||||
private String delimiterType = DelimiterType.NORMAL; | private String delimiterType = DelimiterType.NORMAL; | ||||
/** | /** | ||||
* Print SQL results. | * Print SQL results. | ||||
*/ | */ | ||||
@@ -195,12 +187,12 @@ public class SQLExec extends JDBCTask { | |||||
*/ | */ | ||||
private File output = null; | private File output = null; | ||||
/** | /** | ||||
* Action to perform if an error is found | * Action to perform if an error is found | ||||
**/ | **/ | ||||
private String onError = "abort"; | private String onError = "abort"; | ||||
/** | /** | ||||
* Encoding to use when reading SQL statements from a file | * Encoding to use when reading SQL statements from a file | ||||
*/ | */ | ||||
@@ -211,23 +203,23 @@ public class SQLExec extends JDBCTask { | |||||
*/ | */ | ||||
private boolean append = false; | private boolean append = false; | ||||
/** | /** | ||||
* Set the name of the sql file to be run. | |||||
* Set the name of the SQL file to be run. | |||||
* Required unless statements are enclosed in the build file | * Required unless statements are enclosed in the build file | ||||
*/ | */ | ||||
public void setSrc(File srcFile) { | public void setSrc(File srcFile) { | ||||
this.srcFile = srcFile; | this.srcFile = srcFile; | ||||
} | } | ||||
/** | /** | ||||
* Set an inline SQL command to execute. | |||||
* Set an inline SQL command to execute. | |||||
* NB: Properties are not expanded in this text. | * NB: Properties are not expanded in this text. | ||||
*/ | */ | ||||
public void addText(String sql) { | public void addText(String sql) { | ||||
this.sqlCommand += sql; | this.sqlCommand += sql; | ||||
} | } | ||||
/** | /** | ||||
* Adds a set of files (nested fileset attribute). | * Adds a set of files (nested fileset attribute). | ||||
*/ | */ | ||||
@@ -244,7 +236,7 @@ public class SQLExec extends JDBCTask { | |||||
transactions.addElement(t); | transactions.addElement(t); | ||||
return t; | return t; | ||||
} | } | ||||
/** | /** | ||||
* Set the file encoding to use on the SQL files read in | * Set the file encoding to use on the SQL files read in | ||||
* | * | ||||
@@ -253,9 +245,9 @@ public class SQLExec extends JDBCTask { | |||||
public void setEncoding(String encoding) { | public void setEncoding(String encoding) { | ||||
this.encoding = encoding; | this.encoding = encoding; | ||||
} | } | ||||
/** | /** | ||||
* Set the delimiter that separates SQL statements; | |||||
* Set the delimiter that separates SQL statements; | |||||
* optional, default ";" | * optional, default ";" | ||||
* | * | ||||
* <p>For example, set this to "go" and delimitertype to "ROW" for | * <p>For example, set this to "go" and delimitertype to "ROW" for | ||||
@@ -266,7 +258,7 @@ public class SQLExec extends JDBCTask { | |||||
} | } | ||||
/** | /** | ||||
* Set the Delimiter type for this sql task; default "normal" | |||||
* Set the delimiter type: "normal" or "row" (default "normal"). | |||||
* | * | ||||
* <p>The delimiter type takes two values - normal and row. Normal | * <p>The delimiter type takes two values - normal and row. Normal | ||||
* means that any occurence of the delimiter terminate the SQL | * means that any occurence of the delimiter terminate the SQL | ||||
@@ -276,7 +268,7 @@ public class SQLExec extends JDBCTask { | |||||
public void setDelimiterType(DelimiterType delimiterType) { | public void setDelimiterType(DelimiterType delimiterType) { | ||||
this.delimiterType = delimiterType.getValue(); | this.delimiterType = delimiterType.getValue(); | ||||
} | } | ||||
/** | /** | ||||
* Print result sets from the statements; | * Print result sets from the statements; | ||||
* optional, default false | * optional, default false | ||||
@@ -284,9 +276,9 @@ public class SQLExec extends JDBCTask { | |||||
public void setPrint(boolean print) { | public void setPrint(boolean print) { | ||||
this.print = print; | this.print = print; | ||||
} | } | ||||
/** | /** | ||||
* Print headers for result sets from the | |||||
* Print headers for result sets from the | |||||
* statements; optional, default true. | * statements; optional, default true. | ||||
*/ | */ | ||||
public void setShowheaders(boolean showheaders) { | public void setShowheaders(boolean showheaders) { | ||||
@@ -294,8 +286,8 @@ public class SQLExec extends JDBCTask { | |||||
} | } | ||||
/** | /** | ||||
* Set the output file; | |||||
* optional, defaults to the ant log | |||||
* Set the output file; | |||||
* optional, defaults to the Ant log. | |||||
*/ | */ | ||||
public void setOutput(File output) { | public void setOutput(File output) { | ||||
this.output = output; | this.output = output; | ||||
@@ -311,7 +303,7 @@ public class SQLExec extends JDBCTask { | |||||
this.append = append; | this.append = append; | ||||
} | } | ||||
/** | /** | ||||
* Action to perform when statement fails: continue, stop, or abort | * Action to perform when statement fails: continue, stop, or abort | ||||
* optional; default "abort" | * optional; default "abort" | ||||
@@ -330,15 +322,15 @@ public class SQLExec extends JDBCTask { | |||||
sqlCommand = sqlCommand.trim(); | sqlCommand = sqlCommand.trim(); | ||||
try { | try { | ||||
if (srcFile == null && sqlCommand.length() == 0 | |||||
&& filesets.isEmpty()) { | |||||
if (srcFile == null && sqlCommand.length() == 0 | |||||
&& filesets.isEmpty()) { | |||||
if (transactions.size() == 0) { | if (transactions.size() == 0) { | ||||
throw new BuildException("Source file or fileset, " | throw new BuildException("Source file or fileset, " | ||||
+ "transactions or sql statement " | + "transactions or sql statement " | ||||
+ "must be set!", location); | + "must be set!", location); | ||||
} | } | ||||
} | } | ||||
if (srcFile != null && !srcFile.exists()) { | if (srcFile != null && !srcFile.exists()) { | ||||
throw new BuildException("Source file does not exist!", location); | throw new BuildException("Source file does not exist!", location); | ||||
} | } | ||||
@@ -348,16 +340,16 @@ public class SQLExec extends JDBCTask { | |||||
FileSet fs = (FileSet) filesets.elementAt(i); | FileSet fs = (FileSet) filesets.elementAt(i); | ||||
DirectoryScanner ds = fs.getDirectoryScanner(project); | DirectoryScanner ds = fs.getDirectoryScanner(project); | ||||
File srcDir = fs.getDir(project); | File srcDir = fs.getDir(project); | ||||
String[] srcFiles = ds.getIncludedFiles(); | String[] srcFiles = ds.getIncludedFiles(); | ||||
// Make a transaction for each file | // Make a transaction for each file | ||||
for (int j = 0 ; j < srcFiles.length ; j++) { | for (int j = 0 ; j < srcFiles.length ; j++) { | ||||
Transaction t = createTransaction(); | Transaction t = createTransaction(); | ||||
t.setSrc(new File(srcDir, srcFiles[j])); | t.setSrc(new File(srcDir, srcFiles[j])); | ||||
} | } | ||||
} | } | ||||
// Make a transaction group for the outer command | // Make a transaction group for the outer command | ||||
Transaction t = createTransaction(); | Transaction t = createTransaction(); | ||||
t.setSrc(srcFile); | t.setSrc(srcFile); | ||||
@@ -369,11 +361,11 @@ public class SQLExec extends JDBCTask { | |||||
try { | try { | ||||
statement = conn.createStatement(); | statement = conn.createStatement(); | ||||
PrintStream out = System.out; | PrintStream out = System.out; | ||||
try { | try { | ||||
if (output != null) { | if (output != null) { | ||||
log("Opening PrintStream to output file " + output, | |||||
log("Opening PrintStream to output file " + output, | |||||
Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
out = new PrintStream( | out = new PrintStream( | ||||
new BufferedOutputStream( | new BufferedOutputStream( | ||||
@@ -381,11 +373,11 @@ public class SQLExec extends JDBCTask { | |||||
.getAbsolutePath(), | .getAbsolutePath(), | ||||
append))); | append))); | ||||
} | } | ||||
// Process all transactions | // Process all transactions | ||||
for (Enumeration e = transactions.elements(); | |||||
for (Enumeration e = transactions.elements(); | |||||
e.hasMoreElements();) { | e.hasMoreElements();) { | ||||
((Transaction) e.nextElement()).runTransaction(out); | ((Transaction) e.nextElement()).runTransaction(out); | ||||
if (!isAutocommit()) { | if (!isAutocommit()) { | ||||
log("Commiting transaction", Project.MSG_VERBOSE); | log("Commiting transaction", Project.MSG_VERBOSE); | ||||
@@ -396,7 +388,7 @@ public class SQLExec extends JDBCTask { | |||||
if (out != null && out != System.out) { | if (out != null && out != System.out) { | ||||
out.close(); | out.close(); | ||||
} | } | ||||
} | |||||
} | |||||
} catch (IOException e){ | } catch (IOException e){ | ||||
if (!isAutocommit() && conn != null && onError.equals("abort")) { | if (!isAutocommit() && conn != null && onError.equals("abort")) { | ||||
try { | try { | ||||
@@ -421,8 +413,8 @@ public class SQLExec extends JDBCTask { | |||||
} | } | ||||
} catch (SQLException e) {} | } catch (SQLException e) {} | ||||
} | } | ||||
log(goodSql + " of " + totalSql + | |||||
log(goodSql + " of " + totalSql + | |||||
" SQL statements executed successfully"); | " SQL statements executed successfully"); | ||||
} finally { | } finally { | ||||
transactions = savedTransaction; | transactions = savedTransaction; | ||||
@@ -434,13 +426,13 @@ public class SQLExec extends JDBCTask { | |||||
/** | /** | ||||
* read in lines and execute them | * read in lines and execute them | ||||
*/ | */ | ||||
protected void runStatements(Reader reader, PrintStream out) | |||||
protected void runStatements(Reader reader, PrintStream out) | |||||
throws SQLException, IOException { | throws SQLException, IOException { | ||||
String sql = ""; | String sql = ""; | ||||
String line = ""; | String line = ""; | ||||
BufferedReader in = new BufferedReader(reader); | BufferedReader in = new BufferedReader(reader); | ||||
while ((line = in.readLine()) != null){ | while ((line = in.readLine()) != null){ | ||||
line = line.trim(); | line = line.trim(); | ||||
line = project.replaceProperties(line); | line = project.replaceProperties(line); | ||||
@@ -457,36 +449,36 @@ public class SQLExec extends JDBCTask { | |||||
continue; | continue; | ||||
} | } | ||||
} | } | ||||
sql += " " + line; | sql += " " + line; | ||||
sql = sql.trim(); | sql = sql.trim(); | ||||
// SQL defines "--" as a comment to EOL | // SQL defines "--" as a comment to EOL | ||||
// and in Oracle it may contain a hint | // and in Oracle it may contain a hint | ||||
// so we cannot just remove it, instead we must end it | // so we cannot just remove it, instead we must end it | ||||
if (line.indexOf("--") >= 0) { | if (line.indexOf("--") >= 0) { | ||||
sql += "\n"; | sql += "\n"; | ||||
} | } | ||||
if ((delimiterType.equals(DelimiterType.NORMAL) | |||||
&& sql.endsWith(delimiter)) | |||||
if ((delimiterType.equals(DelimiterType.NORMAL) | |||||
&& sql.endsWith(delimiter)) | |||||
|| | || | ||||
(delimiterType.equals(DelimiterType.ROW) | |||||
(delimiterType.equals(DelimiterType.ROW) | |||||
&& line.equals(delimiter))) { | && line.equals(delimiter))) { | ||||
log("SQL: " + sql, Project.MSG_VERBOSE); | log("SQL: " + sql, Project.MSG_VERBOSE); | ||||
execSQL(sql.substring(0, sql.length() - delimiter.length()), | |||||
execSQL(sql.substring(0, sql.length() - delimiter.length()), | |||||
out); | out); | ||||
sql = ""; | sql = ""; | ||||
} | } | ||||
} | } | ||||
// Catch any statements not followed by ; | // Catch any statements not followed by ; | ||||
if (!sql.equals("")){ | if (!sql.equals("")){ | ||||
execSQL(sql, out); | execSQL(sql, out); | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* Exec the sql statement. | * Exec the sql statement. | ||||
*/ | */ | ||||
@@ -495,18 +487,18 @@ public class SQLExec extends JDBCTask { | |||||
if ("".equals(sql.trim())) { | if ("".equals(sql.trim())) { | ||||
return; | return; | ||||
} | } | ||||
try { | |||||
try { | |||||
totalSql++; | totalSql++; | ||||
if (!statement.execute(sql)) { | if (!statement.execute(sql)) { | ||||
log(statement.getUpdateCount() + " rows affected", | |||||
log(statement.getUpdateCount() + " rows affected", | |||||
Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
} else { | } else { | ||||
if (print) { | if (print) { | ||||
printResults(out); | printResults(out); | ||||
} | } | ||||
} | } | ||||
SQLWarning warning = conn.getWarnings(); | SQLWarning warning = conn.getWarnings(); | ||||
while (warning != null){ | while (warning != null){ | ||||
log(warning + " sql warning", Project.MSG_VERBOSE); | log(warning + " sql warning", Project.MSG_VERBOSE); | ||||
@@ -522,7 +514,7 @@ public class SQLExec extends JDBCTask { | |||||
log(e.toString(), Project.MSG_ERR); | log(e.toString(), Project.MSG_ERR); | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* print any results in the statement. | * print any results in the statement. | ||||
*/ | */ | ||||
@@ -551,7 +543,7 @@ public class SQLExec extends JDBCTask { | |||||
if (columnValue != null) { | if (columnValue != null) { | ||||
columnValue = columnValue.trim(); | columnValue = columnValue.trim(); | ||||
} | } | ||||
if (first) { | if (first) { | ||||
first = false; | first = false; | ||||
} else { | } else { | ||||
@@ -605,20 +597,20 @@ public class SQLExec extends JDBCTask { | |||||
/** | /** | ||||
* | * | ||||
*/ | */ | ||||
private void runTransaction(PrintStream out) | |||||
private void runTransaction(PrintStream out) | |||||
throws IOException, SQLException { | throws IOException, SQLException { | ||||
if (tSqlCommand.length() != 0) { | if (tSqlCommand.length() != 0) { | ||||
log("Executing commands", Project.MSG_INFO); | log("Executing commands", Project.MSG_INFO); | ||||
runStatements(new StringReader(tSqlCommand), out); | runStatements(new StringReader(tSqlCommand), out); | ||||
} | } | ||||
if (tSrcFile != null) { | if (tSrcFile != null) { | ||||
log("Executing file: " + tSrcFile.getAbsolutePath(), | |||||
log("Executing file: " + tSrcFile.getAbsolutePath(), | |||||
Project.MSG_INFO); | Project.MSG_INFO); | ||||
Reader reader = | |||||
Reader reader = | |||||
(encoding == null) ? new FileReader(tSrcFile) | (encoding == null) ? new FileReader(tSrcFile) | ||||
: new InputStreamReader( | : new InputStreamReader( | ||||
new FileInputStream(tSrcFile), | |||||
new FileInputStream(tSrcFile), | |||||
encoding); | encoding); | ||||
try { | try { | ||||
runStatements(reader, out); | runStatements(reader, out); | ||||
@@ -58,18 +58,19 @@ import org.apache.tools.ant.Task; | |||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
/** | /** | ||||
* Sleep for a period of time | |||||
* Sleep, or pause, for a period of time. | |||||
* | |||||
* A task for sleeping a short period of time, useful when a | * A task for sleeping a short period of time, useful when a | ||||
* build or deployment process requires an interval between tasks. | * build or deployment process requires an interval between tasks. | ||||
*<p> | *<p> | ||||
* A negative value can be supplied to any of attributes provided the total sleep time | |||||
* A negative value can be supplied to any of attributes provided the total sleep time | |||||
* is positive, pending fundamental changes in physics and JVM | * is positive, pending fundamental changes in physics and JVM | ||||
* execution tims</p> | * execution tims</p> | ||||
* Note that sleep times are always hints to be interpred by the OS how it feels | |||||
* small times may either be ignored or rounded up to a minimum timeslice. Note | |||||
* also that the system clocks often have a fairly low granularity too, which complicates | |||||
* Note that sleep times are always hints to be interpred by the OS how it feels | |||||
* small times may either be ignored or rounded up to a minimum timeslice. Note | |||||
* also that the system clocks often have a fairly low granularity too, which complicates | |||||
* measuring how long a sleep actually took.</p> | * measuring how long a sleep actually took.</p> | ||||
* | |||||
* | |||||
* @author steve_l@iseran.com steve loughran | * @author steve_l@iseran.com steve loughran | ||||
* @since Ant 1.4 | * @since Ant 1.4 | ||||
* @ant.task category="utility" | * @ant.task category="utility" | ||||
@@ -87,7 +88,7 @@ public class Sleep extends Task { | |||||
private int seconds = 0; | private int seconds = 0; | ||||
/** | /** | ||||
* sleep hours | |||||
* sleep hours | |||||
*/ | */ | ||||
private int hours = 0; | private int hours = 0; | ||||
/** | /** | ||||
@@ -110,7 +111,7 @@ public class Sleep extends Task { | |||||
/** | /** | ||||
* adds some seconds to the Sleep | |||||
* seconds to add to the sleep time | |||||
* | * | ||||
* @param seconds The new Seconds value | * @param seconds The new Seconds value | ||||
*/ | */ | ||||
@@ -120,7 +121,7 @@ public class Sleep extends Task { | |||||
/** | /** | ||||
* hours to to add to the sleep time | |||||
* hours to add to the sleep time. | |||||
* | * | ||||
* @param hours The new Hours value | * @param hours The new Hours value | ||||
*/ | */ | ||||
@@ -130,7 +131,7 @@ public class Sleep extends Task { | |||||
/** | /** | ||||
* Sets the Minutes attribute of the Sleep object | |||||
* minutes to add to the sleep time | |||||
* | * | ||||
* @param minutes The new Minutes value | * @param minutes The new Minutes value | ||||
*/ | */ | ||||
@@ -140,7 +141,7 @@ public class Sleep extends Task { | |||||
/** | /** | ||||
* minutes to add to the sleep time | |||||
* milliseconds to add to the sleep time | |||||
* | * | ||||
* @param milliseconds The new Milliseconds value | * @param milliseconds The new Milliseconds value | ||||
*/ | */ | ||||
@@ -179,7 +180,7 @@ public class Sleep extends Task { | |||||
*/ | */ | ||||
private long getSleepTime() { | private long getSleepTime() { | ||||
return ((((long) hours * 60) + minutes) * 60 + seconds) * 1000 | |||||
return ((((long) hours * 60) + minutes) * 60 + seconds) * 1000 | |||||
+ milliseconds; | + milliseconds; | ||||
} | } | ||||
@@ -189,7 +190,7 @@ public class Sleep extends Task { | |||||
* | * | ||||
* @throws BuildException if something is invalid | * @throws BuildException if something is invalid | ||||
*/ | */ | ||||
public void validate() | |||||
public void validate() | |||||
throws BuildException { | throws BuildException { | ||||
if (getSleepTime() < 0) { | if (getSleepTime() < 0) { | ||||
throw new BuildException("Negative sleep periods are not " | throw new BuildException("Negative sleep periods are not " | ||||
@@ -57,6 +57,7 @@ package org.apache.tools.ant.taskdefs; | |||||
/** | /** | ||||
* Has been merged into ExecuteOn, empty class for backwards compatibility. | * Has been merged into ExecuteOn, empty class for backwards compatibility. | ||||
* | * | ||||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||||
* @ant.task ignore="true" | |||||
*/ | */ | ||||
public class Transform extends ExecuteOn {} | public class Transform extends ExecuteOn {} |
@@ -72,7 +72,7 @@ import java.util.Vector; | |||||
import java.text.SimpleDateFormat; | import java.text.SimpleDateFormat; | ||||
/** | /** | ||||
* Sets properties to the current time. | |||||
* Sets properties to the current time, or offsets from the current time. | |||||
* The default properties are TSTAMP, DSTAMP and TODAY; | * The default properties are TSTAMP, DSTAMP and TODAY; | ||||
* | * | ||||
* @author costin@dnt.ro | * @author costin@dnt.ro | ||||
@@ -204,7 +204,7 @@ public class Tstamp extends Task { | |||||
if (st.hasMoreElements()) { | if (st.hasMoreElements()) { | ||||
variant = st.nextToken(); | variant = st.nextToken(); | ||||
if (st.hasMoreElements()) { | if (st.hasMoreElements()) { | ||||
throw new BuildException("bad locale format", | |||||
throw new BuildException("bad locale format", | |||||
getLocation()); | getLocation()); | ||||
} | } | ||||
} | } | ||||
@@ -212,7 +212,7 @@ public class Tstamp extends Task { | |||||
country = ""; | country = ""; | ||||
} | } | ||||
} catch (NoSuchElementException e) { | } catch (NoSuchElementException e) { | ||||
throw new BuildException("bad locale format", e, | |||||
throw new BuildException("bad locale format", e, | |||||
getLocation()); | getLocation()); | ||||
} | } | ||||
} | } | ||||
@@ -70,7 +70,7 @@ import java.util.Enumeration; | |||||
import java.util.Vector; | import java.util.Vector; | ||||
/** | /** | ||||
* Will set the given property if the specified target has a timestamp | |||||
* Sets the given property if the specified target has a timestamp | |||||
* greater than all of the source files. | * greater than all of the source files. | ||||
* | * | ||||
* @author William Ferguson | * @author William Ferguson | ||||
@@ -68,7 +68,7 @@ import java.io.IOException; | |||||
* Contains special treatment for files that should end up in the | * Contains special treatment for files that should end up in the | ||||
* <code>WEB-INF/lib</code>, <code>WEB-INF/classes</code> or | * <code>WEB-INF/lib</code>, <code>WEB-INF/classes</code> or | ||||
* <code>WEB-INF</code> directories of the Web Application Archive.</p> | * <code>WEB-INF</code> directories of the Web Application Archive.</p> | ||||
* <p>(The War task is a shortcut for specifying the particular layout of a WAR file. | |||||
* <p>(The War task is a shortcut for specifying the particular layout of a WAR file. | |||||
* The same thing can be accomplished by using the <i>prefix</i> and <i>fullpath</i> | * The same thing can be accomplished by using the <i>prefix</i> and <i>fullpath</i> | ||||
* attributes of zipfilesets in a Zip or Jar task.)</p> | * attributes of zipfilesets in a Zip or Jar task.)</p> | ||||
* <p>The extended zipfileset element from the zip task (with attributes <i>prefix</i>, <i>fullpath</i>, and <i>src</i>) is available in the War task.</p> | * <p>The extended zipfileset element from the zip task (with attributes <i>prefix</i>, <i>fullpath</i>, and <i>src</i>) is available in the War task.</p> | ||||
@@ -86,7 +86,7 @@ public class War extends Jar { | |||||
* our web.xml deployment descriptor | * our web.xml deployment descriptor | ||||
*/ | */ | ||||
private File deploymentDescriptor; | private File deploymentDescriptor; | ||||
/** | /** | ||||
* flag set if the descriptor is added | * flag set if the descriptor is added | ||||
*/ | */ | ||||
@@ -99,10 +99,10 @@ public class War extends Jar { | |||||
} | } | ||||
/** | /** | ||||
* <i>Deprecated<i> name of the file to create | |||||
* -use <tt>destfile</tt> instead. | |||||
* <i>Deprecated<i> name of the file to create | |||||
* -use <tt>destfile</tt> instead. | |||||
* @deprecated Use setDestFile(File) instead | * @deprecated Use setDestFile(File) instead | ||||
* @ant.attribute ignored="true" | |||||
* @ant.attribute ignore="true" | |||||
*/ | */ | ||||
public void setWarfile(File warFile) { | public void setWarfile(File warFile) { | ||||
setDestFile(warFile); | setDestFile(warFile); | ||||
@@ -115,8 +115,8 @@ public class War extends Jar { | |||||
public void setWebxml(File descr) { | public void setWebxml(File descr) { | ||||
deploymentDescriptor = descr; | deploymentDescriptor = descr; | ||||
if (!deploymentDescriptor.exists()) { | if (!deploymentDescriptor.exists()) { | ||||
throw new BuildException("Deployment descriptor: " | |||||
+ deploymentDescriptor | |||||
throw new BuildException("Deployment descriptor: " | |||||
+ deploymentDescriptor | |||||
+ " does not exist."); | + " does not exist."); | ||||
} | } | ||||
@@ -131,7 +131,7 @@ public class War extends Jar { | |||||
/** | /** | ||||
* add files under WEB-INF/lib/ | * add files under WEB-INF/lib/ | ||||
*/ | */ | ||||
public void addLib(ZipFileSet fs) { | public void addLib(ZipFileSet fs) { | ||||
// We just set the prefix for this fileset, and pass it up. | // We just set the prefix for this fileset, and pass it up. | ||||
fs.setPrefix("WEB-INF/lib/"); | fs.setPrefix("WEB-INF/lib/"); | ||||
@@ -148,7 +148,7 @@ public class War extends Jar { | |||||
} | } | ||||
/** | /** | ||||
* files to add under WEB-INF; | |||||
* files to add under WEB-INF; | |||||
*/ | */ | ||||
public void addWebinf(ZipFileSet fs) { | public void addWebinf(ZipFileSet fs) { | ||||
// We just set the prefix for this fileset, and pass it up. | // We just set the prefix for this fileset, and pass it up. | ||||
@@ -180,8 +180,8 @@ public class War extends Jar { | |||||
// it's being added twice, meaning the same file is specified | // it's being added twice, meaning the same file is specified | ||||
// by the "webxml" attribute and in a <fileset> element. | // by the "webxml" attribute and in a <fileset> element. | ||||
if (vPath.equalsIgnoreCase("WEB-INF/web.xml")) { | if (vPath.equalsIgnoreCase("WEB-INF/web.xml")) { | ||||
if (deploymentDescriptor == null | |||||
|| !deploymentDescriptor.equals(file) | |||||
if (deploymentDescriptor == null | |||||
|| !deploymentDescriptor.equals(file) | |||||
|| descriptorAdded) { | || descriptorAdded) { | ||||
log("Warning: selected " + archiveType | log("Warning: selected " + archiveType | ||||
+ " files include a WEB-INF/web.xml which will be ignored " | + " files include a WEB-INF/web.xml which will be ignored " | ||||
@@ -92,15 +92,6 @@ public interface XSLTLiaison { | |||||
*/ | */ | ||||
void addParam(String name, String expression) throws Exception; | void addParam(String name, String expression) throws Exception; | ||||
/** | |||||
* set the output type to use for the transformation. Only "xml" (the | |||||
* default) is guaranteed to work for all parsers. Xalan2 also | |||||
* supports "html" and "text". | |||||
* @param type the output method to use | |||||
* @since Ant 1.5 | |||||
*/ | |||||
void setOutputtype(String type) throws Exception; | |||||
/** | /** | ||||
* Perform the transformation of a file into another. | * Perform the transformation of a file into another. | ||||
* @param infile the input file, probably an XML one. :-) | * @param infile the input file, probably an XML one. :-) | ||||
@@ -62,6 +62,7 @@ import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.DirectoryScanner; | import org.apache.tools.ant.DirectoryScanner; | ||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.apache.tools.ant.AntClassLoader; | import org.apache.tools.ant.AntClassLoader; | ||||
import org.apache.tools.ant.taskdefs.optional.TraXLiaison; | |||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
import org.apache.tools.ant.types.Reference; | import org.apache.tools.ant.types.Reference; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
@@ -69,7 +70,7 @@ import org.apache.tools.ant.types.XMLCatalog; | |||||
import org.xml.sax.EntityResolver; | import org.xml.sax.EntityResolver; | ||||
/** | /** | ||||
* A Task to process via XSLT a set of XML documents. This is | |||||
* Processes a set of XML documents via XSLT. This is | |||||
* useful for building views of XML based documentation. | * useful for building views of XML based documentation. | ||||
* | * | ||||
* @version $Revision$ | * @version $Revision$ | ||||
@@ -127,7 +128,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
private FileUtils fileUtils; | private FileUtils fileUtils; | ||||
/** XSL output method to be used */ | /** XSL output method to be used */ | ||||
private String outputtype = null; | |||||
private Vector outputProperties = new Vector(); | |||||
/** for resolving entities such as dtds */ | /** for resolving entities such as dtds */ | ||||
private XMLCatalog xmlCatalog = new XMLCatalog(); | private XMLCatalog xmlCatalog = new XMLCatalog(); | ||||
@@ -137,11 +138,11 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
"org.apache.tools.ant.taskdefs.optional.TraXLiaison"; | "org.apache.tools.ant.taskdefs.optional.TraXLiaison"; | ||||
/** Name of the now-deprecated XSLP Liason class */ | /** Name of the now-deprecated XSLP Liason class */ | ||||
private static final String XSLP_LIASON_CLASS = | |||||
private static final String XSLP_LIAISON_CLASS = | |||||
"org.apache.tools.ant.taskdefs.optional.XslpLiaison"; | "org.apache.tools.ant.taskdefs.optional.XslpLiaison"; | ||||
/** Name of the Xalan liason class */ | /** Name of the Xalan liason class */ | ||||
private static final String XALAN_LIASON_CLASS = | |||||
private static final String XALAN_LIAISON_CLASS = | |||||
"org.apache.tools.ant.taskdefs.optional.XalanLiaison"; | "org.apache.tools.ant.taskdefs.optional.XalanLiaison"; | ||||
/** | /** | ||||
@@ -298,8 +299,6 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
/** | /** | ||||
* Name of the stylesheet to use - given either relative | * Name of the stylesheet to use - given either relative | ||||
* to the project's basedir or as an absolute path; required. | * to the project's basedir or as an absolute path; required. | ||||
* | |||||
* @param xslFile the stylesheet to use | |||||
*/ | */ | ||||
public void setStyle(String xslFile) { | public void setStyle(String xslFile) { | ||||
this.xslFile = xslFile; | this.xslFile = xslFile; | ||||
@@ -371,10 +370,10 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
} else if (proc.equals("xslp")) { | } else if (proc.equals("xslp")) { | ||||
log("DEPRECATED - xslp processor is deprecated. Use trax or " | log("DEPRECATED - xslp processor is deprecated. Use trax or " | ||||
+ "xalan instead."); | + "xalan instead."); | ||||
final Class clazz = loadClass(XSLP_LIASON_CLASS); | |||||
final Class clazz = loadClass(XSLP_LIAISON_CLASS); | |||||
liaison = (XSLTLiaison) clazz.newInstance(); | liaison = (XSLTLiaison) clazz.newInstance(); | ||||
} else if (proc.equals("xalan")) { | } else if (proc.equals("xalan")) { | ||||
final Class clazz = loadClass(XALAN_LIASON_CLASS); | |||||
final Class clazz = loadClass(XALAN_LIAISON_CLASS); | |||||
liaison = (XSLTLiaison) clazz.newInstance(); | liaison = (XSLTLiaison) clazz.newInstance(); | ||||
} else { | } else { | ||||
liaison = (XSLTLiaison) loadClass(proc).newInstance(); | liaison = (XSLTLiaison) loadClass(proc).newInstance(); | ||||
@@ -631,17 +630,64 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
} | } | ||||
return expression; | return expression; | ||||
} | } | ||||
} // Param | |||||
/** | |||||
* Create an instance of an output property to be configured. | |||||
* @return the newly created output property. | |||||
* @since Ant 1.5 | |||||
*/ | |||||
public OutputProperty createOutputProperty() { | |||||
OutputProperty p = new OutputProperty(); | |||||
outputProperties.addElement(p); | |||||
return p; | |||||
} | } | ||||
/** | /** | ||||
* Set the output type to use for the transformation; | |||||
* optional, default="xml". | |||||
* Only "xml" is guaranteed to work for all parsers. | |||||
* Xalan2 also supports "html" and "text". | |||||
* @param type the output method to use | |||||
* Specify how the result tree should be output as specified | |||||
* in the <a href="http://www.w3.org/TR/xslt#output"> | |||||
* specification</a>. | |||||
* @since Ant 1.5 | |||||
*/ | */ | ||||
public void setOutputtype(String type) { | |||||
this.outputtype = type; | |||||
public static class OutputProperty { | |||||
/** output property name */ | |||||
private String name; | |||||
/** output property value */ | |||||
private String value; | |||||
/** | |||||
* @return the output property name. | |||||
*/ | |||||
public String getName() { | |||||
return name; | |||||
} | |||||
/** | |||||
* set the name for this property | |||||
* @param name A non-null String that specifies an | |||||
* output property name, which may be namespace qualified. | |||||
*/ | |||||
public void setName(String name) { | |||||
this.name = name; | |||||
} | |||||
/** | |||||
* @return the output property value. | |||||
*/ | |||||
public String getValue() { | |||||
return value; | |||||
} | |||||
/** | |||||
* set the value for this property | |||||
* @param value The non-null string value of the output property. | |||||
*/ | |||||
public void setValue(String value) { | |||||
this.value = value; | |||||
} | |||||
} | } | ||||
/** | /** | ||||
@@ -649,7 +695,6 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
*/ | */ | ||||
public void init() throws BuildException { | public void init() throws BuildException { | ||||
super.init(); | super.init(); | ||||
xmlCatalog.setProject(project); | xmlCatalog.setProject(project); | ||||
} | } | ||||
@@ -668,38 +713,37 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
try { | try { | ||||
log("Loading stylesheet " + stylesheet, Project.MSG_INFO); | log("Loading stylesheet " + stylesheet, Project.MSG_INFO); | ||||
liaison.setStylesheet(stylesheet); | liaison.setStylesheet(stylesheet); | ||||
if (outputtype != null) { | |||||
liaison.setOutputtype(outputtype); | |||||
} | |||||
for (Enumeration e = params.elements(); e.hasMoreElements();) { | for (Enumeration e = params.elements(); e.hasMoreElements();) { | ||||
Param p = (Param) e.nextElement(); | Param p = (Param) e.nextElement(); | ||||
liaison.addParam(p.getName(), p.getExpression()); | liaison.addParam(p.getName(), p.getExpression()); | ||||
} | } | ||||
if (liaison instanceof TraXLiaison) { | |||||
configureTraXLiaison((TraXLiaison)liaison); | |||||
} | |||||
} catch (Exception ex) { | } catch (Exception ex) { | ||||
log("Failed to read stylesheet " + stylesheet, Project.MSG_INFO); | |||||
log("Failed to transform using stylesheet " + stylesheet, Project.MSG_INFO); | |||||
throw new BuildException(ex); | throw new BuildException(ex); | ||||
} | } | ||||
} | |||||
try { | |||||
// if liaison is a TraxLiason, use XMLCatalog as the entity | |||||
// resolver and URI resolver | |||||
if (liaison.getClass().getName().equals(TRAX_LIAISON_CLASS) && | |||||
xmlCatalog != null) { | |||||
log("Configuring TraxLiaison: setting entity resolver " + | |||||
"and setting URI resolver", Project.MSG_DEBUG); | |||||
Method resolver = liaison.getClass() | |||||
.getDeclaredMethod("setEntityResolver", | |||||
new Class[] {EntityResolver.class}); | |||||
resolver.invoke(liaison, new Object[] {xmlCatalog}); | |||||
resolver = liaison.getClass() | |||||
.getDeclaredMethod("setURIResolver", | |||||
new Class[] {loadClass("javax.xml.transform.URIResolver")}); | |||||
resolver.invoke(liaison, new Object[] {xmlCatalog}); | |||||
} | |||||
} catch (Exception e) { | |||||
throw new BuildException("Failed to configure XMLCatalog for " | |||||
+ "TraxLiaison", e); | |||||
/** | |||||
* Specific configuration for the TRaX liaison... support for | |||||
* all other has been dropped so this liaison will soon look | |||||
* like the exact copy of JAXP interface.. | |||||
* @param liaison the TRaXLiaison to configure. | |||||
*/ | |||||
protected void configureTraXLiaison(TraXLiaison liaison){ | |||||
// use XMLCatalog as the entity resolver and URI resolver | |||||
if (xmlCatalog != null) { | |||||
liaison.setEntityResolver(xmlCatalog); | |||||
liaison.setURIResolver(xmlCatalog); | |||||
} | |||||
// configure output properties | |||||
for (Enumeration props = outputProperties.elements(); | |||||
props.hasMoreElements();) { | |||||
OutputProperty prop = (OutputProperty)props.nextElement(); | |||||
liaison.setOutputProperty(prop.getName(), prop.getValue()); | |||||
} | } | ||||
} | } | ||||
@@ -72,8 +72,9 @@ import java.io.IOException; | |||||
import java.util.Vector; | import java.util.Vector; | ||||
/** | /** | ||||
* Task that gets property values from a valid xml file, | |||||
* Loads property values from a valid XML file, | |||||
* generating the property names from the file's element and attribute names. | * generating the property names from the file's element and attribute names. | ||||
* | |||||
* Example: | * Example: | ||||
* <pre> | * <pre> | ||||
* <root-tag myattr="true"> | * <root-tag myattr="true"> | ||||
@@ -84,7 +84,7 @@ import org.apache.tools.zip.ZipOutputStream; | |||||
import org.apache.tools.zip.ZipEntry; | import org.apache.tools.zip.ZipEntry; | ||||
/** | /** | ||||
* Create a zipfile. | |||||
* Create a Zip file. | |||||
* | * | ||||
* @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a> | * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a> | ||||
* @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | ||||
@@ -116,9 +116,9 @@ public class Zip extends MatchingTask { | |||||
protected Hashtable addedDirs = new Hashtable(); | protected Hashtable addedDirs = new Hashtable(); | ||||
private Vector addedFiles = new Vector(); | private Vector addedFiles = new Vector(); | ||||
/** | |||||
/** | |||||
* true when we are adding new files into the Zip file, as opposed | * true when we are adding new files into the Zip file, as opposed | ||||
* to adding back the unchanged files | |||||
* to adding back the unchanged files | |||||
*/ | */ | ||||
private boolean addingNewFiles = false; | private boolean addingNewFiles = false; | ||||
@@ -144,7 +144,7 @@ public class Zip extends MatchingTask { | |||||
* create the file. | * create the file. | ||||
* @since Ant 1.5 | * @since Ant 1.5 | ||||
* @deprecated Use setDestFile(File) instead | * @deprecated Use setDestFile(File) instead | ||||
* @ant.attribute ignored="true" | |||||
* @ant.attribute ignore="true" | |||||
*/ | */ | ||||
public void setFile(File file) { | public void setFile(File file) { | ||||
setDestFile(file); | setDestFile(file); | ||||
@@ -276,12 +276,12 @@ public class Zip extends MatchingTask { | |||||
if (baseDir == null && filesets.size() == 0 | if (baseDir == null && filesets.size() == 0 | ||||
&& groupfilesets.size() == 0 && "zip".equals(archiveType)) { | && groupfilesets.size() == 0 && "zip".equals(archiveType)) { | ||||
throw new BuildException("basedir attribute must be set, " | throw new BuildException("basedir attribute must be set, " | ||||
+ "or at least " | |||||
+ "or at least " | |||||
+ "one fileset must be given!"); | + "one fileset must be given!"); | ||||
} | } | ||||
if (zipFile == null) { | if (zipFile == null) { | ||||
throw new BuildException("You must specify the " | |||||
throw new BuildException("You must specify the " | |||||
+ archiveType + " file to create!"); | + archiveType + " file to create!"); | ||||
} | } | ||||
@@ -292,22 +292,6 @@ public class Zip extends MatchingTask { | |||||
addingNewFiles = true; | addingNewFiles = true; | ||||
doUpdate = doUpdate && zipFile.exists(); | doUpdate = doUpdate && zipFile.exists(); | ||||
if (doUpdate) { | |||||
FileUtils fileUtils = FileUtils.newFileUtils(); | |||||
renamedFile = | |||||
fileUtils.createTempFile("zip", ".tmp", | |||||
fileUtils.getParentFile(zipFile)); | |||||
try { | |||||
if (!zipFile.renameTo(renamedFile)) { | |||||
throw new BuildException("Unable to rename old file to " | |||||
+ "temporary file"); | |||||
} | |||||
} catch (SecurityException e) { | |||||
throw new BuildException("Not allowed to rename old file to " | |||||
+ "temporary file"); | |||||
} | |||||
} | |||||
// Add the files found in groupfileset to fileset | // Add the files found in groupfileset to fileset | ||||
for (int i = 0; i < groupfilesets.size(); i++) { | for (int i = 0; i < groupfilesets.size(); i++) { | ||||
@@ -319,7 +303,7 @@ public class Zip extends MatchingTask { | |||||
File basedir = scanner.getBasedir(); | File basedir = scanner.getBasedir(); | ||||
for (int j = 0; j < files.length; j++) { | for (int j = 0; j < files.length; j++) { | ||||
log("Adding file " + files[j] + " to fileset", | |||||
log("Adding file " + files[j] + " to fileset", | |||||
Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
ZipFileSet zf = new ZipFileSet(); | ZipFileSet zf = new ZipFileSet(); | ||||
zf.setSrc(new File(basedir, files[j])); | zf.setSrc(new File(basedir, files[j])); | ||||
@@ -348,9 +332,26 @@ public class Zip extends MatchingTask { | |||||
if (isUpToDate(scanners, zipFile)) { | if (isUpToDate(scanners, zipFile)) { | ||||
return; | return; | ||||
} | } | ||||
if (doUpdate) { | |||||
FileUtils fileUtils = FileUtils.newFileUtils(); | |||||
renamedFile = | |||||
fileUtils.createTempFile("zip", ".tmp", | |||||
fileUtils.getParentFile(zipFile)); | |||||
try { | |||||
if (!zipFile.renameTo(renamedFile)) { | |||||
throw new BuildException("Unable to rename old file " | |||||
+ "to temporary file"); | |||||
} | |||||
} catch (SecurityException e) { | |||||
throw new BuildException("Not allowed to rename old file " | |||||
+ "to temporary file"); | |||||
} | |||||
} | |||||
String action = doUpdate ? "Updating " : "Building "; | String action = doUpdate ? "Updating " : "Building "; | ||||
log(action + archiveType + ": " + zipFile.getAbsolutePath()); | log(action + archiveType + ": " + zipFile.getAbsolutePath()); | ||||
ZipOutputStream zOut = | ZipOutputStream zOut = | ||||
@@ -416,16 +417,16 @@ public class Zip extends MatchingTask { | |||||
} | } | ||||
} | } | ||||
} catch (IOException ioe) { | } catch (IOException ioe) { | ||||
String msg = "Problem creating " + archiveType + ": " | |||||
String msg = "Problem creating " + archiveType + ": " | |||||
+ ioe.getMessage(); | + ioe.getMessage(); | ||||
// delete a bogus ZIP file | |||||
if (!zipFile.delete()) { | |||||
// delete a bogus ZIP file (but only if it's not the original one) | |||||
if ((!doUpdate || renamedFile != null) && !zipFile.delete()) { | |||||
msg += " (and the archive is probably corrupt but I could not " | msg += " (and the archive is probably corrupt but I could not " | ||||
+ "delete it)"; | + "delete it)"; | ||||
} | } | ||||
if (doUpdate) { | |||||
if (doUpdate && renamedFile != null) { | |||||
if (!renamedFile.renameTo(zipFile)) { | if (!renamedFile.renameTo(zipFile)) { | ||||
msg += " (and I couldn't rename the temporary file " + | msg += " (and I couldn't rename the temporary file " + | ||||
renamedFile.getName() + " back)"; | renamedFile.getName() + " back)"; | ||||
@@ -453,7 +454,7 @@ public class Zip extends MatchingTask { | |||||
* <p>Ensure parent directories have been added as well. | * <p>Ensure parent directories have been added as well. | ||||
*/ | */ | ||||
protected void addFiles(FileScanner scanner, ZipOutputStream zOut, | protected void addFiles(FileScanner scanner, ZipOutputStream zOut, | ||||
String prefix, String fullpath) | |||||
String prefix, String fullpath) | |||||
throws IOException { | throws IOException { | ||||
if (prefix.length() > 0 && fullpath.length() > 0) { | if (prefix.length() > 0 && fullpath.length() > 0) { | ||||
@@ -504,7 +505,7 @@ public class Zip extends MatchingTask { | |||||
} | } | ||||
protected void addZipEntries(ZipFileSet fs, DirectoryScanner ds, | protected void addZipEntries(ZipFileSet fs, DirectoryScanner ds, | ||||
ZipOutputStream zOut, String prefix, | |||||
ZipOutputStream zOut, String prefix, | |||||
String fullpath) | String fullpath) | ||||
throws IOException { | throws IOException { | ||||
log("adding zip entries: " + fullpath, Project.MSG_VERBOSE); | log("adding zip entries: " + fullpath, Project.MSG_VERBOSE); | ||||
@@ -533,7 +534,7 @@ public class Zip extends MatchingTask { | |||||
} else { | } else { | ||||
addParentDirs(null, vPath, zOut, prefix); | addParentDirs(null, vPath, zOut, prefix); | ||||
if (!entry.isDirectory()) { | if (!entry.isDirectory()) { | ||||
zipFile(in, zOut, prefix + vPath, entry.getTime(), | |||||
zipFile(in, zOut, prefix + vPath, entry.getTime(), | |||||
zipSrc); | zipSrc); | ||||
} | } | ||||
} | } | ||||
@@ -569,7 +570,7 @@ public class Zip extends MatchingTask { | |||||
// In this case using java.util.zip will not work | // In this case using java.util.zip will not work | ||||
// because it does not permit a zero-entry archive. | // because it does not permit a zero-entry archive. | ||||
// Must create it manually. | // Must create it manually. | ||||
log("Note: creating empty " + archiveType + " archive " + zipFile, | |||||
log("Note: creating empty " + archiveType + " archive " + zipFile, | |||||
Project.MSG_INFO); | Project.MSG_INFO); | ||||
OutputStream os = null; | OutputStream os = null; | ||||
try { | try { | ||||
@@ -584,7 +585,7 @@ public class Zip extends MatchingTask { | |||||
os.write(empty); | os.write(empty); | ||||
} catch (IOException ioe) { | } catch (IOException ioe) { | ||||
throw new BuildException("Could not create empty ZIP archive " | throw new BuildException("Could not create empty ZIP archive " | ||||
+ "(" + ioe.getMessage() + ")", ioe, | |||||
+ "(" + ioe.getMessage() + ")", ioe, | |||||
location); | location); | ||||
} finally { | } finally { | ||||
if (os != null) { | if (os != null) { | ||||
@@ -607,7 +608,7 @@ public class Zip extends MatchingTask { | |||||
* already); false if archive creation should proceed | * already); false if archive creation should proceed | ||||
* @exception BuildException if it likes | * @exception BuildException if it likes | ||||
*/ | */ | ||||
protected boolean isUpToDate(FileScanner[] scanners, File zipFile) | |||||
protected boolean isUpToDate(FileScanner[] scanners, File zipFile) | |||||
throws BuildException { | throws BuildException { | ||||
String[][] fileNames = grabFileNames(scanners); | String[][] fileNames = grabFileNames(scanners); | ||||
File[] files = grabFiles(scanners, fileNames); | File[] files = grabFiles(scanners, fileNames); | ||||
@@ -627,7 +628,7 @@ public class Zip extends MatchingTask { | |||||
} else { | } else { | ||||
for (int i = 0; i < files.length; ++i) { | for (int i = 0; i < files.length; ++i) { | ||||
if (files[i].equals(zipFile)) { | if (files[i].equals(zipFile)) { | ||||
throw new BuildException("A zip file cannot include " | |||||
throw new BuildException("A zip file cannot include " | |||||
+ "itself", location); | + "itself", location); | ||||
} | } | ||||
} | } | ||||
@@ -716,12 +717,12 @@ public class Zip extends MatchingTask { | |||||
log(vPath + " already added, skipping", Project.MSG_INFO); | log(vPath + " already added, skipping", Project.MSG_INFO); | ||||
return; | return; | ||||
} else if (duplicate.equals("fail")) { | } else if (duplicate.equals("fail")) { | ||||
throw new BuildException("Duplicate file " + vPath | |||||
throw new BuildException("Duplicate file " + vPath | |||||
+ " was found and the duplicate " | + " was found and the duplicate " | ||||
+ "attribute is 'fail'."); | + "attribute is 'fail'."); | ||||
} else { | } else { | ||||
// duplicate equal to add, so we continue | // duplicate equal to add, so we continue | ||||
log("duplicate file " + vPath | |||||
log("duplicate file " + vPath | |||||
+ " found, adding.", Project.MSG_VERBOSE); | + " found, adding.", Project.MSG_VERBOSE); | ||||
} | } | ||||
} else { | } else { | ||||
@@ -791,7 +792,7 @@ public class Zip extends MatchingTask { | |||||
protected void zipFile(File file, ZipOutputStream zOut, String vPath) | protected void zipFile(File file, ZipOutputStream zOut, String vPath) | ||||
throws IOException { | throws IOException { | ||||
if (file.equals(zipFile)) { | if (file.equals(zipFile)) { | ||||
throw new BuildException("A zip file cannot include itself", | |||||
throw new BuildException("A zip file cannot include itself", | |||||
location); | location); | ||||
} | } | ||||
@@ -74,8 +74,8 @@ import org.apache.tools.ant.types.Commandline; | |||||
import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
/** | /** | ||||
* Change log task. | |||||
* The task will examine the output of cvs log and group related changes together. | |||||
* Examines the output of cvs log and group related changes together. | |||||
* | |||||
* It produces an XML output representing the list of changes. | * It produces an XML output representing the list of changes. | ||||
* <PRE> | * <PRE> | ||||
* <FONT color=#0000ff><!-- Root element --></FONT> | * <FONT color=#0000ff><!-- Root element --></FONT> | ||||
@@ -217,7 +217,7 @@ public class ChangeLogTask extends Task { | |||||
/** | /** | ||||
* Execute task | * Execute task | ||||
* | * | ||||
* @exception BuildException if something goes wrong executing the | |||||
* @exception BuildException if something goes wrong executing the | |||||
* cvs command | * cvs command | ||||
*/ | */ | ||||
public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
@@ -70,8 +70,8 @@ import java.io.UnsupportedEncodingException; | |||||
import java.util.Vector; | import java.util.Vector; | ||||
/** | /** | ||||
* Cvs tag diff. | |||||
* The task will examine the output of cvs rdiff between two tags. | |||||
* Examines the output of cvs rdiff between two tags. | |||||
* | |||||
* It produces an XML output representing the list of changes. | * It produces an XML output representing the list of changes. | ||||
* <PRE> | * <PRE> | ||||
* <!-- Root element --> | * <!-- Root element --> | ||||
@@ -61,7 +61,7 @@ checksum=org.apache.tools.ant.taskdefs.Checksum | |||||
waitfor=org.apache.tools.ant.taskdefs.WaitFor | waitfor=org.apache.tools.ant.taskdefs.WaitFor | ||||
input=org.apache.tools.ant.taskdefs.Input | input=org.apache.tools.ant.taskdefs.Input | ||||
loadfile=org.apache.tools.ant.taskdefs.LoadFile | loadfile=org.apache.tools.ant.taskdefs.LoadFile | ||||
manifest=org.apache.tools.ant.taskdefs.Manifest | |||||
manifest=org.apache.tools.ant.taskdefs.ManifestTask | |||||
loadproperties=org.apache.tools.ant.taskdefs.LoadProperties | loadproperties=org.apache.tools.ant.taskdefs.LoadProperties | ||||
basename=org.apache.tools.ant.taskdefs.Basename | basename=org.apache.tools.ant.taskdefs.Basename | ||||
dirname=org.apache.tools.ant.taskdefs.Dirname | dirname=org.apache.tools.ant.taskdefs.Dirname | ||||
@@ -119,12 +119,15 @@ stylebook=org.apache.tools.ant.taskdefs.optional.StyleBook | |||||
test=org.apache.tools.ant.taskdefs.optional.Test | test=org.apache.tools.ant.taskdefs.optional.Test | ||||
pvcs=org.apache.tools.ant.taskdefs.optional.pvcs.Pvcs | pvcs=org.apache.tools.ant.taskdefs.optional.pvcs.Pvcs | ||||
p4change=org.apache.tools.ant.taskdefs.optional.perforce.P4Change | p4change=org.apache.tools.ant.taskdefs.optional.perforce.P4Change | ||||
p4delete=org.apache.tools.ant.taskdefs.optional.perforce.P4Delete | |||||
p4label=org.apache.tools.ant.taskdefs.optional.perforce.P4Label | p4label=org.apache.tools.ant.taskdefs.optional.perforce.P4Label | ||||
p4have=org.apache.tools.ant.taskdefs.optional.perforce.P4Have | p4have=org.apache.tools.ant.taskdefs.optional.perforce.P4Have | ||||
p4sync=org.apache.tools.ant.taskdefs.optional.perforce.P4Sync | p4sync=org.apache.tools.ant.taskdefs.optional.perforce.P4Sync | ||||
p4edit=org.apache.tools.ant.taskdefs.optional.perforce.P4Edit | p4edit=org.apache.tools.ant.taskdefs.optional.perforce.P4Edit | ||||
p4submit=org.apache.tools.ant.taskdefs.optional.perforce.P4Submit | p4submit=org.apache.tools.ant.taskdefs.optional.perforce.P4Submit | ||||
p4counter=org.apache.tools.ant.taskdefs.optional.perforce.P4Counter | p4counter=org.apache.tools.ant.taskdefs.optional.perforce.P4Counter | ||||
p4revert=org.apache.tools.ant.taskdefs.optional.perforce.P4Revert | |||||
p4reopen=org.apache.tools.ant.taskdefs.optional.perforce.P4Reopen | |||||
javah=org.apache.tools.ant.taskdefs.optional.Javah | javah=org.apache.tools.ant.taskdefs.optional.Javah | ||||
ccupdate=org.apache.tools.ant.taskdefs.optional.clearcase.CCUpdate | ccupdate=org.apache.tools.ant.taskdefs.optional.clearcase.CCUpdate | ||||
cccheckout=org.apache.tools.ant.taskdefs.optional.clearcase.CCCheckout | cccheckout=org.apache.tools.ant.taskdefs.optional.clearcase.CCCheckout | ||||
@@ -70,7 +70,7 @@ import org.apache.tools.ant.types.CommandlineJava; | |||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
/** | /** | ||||
* ANTLR task. | |||||
* Invokes the ANTLR Translator generator on a grammar file. | |||||
* | * | ||||
* @author <a href="mailto:emeade@geekfarm.org">Erik Meade</a> | * @author <a href="mailto:emeade@geekfarm.org">Erik Meade</a> | ||||
* @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a> | * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a> | ||||
@@ -121,32 +121,38 @@ public class ANTLR extends Task { | |||||
commandline.setClassname("antlr.Tool"); | commandline.setClassname("antlr.Tool"); | ||||
} | } | ||||
/** | |||||
* The grammar file to process. | |||||
*/ | |||||
public void setTarget(File target) { | public void setTarget(File target) { | ||||
log("Setting target to: " + target.toString(), Project.MSG_VERBOSE); | log("Setting target to: " + target.toString(), Project.MSG_VERBOSE); | ||||
this.target = target; | this.target = target; | ||||
} | } | ||||
/** | |||||
* The directory to write the generated files to. | |||||
*/ | |||||
public void setOutputdirectory(File outputDirectory) { | public void setOutputdirectory(File outputDirectory) { | ||||
log("Setting output directory to: " + outputDirectory.toString(), Project.MSG_VERBOSE); | log("Setting output directory to: " + outputDirectory.toString(), Project.MSG_VERBOSE); | ||||
this.outputDirectory = outputDirectory; | this.outputDirectory = outputDirectory; | ||||
} | } | ||||
/** | /** | ||||
* Sets an optional super grammar file | |||||
* Sets an optional super grammar file. | |||||
*/ | */ | ||||
public void setGlib(String superGrammar) { | public void setGlib(String superGrammar) { | ||||
this.superGrammar = superGrammar; | this.superGrammar = superGrammar; | ||||
} | } | ||||
/** | /** | ||||
* Sets a flag to enable ParseView debugging | * Sets a flag to enable ParseView debugging | ||||
*/ | */ | ||||
public void setDebug(boolean enable) { | public void setDebug(boolean enable) { | ||||
debug = enable; | debug = enable; | ||||
} | } | ||||
/** | /** | ||||
* Sets a flag to emit html | |||||
* If true, emit html | |||||
*/ | */ | ||||
public void setHtml(boolean enable) { | public void setHtml(boolean enable) { | ||||
html = enable; | html = enable; | ||||
@@ -158,43 +164,46 @@ public class ANTLR extends Task { | |||||
public void setDiagnostic(boolean enable) { | public void setDiagnostic(boolean enable) { | ||||
diagnostic = enable; | diagnostic = enable; | ||||
} | } | ||||
/** | /** | ||||
* Sets a flag to enable all tracing | |||||
* If true, enables all tracing. | |||||
*/ | */ | ||||
public void setTrace(boolean enable) { | public void setTrace(boolean enable) { | ||||
trace = enable; | trace = enable; | ||||
} | } | ||||
/** | /** | ||||
* Sets a flag to enable parser tracing | |||||
* If true, enables parser tracing. | |||||
*/ | */ | ||||
public void setTraceParser(boolean enable) { | public void setTraceParser(boolean enable) { | ||||
traceParser = enable; | traceParser = enable; | ||||
} | } | ||||
/** | /** | ||||
* Sets a flag to allow the user to enable lexer tracing | |||||
* If true, enables lexer tracing. | |||||
*/ | */ | ||||
public void setTraceLexer(boolean enable) { | public void setTraceLexer(boolean enable) { | ||||
traceLexer = enable; | traceLexer = enable; | ||||
} | } | ||||
/** | /** | ||||
* Sets a flag to allow the user to enable tree walker tracing | * Sets a flag to allow the user to enable tree walker tracing | ||||
*/ | */ | ||||
public void setTraceTreeWalker(boolean enable) { | public void setTraceTreeWalker(boolean enable) { | ||||
traceTreeWalker = enable; | traceTreeWalker = enable; | ||||
} | } | ||||
// we are forced to fork ANTLR since there is a call | // we are forced to fork ANTLR since there is a call | ||||
// to System.exit() and there is nothing we can do | // to System.exit() and there is nothing we can do | ||||
// right now to avoid this. :-( (SBa) | // right now to avoid this. :-( (SBa) | ||||
// I'm not removing this method to keep backward compatibility | // I'm not removing this method to keep backward compatibility | ||||
/** | |||||
* @ant.attribute ignore="true" | |||||
*/ | |||||
public void setFork(boolean s) { | public void setFork(boolean s) { | ||||
//this.fork = s; | //this.fork = s; | ||||
} | } | ||||
/** | /** | ||||
* The working directory of the process | * The working directory of the process | ||||
*/ | */ | ||||
@@ -203,15 +212,15 @@ public class ANTLR extends Task { | |||||
} | } | ||||
/** | /** | ||||
* <code><classpath></code> allows classpath to be set | |||||
* because a directory might be given for Antlr debug... | |||||
* Adds a classpath to be set | |||||
* because a directory might be given for Antlr debug. | |||||
*/ | */ | ||||
public Path createClasspath() { | public Path createClasspath() { | ||||
return commandline.createClasspath(project).createPath(); | return commandline.createClasspath(project).createPath(); | ||||
} | } | ||||
/** | /** | ||||
* Create a new JVM argument. Ignored if no JVM is forked. | |||||
* Adds a new JVM argument. | |||||
* @return create a new JVM argument so that any argument can be passed to the JVM. | * @return create a new JVM argument so that any argument can be passed to the JVM. | ||||
* @see #setFork(boolean) | * @see #setFork(boolean) | ||||
*/ | */ | ||||
@@ -266,7 +275,7 @@ public class ANTLR extends Task { | |||||
if (target.lastModified() > getGeneratedFile().lastModified()) { | if (target.lastModified() > getGeneratedFile().lastModified()) { | ||||
populateAttributes(); | populateAttributes(); | ||||
commandline.createArgument().setValue(target.toString()); | commandline.createArgument().setValue(target.toString()); | ||||
log(commandline.describeCommand(), Project.MSG_VERBOSE); | log(commandline.describeCommand(), Project.MSG_VERBOSE); | ||||
int err = run(commandline.getCommandline()); | int err = run(commandline.getCommandline()); | ||||
if (err == 1) { | if (err == 1) { | ||||
@@ -312,12 +321,12 @@ public class ANTLR extends Task { | |||||
if (target == null || !target.isFile()) { | if (target == null || !target.isFile()) { | ||||
throw new BuildException("Invalid target: " + target); | throw new BuildException("Invalid target: " + target); | ||||
} | } | ||||
// validate the superGrammar file | // validate the superGrammar file | ||||
if (superGrammar != null && !new File(superGrammar).isFile()) { | if (superGrammar != null && !new File(superGrammar).isFile()) { | ||||
throw new BuildException("Invalid super grammar file: " + superGrammar); | throw new BuildException("Invalid super grammar file: " + superGrammar); | ||||
} | } | ||||
// if no output directory is specified, used the target's directory | // if no output directory is specified, used the target's directory | ||||
if (outputDirectory == null) { | if (outputDirectory == null) { | ||||
String fileName = target.toString(); | String fileName = target.toString(); | ||||
@@ -66,6 +66,8 @@ import org.w3c.dom.Element; | |||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
import java.util.Enumeration; | |||||
import java.util.Hashtable; | |||||
import java.util.Properties; | import java.util.Properties; | ||||
import java.io.ByteArrayOutputStream; | import java.io.ByteArrayOutputStream; | ||||
@@ -77,12 +77,12 @@ import org.apache.tools.ant.types.Path; | |||||
import org.apache.tools.ant.types.Reference; | import org.apache.tools.ant.types.Reference; | ||||
/** | /** | ||||
* Instruments Java classes with <a href="http://www.reliable-systems.com/tools/">iContract</a> | |||||
* DBC preprocessor. | |||||
* Instruments Java classes with iContract DBC preprocessor. | |||||
* <br/> | * <br/> | ||||
* The task can generate a properties file for <a href="http://hjem.sol.no/hellesoy/icontrol.html">iControl</a>, | * The task can generate a properties file for <a href="http://hjem.sol.no/hellesoy/icontrol.html">iControl</a>, | ||||
* a graphical user interface that lets you turn on/off assertions. iControl generates a control file that you can refer to | * a graphical user interface that lets you turn on/off assertions. iControl generates a control file that you can refer to | ||||
* from this task using the controlfile attribute. | * from this task using the controlfile attribute. | ||||
* iContract is at <a href="http://www.reliable-systems.com/tools/">http://www.reliable-systems.com/tools/</a> | |||||
* <p/> | * <p/> | ||||
* Thanks to Rainer Schmitz for enhancements and comments. | * Thanks to Rainer Schmitz for enhancements and comments. | ||||
* | * | ||||
@@ -226,12 +226,6 @@ public class IContract extends MatchingTask { | |||||
private static final String ICONTROL_PROPERTIES_HEADER = | private static final String ICONTROL_PROPERTIES_HEADER = | ||||
" You might want to set classRoot to point to your normal compilation class root directory."; | " You might want to set classRoot to point to your normal compilation class root directory."; | ||||
private static final String ICONTROL_PROPERTIES_MESSAGE = | |||||
"You should probably modify icontrol.properties' classRoot to where comiled (uninstrumented) classes go."; | |||||
/** \ on windows, / on linux/unix */ | |||||
private static final String ps = System.getProperty("path.separator"); | |||||
/** compiler to use for instrumenation */ | /** compiler to use for instrumenation */ | ||||
private String icCompiler = "javac"; | private String icCompiler = "javac"; | ||||
@@ -274,9 +268,6 @@ public class IContract extends MatchingTask { | |||||
/** The -q option */ | /** The -q option */ | ||||
private boolean quiet = false; | private boolean quiet = false; | ||||
/** Indicates whether or not to use internal compilation */ | |||||
private boolean internalcompilation = false; | |||||
/** The -m option */ | /** The -m option */ | ||||
private File controlFile = null; | private File controlFile = null; | ||||
@@ -305,9 +296,8 @@ public class IContract extends MatchingTask { | |||||
/** Regular compilation class root */ | /** Regular compilation class root */ | ||||
private File classDir = null; | private File classDir = null; | ||||
/** | /** | ||||
* Sets the source directory | |||||
* Sets the source directory. | |||||
* | * | ||||
* @param srcDir the source directory | * @param srcDir the source directory | ||||
*/ | */ | ||||
@@ -317,9 +307,9 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Sets the class directory (uninstrumented classes) | |||||
* Sets the class directory (uninstrumented classes). | |||||
* | * | ||||
* @param srcDir the source directory | |||||
* @param classDir the source directory | |||||
*/ | */ | ||||
public void setClassdir(File classDir) { | public void setClassdir(File classDir) { | ||||
this.classDir = classDir; | this.classDir = classDir; | ||||
@@ -327,7 +317,7 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Sets the instrumentation directory | |||||
* Sets the instrumentation directory. | |||||
* | * | ||||
* @param instrumentDir the source directory | * @param instrumentDir the source directory | ||||
*/ | */ | ||||
@@ -340,7 +330,7 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Sets the build directory for instrumented classes | |||||
* Sets the build directory for instrumented classes. | |||||
* | * | ||||
* @param buildDir the build directory | * @param buildDir the build directory | ||||
*/ | */ | ||||
@@ -350,7 +340,7 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Sets the build directory for repository classes | |||||
* Sets the build directory for repository classes. | |||||
* | * | ||||
* @param repositoryDir the source directory | * @param repositoryDir the source directory | ||||
*/ | */ | ||||
@@ -363,9 +353,9 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Sets the build directory for instrumented classes | |||||
* Sets the build directory for instrumented classes. | |||||
* | * | ||||
* @param buildDir the build directory | |||||
* @param repBuildDir the build directory | |||||
*/ | */ | ||||
public void setRepbuilddir(File repBuildDir) { | public void setRepbuilddir(File repBuildDir) { | ||||
this.repBuildDir = repBuildDir; | this.repBuildDir = repBuildDir; | ||||
@@ -373,7 +363,7 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Turns on/off precondition instrumentation | |||||
* Turns on/off precondition instrumentation. | |||||
* | * | ||||
* @param pre true turns it on | * @param pre true turns it on | ||||
*/ | */ | ||||
@@ -384,7 +374,7 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Turns on/off postcondition instrumentation | |||||
* Turns on/off postcondition instrumentation. | |||||
* | * | ||||
* @param post true turns it on | * @param post true turns it on | ||||
*/ | */ | ||||
@@ -395,7 +385,7 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Turns on/off invariant instrumentation | |||||
* Turns on/off invariant instrumentation. | |||||
* | * | ||||
* @param invariant true turns it on | * @param invariant true turns it on | ||||
*/ | */ | ||||
@@ -406,7 +396,7 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Sets the Throwable (Exception) to be thrown on assertion violation | |||||
* Sets the Throwable (Exception) to be thrown on assertion violation. | |||||
* | * | ||||
* @param clazz the fully qualified Throwable class name | * @param clazz the fully qualified Throwable class name | ||||
*/ | */ | ||||
@@ -474,9 +464,12 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Creates a nested classpath element | |||||
* Sets the classpath. | |||||
* | * | ||||
* @return the nested classpath element | * @return the nested classpath element | ||||
* @todo this overwrites the classpath so only one | |||||
* effective classpath element would work. This | |||||
* is not how we do this elsewhere. | |||||
*/ | */ | ||||
public Path createClasspath() { | public Path createClasspath() { | ||||
if (classpath == null) { | if (classpath == null) { | ||||
@@ -497,7 +490,7 @@ public class IContract extends MatchingTask { | |||||
/** | /** | ||||
* Decides whether or not to update iControl properties file | |||||
* If true, updates iControl properties file | |||||
* | * | ||||
* @param updateIcontrol true if iControl properties file should be | * @param updateIcontrol true if iControl properties file should be | ||||
* updated | * updated | ||||
@@ -71,8 +71,9 @@ import java.util.StringTokenizer; | |||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
/** | /** | ||||
* Task to generate JNI header files using javah. This task can take the following | |||||
* arguments: | |||||
* Generates JNI header files using javah. | |||||
* | |||||
* This task can take the following arguments: | |||||
* <ul> | * <ul> | ||||
* <li>classname - the fully-qualified name of a class</li> | * <li>classname - the fully-qualified name of a class</li> | ||||
* <li>outputFile - Concatenates the resulting header or source files for all | * <li>outputFile - Concatenates the resulting header or source files for all | ||||
@@ -118,10 +119,16 @@ public class Javah extends Task { | |||||
//private Path extdirs; | //private Path extdirs; | ||||
private static String lSep = System.getProperty("line.separator"); | private static String lSep = System.getProperty("line.separator"); | ||||
/** | |||||
* the fully-qualified name of the class (or classes, separated by commas). | |||||
*/ | |||||
public void setClass(String cls) { | public void setClass(String cls) { | ||||
this.cls = cls; | this.cls = cls; | ||||
} | } | ||||
/** | |||||
* Adds class to process. | |||||
*/ | |||||
public ClassArgument createClass() { | public ClassArgument createClass() { | ||||
ClassArgument ga = new ClassArgument(); | ClassArgument ga = new ClassArgument(); | ||||
classes.addElement(ga); | classes.addElement(ga); | ||||
@@ -152,6 +159,9 @@ public class Javah extends Task { | |||||
this.destDir = destDir; | this.destDir = destDir; | ||||
} | } | ||||
/** | |||||
* the classpath to use. | |||||
*/ | |||||
public void setClasspath(Path src) { | public void setClasspath(Path src) { | ||||
if (classpath == null) { | if (classpath == null) { | ||||
classpath = src; | classpath = src; | ||||
@@ -159,6 +169,10 @@ public class Javah extends Task { | |||||
classpath.append(src); | classpath.append(src); | ||||
} | } | ||||
} | } | ||||
/** | |||||
* Path to use for classpath. | |||||
*/ | |||||
public Path createClasspath() { | public Path createClasspath() { | ||||
if (classpath == null) { | if (classpath == null) { | ||||
classpath = new Path(project); | classpath = new Path(project); | ||||
@@ -167,12 +181,16 @@ public class Javah extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Adds a reference to a CLASSPATH defined elsewhere. | |||||
* Adds a reference to a classpath defined elsewhere. | |||||
* @todo this needs to be documented in the HTML docs | |||||
*/ | */ | ||||
public void setClasspathRef(Reference r) { | public void setClasspathRef(Reference r) { | ||||
createClasspath().setRefid(r); | createClasspath().setRefid(r); | ||||
} | } | ||||
/** | |||||
* location of bootstrap class files. | |||||
*/ | |||||
public void setBootclasspath(Path src) { | public void setBootclasspath(Path src) { | ||||
if (bootclasspath == null) { | if (bootclasspath == null) { | ||||
bootclasspath = src; | bootclasspath = src; | ||||
@@ -180,6 +198,10 @@ public class Javah extends Task { | |||||
bootclasspath.append(src); | bootclasspath.append(src); | ||||
} | } | ||||
} | } | ||||
/** | |||||
* Adds path to bootstrap class files. | |||||
*/ | |||||
public Path createBootclasspath() { | public Path createBootclasspath() { | ||||
if (bootclasspath == null) { | if (bootclasspath == null) { | ||||
bootclasspath = new Path(project); | bootclasspath = new Path(project); | ||||
@@ -188,7 +210,8 @@ public class Javah extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Adds a reference to a CLASSPATH defined elsewhere. | |||||
* Adds a reference to a classpath defined elsewhere. | |||||
* @todo this needs to be documented in the HTML | |||||
*/ | */ | ||||
public void setBootClasspathRef(Reference r) { | public void setBootClasspathRef(Reference r) { | ||||
createBootclasspath().setRefid(r); | createBootclasspath().setRefid(r); | ||||
@@ -217,35 +240,39 @@ public class Javah extends Task { | |||||
//} | //} | ||||
/** | /** | ||||
* Set the output file name. | |||||
* Concatenates the resulting header or source files for all | |||||
* the classes listed into this file. | |||||
*/ | */ | ||||
public void setOutputFile(File outputFile) { | public void setOutputFile(File outputFile) { | ||||
this.outputFile = outputFile; | this.outputFile = outputFile; | ||||
} | } | ||||
/** | /** | ||||
* Set the force-write flag. | |||||
* If true, output files should always be written (JDK1.2 only). | |||||
*/ | */ | ||||
public void setForce(boolean force) { | public void setForce(boolean force) { | ||||
this.force = force; | this.force = force; | ||||
} | } | ||||
/** | /** | ||||
* Set the old flag. | |||||
* If true, specifies that old JDK1.0-style header files should be | |||||
* generated. | |||||
* (otherwise output file contain JNI-style native method function prototypes) (JDK1.2 only) | |||||
*/ | */ | ||||
public void setOld(boolean old) { | public void setOld(boolean old) { | ||||
this.old = old; | this.old = old; | ||||
} | } | ||||
/** | /** | ||||
* Set the stubs flag. | |||||
* If true, generate C declarations from the Java object file (used with old). | |||||
*/ | */ | ||||
public void setStubs(boolean stubs) { | public void setStubs(boolean stubs) { | ||||
this.stubs = stubs; | this.stubs = stubs; | ||||
} | } | ||||
/** | /** | ||||
* Set the verbose flag. | |||||
* If true, causes Javah to print a message concerning | |||||
* the status of the generated files. | |||||
*/ | */ | ||||
public void setVerbose(boolean verbose) { | public void setVerbose(boolean verbose) { | ||||
this.verbose = verbose; | this.verbose = verbose; | ||||
@@ -67,7 +67,7 @@ import org.apache.tools.ant.util.SourceFileScanner; | |||||
import java.io.File; | import java.io.File; | ||||
/** | /** | ||||
* Convert files from native encodings to ascii. | |||||
* Converts files from native encodings to ASCII. | |||||
* | * | ||||
* @author <a href="asudell@acm.org">Drew Sudell</a> | * @author <a href="asudell@acm.org">Drew Sudell</a> | ||||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | ||||
@@ -73,7 +73,8 @@ import org.apache.tools.ant.taskdefs.MatchingTask; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | import org.apache.tools.ant.types.EnumeratedAttribute; | ||||
/** | /** | ||||
* Task to compile NetRexx source files. This task can take the following | |||||
* Compiles NetRexx source files. | |||||
* This task can take the following | |||||
* arguments: | * arguments: | ||||
* <ul> | * <ul> | ||||
* <li>binary</li> | * <li>binary</li> | ||||
@@ -517,9 +518,8 @@ public class NetRexxC extends MatchingTask { | |||||
/** | /** | ||||
* Whether the task should suppress the "FooException is in SIGNALS list | |||||
* but is not signalled within the method", which is sometimes rather | |||||
* useless. The warning is logged as verbose message, though. | |||||
* Tells whether we should filter out any deprecation-messages | |||||
* of the compiler out. | |||||
*/ | */ | ||||
public void setSuppressDeprecation(boolean suppressDeprecation) { | public void setSuppressDeprecation(boolean suppressDeprecation) { | ||||
this.suppressDeprecation = suppressDeprecation; | this.suppressDeprecation = suppressDeprecation; | ||||
@@ -78,10 +78,9 @@ import java.text.ParseException; | |||||
import java.text.DecimalFormat; | import java.text.DecimalFormat; | ||||
/** | /** | ||||
*PropertyFile task uses java.util.Properties to modify integer, String and | |||||
*Date settings in a property file.<p> | |||||
* | |||||
*Modifies settings in a property file. | |||||
* | * | ||||
* <p> | |||||
*The following is an example of its usage: | *The following is an example of its usage: | ||||
* <ul><target name="setState"><br> | * <ul><target name="setState"><br> | ||||
* <ul><property<br> | * <ul><property<br> | ||||
@@ -240,10 +239,16 @@ public class PropertyFile extends Task { | |||||
} | } | ||||
} | } | ||||
/** | |||||
* Location of the property file to be edited; required. | |||||
*/ | |||||
public void setFile(File file) { | public void setFile(File file) { | ||||
propertyfile = file; | propertyfile = file; | ||||
} | } | ||||
/** | |||||
* optional header comment for the file | |||||
*/ | |||||
public void setComment(String hdr) { | public void setComment(String hdr) { | ||||
comment = hdr; | comment = hdr; | ||||
} | } | ||||
@@ -280,8 +285,9 @@ public class PropertyFile extends Task { | |||||
} | } | ||||
} | } | ||||
/* | |||||
/** | |||||
* Returns whether the given parameter has been defined. | * Returns whether the given parameter has been defined. | ||||
* @todo IDEA is saying this method is never used - remove? | |||||
*/ | */ | ||||
private boolean checkParam(String param) { | private boolean checkParam(String param) { | ||||
return !((param == null) || (param.equals("null"))); | return !((param == null) || (param.equals("null"))); | ||||
@@ -308,27 +314,69 @@ public class PropertyFile extends Task { | |||||
private String pattern = null; | private String pattern = null; | ||||
private int field = Calendar.DATE; | private int field = Calendar.DATE; | ||||
/** | |||||
* Name of the property name/value pair | |||||
*/ | |||||
public void setKey(String value) { | public void setKey(String value) { | ||||
this.key = value; | this.key = value; | ||||
} | } | ||||
/** | |||||
* Value to set (=), to add (+) or subtract (-) | |||||
*/ | |||||
public void setValue(String value) { | public void setValue(String value) { | ||||
this.value = value; | this.value = value; | ||||
} | } | ||||
/** | |||||
* operation to apply. | |||||
* "+" or "=" | |||||
*(default) for all datatypes; "-" for date and int only)\. | |||||
*/ | |||||
public void setOperation(Operation value) { | public void setOperation(Operation value) { | ||||
this.operation = Operation.toOperation(value.getValue()); | this.operation = Operation.toOperation(value.getValue()); | ||||
} | } | ||||
/** | |||||
* Regard the value as : int, date or string (default) | |||||
*/ | |||||
public void setType(Type value) { | public void setType(Type value) { | ||||
this.type = Type.toType(value.getValue()); | this.type = Type.toType(value.getValue()); | ||||
} | } | ||||
/** | |||||
* Initial value to set for a property if it is not | |||||
* already defined in the property file. | |||||
* For type date, an additional keyword is allowed: "now" | |||||
*/ | |||||
public void setDefault(String value) { | public void setDefault(String value) { | ||||
this.defaultValue = value; | this.defaultValue = value; | ||||
} | } | ||||
/** | |||||
* For int and date type only. If present, Values will | |||||
* be parsed and formatted accordingly. | |||||
*/ | |||||
public void setPattern(String value) { | public void setPattern(String value) { | ||||
this.pattern = value; | this.pattern = value; | ||||
} | } | ||||
/** | /** | ||||
* @since 1.15, Ant 1.5 | |||||
* The unit of the value to be applied to date +/- operations. | |||||
* Valid Values are: | |||||
* <ul> | |||||
* <li>millisecond</li> | |||||
* <li>second</li> | |||||
* <li>minute</li> | |||||
* <li>hour</li> | |||||
* <li>day (default)</li> | |||||
* <li>week</li> | |||||
* <li>month</li> | |||||
* <li>year</li> | |||||
* </ul> | |||||
* This only applies to date types using a +/- operation. | |||||
* @since Ant 1.5 | |||||
*/ | */ | ||||
public void setUnit(PropertyFile.Unit unit) { | public void setUnit(PropertyFile.Unit unit) { | ||||
field = unit.getCalendarField(); | field = unit.getCalendarField(); | ||||
@@ -598,8 +646,8 @@ public class PropertyFile extends Task { | |||||
/** | /** | ||||
* Borrowed from Tstamp | * Borrowed from Tstamp | ||||
* | |||||
* @since 1.15, Ant 1.5 | |||||
* @todo share all this time stuff across many tasks as a datetime datatype | |||||
* @since Ant 1.5 | |||||
*/ | */ | ||||
public static class Unit extends EnumeratedAttribute { | public static class Unit extends EnumeratedAttribute { | ||||
@@ -97,12 +97,17 @@ public class RenameExtensions extends MatchingTask { | |||||
globType.setValue("glob"); | globType.setValue("glob"); | ||||
} | } | ||||
/** store fromExtension **/ | |||||
/** | |||||
* The string that files must end in to be renamed | |||||
**/ | |||||
public void setFromExtension(String from) { | public void setFromExtension(String from) { | ||||
fromExtension = from; | fromExtension = from; | ||||
} | } | ||||
/** store toExtension **/ | |||||
/** | |||||
* The string that renamed files will end with on | |||||
* completion | |||||
*/ | |||||
public void setToExtension(String to) { | public void setToExtension(String to) { | ||||
toExtension = to; | toExtension = to; | ||||
} | } | ||||