Browse Source

Make "file" attribute only check for a file; add "dir" attribute for checking

for a directory; update doc.
PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268987 13f79535-47bb-0310-9956-ffa450edef68
master
Diane Holt 24 years ago
parent
commit
d6a12245ee
2 changed files with 52 additions and 23 deletions
  1. +35
    -20
      docs/manual/CoreTasks/available.html
  2. +17
    -3
      src/main/org/apache/tools/ant/taskdefs/Available.java

+ 35
- 20
docs/manual/CoreTasks/available.html View File

@@ -10,10 +10,10 @@
<h2><a name="available">Available</a></h2>
<h3>Description</h3>
<p>Sets a property if a resource is available at runtime. This resource can be a
file resource, a class in classpath or a JVM system resource.</p>
file, a directory, a class in the classpath, or a JVM system resource.</p>
<p>If the resource is present, the property value is set to true by
default, otherwise the property is not set. You can set the value to
something specific by using the value attribute.</p>
something specific by specifying the <code>value</code> attribute.</p>
<p>Normally, this task is used to set properties that are useful to avoid target
execution depending on system parameters.</p>
<h3>Parameters</h3>
@@ -25,54 +25,58 @@ execution depending on system parameters.</p>
</tr>
<tr>
<td valign="top">property</td>
<td valign="top">the name of the property to set.</td>
<td valign="top">The name of the property to set.</td>
<td valign="top" align="center">Yes</td>
</tr>
<tr>
<td valign="top">value</td>
<td valign="top">the value to set the property to. Defaults to &quot;true&quot;.</td>
<td valign="top">The value to set the property to. Defaults to &quot;true&quot;.</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">classname</td>
<td valign="top">the class to look for in classpath.</td>
<td valign="middle" align="center" rowspan="3">Yes</td>
<td valign="top">The class to look for in the classpath.</td>
<td valign="middle" align="center" rowspan="4">Yes</td>
</tr>
<tr>
<td valign="top">resource</td>
<td valign="top">the resource to look for in the JVM</td>
<td valign="top">dir</td>
<td valign="top">The directory to look for.</td>
</tr>
<tr>
<td valign="top">file</td>
<td valign="top">the file to look for.</td>
<td valign="top">The file to look for.</td>
</tr>
<tr>
<td valign="top">resource</td>
<td valign="top">The resource to look for in the JVM.</td>
</tr>
<tr>
<td valign="top">classpath</td> <td valign="top">the classpath to
use when looking up <code>classname</code>.</td> <td
<td valign="top">classpath</td> <td valign="top">The classpath to
use when looking up <code>classname</code> or <code>resource</code>.</td> <td
align="center" valign="top">No</td>
</tr>
<tr>
<td valign="top">classpathref</td>
<td valign="top">the classpath to use, given as <a href="../using.html#references">reference</a> to a path defined elsewhere.</td>
<td valign="top">The classpath to use, given as a <a href="../using.html#references">reference</a> to a path defined elsewhere.</td>
<td align="center" valign="top">No</td>
</tr>
</table>
<h3>Parameters specified as nested elements</h3>
<h4>classpath</h4>
<p><code>Available</code>'s <i>classpath</i> attribute is a <a
<p><code>Available</code>'s <code>classpath</code> attribute is a <a
href="../using.html#path">path-like structure</a> and can also be set via a nested
<i>classpath</i> element.</p>
<code>&lt;classpath&gt;</code> element.</p>
<h3>Examples</h3>
<pre> &lt;available classname=&quot;org.whatever.Myclass&quot; property=&quot;Myclass.present&quot;/&gt;</pre>
<p>sets the property <code><i>Myclass.present</i></code> to the value &quot;true&quot;
if the class <i>org.whatever.Myclass</i> is found in Ant's classpath.</p>
<p>sets the <code>Myclass.present</code> property to the value &quot;true&quot;
if the class <code>org.whatever.Myclass</code> is found in Ant's classpath.</p>
<pre>
&lt;property name=&quot;jaxp.jar&quot; value=&quot;./lib/jaxp11/jaxp.jar&quot;/&gt;
&lt;available file=&quot;${jaxp.jar}&quot; property=&quot;jaxp.jar.present&quot;/&gt;
</pre>
<p>sets the property <code><i>jaxp.jar.present</i></code> to the value &quot;true&quot;
if the file <i>./lib/jaxp11/jaxp.jar</i> is found.</p>
<p>sets the <code>jaxp.jar.present</code> property to the value &quot;true&quot;
if the file <code>./lib/jaxp11/jaxp.jar</code> is found.</p>
<pre>
...in project ...
&lt;property name=&quot;jaxp.jar&quot; value=&quot;./lib/jaxp11/jaxp.jar&quot;/&gt;
@@ -80,8 +84,19 @@ if the file <i>./lib/jaxp11/jaxp.jar</i> is found.</p>
...in target ...
&lt;available classname=&quot;javax.xml.transform.Transformer&quot; classpathref=&quot;jaxp&quot; property=&quot;jaxp11.present&quot;/&gt;
</pre>
<p>sets the property <code><i>jaxp11.present</i></code> to the value &quot;true&quot;
if the class <i>javax.xml.transform.Transformer</i> is found in the classpath referenced by <code>jaxp</code> (in this case, it is <code>./lib/jaxp11/jaxp.jar</code>).
<p>sets the <code>jaxp11.present</code> property to the value &quot;true&quot;
if the class <code>javax.xml.transform.Transformer</code> is found in the classpath referenced by <code>jaxp</code> (in this case, <code>./lib/jaxp11/jaxp.jar</code>).
</p>
<p>
<pre>
&lt;available property=&quot;have.extras&quot; resource=&quot;extratasks.properties&quot;&gt;
&lt;classpath&gt;
&lt;pathelement location=&quot;/usr/local/ant/extra.jar/&gt;
&nbsp;&nbsp;&lt;/classpath&gt;
&lt;/available&gt;
</pre>
<p>sets the <code>have.extras</code> property to the value &quot;true&quot;
if the resource-file <code>extratasks.properties</code> is found.
</p>
<hr><p align="center">Copyright &copy; 2000,2001 Apache Software Foundation. All rights
Reserved.</p>


+ 17
- 3
src/main/org/apache/tools/ant/taskdefs/Available.java View File

@@ -70,6 +70,7 @@ public class Available extends Task {
private String property;
private String classname;
private File file;
private File dir;
private String resource;
private Path classpath;
private AntClassLoader loader;
@@ -112,6 +113,10 @@ public class Available extends Task {
this.file = file;
}

public void setDir(File dir) {
this.dir = dir;
}

public void setResource(String resource) {
this.resource = resource;
}
@@ -121,8 +126,8 @@ public class Available extends Task {
throw new BuildException("property attribute is required", location);
}
if (classname == null && file == null && resource == null) {
throw new BuildException("At least one of (classname|file|resource) is required", location);
if (classname == null && file == null && dir == null && resource == null) {
throw new BuildException("At least one of (classname|file|dir|resource) is required", location);
}

if (classpath != null) {
@@ -139,6 +144,11 @@ public class Available extends Task {
return;
}
if ((dir != null) && !checkDir(dir)) {
log("Unable to find dir " + dir + " to set property " + property, Project.MSG_VERBOSE);
return;
}
if ((resource != null) && !checkResource(resource)) {
log("Unable to load resource " + resource + " to set property " + property, Project.MSG_VERBOSE);
return;
@@ -148,7 +158,11 @@ public class Available extends Task {
}

private boolean checkFile(File file) {
return file.exists();
return file.isFile();
}

private boolean checkDir(File dir) {
return dir.isDirectory();
}

private boolean checkResource(String resource) {


Loading…
Cancel
Save