Package org.apache.xbean.finder
Class ClassFinder
- java.lang.Object
-
- org.apache.xbean.finder.AbstractFinder
-
- org.apache.xbean.finder.ClassFinder
-
- All Implemented Interfaces:
IAnnotationFinder
public class ClassFinder extends AbstractFinder
ClassFinder searches the classpath of the specified classloader for packages, classes, constructors, methods, or fields with specific annotations. For security reasons ASM is used to find the annotations. Classes are not loaded unless they match the requirements of a called findAnnotated* method. Once loaded, these classes are cached. The getClassesNotLoaded() method can be used immediately after any find* method to get a list of classes which matched the find requirements (i.e. contained the annotation), but were unable to be loaded.- Version:
- $Rev: 1778104 $ $Date: 2017-01-10 11:05:25 +0100 (Tue, 10 Jan 2017) $
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.xbean.finder.AbstractFinder
AbstractFinder.Annotatable, AbstractFinder.AnnotationInfo, AbstractFinder.ClassInfo, AbstractFinder.FieldInfo, AbstractFinder.Info, AbstractFinder.InfoBuildingVisitor, AbstractFinder.MethodInfo, AbstractFinder.PackageInfo
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.ClassLoader
classLoader
-
Fields inherited from class org.apache.xbean.finder.AbstractFinder
classInfos, originalInfos
-
-
Constructor Summary
Constructors Constructor Description ClassFinder(java.lang.Class<?>... classes)
ClassFinder(java.lang.ClassLoader classLoader)
Creates a ClassFinder that will search the urls in the specified classloader excluding the urls in the classloader's parent.ClassFinder(java.lang.ClassLoader classLoader, boolean excludeParent)
Creates a ClassFinder that will search the urls in the specified classloader.ClassFinder(java.lang.ClassLoader classLoader, java.lang.ClassLoader exclude)
Creates a ClassFinder that will search the urls in the specified classloader excluding the urls in the 'exclude' classloader.ClassFinder(java.lang.ClassLoader classLoader, java.net.URL url)
ClassFinder(java.lang.ClassLoader classLoader, java.util.Collection<java.net.URL> urls)
ClassFinder(java.util.List<java.lang.Class<?>> classes)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.util.List<java.lang.String>
file(java.net.URL location)
protected java.net.URL
getResource(java.lang.String className)
private static java.util.Collection<java.net.URL>
getUrls(java.lang.ClassLoader classLoader, boolean excludeParent)
private static java.util.Collection<java.net.URL>
getUrls(java.lang.ClassLoader classLoader, java.lang.ClassLoader excludeParent)
private java.util.List<java.lang.String>
jar(java.net.URL location)
private java.util.List<java.lang.String>
jar(java.util.jar.JarInputStream jarStream)
protected java.lang.Class<?>
loadClass(java.lang.String fixedName)
private void
scanDir(java.io.File dir, java.util.List<java.lang.String> classNames, java.lang.String packageName)
-
Methods inherited from class org.apache.xbean.finder.AbstractFinder
findAnnotatedClasses, findAnnotatedConstructors, findAnnotatedFields, findAnnotatedMethods, findAnnotatedPackages, findClassesInPackage, findImplementations, findInheritedAnnotatedClasses, findMetaAnnotatedClasses, findMetaAnnotatedFields, findMetaAnnotatedMethods, findSubclasses, getAnnotatedClassNames, getAnnotationInfos, getClassesNotLoaded, isAnnotationPresent, link, readClassDef, readClassDef, readClassDef, readClassDef
-
-
-
-
Constructor Detail
-
ClassFinder
public ClassFinder(java.lang.ClassLoader classLoader) throws java.lang.Exception
Creates a ClassFinder that will search the urls in the specified classloader excluding the urls in the classloader's parent. To include the parent classloader, use: new ClassFinder(classLoader, false); To exclude the parent's parent, use: new ClassFinder(classLoader, classLoader.getParent().getParent());- Parameters:
classLoader
- source of classes to scan- Throws:
java.lang.Exception
- if something goes wrong
-
ClassFinder
public ClassFinder(java.lang.ClassLoader classLoader, boolean excludeParent) throws java.lang.Exception
Creates a ClassFinder that will search the urls in the specified classloader.- Parameters:
classLoader
- source of classes to scanexcludeParent
- Allegedly excludes classes from parent classloader, whatever that might mean- Throws:
java.lang.Exception
- if something goes wrong.
-
ClassFinder
public ClassFinder(java.lang.ClassLoader classLoader, java.lang.ClassLoader exclude) throws java.lang.Exception
Creates a ClassFinder that will search the urls in the specified classloader excluding the urls in the 'exclude' classloader.- Parameters:
classLoader
- source of classes to scanexclude
- source of classes to exclude from scanning- Throws:
java.lang.Exception
- if something goes wrong
-
ClassFinder
public ClassFinder(java.lang.ClassLoader classLoader, java.net.URL url)
-
ClassFinder
public ClassFinder(java.lang.ClassLoader classLoader, java.util.Collection<java.net.URL> urls)
-
ClassFinder
public ClassFinder(java.lang.Class<?>... classes)
-
ClassFinder
public ClassFinder(java.util.List<java.lang.Class<?>> classes)
-
-
Method Detail
-
getUrls
private static java.util.Collection<java.net.URL> getUrls(java.lang.ClassLoader classLoader, boolean excludeParent) throws java.io.IOException
- Throws:
java.io.IOException
-
getUrls
private static java.util.Collection<java.net.URL> getUrls(java.lang.ClassLoader classLoader, java.lang.ClassLoader excludeParent) throws java.io.IOException
- Throws:
java.io.IOException
-
getResource
protected java.net.URL getResource(java.lang.String className)
- Specified by:
getResource
in classAbstractFinder
-
loadClass
protected java.lang.Class<?> loadClass(java.lang.String fixedName) throws java.lang.ClassNotFoundException
- Specified by:
loadClass
in classAbstractFinder
- Throws:
java.lang.ClassNotFoundException
-
file
private java.util.List<java.lang.String> file(java.net.URL location)
-
scanDir
private void scanDir(java.io.File dir, java.util.List<java.lang.String> classNames, java.lang.String packageName)
-
jar
private java.util.List<java.lang.String> jar(java.net.URL location) throws java.io.IOException
- Throws:
java.io.IOException
-
jar
private java.util.List<java.lang.String> jar(java.util.jar.JarInputStream jarStream) throws java.io.IOException
- Throws:
java.io.IOException
-
-