summaryrefslogtreecommitdiff
path: root/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java')
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java57
1 files changed, 21 insertions, 36 deletions
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
index 8f0a57975..3c8d82b33 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
@@ -20,10 +20,11 @@ package org.apache.tools.ant.taskdefs.optional.depend;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
import java.nio.file.Files;
import java.nio.file.Paths;
-import java.util.Enumeration;
-import java.util.Hashtable;
import java.util.Vector;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -37,11 +38,6 @@ import org.apache.tools.ant.util.depend.AbstractAnalyzer;
*
*/
public class AntAnalyzer extends AbstractAnalyzer {
- /**
- * Default constructor
- */
- public AntAnalyzer() {
- }
/**
* Determine the dependencies of the configured root classes.
@@ -51,31 +47,27 @@ public class AntAnalyzer extends AbstractAnalyzer {
* @param classes a vector to be populated with the names of the
* dependency classes.
*/
+ @Override
protected void determineDependencies(Vector<File> files, Vector<String> classes) {
// we get the root classes and build up a set of
// classes upon which they depend
- Hashtable<String, String> dependencies = new Hashtable<String, String>();
- Hashtable<File, File> containers = new Hashtable<File, File>();
- Hashtable<String, String> toAnalyze = new Hashtable<String, String>();
- for (Enumeration<String> e = getRootClasses(); e.hasMoreElements();) {
- String classname = e.nextElement();
- toAnalyze.put(classname, classname);
- }
+ Set<String> toAnalyze = new HashSet<>(Collections.list(getRootClasses()));
int count = 0;
int maxCount = isClosureRequired() ? MAX_LOOPS : 1;
- Hashtable<String, String> analyzedDeps = null;
- while (toAnalyze.size() != 0 && count++ < maxCount) {
- analyzedDeps = new Hashtable<String, String>();
- for (Enumeration<String> e = toAnalyze.keys(); e.hasMoreElements();) {
- String classname = e.nextElement();
- dependencies.put(classname, classname);
+ Set<String> dependencies = new HashSet<>();
+ Set<File> containers = new HashSet<>();
+ Set<String> analyzedDeps = null;
+ while (!toAnalyze.isEmpty() && count++ < maxCount) {
+ analyzedDeps = new HashSet<>();
+ for (String classname : toAnalyze) {
+ dependencies.add(classname);
try {
File container = getClassContainer(classname);
if (container == null) {
continue;
}
- containers.put(container, container);
+ containers.add(container);
ZipFile zipFile = null;
InputStream inStream = null;
@@ -93,7 +85,7 @@ public class AntAnalyzer extends AbstractAnalyzer {
ClassFile classFile = new ClassFile();
classFile.read(inStream);
for (String dependency : classFile.getClassRefs()) {
- analyzedDeps.put(dependency, dependency);
+ analyzedDeps.add(dependency);
}
} finally {
FileUtils.close(inStream);
@@ -107,27 +99,20 @@ public class AntAnalyzer extends AbstractAnalyzer {
toAnalyze.clear();
// now recover all the dependencies collected and add to the list.
- for (String className : analyzedDeps.values()) {
- if (!dependencies.containsKey(className)) {
- toAnalyze.put(className, className);
+ for (String className : analyzedDeps) {
+ if (!dependencies.contains(className)) {
+ toAnalyze.add(className);
}
}
}
// pick up the last round of dependencies that were determined
- for (String className : analyzedDeps.values()) {
- dependencies.put(className, className);
- }
+ dependencies.addAll(analyzedDeps);
files.removeAllElements();
- for (File f : containers.keySet()) {
- files.add(f);
- }
-
+ files.addAll(containers);
classes.removeAllElements();
- for (String dependency :dependencies.keySet()) {
- classes.add(dependency);
- }
+ classes.addAll(dependencies);
}
/**
@@ -135,9 +120,9 @@ public class AntAnalyzer extends AbstractAnalyzer {
*
* @return true if the analyzer provides dependency file information.
*/
+ @Override
protected boolean supportsFileDependencies() {
return true;
}
}
-