@@ -269,11 +269,13 @@ public class Depend extends MatchingTask {
}
}
}
}
if (checkPath.length() == 0) {
return null;
Path p = null;
if (checkPath.length() > 0) {
p = new Path(getProject(), checkPath);
}
}
return new Path(getProject(), checkPath);
log("Classpath without dest dir is " + p, Project.MSG_DEBUG);
return p;
}
}
/**
/**
@@ -341,7 +343,10 @@ public class Depend extends MatchingTask {
dependencyList = new Vector();
dependencyList = new Vector();
Enumeration depEnum = analyzer.getClassDependencies();
Enumeration depEnum = analyzer.getClassDependencies();
while (depEnum.hasMoreElements()) {
while (depEnum.hasMoreElements()) {
dependencyList.addElement(depEnum.nextElement());
Object o = depEnum.nextElement();
dependencyList.addElement(o);
log("Class " + info.className + " depends on " + o,
Project.MSG_DEBUG);
}
}
cacheDirty = true;
cacheDirty = true;
dependencyMap.put(info.className, dependencyList);
dependencyMap.put(info.className, dependencyList);
@@ -361,6 +366,8 @@ public class Depend extends MatchingTask {
}
}
affectedClasses.put(info.className, info);
affectedClasses.put(info.className, info);
log(dependentClass + " affects " + info.className,
Project.MSG_DEBUG);
}
}
}
}
@@ -377,12 +384,15 @@ public class Depend extends MatchingTask {
Object nullFileMarker = new Object();
Object nullFileMarker = new Object();
for (Enumeration e = dependencyMap.keys(); e.hasMoreElements();) {
for (Enumeration e = dependencyMap.keys(); e.hasMoreElements();) {
String className = (String) e.nextElement();
String className = (String) e.nextElement();
log("Determining classpath dependencies for " + className,
Project.MSG_DEBUG);
Vector dependencyList = (Vector) dependencyMap.get(className);
Vector dependencyList = (Vector) dependencyMap.get(className);
Hashtable dependencies = new Hashtable();
Hashtable dependencies = new Hashtable();
classpathDependencies.put(className, dependencies);
classpathDependencies.put(className, dependencies);
Enumeration e2 = dependencyList.elements();
Enumeration e2 = dependencyList.elements();
while (e2.hasMoreElements()) {
while (e2.hasMoreElements()) {
String dependency = (String) e2.nextElement();
String dependency = (String) e2.nextElement();
log("Looking for " + dependency, Project.MSG_DEBUG);
Object classpathFileObject
Object classpathFileObject
= classpathFileCache.get(dependency);
= classpathFileCache.get(dependency);
if (classpathFileObject == null) {
if (classpathFileObject == null) {
@@ -392,6 +402,7 @@ public class Depend extends MatchingTask {
&& !dependency.startsWith("javax.")) {
&& !dependency.startsWith("javax.")) {
URL classURL
URL classURL
= loader.getResource(dependency.replace('.', '/') + ".class");
= loader.getResource(dependency.replace('.', '/') + ".class");
log("URL is " + classURL, Project.MSG_DEBUG);
if (classURL != null) {
if (classURL != null) {
if (classURL.getProtocol().equals("jar")) {
if (classURL.getProtocol().equals("jar")) {
String jarFilePath = classURL.getFile();
String jarFilePath = classURL.getFile();
@@ -414,12 +425,17 @@ public class Depend extends MatchingTask {
+ " depends on " + classpathFileObject
+ " depends on " + classpathFileObject
+ " due to " + dependency, Project.MSG_DEBUG);
+ " due to " + dependency, Project.MSG_DEBUG);
}
}
} else {
log("Ignoring base classlib dependency "
+ dependency, Project.MSG_DEBUG);
}
}
classpathFileCache.put(dependency, classpathFileObject);
classpathFileCache.put(dependency, classpathFileObject);
}
}
if (classpathFileObject != nullFileMarker) {
if (classpathFileObject != nullFileMarker) {
// we need to add this jar to the list for this class.
// we need to add this jar to the list for this class.
File jarFile = (File) classpathFileObject;
File jarFile = (File) classpathFileObject;
log("Adding a classpath dependency on " + jarFile,
Project.MSG_DEBUG);
dependencies.put(jarFile, jarFile);
dependencies.put(jarFile, jarFile);
}
}
}
}
@@ -429,6 +445,8 @@ public class Depend extends MatchingTask {
loader.cleanup();
loader.cleanup();
}
}
}
}
} else {
log("No classpath to check", Project.MSG_DEBUG);
}
}
// write the dependency cache to the disk
// write the dependency cache to the disk