Skip to content

Commit 4583ccf

Browse files
committed
ClassUtil: generalize static method findAllClasses so that it an be used
for other directories.
1 parent 5cf2a7a commit 4583ccf

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

src/main/java/org/scijava/ui/swing/script/ClassUtil.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.HashMap;
1010
import java.util.HashSet;
1111
import java.util.LinkedList;
12+
import java.util.List;
1213
import java.util.Map;
1314
import java.util.Scanner;
1415
import java.util.jar.JarEntry;
@@ -28,8 +29,12 @@ public class ClassUtil {
2829

2930
static private final void ensureCache() {
3031
synchronized (class_urls) {
31-
if (class_urls.isEmpty())
32-
class_urls.putAll(findAllClasses());
32+
if (class_urls.isEmpty()) {
33+
final ArrayList<String> dirs = new ArrayList<>();
34+
dirs.add(System.getProperty("java.home"));
35+
dirs.add(System.getProperty("ij.dir"));
36+
class_urls.putAll(findAllClasses(dirs));
37+
}
3338
}
3439
}
3540

@@ -161,25 +166,22 @@ public JarProperties(final String name, final ArrayList<String> urls) {
161166
}
162167
}
163168

164-
static public final HashMap<String, JarProperties> findAllClasses() {
169+
static public final HashMap<String, JarProperties> findAllClasses(final List<String> jar_folders) {
165170
// Find all jar files
166171
final ArrayList<String> jarFilePaths = new ArrayList<String>();
167-
final LinkedList<String> dirs = new LinkedList<>();
168-
dirs.add(System.getProperty("java.home"));
169-
dirs.add(System.getProperty("ij.dir"));
172+
final LinkedList<String> dirs = new LinkedList<>(jar_folders);
170173
final HashSet<String> seenDirs = new HashSet<>();
171174
while (!dirs.isEmpty()) {
172175
final String filepath = dirs.removeFirst();
176+
if (null == filepath) continue;
173177
final File file = new File(filepath);
174178
seenDirs.add(file.getAbsolutePath());
175-
if (file.exists()) {
176-
if (file.isDirectory()) {
177-
for (final File child : file.listFiles()) {
178-
final String childfilepath = child.getAbsolutePath();
179-
if (seenDirs.contains(childfilepath)) continue;
180-
if (child.isDirectory()) dirs.add(childfilepath);
181-
else if (childfilepath.endsWith(".jar")) jarFilePaths.add(childfilepath);
182-
}
179+
if (file.exists() && file.isDirectory()) {
180+
for (final File child : file.listFiles()) {
181+
final String childfilepath = child.getAbsolutePath();
182+
if (seenDirs.contains(childfilepath)) continue;
183+
if (child.isDirectory()) dirs.add(childfilepath);
184+
else if (childfilepath.endsWith(".jar")) jarFilePaths.add(childfilepath);
183185
}
184186
}
185187
}

0 commit comments

Comments
 (0)