Skip to content

Commit

Permalink
avoid possible NPEs on classpath scanning
Browse files Browse the repository at this point in the history
  • Loading branch information
jstrachan committed Jul 26, 2013
1 parent 318124d commit ab3633d
Showing 1 changed file with 31 additions and 28 deletions.
Expand Up @@ -49,8 +49,8 @@ public class ClassScanner {

private final ClassLoader[] classLoaders;

private WeakHashMap<String,CacheValue> cache = new WeakHashMap<String, CacheValue>();
private WeakHashMap<Package,CacheValue> packageCache = new WeakHashMap<Package, CacheValue>();
private WeakHashMap<String, CacheValue> cache = new WeakHashMap<String, CacheValue>();
private WeakHashMap<Package, CacheValue> packageCache = new WeakHashMap<Package, CacheValue>();

public static ClassScanner newInstance() {
return new ClassScanner(Thread.currentThread().getContextClassLoader(), ClassScanner.class.getClassLoader());
Expand Down Expand Up @@ -216,15 +216,17 @@ protected CacheValue createCacheValue(String key, ClassResource classResource) {

protected void processDirectoryClassNames(File directory, String packageName, Set<String> classes) {
String[] fileNames = directory.list();
for (String fileName : fileNames) {
String packagePrefix = Strings.isNotBlank(packageName) ? packageName + '.' : packageName;
if (fileName.endsWith(".class")) {
String className = packagePrefix + fileName.substring(0, fileName.length() - 6);
classes.add(className);
}
File subdir = new File(directory, fileName);
if (subdir.isDirectory()) {
processDirectoryClassNames(subdir, packagePrefix + fileName, classes);
if (fileNames != null) {
for (String fileName : fileNames) {
String packagePrefix = Strings.isNotBlank(packageName) ? packageName + '.' : packageName;
if (fileName.endsWith(".class")) {
String className = packagePrefix + fileName.substring(0, fileName.length() - 6);
classes.add(className);
}
File subdir = new File(directory, fileName);
if (subdir.isDirectory()) {
processDirectoryClassNames(subdir, packagePrefix + fileName, classes);
}
}
}
}
Expand Down Expand Up @@ -253,7 +255,6 @@ protected void processJarClassNames(ClassResource classResource, Set<String> cla
}



protected void addClassesForPackage(ClassResource classResource, String filter, Integer limit, Set<Class<?>> classes) {
String packageName = classResource.getPackageName();
URL resource = classResource.getResource();
Expand All @@ -270,22 +271,24 @@ protected void addClassesForPackage(ClassResource classResource, String filter,

protected void processDirectory(File directory, String packageName, Set<Class<?>> classes, String filter, Integer limit) {
String[] fileNames = directory.list();
for (String fileName : fileNames) {
if (!withinLimit(limit, classes)) {
return;
}
String className = null;
String packagePrefix = Strings.isNotBlank(packageName) ? packageName + '.' : packageName;
if (fileName.endsWith(".class")) {
className = packagePrefix + fileName.substring(0, fileName.length() - 6);
}
Class<?> aClass = tryFindClass(className, filter);
if (aClass != null) {
classes.add(aClass);
}
File subdir = new File(directory, fileName);
if (subdir.isDirectory()) {
processDirectory(subdir, packagePrefix + fileName, classes, filter, limit);
if (fileNames != null) {
for (String fileName : fileNames) {
if (!withinLimit(limit, classes)) {
return;
}
String className = null;
String packagePrefix = Strings.isNotBlank(packageName) ? packageName + '.' : packageName;
if (fileName.endsWith(".class")) {
className = packagePrefix + fileName.substring(0, fileName.length() - 6);
}
Class<?> aClass = tryFindClass(className, filter);
if (aClass != null) {
classes.add(aClass);
}
File subdir = new File(directory, fileName);
if (subdir.isDirectory()) {
processDirectory(subdir, packagePrefix + fileName, classes, filter, limit);
}
}
}
}
Expand Down

0 comments on commit ab3633d

Please sign in to comment.