org.mule.util.scan
Class ClasspathScanner
java.lang.Object
org.mule.util.scan.ClasspathScanner
public class ClasspathScanner
- extends Object
This class can be used to scan the classpath for classtypes (or interfaces they
implement) or for annotations on the classpath. The type of scanner used depends
on the class type passed in. There are currently 3 types of scanner;
This scanner uses ASM to search class byte code rather than the classes themselves
making orders of magnitude better performance and uses a lot less memory. ASM
seems to be the fasted of the byte code manipulation libraries i.e. JavaAssist or
BCEL Note that the scanner will not scan inner or anonymous classes.
Method Summary |
protected
|
addClassToSet(Class<T> c,
Set<Class<T>> set,
int flags)
|
protected ClassScanner |
getScanner(Class<?> clazz)
Works out the correct scanner based on the class passed in
Note that these could be better architected by breaking out filters into strategy objects, but for now this
suits my needs |
protected boolean |
hasFlag(int flags,
int flag)
|
protected Class<?> |
loadClass(String name)
|
protected
|
processFileUrl(URL url,
String basepath,
Class<T> clazz,
int flags)
|
protected
|
processJarUrl(URL url,
String basepath,
Class<T> clazz,
int flags)
|
|
scanFor(Class<T> clazz)
|
|
scanFor(Class<T> clazz,
int flags)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
INCLUDE_ABSTRACT
public static final int INCLUDE_ABSTRACT
- See Also:
- Constant Field Values
INCLUDE_INTERFACE
public static final int INCLUDE_INTERFACE
- See Also:
- Constant Field Values
INCLUDE_INNER
public static final int INCLUDE_INNER
- See Also:
- Constant Field Values
INCLUDE_ANONYMOUS
public static final int INCLUDE_ANONYMOUS
- See Also:
- Constant Field Values
DEFAULT_FLAGS
public static final int DEFAULT_FLAGS
- See Also:
- Constant Field Values
logger
protected final transient Log logger
- logger used by this class
ClasspathScanner
public ClasspathScanner(String... basepaths)
ClasspathScanner
public ClasspathScanner(ClassLoader classLoader,
String... basepaths)
scanFor
public <T> Set<Class<T>> scanFor(Class<T> clazz)
throws IOException
- Throws:
IOException
scanFor
public <T> Set<Class<T>> scanFor(Class<T> clazz,
int flags)
throws IOException
- Throws:
IOException
processJarUrl
protected <T> Set<Class<T>> processJarUrl(URL url,
String basepath,
Class<T> clazz,
int flags)
throws IOException
- Throws:
IOException
hasFlag
protected boolean hasFlag(int flags,
int flag)
processFileUrl
protected <T> Set<Class<T>> processFileUrl(URL url,
String basepath,
Class<T> clazz,
int flags)
throws IOException
- Throws:
IOException
addClassToSet
protected <T> void addClassToSet(Class<T> c,
Set<Class<T>> set,
int flags)
loadClass
protected Class<?> loadClass(String name)
getScanner
protected ClassScanner getScanner(Class<?> clazz)
- Works out the correct scanner based on the class passed in
Note that these could be better architected by breaking out filters into strategy objects, but for now this
suits my needs
- Parameters:
clazz
- the type to scan for
- Returns:
- a scanner suitable for handling the type passed in
- See Also:
AnnotationsScanner
,
InterfaceClassScanner
,
ImplementationClassScanner
Copyright © 2003-2012 MuleSoft, Inc.. All Rights Reserved.