Browse Source

If default target is not specified then default to using "main"

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272529 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
2b22efccb0
2 changed files with 172 additions and 174 deletions
  1. +6
    -6
      docs/manual/using.html
  2. +166
    -168
      src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java

+ 6
- 6
docs/manual/using.html View File

@@ -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">Yes</td>
<td align="center" valign="top">No. Will default to "main" if not specified.</td>
</tr> </tr>
<tr> <tr>
<td valign="top">basedir</td> <td valign="top">basedir</td>
@@ -152,7 +152,7 @@ file. The empty string &quot;&quot; is in this set, as is
comma &quot;,&quot; and space &quot; &quot;. comma &quot;,&quot; and space &quot; &quot;.
Please avoid using these, as they will not be supported in future Ant versions Please avoid using these, as they will not be supported in future Ant versions
because of all the confusion they cause. IDE support of unusual target names, because of all the confusion they cause. IDE support of unusual target names,
or any target name containing spaces, varies with the IDE.
or any target name containing spaces, varies with the IDE.


<p> <p>


@@ -292,12 +292,12 @@ can be declared outside targets.


<p> <p>
We have given some targets descriptions; this causes the <tt>projecthelp</tt> We have given some targets descriptions; this causes the <tt>projecthelp</tt>
invocation option to list them as public targets with the descriptions; the
invocation option to list them as public targets with the descriptions; the
other target is internal and not listed. other target is internal and not listed.
<p> <p>
Finally, for this target to work the source in the <tt>src</tt> subdirectory Finally, for this target to work the source in the <tt>src</tt> subdirectory
should be stored in a directory tree which matches the package names. Check the should be stored in a directory tree which matches the package names. Check the
<tt>&lt;javac&gt;</tt> task for details.
<tt>&lt;javac&gt;</tt> task for details.


<a name="filters"><h3>Token Filters</h3></a> <a name="filters"><h3>Token Filters</h3></a>
<p>A project can have a set of tokens that might be automatically expanded if <p>A project can have a set of tokens that might be automatically expanded if
@@ -355,7 +355,7 @@ supports <code>path</code> and
&lt;classpath path=&quot;${classpath}&quot;/&gt; &lt;classpath path=&quot;${classpath}&quot;/&gt;
</pre> </pre>
<p>In addition, <a href="CoreTypes/dirset.html">DirSet</a>s, <p>In addition, <a href="CoreTypes/dirset.html">DirSet</a>s,
<a href="CoreTypes/fileset.html">FileSet</a>s, and
<a href="CoreTypes/fileset.html">FileSet</a>s, and
<a href="CoreTypes/filelist.html">FileList</a>s <a href="CoreTypes/filelist.html">FileList</a>s
can be specified via nested <code>&lt;dirset&gt;</code>, can be specified via nested <code>&lt;dirset&gt;</code>,
<code>&lt;fileset&gt;</code>, and <code>&lt;filelist&gt;</code> <code>&lt;fileset&gt;</code>, and <code>&lt;filelist&gt;</code>
@@ -377,7 +377,7 @@ defined.</p>
&lt;/classpath&gt; &lt;/classpath&gt;
</pre> </pre>
<p>This builds a path that holds the value of <code>${classpath}</code>, <p>This builds a path that holds the value of <code>${classpath}</code>,
followed by all jar files in the <code>lib</code> directory,
followed by all jar files in the <code>lib</code> directory,
the <code>classes</code> directory, all directories named the <code>classes</code> directory, all directories named
<code>classes</code> under the <code>apps</code> subdirectory of <code>classes</code> under the <code>apps</code> subdirectory of
<code>${build.dir}</code>, except those <code>${build.dir}</code>, except those


+ 166
- 168
src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java View File

@@ -91,39 +91,39 @@ import org.apache.tools.ant.TaskAdapter;
*/ */
public class ProjectHelperImpl extends ProjectHelper { public class ProjectHelperImpl extends ProjectHelper {


/**
/**
* Parser factory to use to create parsers. * Parser factory to use to create parsers.
* @see #getParserFactory * @see #getParserFactory
*/ */
private static SAXParserFactory parserFactory = null; private static SAXParserFactory parserFactory = null;


/** /**
* SAX 1 style parser used to parse the given file. This may
* SAX 1 style parser used to parse the given file. This may
* in fact be a SAX 2 XMLReader wrapped in an XMLReaderAdapter. * in fact be a SAX 2 XMLReader wrapped in an XMLReaderAdapter.
*/ */
private org.xml.sax.Parser parser; private org.xml.sax.Parser parser;
/** The project to configure. */ /** The project to configure. */
private Project project; private Project project;
/** The configuration file to parse. */ /** The configuration file to parse. */
private File buildFile; private File buildFile;
/**
/**
* Parent directory of the build file. Used for resolving entities * Parent directory of the build file. Used for resolving entities
* and setting the project's base directory. * and setting the project's base directory.
*/ */
private File buildFileParent; private File buildFileParent;
/**
* Locator for the configuration file parser.
/**
* Locator for the configuration file parser.
* Used for giving locations of errors etc. * Used for giving locations of errors etc.
*/ */
private Locator locator; private Locator locator;


/** /**
* Parses the project file, configuring the project as it goes. * Parses the project file, configuring the project as it goes.
*
*
* @param project project instance to be configured. * @param project project instance to be configured.
* @param source the source from which the project is read.
* @exception BuildException if the configuration is invalid or cannot
* @param source the source from which the project is read.
* @exception BuildException if the configuration is invalid or cannot
* be read. * be read.
*/ */
public void parse(Project project, Object source) throws BuildException { public void parse(Project project, Object source) throws BuildException {
@@ -137,7 +137,7 @@ public class ProjectHelperImpl extends ProjectHelper {
this.project = project; this.project = project;
this.buildFile = new File(buildFile.getAbsolutePath()); this.buildFile = new File(buildFile.getAbsolutePath());
buildFileParent = new File(this.buildFile.getParent()); buildFileParent = new File(this.buildFile.getParent());
try { try {
SAXParser saxParser = getParserFactory().newSAXParser(); SAXParser saxParser = getParserFactory().newSAXParser();
try { try {
@@ -146,16 +146,16 @@ public class ProjectHelperImpl extends ProjectHelper {
parser = new XMLReaderAdapter(saxParser.getXMLReader()); parser = new XMLReaderAdapter(saxParser.getXMLReader());
} }


String uri = "file:" + buildFile.getAbsolutePath().replace('\\', '/'); String uri = "file:" + buildFile.getAbsolutePath().replace('\\', '/');
for (int index = uri.indexOf('#'); index != -1; index = uri.indexOf('#')) { for (int index = uri.indexOf('#'); index != -1; index = uri.indexOf('#')) {
uri = uri.substring(0, index) + "%23" + uri.substring(index + 1); uri = uri.substring(0, index) + "%23" + uri.substring(index + 1);
} }
inputStream = new FileInputStream(buildFile); inputStream = new FileInputStream(buildFile);
inputSource = new InputSource(inputStream); inputSource = new InputSource(inputStream);
inputSource.setSystemId(uri); inputSource.setSystemId(uri);
project.log("parsing buildfile " + buildFile + " with URI = "
project.log("parsing buildfile " + buildFile + " with URI = "
+ uri, Project.MSG_VERBOSE); + uri, Project.MSG_VERBOSE);
HandlerBase hb = new RootHandler(this); HandlerBase hb = new RootHandler(this);
parser.setDocumentHandler(hb); parser.setDocumentHandler(hb);
@@ -167,7 +167,7 @@ public class ProjectHelperImpl extends ProjectHelper {
throw new BuildException("Parser has not been configured correctly", exc); throw new BuildException("Parser has not been configured correctly", exc);
} catch (SAXParseException exc) { } catch (SAXParseException exc) {
Location location = Location location =
new Location(buildFile.toString(), exc.getLineNumber(),
new Location(buildFile.toString(), exc.getLineNumber(),
exc.getColumnNumber()); exc.getColumnNumber());


Throwable t = exc.getException(); Throwable t = exc.getException();
@@ -178,7 +178,7 @@ public class ProjectHelperImpl extends ProjectHelper {
} }
throw be; throw be;
} }
throw new BuildException(exc.getMessage(), t, location); throw new BuildException(exc.getMessage(), t, location);
} catch (SAXException exc) { } catch (SAXException exc) {
Throwable t = exc.getException(); Throwable t = exc.getException();
@@ -189,7 +189,7 @@ public class ProjectHelperImpl extends ProjectHelper {
} catch (FileNotFoundException exc) { } catch (FileNotFoundException exc) {
throw new BuildException(exc); throw new BuildException(exc);
} catch (UnsupportedEncodingException exc) { } catch (UnsupportedEncodingException exc) {
throw new BuildException("Encoding of project file is invalid.",
throw new BuildException("Encoding of project file is invalid.",
exc); exc);
} catch (IOException exc) { } catch (IOException exc) {
throw new BuildException("Error reading project file: " throw new BuildException("Error reading project file: "
@@ -207,7 +207,7 @@ public class ProjectHelperImpl extends ProjectHelper {


/** /**
* The common superclass for all SAX event handlers used to parse * The common superclass for all SAX event handlers used to parse
* the configuration file. Each method just throws an exception,
* the configuration file. Each method just throws an exception,
* so subclasses should override what they can handle. * so subclasses should override what they can handle.
* *
* Each type of XML element (task, target, etc.) in Ant has * Each type of XML element (task, target, etc.) in Ant has
@@ -218,9 +218,9 @@ public class ProjectHelperImpl extends ProjectHelper {
* control back to the parent in the endElement method. * control back to the parent in the endElement method.
*/ */
static class AbstractHandler extends HandlerBase { static class AbstractHandler extends HandlerBase {
/**
* Previous handler for the document.
/**
* Previous handler for the document.
* When the next element is finished, control returns * When the next element is finished, control returns
* to this handler. * to this handler.
*/ */
@@ -232,16 +232,16 @@ public class ProjectHelperImpl extends ProjectHelper {
explicitely it'll work with more compilers. explicitely it'll work with more compilers.
*/ */
ProjectHelperImpl helperImpl; ProjectHelperImpl helperImpl;
/** /**
* Creates a handler and sets the parser to use it * Creates a handler and sets the parser to use it
* for the current element. * for the current element.
*
* @param helperImpl the ProjectHelperImpl instance associated
*
* @param helperImpl the ProjectHelperImpl instance associated
* with this handler. * with this handler.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
* Must not be <code>null</code>. * Must not be <code>null</code>.
*/ */
public AbstractHandler(ProjectHelperImpl helperImpl, DocumentHandler parentHandler) { public AbstractHandler(ProjectHelperImpl helperImpl, DocumentHandler parentHandler) {
@@ -251,16 +251,16 @@ public class ProjectHelperImpl extends ProjectHelper {
// Start handling SAX events // Start handling SAX events
helperImpl.parser.setDocumentHandler(this); helperImpl.parser.setDocumentHandler(this);
} }
/** /**
* Handles the start of an element. This base implementation just * Handles the start of an element. This base implementation just
* throws an exception. * throws an exception.
*
* @param tag The name of the element being started.
*
* @param tag The name of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element being started. * @param attrs Attributes of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
*
* @exception SAXParseException if this method is not overridden, or in * @exception SAXParseException if this method is not overridden, or in
* case of error in an overridden version * case of error in an overridden version
*/ */
@@ -271,12 +271,12 @@ public class ProjectHelperImpl extends ProjectHelper {
/** /**
* Handles text within an element. This base implementation just * Handles text within an element. This base implementation just
* throws an exception. * throws an exception.
*
*
* @param buf A character array of the text within the element. * @param buf A character array of the text within the element.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param start The start element in the array. * @param start The start element in the array.
* @param count The number of characters to read from the array. * @param count The number of characters to read from the array.
*
*
* @exception SAXParseException if this method is not overridden, or in * @exception SAXParseException if this method is not overridden, or in
* case of error in an overridden version * case of error in an overridden version
*/ */
@@ -298,13 +298,13 @@ public class ProjectHelperImpl extends ProjectHelper {
* Handles the end of an element. Any required clean-up is performed * Handles the end of an element. Any required clean-up is performed
* by the finished() method and then the original handler is restored to * by the finished() method and then the original handler is restored to
* the parser. * the parser.
*
*
* @param name The name of the element which is ending. * @param name The name of the element which is ending.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
* @exception SAXException in case of error (not thrown in
*
* @exception SAXException in case of error (not thrown in
* this implementation) * this implementation)
*
*
* @see #finished() * @see #finished()
*/ */
public void endElement(String name) throws SAXException { public void endElement(String name) throws SAXException {
@@ -320,36 +320,36 @@ public class ProjectHelperImpl extends ProjectHelper {
*/ */
static class RootHandler extends HandlerBase { static class RootHandler extends HandlerBase {
ProjectHelperImpl helperImpl; ProjectHelperImpl helperImpl;
public RootHandler(ProjectHelperImpl helperImpl) { public RootHandler(ProjectHelperImpl helperImpl) {
this.helperImpl = helperImpl; this.helperImpl = helperImpl;
} }
/** /**
* Resolves file: URIs relative to the build file. * Resolves file: URIs relative to the build file.
*
*
* @param publicId The public identifer, or <code>null</code> * @param publicId The public identifer, or <code>null</code>
* if none is available. Ignored in this
* if none is available. Ignored in this
* implementation. * implementation.
* @param systemId The system identifier provided in the XML
* @param systemId The system identifier provided in the XML
* document. Will not be <code>null</code>. * document. Will not be <code>null</code>.
*/ */
public InputSource resolveEntity(String publicId, public InputSource resolveEntity(String publicId,
String systemId) { String systemId) {
helperImpl.project.log("resolving systemId: " + systemId, Project.MSG_VERBOSE); helperImpl.project.log("resolving systemId: " + systemId, Project.MSG_VERBOSE);
if (systemId.startsWith("file:")) { if (systemId.startsWith("file:")) {
String path = systemId.substring(5); String path = systemId.substring(5);
int index = path.indexOf("file:"); int index = path.indexOf("file:");
// we only have to handle these for backward compatibility // we only have to handle these for backward compatibility
// since they are in the FAQ. // since they are in the FAQ.
while (index != -1) { while (index != -1) {
path = path.substring(0, index) + path.substring(index + 5); path = path.substring(0, index) + path.substring(index + 5);
index = path.indexOf("file:"); index = path.indexOf("file:");
} }
String entitySystemId = path; String entitySystemId = path;
index = path.indexOf("%23"); index = path.indexOf("%23");
// convert these to # // convert these to #
@@ -362,13 +362,13 @@ public class ProjectHelperImpl extends ProjectHelper {
if (!file.isAbsolute()) { if (!file.isAbsolute()) {
file = new File(helperImpl.buildFileParent, path); file = new File(helperImpl.buildFileParent, path);
} }
try { try {
InputSource inputSource = new InputSource(new FileInputStream(file)); InputSource inputSource = new InputSource(new FileInputStream(file));
inputSource.setSystemId("file:" + entitySystemId); inputSource.setSystemId("file:" + entitySystemId);
return inputSource; return inputSource;
} catch (FileNotFoundException fne) { } catch (FileNotFoundException fne) {
helperImpl.project.log(file.getAbsolutePath() + " could not be found",
helperImpl.project.log(file.getAbsolutePath() + " could not be found",
Project.MSG_WARN); Project.MSG_WARN);
} }
} }
@@ -379,13 +379,13 @@ public class ProjectHelperImpl extends ProjectHelper {
/** /**
* Handles the start of a project element. A project handler is created * Handles the start of a project element. A project handler is created
* and initialised with the element name and attributes. * and initialised with the element name and attributes.
*
* @param tag The name of the element being started.
*
* @param tag The name of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element being started. * @param attrs Attributes of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
* @exception SAXParseException if the tag given is not
*
* @exception SAXParseException if the tag given is not
* <code>"project"</code> * <code>"project"</code>
*/ */
public void startElement(String tag, AttributeList attrs) throws SAXParseException { public void startElement(String tag, AttributeList attrs) throws SAXParseException {
@@ -398,7 +398,7 @@ public class ProjectHelperImpl extends ProjectHelper {


/** /**
* Sets the locator in the project helper for future reference. * Sets the locator in the project helper for future reference.
*
*
* @param locator The locator used by the parser. * @param locator The locator used by the parser.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*/ */
@@ -411,31 +411,31 @@ public class ProjectHelperImpl extends ProjectHelper {
* Handler for the top level "project" element. * Handler for the top level "project" element.
*/ */
static class ProjectHandler extends AbstractHandler { static class ProjectHandler extends AbstractHandler {
/** /**
* Constructor which just delegates to the superconstructor. * Constructor which just delegates to the superconstructor.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
* Must not be <code>null</code>. * Must not be <code>null</code>.
*/ */
public ProjectHandler(ProjectHelperImpl helperImpl, DocumentHandler parentHandler) { public ProjectHandler(ProjectHelperImpl helperImpl, DocumentHandler parentHandler) {
super(helperImpl, parentHandler); super(helperImpl, parentHandler);
} }
/** /**
* Initialisation routine called after handler creation * Initialisation routine called after handler creation
* with the element name and attributes. The attributes which * with the element name and attributes. The attributes which
* this handler can deal with are: <code>"default"</code>, * this handler can deal with are: <code>"default"</code>,
* <code>"name"</code>, <code>"id"</code> and <code>"basedir"</code>. * <code>"name"</code>, <code>"id"</code> and <code>"basedir"</code>.
*
*
* @param tag Name of the element which caused this handler * @param tag Name of the element which caused this handler
* to be created. Should not be <code>null</code>. * to be created. Should not be <code>null</code>.
* Ignored in this implementation. * Ignored in this implementation.
* @param attrs Attributes of the element which caused this * @param attrs Attributes of the element which caused this
* handler to be created. Must not be <code>null</code>. * handler to be created. Must not be <code>null</code>.
*
* @exception SAXParseException if an unexpected attribute is
*
* @exception SAXParseException if an unexpected attribute is
* encountered or if the <code>"default"</code> attribute * encountered or if the <code>"default"</code> attribute
* is missing. * is missing.
*/ */
@@ -464,12 +464,10 @@ public class ProjectHelperImpl extends ProjectHelper {
} }


if (def == null) { if (def == null) {
throw new SAXParseException("The default attribute of project is required",
helperImpl.locator);
helperImpl.project.setDefaultTarget("main");
} else {
helperImpl.project.setDefaultTarget(def);
} }

helperImpl.project.setDefaultTarget(def);


if (name != null) { if (name != null) {
helperImpl.project.setName(name); helperImpl.project.setName(name);
@@ -502,13 +500,13 @@ public class ProjectHelperImpl extends ProjectHelper {
* Handles the start of a top-level element within the project. An * Handles the start of a top-level element within the project. An
* appropriate handler is created and initialised with the details * appropriate handler is created and initialised with the details
* of the element. * of the element.
*
* @param name The name of the element being started.
*
* @param name The name of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element being started. * @param attrs Attributes of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
* @exception SAXParseException if the tag given is not
*
* @exception SAXParseException if the tag given is not
* <code>"taskdef"</code>, <code>"typedef"</code>, * <code>"taskdef"</code>, <code>"typedef"</code>,
* <code>"property"</code>, <code>"target"</code> * <code>"property"</code>, <code>"target"</code>
* or a data type definition * or a data type definition
@@ -528,19 +526,19 @@ public class ProjectHelperImpl extends ProjectHelper {
throw new SAXParseException("Unexpected element \"" + name + "\"", helperImpl.locator); throw new SAXParseException("Unexpected element \"" + name + "\"", helperImpl.locator);
} }
} }
/** /**
* Handles a task defintion element by creating a task handler * Handles a task defintion element by creating a task handler
* and initialising is with the details of the element. * and initialising is with the details of the element.
*
*
* @param name The name of the element to be handled. * @param name The name of the element to be handled.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element to be handled. * @param attrs Attributes of the element to be handled.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
* @exception SAXParseException if an error occurs when initialising
*
* @exception SAXParseException if an error occurs when initialising
* the task handler * the task handler
*
*
*/ */
private void handleTaskdef(String name, AttributeList attrs) throws SAXParseException { private void handleTaskdef(String name, AttributeList attrs) throws SAXParseException {
(new TaskHandler(helperImpl, this, null, null, null)).init(name, attrs); (new TaskHandler(helperImpl, this, null, null, null)).init(name, attrs);
@@ -549,13 +547,13 @@ public class ProjectHelperImpl extends ProjectHelper {
/** /**
* Handles a type defintion element by creating a task handler * Handles a type defintion element by creating a task handler
* and initialising is with the details of the element. * and initialising is with the details of the element.
*
*
* @param name The name of the element to be handled. * @param name The name of the element to be handled.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element to be handled. * @param attrs Attributes of the element to be handled.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
* @exception SAXParseException if an error occurs initialising the
*
* @exception SAXParseException if an error occurs initialising the
* handler * handler
*/ */
private void handleTypedef(String name, AttributeList attrs) throws SAXParseException { private void handleTypedef(String name, AttributeList attrs) throws SAXParseException {
@@ -565,13 +563,13 @@ public class ProjectHelperImpl extends ProjectHelper {
/** /**
* Handles a property defintion element by creating a task handler * Handles a property defintion element by creating a task handler
* and initialising is with the details of the element. * and initialising is with the details of the element.
*
*
* @param name The name of the element to be handled. * @param name The name of the element to be handled.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element to be handled. * @param attrs Attributes of the element to be handled.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
* @exception SAXParseException if an error occurs initialising
*
* @exception SAXParseException if an error occurs initialising
* the handler * the handler
*/ */
private void handleProperty(String name, AttributeList attrs) throws SAXParseException { private void handleProperty(String name, AttributeList attrs) throws SAXParseException {
@@ -581,28 +579,28 @@ public class ProjectHelperImpl extends ProjectHelper {
/** /**
* Handles a target defintion element by creating a target handler * Handles a target defintion element by creating a target handler
* and initialising is with the details of the element. * and initialising is with the details of the element.
*
*
* @param tag The name of the element to be handled. * @param tag The name of the element to be handled.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element to be handled. * @param attrs Attributes of the element to be handled.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
* @exception SAXParseException if an error occurs initialising
*
* @exception SAXParseException if an error occurs initialising
* the handler * the handler
*/ */
private void handleTarget(String tag, AttributeList attrs) throws SAXParseException { private void handleTarget(String tag, AttributeList attrs) throws SAXParseException {
new TargetHandler(helperImpl, this).init(tag, attrs); new TargetHandler(helperImpl, this).init(tag, attrs);
} }
/** /**
* Handles a data type defintion element by creating a data type
* Handles a data type defintion element by creating a data type
* handler and initialising is with the details of the element. * handler and initialising is with the details of the element.
*
*
* @param name The name of the element to be handled. * @param name The name of the element to be handled.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element to be handled. * @param attrs Attributes of the element to be handled.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
* @exception SAXParseException if an error occurs initialising
*
* @exception SAXParseException if an error occurs initialising
* the handler * the handler
*/ */
private void handleDataType(String name, AttributeList attrs) throws SAXParseException { private void handleDataType(String name, AttributeList attrs) throws SAXParseException {
@@ -619,9 +617,9 @@ public class ProjectHelperImpl extends ProjectHelper {


/** /**
* Constructor which just delegates to the superconstructor. * Constructor which just delegates to the superconstructor.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
* Must not be <code>null</code>. * Must not be <code>null</code>.
*/ */
public TargetHandler(ProjectHelperImpl helperImpl, DocumentHandler parentHandler) { public TargetHandler(ProjectHelperImpl helperImpl, DocumentHandler parentHandler) {
@@ -633,15 +631,15 @@ public class ProjectHelperImpl extends ProjectHelper {
* with the element name and attributes. The attributes which * with the element name and attributes. The attributes which
* this handler can deal with are: <code>"name"</code>, * this handler can deal with are: <code>"name"</code>,
* <code>"depends"</code>, <code>"if"</code>, * <code>"depends"</code>, <code>"if"</code>,
* <code>"unless"</code>, <code>"id"</code> and
* <code>"unless"</code>, <code>"id"</code> and
* <code>"description"</code>. * <code>"description"</code>.
*
*
* @param tag Name of the element which caused this handler * @param tag Name of the element which caused this handler
* to be created. Should not be <code>null</code>. * to be created. Should not be <code>null</code>.
* Ignored in this implementation. * Ignored in this implementation.
* @param attrs Attributes of the element which caused this * @param attrs Attributes of the element which caused this
* handler to be created. Must not be <code>null</code>. * handler to be created. Must not be <code>null</code>.
*
*
* @exception SAXParseException if an unexpected attribute is encountered * @exception SAXParseException if an unexpected attribute is encountered
* or if the <code>"name"</code> attribute is missing. * or if the <code>"name"</code> attribute is missing.
*/ */
@@ -699,12 +697,12 @@ public class ProjectHelperImpl extends ProjectHelper {


/** /**
* Handles the start of an element within a target. * Handles the start of an element within a target.
*
* @param name The name of the element being started.
*
* @param name The name of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element being started. * @param attrs Attributes of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
*
* @exception SAXParseException if an error occurs when initialising * @exception SAXParseException if an error occurs when initialising
* the appropriate child handler * the appropriate child handler
*/ */
@@ -723,8 +721,8 @@ public class ProjectHelperImpl extends ProjectHelper {
static class TaskHandler extends AbstractHandler { static class TaskHandler extends AbstractHandler {
/** Containing target, if any. */ /** Containing target, if any. */
private Target target; private Target target;
/**
* Container for the task, if any. If target is
/**
* Container for the task, if any. If target is
* non-<code>null</code>, this must be too. * non-<code>null</code>, this must be too.
*/ */
private TaskContainer container; private TaskContainer container;
@@ -733,36 +731,36 @@ public class ProjectHelperImpl extends ProjectHelper {
*/ */
private Task task; private Task task;
/** /**
* Wrapper for the parent element, if any. The wrapper for this
* Wrapper for the parent element, if any. The wrapper for this
* element will be added to this wrapper as a child. * element will be added to this wrapper as a child.
*/ */
private RuntimeConfigurable parentWrapper; private RuntimeConfigurable parentWrapper;
/** /**
* Wrapper for this element which takes care of actually configuring * Wrapper for this element which takes care of actually configuring
* the element, if this element is contained within a target.
* the element, if this element is contained within a target.
* Otherwise the configuration is performed with the configure method. * Otherwise the configuration is performed with the configure method.
* @see ProjectHelper#configure(Object,AttributeList,Project) * @see ProjectHelper#configure(Object,AttributeList,Project)
*/ */
private RuntimeConfigurable wrapper = null; private RuntimeConfigurable wrapper = null;
/** /**
* Constructor. * Constructor.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
* Must not be <code>null</code>. * Must not be <code>null</code>.
*
* @param container Container for the element.
* May be <code>null</code> if the target is
*
* @param container Container for the element.
* May be <code>null</code> if the target is
* <code>null</code> as well. If the * <code>null</code> as well. If the
* target is <code>null</code>, this parameter * target is <code>null</code>, this parameter
* is effectively ignored. * is effectively ignored.
*
*
* @param parentWrapper Wrapper for the parent element, if any. * @param parentWrapper Wrapper for the parent element, if any.
* May be <code>null</code>. If the * May be <code>null</code>. If the
* target is <code>null</code>, this parameter * target is <code>null</code>, this parameter
* is effectively ignored. * is effectively ignored.
*
*
* @param target Target this element is part of. * @param target Target this element is part of.
* May be <code>null</code>. * May be <code>null</code>.
*/ */
@@ -780,13 +778,13 @@ public class ProjectHelperImpl extends ProjectHelper {
* the element with its attributes and sets it up with * the element with its attributes and sets it up with
* its parent container (if any). Nested elements are then * its parent container (if any). Nested elements are then
* added later as the parser encounters them. * added later as the parser encounters them.
*
*
* @param tag Name of the element which caused this handler * @param tag Name of the element which caused this handler
* to be created. Must not be <code>null</code>. * to be created. Must not be <code>null</code>.
*
*
* @param attrs Attributes of the element which caused this * @param attrs Attributes of the element which caused this
* handler to be created. Must not be <code>null</code>. * handler to be created. Must not be <code>null</code>.
*
*
* @exception SAXParseException in case of error (not thrown in * @exception SAXParseException in case of error (not thrown in
* this implementation) * this implementation)
*/ */
@@ -794,7 +792,7 @@ public class ProjectHelperImpl extends ProjectHelper {
try { try {
task = helperImpl.project.createTask(tag); task = helperImpl.project.createTask(tag);
} catch (BuildException e) { } catch (BuildException e) {
// swallow here, will be thrown again in
// swallow here, will be thrown again in
// UnknownElement.maybeConfigure if the problem persists. // UnknownElement.maybeConfigure if the problem persists.
} }


@@ -836,16 +834,16 @@ public class ProjectHelperImpl extends ProjectHelper {


/** /**
* Adds text to the task, using the wrapper if one is * Adds text to the task, using the wrapper if one is
* available (in other words if the task is within a target)
* available (in other words if the task is within a target)
* or using addText otherwise. * or using addText otherwise.
*
*
* @param buf A character array of the text within the element. * @param buf A character array of the text within the element.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param start The start element in the array. * @param start The start element in the array.
* @param count The number of characters to read from the array. * @param count The number of characters to read from the array.
*
*
* @exception SAXParseException if the element doesn't support text * @exception SAXParseException if the element doesn't support text
*
*
* @see ProjectHelper#addText(Project,Object,char[],int,int) * @see ProjectHelper#addText(Project,Object,char[],int,int)
*/ */
public void characters(char[] buf, int start, int count) throws SAXParseException { public void characters(char[] buf, int start, int count) throws SAXParseException {
@@ -859,27 +857,27 @@ public class ProjectHelperImpl extends ProjectHelper {
wrapper.addText(buf, start, count); wrapper.addText(buf, start, count);
} }
} }
/** /**
* Handles the start of an element within a target. Task containers * Handles the start of an element within a target. Task containers
* will always use another task handler, and all other tasks * will always use another task handler, and all other tasks
* will always use a nested element handler. * will always use a nested element handler.
*
* @param name The name of the element being started.
*
* @param name The name of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element being started. * @param attrs Attributes of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
*
* @exception SAXParseException if an error occurs when initialising * @exception SAXParseException if an error occurs when initialising
* the appropriate child handler * the appropriate child handler
*/ */
public void startElement(String name, AttributeList attrs) throws SAXParseException { public void startElement(String name, AttributeList attrs) throws SAXParseException {
if (task instanceof TaskContainer) { if (task instanceof TaskContainer) {
// task can contain other tasks - no other nested elements possible // task can contain other tasks - no other nested elements possible
new TaskHandler(helperImpl, this, (TaskContainer) task,
new TaskHandler(helperImpl, this, (TaskContainer) task,
wrapper, target).init(name, attrs); wrapper, target).init(name, attrs);
} else { } else {
new NestedElementHandler(helperImpl, this, task,
new NestedElementHandler(helperImpl, this, task,
wrapper, target).init(name, attrs); wrapper, target).init(name, attrs);
} }
} }
@@ -894,7 +892,7 @@ public class ProjectHelperImpl extends ProjectHelper {
/** The nested element itself. */ /** The nested element itself. */
private Object child; private Object child;
/** /**
* Wrapper for the parent element, if any. The wrapper for this
* Wrapper for the parent element, if any. The wrapper for this
* element will be added to this wrapper as a child. * element will be added to this wrapper as a child.
*/ */
private RuntimeConfigurable parentWrapper; private RuntimeConfigurable parentWrapper;
@@ -910,22 +908,22 @@ public class ProjectHelperImpl extends ProjectHelper {


/** /**
* Constructor. * Constructor.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
* Must not be <code>null</code>. * Must not be <code>null</code>.
*
*
* @param parent Parent of this element (task/data type/etc). * @param parent Parent of this element (task/data type/etc).
* Must not be <code>null</code>. * Must not be <code>null</code>.
*
*
* @param parentWrapper Wrapper for the parent element, if any. * @param parentWrapper Wrapper for the parent element, if any.
* May be <code>null</code>. * May be <code>null</code>.
*
*
* @param target Target this element is part of. * @param target Target this element is part of.
* May be <code>null</code>. * May be <code>null</code>.
*/ */
public NestedElementHandler(ProjectHelperImpl helperImpl, public NestedElementHandler(ProjectHelperImpl helperImpl,
DocumentHandler parentHandler,
DocumentHandler parentHandler,
Object parent, Object parent,
RuntimeConfigurable parentWrapper, RuntimeConfigurable parentWrapper,
Target target) { Target target) {
@@ -946,19 +944,19 @@ public class ProjectHelperImpl extends ProjectHelper {
* the element with its attributes and sets it up with * the element with its attributes and sets it up with
* its parent container (if any). Nested elements are then * its parent container (if any). Nested elements are then
* added later as the parser encounters them. * added later as the parser encounters them.
*
*
* @param propType Name of the element which caused this handler * @param propType Name of the element which caused this handler
* to be created. Must not be <code>null</code>. * to be created. Must not be <code>null</code>.
*
*
* @param attrs Attributes of the element which caused this * @param attrs Attributes of the element which caused this
* handler to be created. Must not be <code>null</code>. * handler to be created. Must not be <code>null</code>.
*
* @exception SAXParseException in case of error, such as a
*
* @exception SAXParseException in case of error, such as a
* BuildException being thrown during configuration. * BuildException being thrown during configuration.
*/ */
public void init(String propType, AttributeList attrs) throws SAXParseException { public void init(String propType, AttributeList attrs) throws SAXParseException {
Class parentClass = parent.getClass(); Class parentClass = parent.getClass();
IntrospectionHelper ih =
IntrospectionHelper ih =
IntrospectionHelper.getHelper(parentClass); IntrospectionHelper.getHelper(parentClass);


try { try {
@@ -990,14 +988,14 @@ public class ProjectHelperImpl extends ProjectHelper {
/** /**
* Adds text to the element, using the wrapper if one is * Adds text to the element, using the wrapper if one is
* available or using addText otherwise. * available or using addText otherwise.
*
*
* @param buf A character array of the text within the element. * @param buf A character array of the text within the element.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param start The start element in the array. * @param start The start element in the array.
* @param count The number of characters to read from the array. * @param count The number of characters to read from the array.
*
*
* @exception SAXParseException if the element doesn't support text * @exception SAXParseException if the element doesn't support text
*
*
* @see ProjectHelper#addText(Project,Object,char[],int,int) * @see ProjectHelper#addText(Project,Object,char[],int,int)
*/ */
public void characters(char[] buf, int start, int count) throws SAXParseException { public void characters(char[] buf, int start, int count) throws SAXParseException {
@@ -1016,23 +1014,23 @@ public class ProjectHelperImpl extends ProjectHelper {
* Handles the start of an element within this one. Task containers * Handles the start of an element within this one. Task containers
* will always use a task handler, and all other elements * will always use a task handler, and all other elements
* will always use another nested element handler. * will always use another nested element handler.
*
* @param name The name of the element being started.
*
* @param name The name of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element being started. * @param attrs Attributes of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
*
* @exception SAXParseException if an error occurs when initialising * @exception SAXParseException if an error occurs when initialising
* the appropriate child handler * the appropriate child handler
*/ */
public void startElement(String name, AttributeList attrs) throws SAXParseException { public void startElement(String name, AttributeList attrs) throws SAXParseException {
if (child instanceof TaskContainer) { if (child instanceof TaskContainer) {
// taskcontainer nested element can contain other tasks - no other
// taskcontainer nested element can contain other tasks - no other
// nested elements possible // nested elements possible
new TaskHandler(helperImpl, this, (TaskContainer) child,
new TaskHandler(helperImpl, this, (TaskContainer) child,
childWrapper, target).init(name, attrs); childWrapper, target).init(name, attrs);
} else { } else {
new NestedElementHandler(helperImpl, this, child,
new NestedElementHandler(helperImpl, this, child,
childWrapper, target).init(name, attrs); childWrapper, target).init(name, attrs);
} }
} }
@@ -1048,12 +1046,12 @@ public class ProjectHelperImpl extends ProjectHelper {
private Object element; private Object element;
/** Wrapper for this element, if it's part of a target. */ /** Wrapper for this element, if it's part of a target. */
private RuntimeConfigurable wrapper = null; private RuntimeConfigurable wrapper = null;
/** /**
* Constructor with no target specified. * Constructor with no target specified.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
* Must not be <code>null</code>. * Must not be <code>null</code>.
*/ */
public DataTypeHandler(ProjectHelperImpl helperImpl, DocumentHandler parentHandler) { public DataTypeHandler(ProjectHelperImpl helperImpl, DocumentHandler parentHandler) {
@@ -1062,11 +1060,11 @@ public class ProjectHelperImpl extends ProjectHelper {


/** /**
* Constructor with a target specified. * Constructor with a target specified.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
*
* @param parentHandler The handler which should be restored to the
* parser at the end of the element.
* Must not be <code>null</code>. * Must not be <code>null</code>.
*
*
* @param target The parent target of this element. * @param target The parent target of this element.
* May be <code>null</code>. * May be <code>null</code>.
*/ */
@@ -1081,14 +1079,14 @@ public class ProjectHelperImpl extends ProjectHelper {
* the element with its attributes and sets it up with * the element with its attributes and sets it up with
* its parent container (if any). Nested elements are then * its parent container (if any). Nested elements are then
* added later as the parser encounters them. * added later as the parser encounters them.
*
*
* @param propType Name of the element which caused this handler * @param propType Name of the element which caused this handler
* to be created. Must not be <code>null</code>. * to be created. Must not be <code>null</code>.
*
*
* @param attrs Attributes of the element which caused this * @param attrs Attributes of the element which caused this
* handler to be created. Must not be <code>null</code>. * handler to be created. Must not be <code>null</code>.
*
* @exception SAXParseException in case of error, such as a
*
* @exception SAXParseException in case of error, such as a
* BuildException being thrown during configuration. * BuildException being thrown during configuration.
*/ */
public void init(String propType, AttributeList attrs) throws SAXParseException { public void init(String propType, AttributeList attrs) throws SAXParseException {
@@ -1097,7 +1095,7 @@ public class ProjectHelperImpl extends ProjectHelper {
if (element == null) { if (element == null) {
throw new BuildException("Unknown data type " + propType); throw new BuildException("Unknown data type " + propType);
} }
if (target != null) { if (target != null) {
wrapper = new RuntimeConfigurable(element, propType); wrapper = new RuntimeConfigurable(element, propType);
wrapper.setAttributes(attrs); wrapper.setAttributes(attrs);
@@ -1115,14 +1113,14 @@ public class ProjectHelperImpl extends ProjectHelper {
// if one is available, whereas NestedElementHandler.characters does? // if one is available, whereas NestedElementHandler.characters does?
/** /**
* Adds text to the element. * Adds text to the element.
*
*
* @param buf A character array of the text within the element. * @param buf A character array of the text within the element.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param start The start element in the array. * @param start The start element in the array.
* @param count The number of characters to read from the array. * @param count The number of characters to read from the array.
*
*
* @exception SAXParseException if the element doesn't support text * @exception SAXParseException if the element doesn't support text
*
*
* @see ProjectHelper#addText(Project,Object,char[],int,int) * @see ProjectHelper#addText(Project,Object,char[],int,int)
*/ */
public void characters(char[] buf, int start, int count) throws SAXParseException { public void characters(char[] buf, int start, int count) throws SAXParseException {
@@ -1136,12 +1134,12 @@ public class ProjectHelperImpl extends ProjectHelper {
/** /**
* Handles the start of an element within this one. * Handles the start of an element within this one.
* This will always use a nested element handler. * This will always use a nested element handler.
*
* @param name The name of the element being started.
*
* @param name The name of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
* @param attrs Attributes of the element being started. * @param attrs Attributes of the element being started.
* Will not be <code>null</code>. * Will not be <code>null</code>.
*
*
* @exception SAXParseException if an error occurs when initialising * @exception SAXParseException if an error occurs when initialising
* the child handler * the child handler
*/ */
@@ -1152,9 +1150,9 @@ public class ProjectHelperImpl extends ProjectHelper {


/** /**
* Returns the parser factory to use. Only one parser * Returns the parser factory to use. Only one parser
* factory is ever created by this method (multi-threading
* factory is ever created by this method (multi-threading
* issues aside) and is then cached for future use. * issues aside) and is then cached for future use.
*
*
* @return a SAXParserFactory to use within this class * @return a SAXParserFactory to use within this class
*/ */
private static SAXParserFactory getParserFactory() { private static SAXParserFactory getParserFactory() {
@@ -1166,13 +1164,13 @@ public class ProjectHelperImpl extends ProjectHelper {
} }


/** /**
* Scans an attribute list for the <code>id</code> attribute and
* Scans an attribute list for the <code>id</code> attribute and
* stores a reference to the target object in the project if an * stores a reference to the target object in the project if an
* id is found. * id is found.
* <p> * <p>
* This method was moved out of the configure method to allow * This method was moved out of the configure method to allow
* it to be executed at parse time. * it to be executed at parse time.
*
*
* @see #configure(Object,AttributeList,Project) * @see #configure(Object,AttributeList,Project)
*/ */
private void configureId(Object target, AttributeList attr) { private void configureId(Object target, AttributeList attr) {


Loading…
Cancel
Save