public class ClassFinder
extends java.lang.Object
Constructor and Description |
---|
ClassFinder() |
ClassFinder(java.lang.ClassLoader loader) |
ClassFinder(java.io.File jarFile) |
Modifier and Type | Method and Description |
---|---|
void |
find(java.lang.String packageName,
java.lang.Class<?> parentType)
Scans the classpath for classes within the specified package and sub-packages that
extend the parentType.
|
java.util.Set<java.lang.Class<?>> |
getClasses()
Fetches the set of classes discovered so far.
|
java.util.Set<java.lang.Class<?>> |
getConcreteClasses()
Fetches the set of classes discovered so far, subsetted down to concrete (non-abstract/interface) classes only
|
protected void |
handleItem(java.lang.String name)
Checks an item to see if it is a class and is annotated with the specified
annotation.
|
static boolean |
isConcrete(java.lang.Class<?> clazz)
Determines whether or not the specified class is concrete (ie., non-abstract and non-interface)
|
protected void |
scanDir(java.io.File file,
java.lang.String path)
Scans a directory on the filesystem for classes.
|
protected void |
scanJar(java.io.File file,
java.lang.String packagePath)
Scans the entries in a ZIP/JAR file for classes under the parent package.
|
java.lang.String |
toClassName(java.lang.String filename)
Convert a filename to a class name by removing '.class' and converting '/'s to '.'s.
|
public ClassFinder()
public ClassFinder(java.lang.ClassLoader loader)
public ClassFinder(java.io.File jarFile) throws java.io.IOException
java.io.IOException
public java.lang.String toClassName(java.lang.String filename)
public void find(java.lang.String packageName, java.lang.Class<?> parentType)
getClasses()
.protected void scanJar(java.io.File file, java.lang.String packagePath) throws java.io.IOException
file
- the jar file to be scannedpackagePath
- the top level package to start fromjava.io.IOException
protected void scanDir(java.io.File file, java.lang.String path)
file
- the directory or file to examinepath
- the package path acculmulated so far (e.g. edu/mit/broad)protected void handleItem(java.lang.String name)
name
- the path equivelant to the package + class/item namepublic java.util.Set<java.lang.Class<?>> getClasses()
public java.util.Set<java.lang.Class<?>> getConcreteClasses()
public static boolean isConcrete(java.lang.Class<?> clazz)
clazz
- class to check