diff --git a/src/main/org/apache/tools/ant/AntClassLoader.java b/src/main/org/apache/tools/ant/AntClassLoader.java
index f1878208f..21a0237a9 100644
--- a/src/main/org/apache/tools/ant/AntClassLoader.java
+++ b/src/main/org/apache/tools/ant/AntClassLoader.java
@@ -115,7 +115,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
private URL nextResource;
/**
- * Construct a new enumeration of resources of the given name found
+ * Constructs a new enumeration of resources of the given name found
* within this class loader's classpath.
*
* @param name the name of the resource to search for.
@@ -140,7 +140,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
/**
* Returns the next resource in the enumeration.
*
- * @return the next resource in the enumeration.
+ * @return the next resource in the enumeration
*/
public Object nextElement() {
URL ret = this.nextResource;
@@ -211,19 +211,20 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
private Vector loaderPackages = new Vector();
/**
- * This flag indicates that the classloader will ignore the base
- * classloader if it can't find a class. This is set by the
- * {@link #setIsolated(boolean) setIsolated} method.
+ * Whether or not this classloader will ignore the base
+ * classloader if it can't find a class.
+ *
+ * @see #setIsolated(boolean)
*/
private boolean ignoreBase = false;
/**
- * The parent class loader, if one is given or can be determined
+ * The parent class loader, if one is given or can be determined.
*/
private ClassLoader parent = null;
/**
- * A hashtable of zip files opened by the classloader (File to ZipFile)
+ * A hashtable of zip files opened by the classloader (File to ZipFile).
*/
private Hashtable zipFiles = new Hashtable();
@@ -277,11 +278,11 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
/**
- * Create a classloader for the given project using the classpath given.
+ * Creates a classloader for the given project using the classpath given.
*
- * @param project the project to which this classloader is to belong.
+ * @param project The project to which this classloader is to belong.
* Must not be null
.
- * @param classpath the classpath to use to load the classes. This
+ * @param classpath The classpath to use to load the classes. This
* is combined with the system classpath in a manner
* determined by the value of ${build.sysclasspath}.
* May be null
, in which case no path
@@ -306,20 +307,20 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Create a classloader for the given project using the classpath given.
+ * Creates a classloader for the given project using the classpath given.
*
- * @param parent the parent classloader to which unsatisfied loading
+ * @param parent The parent classloader to which unsatisfied loading
* attempts are delegated. May be null
,
* in which case the classloader which loaded this
* class is used as the parent.
- * @param project the project to which this classloader is to belong.
+ * @param project The project to which this classloader is to belong.
* Must not be null
.
* @param classpath the classpath to use to load the classes.
* May be null
, in which case no path
* elements are set up to start with.
- * @param parentFirst if true
indicates that the parent
- * classloader should be consulted before trying to load
- * the a class through this loader.
+ * @param parentFirst If true
, indicates that the parent
+ * classloader should be consulted before trying to
+ * load the a class through this loader.
*/
public AntClassLoader(ClassLoader parent, Project project, Path classpath,
boolean parentFirst) {
@@ -334,15 +335,14 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
/**
- * Create a classloader for the given project using the classpath given.
+ * Creates a classloader for the given project using the classpath given.
*
- * @param project the project to which this classloader is to belong.
+ * @param project The project to which this classloader is to belong.
* Must not be null
.
- * @param classpath the classpath to use to load the classes. May be
+ * @param classpath The classpath to use to load the classes. May be
* null
, in which case no path
* elements are set up to start with.
- *
- * @param parentFirst if true
indicates that the parent
+ * @param parentFirst If true
, indicates that the parent
* classloader should be consulted before trying to
* load the a class through this loader.
*/
@@ -351,16 +351,16 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Create an empty class loader. The classloader should be configured
+ * Creates an empty class loader. The classloader should be configured
* with path elements to specify where the loader is to look for
* classes.
*
- * @param parent the parent classloader to which unsatisfied loading
+ * @param parent The parent classloader to which unsatisfied loading
* attempts are delegated. May be null
,
* in which case the classloader which loaded this
* class is used as the parent.
- * @param parentFirst if true
indicates that the parent
- * classloader should be consulted before trying to
+ * @param parentFirst If true
, indicates that the parent
+ * classloader should be consulted before trying to
* load the a class through this loader.
*/
public AntClassLoader(ClassLoader parent, boolean parentFirst) {
@@ -375,10 +375,12 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Log a message through the project object if one has been provided.
+ * Logs a message through the project object if one has been provided.
*
- * @param message the message to log
- * @param priority the logging priority of the message
+ * @param message The message to log.
+ * Should not be null
.
+ *
+ * @param priority The logging priority of the message.
*/
protected void log(String message, int priority) {
if (project != null) {
@@ -390,7 +392,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Set the current thread's context loader to this classloader, storing
+ * Sets the current thread's context loader to this classloader, storing
* the current loader value for later resetting.
*/
public void setThreadContextLoader() {
@@ -416,7 +418,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Reset the current thread's context loader to its original value.
+ * Resets the current thread's context loader to its original value.
*/
public void resetThreadContextLoader() {
if (isContextLoaderSaved &&
@@ -439,10 +441,13 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
/**
- * Add an element to the classpath to be searched.
+ * Adds an element to the classpath to be searched.
*
- * @param pathElement the path element to add. Must not be
+ * @param pathElement The path element to add. Must not be
* null
.
+ *
+ * @exception BuildException if the given path element cannot be resolved
+ * against the project.
*/
public void addPathElement(String pathElement) throws BuildException {
File pathComponent
@@ -452,12 +457,12 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Get the CLASSPATH this classloader will consult.
+ * Returns the classpath this classloader will consult.
*
* @return the classpath used for this classloader, with elements
* separated by the path separator for the system.
*/
- public String getClasspath() {
+ public String getClasspath(){
StringBuffer sb = new StringBuffer();
boolean firstPass = true;
Enumeration enum = pathComponents.elements();
@@ -473,23 +478,24 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Set whether this classloader should run in isolated mode. In
+ * Sets whether this classloader should run in isolated mode. In
* isolated mode, classes not found on the given classpath will
* not be referred to the parent class loader but will cause a
* ClassNotFoundException.
*
- * @param isolated whether this classloader should run in isolated mode
- * or not.
+ * @param isolated Whether or not this classloader should run in
+ * isolated mode.
*/
public void setIsolated(boolean isolated) {
ignoreBase = isolated;
}
/**
- * Force initialization of a class in a JDK 1.1 compatible, albeit hacky
+ * Forces initialization of a class in a JDK 1.1 compatible, albeit hacky
* way.
*
- * @param theClass the class to initialize. Must not be null
.
+ * @param theClass The class to initialize.
+ * Must not be null
.
*/
public static void initializeClass(Class theClass) {
// ***HACK*** We ask the VM to create an instance
@@ -525,44 +531,45 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Add a package root to the list of packages which must be loaded on the
+ * Adds a package root to the list of packages which must be loaded on the
* parent loader.
*
* All subpackages are also included.
*
- * @param packageRoot the root of all packages to be included. Should not
- * be null
.
+ * @param packageRoot The root of all packages to be included.
+ * Should not be null
.
*/
public void addSystemPackageRoot(String packageRoot) {
systemPackages.addElement(packageRoot + ".");
}
/**
- * Add a package root to the list of packages which must be loaded using
+ * Adds a package root to the list of packages which must be loaded using
* this loader.
*
* All subpackages are also included.
*
- * @param packageRoot the root of all packages to be included. Should not
- * be null
.
+ * @param packageRoot The root of all packages to be included.
+ * Should not be null
.
*/
public void addLoaderPackageRoot(String packageRoot) {
loaderPackages.addElement(packageRoot + ".");
}
/**
- * Load a class through this class loader even if that class is available
+ * Loads a class through this class loader even if that class is available
* on the parent classpath.
*
* This ensures that any classes which are loaded by the returned class
* will use this classloader.
*
- * @param classname the classname to be loaded. Must not be null
.
+ * @param classname The name of the class to be loaded.
+ * Must not be null
.
*
* @return the required Class object
*
* @exception ClassNotFoundException if the requested class does not exist
- * on this loader's classpath.
+ * on this loader's classpath.
*/
public Class forceLoadClass(String classname) throws ClassNotFoundException {
log("force loading " + classname, Project.MSG_DEBUG);
@@ -577,15 +584,15 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Load a class through this class loader but defer to the parent class
+ * Loads a class through this class loader but defer to the parent class
* loader.
*
* This ensures that instances of the returned class will be compatible
* with instances which which have already been loaded on the parent
* loader.
*
- * @param classname the classname to be loaded. Must not be
- * null
.
+ * @param classname The name of the class to be loaded.
+ * Must not be null
.
*
* @return the required Class object
*
@@ -605,9 +612,9 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Get a stream to read the requested resource name.
+ * Returns a stream to read the requested resource name.
*
- * @param name the name of the resource for which a stream is required.
+ * @param name The name of the resource for which a stream is required.
* Must not be null
.
*
* @return a stream to the required resource or null
if the
@@ -654,9 +661,9 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Get a stream to read the requested resource name from this loader.
+ * Returns a stream to read the requested resource name from this loader.
*
- * @param name the name of the resource for which a stream is required.
+ * @param name The name of the resource for which a stream is required.
* Must not be null
.
*
* @return a stream to the required resource or null
if
@@ -675,14 +682,14 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Find a system resource (which should be loaded from the parent
+ * Finds a system resource (which should be loaded from the parent
* classloader).
*
- * @param name the name of the system resource to load. Must not be
- * null
.
+ * @param name The name of the system resource to load.
+ * Must not be null
.
*
* @return a stream to the named resource, or null
if
- * the resource cannot be found.
+ * the resource cannot be found.
*/
private InputStream loadBaseResource(String name) {
if (parent == null) {
@@ -694,16 +701,16 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Get an inputstream to a given resource in the given file which may
+ * Returns an inputstream to a given resource in the given file which may
* either be a directory or a zip file.
*
* @param file the file (directory or jar) in which to search for the
* resource. Must not be null
.
- * @param resourceName the name of the resource for which a stream is
+ * @param resourceName The name of the resource for which a stream is
* required. Must not be null
.
*
* @return a stream to the required resource or null
if
- * the resource cannot be found in the given file.
+ * the resource cannot be found in the given file.
*/
private InputStream getResourceStream(File file, String resourceName) {
try {
@@ -740,16 +747,16 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Get whether or not the parent classloader should be checked for
+ * Tests whether or not the parent classloader should be checked for
* a resource before this one. If the resource matches both the
- * "use parent classloader first" and the "use this classloader first"
+ * "use parent classloader first" and the "use this classloader first"
* lists, the latter takes priority.
*
- * @param resourceName the name of the resource to check. Must not be
- * null
.
+ * @param resourceName The name of the resource to check.
+ * Must not be null
.
*
* @return whether or not the parent classloader should be checked for a
- * resource before this one is.
+ * resource before this one is.
*/
private boolean isParentFirst(String resourceName) {
// default to the global setting and then see
@@ -784,7 +791,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
* some data (images, audio, text, etc) that can be accessed by class
* code in a way that is independent of the location of the code.
*
- * @param name the name of the resource for which a stream is required.
+ * @param name The name of the resource for which a stream is required.
* Must not be null
.
*
* @return a URL for reading the resource, or null
if the
@@ -838,9 +845,9 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
* Returns an enumeration of URLs representing all the resources with the
* given name by searching the class loader's classpath.
*
- * @param name the resource name to search for. Must not be
- * null
.
- * @return an enumeration of URLs for the resources.
+ * @param name The resource name to search for.
+ * Must not be null
.
+ * @return an enumeration of URLs for the resources
* @exception IOException if I/O errors occurs (can't happen)
*/
protected Enumeration findResources(String name) throws IOException {
@@ -848,16 +855,16 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Get an inputstream to a given resource in the given file which may
+ * Returns an inputstream to a given resource in the given file which may
* either be a directory or a zip file.
*
- * @param file the file (directory or jar) in which to search for
+ * @param file The file (directory or jar) in which to search for
* the resource. Must not be null
.
- * @param resourceName the name of the resource for which a stream
+ * @param resourceName The name of the resource for which a stream
* is required. Must not be null
.
*
* @return a stream to the required resource or null
if the
- * resource cannot be found in the given file object
+ * resource cannot be found in the given file object.
*/
private URL getResourceURL(File file, String resourceName) {
try {
@@ -901,7 +908,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Load a class with this class loader.
+ * Loads a class with this class loader.
*
* This class attempts to load the class in an order determined by whether
* or not the class matches the system/loader package lists, with the
@@ -909,7 +916,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
* mode, failure to load the class in this loader will result in a
* ClassNotFoundException.
*
- * @param classname the name of the class to be loaded.
+ * @param classname The name of the class to be loaded.
* Must not be null
.
* @param resolve true
if all classes upon which this class
* depends are to be loaded.
@@ -959,10 +966,10 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Convert the class dot notation to a filesystem equivalent for
+ * Converts the class dot notation to a filesystem equivalent for
* searching purposes.
*
- * @param classname the class name in dot format (eg java.lang.Integer).
+ * @param classname The class name in dot format (eg java.lang.Integer).
* Must not be null
.
*
* @return the classname in filesystem format (eg java/lang/Integer.class)
@@ -972,12 +979,12 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Read a class definition from a stream.
+ * Reads a class definition from a stream.
*
- * @param stream the stream from which the class is to be read.
- * Must not be null
.
- * @param classname the class name of the class in the stream.
+ * @param stream The stream from which the class is to be read.
* Must not be null
.
+ * @param classname The name of the class in the stream.
+ * Must not be null
.
*
* @return the Class object read from the stream.
*
@@ -1027,15 +1034,15 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Search for and load a class on the classpath of this class loader.
+ * Searches for and load a class on the classpath of this class loader.
*
- * @param name the name of the class to be loaded. Must not be
+ * @param name The name of the class to be loaded. Must not be
* null
.
*
* @return the required Class object
*
* @exception ClassNotFoundException if the requested class does not exist
- * on this loader's classpath.
+ * on this loader's classpath.
*/
public Class findClass(String name) throws ClassNotFoundException {
log("Finding class " + name, Project.MSG_DEBUG);
@@ -1045,9 +1052,9 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
/**
- * Find a class on the given classpath.
+ * Finds a class on the given classpath.
*
- * @param name the name of the class to be loaded. Must not be
+ * @param name The name of the class to be loaded. Must not be
* null
.
*
* @return the required Class object
@@ -1088,14 +1095,14 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Find a system class (which should be loaded from the same classloader
+ * Finds a system class (which should be loaded from the same classloader
* as the Ant core).
*
* For JDK 1.1 compatability, this uses the findSystemClass method if
* no parent classloader has been specified.
*
- * @param name the name of the class to be loaded. Must not be
- * null
.
+ * @param name The name of the class to be loaded.
+ * Must not be null
.
*
* @return the required Class object
*
@@ -1112,7 +1119,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Clean up any resources held by this classloader. Any open archive
+ * Cleans up any resources held by this classloader. Any open archive
* files are closed.
*/
public void cleanup() {
@@ -1137,7 +1144,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
/**
- * Clean up any resources held by this classloader at the end
+ * Cleans up any resources held by this classloader at the end
* of a build.
*/
public void buildFinished(BuildEvent event) {
diff --git a/src/main/org/apache/tools/ant/DemuxOutputStream.java b/src/main/org/apache/tools/ant/DemuxOutputStream.java
index cf9f471e0..ad6060835 100644
--- a/src/main/org/apache/tools/ant/DemuxOutputStream.java
+++ b/src/main/org/apache/tools/ant/DemuxOutputStream.java
@@ -70,46 +70,47 @@ import java.util.Hashtable;
public class DemuxOutputStream extends OutputStream {
/**
- * A data class to store information about a buffer. Such informatio
+ * A data class to store information about a buffer. Such information
* is stored on a per-thread basis.
*/
private static class BufferInfo {
/**
- * The per-thread output stream
+ * The per-thread output stream.
*/
private ByteArrayOutputStream buffer;
/**
- * Whether the next line-terminator should be skipped in terms
- * of processing the buffer or not. Used to avoid \r\n invoking
+ * Whether or not the next line-terminator should be skipped in terms
+ * of processing the buffer. Used to avoid \r\n invoking
* processBuffer twice.
*/
private boolean skip = false;
}
- /** Maximum buffer size */
+ /** Maximum buffer size. */
private final static int MAX_SIZE = 1024;
- /** Mapping from thread to buffer (Thread to BufferInfo) */
+ /** Mapping from thread to buffer (Thread to BufferInfo). */
private Hashtable buffers = new Hashtable();
/**
- * The project to send output to
+ * The project to send output to.
*/
private Project project;
/**
- * Whether or not this stream represents an error stream
+ * Whether or not this stream represents an error stream.
*/
private boolean isErrorStream;
/**
* Creates a new instance of this class.
*
- * @param project the project instance for which output is being
- * demultiplexed.
- * @param isErrorStream true if this is the error string, otherwise
- * a normal output stream. This is passed to the project so it knows
- * which stream it is receiving.
+ * @param project The project instance for which output is being
+ * demultiplexed. Must not be null
.
+ * @param isErrorStream true
if this is the error string,
+ * otherwise a normal output stream. This is
+ * passed to the project so it knows
+ * which stream it is receiving.
*/
public DemuxOutputStream(Project project, boolean isErrorStream) {
this.project = project;
@@ -119,7 +120,7 @@ public class DemuxOutputStream extends OutputStream {
/**
* Returns the buffer associated with the current thread.
*
- * @return a ByteArrayOutputStream for the current thread to write data to
+ * @return a BufferInfo for the current thread to write data to
*/
private BufferInfo getBufferInfo() {
Thread current = Thread.currentThread();
@@ -165,13 +166,13 @@ public class DemuxOutputStream extends OutputStream {
bufferInfo.skip = (c == '\r');
}
-
/**
- * Converts the buffer to a string and sends it to
- * {@link Project#demuxOutput(String,boolean) Project.demuxOutput}.
+ * Converts the buffer to a string and sends it to the project.
*
* @param buffer the ByteArrayOutputStream used to collect the output
* until a line separator is seen.
+ *
+ * @see Project#demuxOutput(String,boolean)
*/
protected void processBuffer(ByteArrayOutputStream buffer) {
String output = buffer.toString();
@@ -180,9 +181,11 @@ public class DemuxOutputStream extends OutputStream {
}
/**
- * Equivalent to calling {@link #flush flush} on the stream.
+ * Equivalent to flushing the stream.
*
* @exception IOException if there is a problem closing the stream.
+ *
+ * @see #flush
*/
public void close() throws IOException {
flush();
diff --git a/src/main/org/apache/tools/ant/IntrospectionHelper.java b/src/main/org/apache/tools/ant/IntrospectionHelper.java
index 6c634cdf4..aaba3cd02 100644
--- a/src/main/org/apache/tools/ant/IntrospectionHelper.java
+++ b/src/main/org/apache/tools/ant/IntrospectionHelper.java
@@ -384,6 +384,10 @@ public class IntrospectionHelper implements BuildListener {
* @param value The value to set the attribute to. This may be interpreted
* or converted to the necessary type if the setter method
* doesn't just take a string. Must not be null
.
+ *
+ * @exception BuildException if the introspected class doesn't support
+ * the given attribute, or if the setting
+ * method fails.
*/
public void setAttribute(Project p, Object element, String attributeName,
String value)
diff --git a/src/main/org/apache/tools/ant/Location.java b/src/main/org/apache/tools/ant/Location.java
index 0268a213f..1c350643c 100644
--- a/src/main/org/apache/tools/ant/Location.java
+++ b/src/main/org/apache/tools/ant/Location.java
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000 The Apache Software Foundation. All rights
+ * Copyright (c) 2000,2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -55,13 +55,20 @@
package org.apache.tools.ant;
/**
- * Stores the file name and line number in a file.
+ * Stores the location of a piece of text within a file (file name,
+ * line number and column number). Note that the column number is
+ * currently ignored.
*/
public class Location {
+
+ /** Name of the file. */
private String fileName;
+ /** Line number within the file. */
private int lineNumber;
+ /** Column number within the file. */
private int columnNumber;
+ /** Location to use when one is needed but no information is available */
public final static Location UNKNOWN_LOCATION = new Location();
/**
@@ -72,14 +79,28 @@ public class Location {
}
/**
- * Creates a location consisting of a file name but no line number.
+ * Creates a location consisting of a file name but no line number or
+ * column number.
+ *
+ * @param fileName The name of the file. May be null
,
+ * in which case the location is equivalent to
+ * {@link #UNKNOWN_LOCATION UNKNOWN_LOCATION}.
*/
public Location(String fileName) {
this(fileName, 0, 0);
}
/**
- * Creates a location consisting of a file name and line number.
+ * Creates a location consisting of a file name, line number and
+ * column number.
+ *
+ * @param fileName The name of the file. May be null
,
+ * in which case the location is equivalent to
+ * {@link #UNKNOWN_LOCATION UNKNOWN_LOCATION}.
+ *
+ * @param lineNumber Line number within the file. Use 0 for unknown
+ * positions within a file.
+ * @param columnNumber Column number within the line.
*/
public Location(String fileName, int lineNumber, int columnNumber) {
this.fileName = fileName;
@@ -88,9 +109,14 @@ public class Location {
}
/**
- * Returns the file name, line number and a trailing space. An error
- * message can be appended easily. For unknown locations, returns
- * an empty string.
+ * Returns the file name, line number, a colon and a trailing space.
+ * An error message can be appended easily. For unknown locations, an
+ * empty string is returned.
+ *
+ * @return a String of the form "fileName: lineNumber: "
+ * if both file name and line number are known,
+ * "fileName: "
if only the file name is known,
+ * and the empty string for unknown locations.
*/
public String toString() {
StringBuffer buf = new StringBuffer();
diff --git a/src/main/org/apache/tools/ant/Main.java b/src/main/org/apache/tools/ant/Main.java
index 06f7d5cb7..16c65effd 100644
--- a/src/main/org/apache/tools/ant/Main.java
+++ b/src/main/org/apache/tools/ant/Main.java
@@ -78,57 +78,63 @@ import java.util.Enumeration;
*/
public class Main {
- /** The default build file name */
+ /** The default build file name. */
public final static String DEFAULT_BUILD_FILENAME = "build.xml";
- /** Our current message output status. Follows Project.MSG_XXX */
+ /** Our current message output status. Follows Project.MSG_XXX. */
private int msgOutputLevel = Project.MSG_INFO;
- /** File that we are using for configuration */
- private File buildFile; /** null */
+ /** File that we are using for configuration. */
+ private File buildFile; /* null */
- /** Stream that we are using for logging */
+ /** Stream to use for logging. */
private PrintStream out = System.out;
- /** Stream that we are using for logging error messages */
+ /** Stream that we are using for logging error messages. */
private PrintStream err = System.err;
- /** The build targets */
+ /** The build targets. */
private Vector targets = new Vector(5);
- /** Set of properties that can be used by tasks */
+ /** Set of properties that can be used by tasks. */
private Properties definedProps = new Properties();
- /** Names of classes to add as listeners to project */
+ /** Names of classes to add as listeners to project. */
private Vector listeners = new Vector(5);
- /** File names of property files to load on startup */
+ /** File names of property files to load on startup. */
private Vector propertyFiles = new Vector(5);
-
+
/**
- * The Ant logger class. There may be only one logger. It will have the
- * right to use the 'out' PrintStream. The class must implements the BuildLogger
- * interface
+ * The Ant logger class. There may be only one logger. It will have
+ * the right to use the 'out' PrintStream. The class must implements the
+ * BuildLogger interface.
*/
private String loggerClassname = null;
/**
- * Indicates whether output to the log is to be unadorned.
+ * Whether or not output to the log is to be unadorned.
*/
private boolean emacsMode = false;
/**
- * Indicates if this ant should be run.
+ * Whether or not this instance has successfully been
+ * constructed and is ready to run.
*/
private boolean readyToRun = false;
/**
- * Indicates we should only parse and display the project help information
+ * Whether or not we should only parse and display the project help
+ * information.
*/
private boolean projectHelp = false;
/**
- * Prints the message of the Throwable if it's not null.
+ * Prints the message of the Throwable if it (the message) is not
+ * null
.
+ *
+ * @param t Throwable to print the message of.
+ * Must not be null
.
*/
private static void printMessage(Throwable t) {
String message = t.getMessage();
@@ -138,7 +144,16 @@ public class Main {
}
/**
- * Entry point method.
+ * Creates a new instance of this class using the
+ * arguments specified, gives it any extra user properties which have been
+ * specified, and then runs the build using the classloader provided.
+ *
+ * @param args Command line arguments. Must not be null
.
+ * @param additionalUserProperties Any extra properties to use in this
+ * build. May be null
, which is the equivalent to
+ * passing in an empty set of properties.
+ * @param coreLoader Classloader used for core classes. May be
+ * null
in which case the system classloader is used.
*/
public static void start(String[] args, Properties additionalUserProperties,
ClassLoader coreLoader) {
@@ -173,20 +188,31 @@ public class Main {
System.exit(1);
}
}
-
-
-
+
/**
* Command line entry point. This method kicks off the building
* of a project object and executes a build using either a given
* target or the default target.
*
- * @param args Command line args.
+ * @param args Command line arguments. Must not be null
.
*/
public static void main(String[] args) {
start(args, null, null);
}
+ // XXX: (Jon Skeet) Error handling appears to be inconsistent here.
+ // Sometimes there's just a return statement, and sometimes a
+ // BuildException is thrown. What's the rationale for when to do
+ // what?
+ /**
+ * Sole constructor, which parses and deals with command line
+ * arguments.
+ *
+ * @param args Command line arguments. Must not be null
.
+ *
+ * @exception BuildException if the specified build file doesn't exist
+ * or is a directory.
+ */
protected Main(String[] args) throws BuildException {
String searchForThis = null;
@@ -253,7 +279,7 @@ public class Main {
/* Interestingly enough, we get to here when a user
* uses -Dname=value. However, in some cases, the JDK
- * goes ahead * and parses this out to args
+ * goes ahead and parses this out to args
* {"-Dname", "value"}
* so instead of parsing on "=", we just make the "-D"
* characters go away and skip one argument forward.
@@ -383,10 +409,10 @@ public class Main {
/**
* Helper to get the parent file for a given file.
+ *
+ * Added to simulate File.getParentFile() from JDK 1.2. * - *
Added to simulate File.getParentFile() from JDK 1.2.
- *
- * @param file File
+ * @param file File to find parent of. Must not be null
.
* @return Parent file or null if none
*/
private File getParentFile(File file) {
@@ -403,16 +429,20 @@ public class Main {
/**
* Search parent directories for the build file.
+ *
+ * Takes the given target as a suffix to append to each + * parent directory in seach of a build file. Once the + * root of the file-system has been reached an exception + * is thrown. * - *
Takes the given target as a suffix to append to each
- * parent directory in seach of a build file. Once the
- * root of the file-system has been reached an exception
- * is thrown.
- *
- * @param suffix Suffix filename to look for in parents.
- * @return A handle to the build file
+ * @param start Leaf directory of search.
+ * Must not be null
.
+ * @param suffix Suffix filename to look for in parents.
+ * Must not be null
.
+ *
+ * @return A handle to the build file if one is found
*
- * @exception BuildException Failed to locate a build file
+ * @exception BuildException if no build file is found
*/
private File findBuildFile(String start, String suffix) throws BuildException {
if (msgOutputLevel >= Project.MSG_INFO) {
@@ -441,7 +471,15 @@ public class Main {
}
/**
- * Executes the build.
+ * Executes the build. If the constructor for this instance failed
+ * (e.g. returned after issuing a warning), this method returns
+ * immediately.
+ *
+ * @param coreLoader The classloader to use to find core classes.
+ * May be null
, in which case the
+ * system classloader is used.
+ *
+ * @exception BuildException if the build fails
*/
private void runBuild(ClassLoader coreLoader) throws BuildException {
@@ -552,6 +590,13 @@ public class Main {
}
}
+ /**
+ * Adds the listeners specified in the command line arguments,
+ * along with the default listener, to the specified project.
+ *
+ * @param project The project to add listeners to.
+ * Must not be null
.
+ */
protected void addBuildListeners(Project project) {
// Add the default listener
@@ -570,6 +615,10 @@ public class Main {
}
}
+ // XXX: (Jon Skeet) Any reason for writing a message and then using a bare
+ // RuntimeException rather than just using a BuildException here? Is it
+ // in case the message could end up being written to no loggers (as the loggers
+ // could have failed to be created due to this failure)?
/**
* Creates the default build logger for sending build events to the ant log.
*/
@@ -603,7 +652,7 @@ public class Main {
}
/**
- * Prints the usage of how to use this class to System.out
+ * Prints the usage information for this class to System.out
.
*/
private static void printUsage() {
String lSep = System.getProperty("line.separator");
@@ -629,12 +678,30 @@ public class Main {
System.out.println(msg.toString());
}
+ /**
+ * Prints the Ant version information to System.out
.
+ *
+ * @exception BuildException if the version information is unavailable
+ */
private static void printVersion() throws BuildException {
System.out.println(getAntVersion());
}
+ /**
+ * Cache of the Ant version information when it has been loaded.
+ */
private static String antVersion = null;
+ /**
+ * Returns the Ant version information, if available. Once the information
+ * has been loaded once, it's cached and returned from the cache on future
+ * calls.
+ *
+ * @return the Ant version information as a String
+ * (always non-null
)
+ *
+ * @exception BuildException if the version information is unavailable
+ */
public static synchronized String getAntVersion() throws BuildException {
if (antVersion == null) {
try {
@@ -662,7 +729,11 @@ public class Main {
}
/**
- * Print the project description, if any
+ * Prints the description of a project (if there is one) to
+ * System.out
.
+ *
+ * @param project The project to display a description of.
+ * Must not be null
.
*/
private static void printDescription(Project project) {
if (project.getDescription() != null) {
@@ -671,7 +742,13 @@ public class Main {
}
/**
- * Print out a list of all targets in the current buildfile
+ * Prints a list of all targets in the specified project to
+ * System.out
, optionally including subtargets.
+ *
+ * @param project The project to display a description of.
+ * Must not be null
.
+ * @param printSubTargets Whether or not subtarget names should also be
+ * printed.
*/
private static void printTargets(Project project, boolean printSubTargets) {
// find the target with the longest name
@@ -717,7 +794,14 @@ public class Main {
}
/**
- * Search for the insert position to keep names a sorted list of Strings
+ * Searches for the correct place to insert a name into a list so as
+ * to keep the list sorted alphabetically.
+ *
+ * @param names The current list of names. Must not be null
.
+ * @param name The name to find a place for.
+ * Must not be null
.
+ *
+ * @return the correct place in the list for the given name
*/
private static int findTargetPosition(Vector names, String name) {
int res = names.size();
@@ -730,7 +814,8 @@ public class Main {
}
/**
- * Output a formatted list of target names with an optional description
+ * Writes a formatted list of target names to System.out
+ * with an optional description
*/
private static void printTargets(Vector names, Vector descriptions, String heading, int maxlen) {
// now, start printing the targets and their descriptions
diff --git a/src/main/org/apache/tools/ant/NoBannerLogger.java b/src/main/org/apache/tools/ant/NoBannerLogger.java
index ed0f0b7a2..0fa98ba49 100644
--- a/src/main/org/apache/tools/ant/NoBannerLogger.java
+++ b/src/main/org/apache/tools/ant/NoBannerLogger.java
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000-2001 The Apache Software Foundation. All rights
+ * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -63,16 +63,44 @@ import org.apache.tools.ant.util.StringUtils;
*/
public class NoBannerLogger extends DefaultLogger {
+ /**
+ * Name of the current target, if it should
+ * be displayed on the next message. This is
+ * set when a target starts building, and reset
+ * to null
after the first message for
+ * the target is logged.
+ */
protected String targetName;
+ /** Sole constructor. */
+ public NoBannerLogger() {
+ }
+
+ /**
+ * Notes the name of the target so it can be logged
+ * if it generates any messages.
+ *
+ * @param event A BuildEvent containing target information.
+ * Must not be null
.
+ */
public void targetStarted(BuildEvent event) {
targetName = event.getTarget().getName();
}
+ /** Resets the current target name to null
. */
public void targetFinished(BuildEvent event) {
targetName = null;
}
+ /**
+ * Logs a message for a target if it is of an appropriate
+ * priority, also logging the name of the target if this
+ * is the first message which needs to be logged for the
+ * target.
+ *
+ * @param event A BuildEvent containing message information.
+ * Must not be null
.
+ */
public void messageLogged(BuildEvent event) {
if( event.getPriority() > msgOutputLevel ||
diff --git a/src/main/org/apache/tools/ant/PathTokenizer.java b/src/main/org/apache/tools/ant/PathTokenizer.java
index d16c95e3a..c8addd958 100644
--- a/src/main/org/apache/tools/ant/PathTokenizer.java
+++ b/src/main/org/apache/tools/ant/PathTokenizer.java
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000 The Apache Software Foundation. All rights
+ * Copyright (c) 2000,2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -62,7 +62,7 @@ import java.io.File;
* that path.
*
* The path can use path separators of either ':' or ';' and file separators
- * of either '/' or '\'
+ * of either '/' or '\'.
*
* @author Conor MacNeill (conor@ieee.org)
*
@@ -74,21 +74,35 @@ public class PathTokenizer {
private StringTokenizer tokenizer;
/**
- * A String which stores any path components which have been read ahead.
+ * A String which stores any path components which have been read ahead
+ * due to DOS filesystem compensation.
*/
private String lookahead = null;
/**
- * Flag to indicate whether we are running on a platform with a DOS style
- * filesystem
+ * Flag to indicate whether or not we are running on a platform with a
+ * DOS style filesystem
*/
private boolean dosStyleFilesystem;
+ /**
+ * Constructs a path tokenizer for the specified path.
+ *
+ * @param path The path to tokenize. Must not be null
.
+ */
public PathTokenizer(String path) {
tokenizer = new StringTokenizer(path, ":;", false);
dosStyleFilesystem = File.pathSeparatorChar == ';';
}
+ /**
+ * Tests if there are more path elements available from this tokenizer's
+ * path. If this method returns true
, then a subsequent call
+ * to nextToken will successfully return a token.
+ *
+ * @return true
if and only if there is at least one token
+ * in the string after the current position; false
otherwise.
+ */
public boolean hasMoreTokens() {
if (lookahead != null) {
return true;
@@ -97,6 +111,14 @@ public class PathTokenizer {
return tokenizer.hasMoreTokens();
}
+ /**
+ * Returns the next path element from this tokenizer.
+ *
+ * @return the next path element from this tokenizer.
+ *
+ * @exception NoSuchElementException if there are no more elements in this
+ * tokenizer's path.
+ */
public String nextToken() throws NoSuchElementException {
String token = null;
if (lookahead != null) {