You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by st...@locus.apache.org on 2000/09/17 02:07:14 UTC
cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs Available.java
stefano 00/09/16 17:07:14
Modified: src/main/org/apache/tools/ant/taskdefs Available.java
Log:
Updated this task so that you can have <classpath> inside that tells the Available where to look for classes and resources. It is completely back compatible so should cause any harm to anybody.
Revision Changes Path
1.11 +39 -5 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Available.java
Index: Available.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Available.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Available.java 2000/09/14 10:49:54 1.10
+++ Available.java 2000/09/17 00:07:14 1.11
@@ -54,9 +54,10 @@
package org.apache.tools.ant.taskdefs;
-import org.apache.tools.ant.*;
import java.io.*;
import java.util.*;
+import org.apache.tools.ant.*;
+import org.apache.tools.ant.types.*;
/**
* Will set the given property if the requested resource is available at runtime.
@@ -70,8 +71,29 @@
private String classname;
private File file;
private String resource;
+ private Path classpath;
+ private AntClassLoader loader;
private String value = "true";
+ public void setClasspath(Path classpath) {
+ if (this.classpath == null) {
+ this.classpath = classpath;
+ } else {
+ this.classpath.append(classpath);
+ }
+ }
+
+ public Path createClasspath() {
+ if (this.classpath == null) {
+ this.classpath = new Path(project);
+ }
+ return this.classpath.createPath();
+ }
+
+ public void setClasspathRef(Reference r) {
+ createClasspath().setRefid(r);
+ }
+
public void setProperty(String property) {
this.property = property;
}
@@ -93,6 +115,10 @@
}
public void execute() throws BuildException {
+ if (classpath != null) {
+ this.loader = new AntClassLoader(project, classpath, false);
+ }
+
if ((classname != null) && !checkClass(classname)) return;
if ((file != null) && !checkFile(file)) return;
if ((resource != null) && !checkResource(resource)) return;
@@ -105,15 +131,23 @@
}
private boolean checkResource(String resource) {
- return (ClassLoader.getSystemResource(resource) != null);
+ if (loader != null) {
+ return (loader.getResourceAsStream(resource) != null);
+ } else {
+ return (this.getClass().getResourceAsStream(resource) != null);
+ }
}
private boolean checkClass(String classname) {
try {
- Class.forName(classname);
+ if (loader != null) {
+ loader.loadClass(classname);
+ } else {
+ this.getClass().getClassLoader().loadClass(classname);
+ }
return true;
- } catch (Throwable t) {
- log(t.toString(), Project.MSG_VERBOSE);
+ } catch (ClassNotFoundException e) {
+ log(e.toString(), Project.MSG_VERBOSE);
return false;
}
}