org.apache.xbean.finder
Class AbstractFinder
java.lang.Object
org.apache.xbean.finder.AbstractFinder
- All Implemented Interfaces:
- IAnnotationFinder
- Direct Known Subclasses:
- BundleAnnotationFinder, ClassFinder
public abstract class AbstractFinder
- extends java.lang.Object
- implements IAnnotationFinder
- Version:
- $Rev: 1144600 $ $Date: 2011-07-09 14:13:25 +0800 (Sat, 09 Jul 2011) $
|
Method Summary |
java.util.List<java.lang.Class<?>> |
findAnnotatedClasses(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
|
java.util.List<java.lang.reflect.Constructor> |
findAnnotatedConstructors(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
|
java.util.List<java.lang.reflect.Field> |
findAnnotatedFields(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
|
java.util.List<java.lang.reflect.Method> |
findAnnotatedMethods(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
|
java.util.List<java.lang.Package> |
findAnnotatedPackages(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
|
java.util.List<java.lang.Class<?>> |
findClassesInPackage(java.lang.String packageName,
boolean recursive)
|
<T> java.util.List<java.lang.Class<? extends T>> |
|
findImplementations(java.lang.Class<T> clazz)
|
java.util.List<java.lang.Class<?>> |
findInheritedAnnotatedClasses(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
Naive implementation - works extremelly slow O(n^3) |
java.util.List<Annotated<java.lang.Class<?>>> |
findMetaAnnotatedClasses(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
|
java.util.List<Annotated<java.lang.reflect.Field>> |
findMetaAnnotatedFields(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
|
java.util.List<Annotated<java.lang.reflect.Method>> |
findMetaAnnotatedMethods(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
|
<T> java.util.List<java.lang.Class<? extends T>> |
|
findSubclasses(java.lang.Class<T> clazz)
|
java.util.List<java.lang.String> |
getAnnotatedClassNames()
|
protected java.util.List<AbstractFinder.Info> |
getAnnotationInfos(java.lang.String name)
|
java.util.List<java.lang.String> |
getClassesNotLoaded()
Returns a list of classes that could not be loaded in last invoked findAnnotated* method. |
protected abstract java.net.URL |
getResource(java.lang.String className)
|
boolean |
isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
|
AbstractFinder |
link()
The link() method must be called to successfully use the findSubclasses and findImplementations methods |
protected abstract java.lang.Class<?> |
loadClass(java.lang.String fixedName)
|
protected void |
readClassDef(java.lang.Class clazz)
|
protected void |
readClassDef(java.io.InputStream in)
|
protected void |
readClassDef(java.io.InputStream in,
java.lang.String path)
|
protected void |
readClassDef(java.lang.String className)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
classInfos
protected final java.util.Map<java.lang.String,AbstractFinder.ClassInfo> classInfos
originalInfos
protected final java.util.Map<java.lang.String,AbstractFinder.ClassInfo> originalInfos
AbstractFinder
public AbstractFinder()
getResource
protected abstract java.net.URL getResource(java.lang.String className)
loadClass
protected abstract java.lang.Class<?> loadClass(java.lang.String fixedName)
throws java.lang.ClassNotFoundException
- Throws:
java.lang.ClassNotFoundException
getAnnotatedClassNames
public java.util.List<java.lang.String> getAnnotatedClassNames()
- Specified by:
getAnnotatedClassNames in interface IAnnotationFinder
link
public AbstractFinder link()
throws java.io.IOException
- The link() method must be called to successfully use the findSubclasses and findImplementations methods
- Returns:
-
- Throws:
java.io.IOException
isAnnotationPresent
public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
- Specified by:
isAnnotationPresent in interface IAnnotationFinder
getClassesNotLoaded
public java.util.List<java.lang.String> getClassesNotLoaded()
- Returns a list of classes that could not be loaded in last invoked findAnnotated* method.
The list will only contain entries of classes whose byte code matched the requirements
of last invoked find* method, but were unable to be loaded and included in the results.
The list returned is unmodifiable. Once obtained, the returned list will be a live view of the
results from the last findAnnotated* method call.
This method is not thread safe.
- Specified by:
getClassesNotLoaded in interface IAnnotationFinder
- Returns:
- an unmodifiable live view of classes that could not be loaded in previous findAnnotated* call.
findAnnotatedPackages
public java.util.List<java.lang.Package> findAnnotatedPackages(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
- Specified by:
findAnnotatedPackages in interface IAnnotationFinder
findAnnotatedClasses
public java.util.List<java.lang.Class<?>> findAnnotatedClasses(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
- Specified by:
findAnnotatedClasses in interface IAnnotationFinder
findMetaAnnotatedClasses
public java.util.List<Annotated<java.lang.Class<?>>> findMetaAnnotatedClasses(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
- Specified by:
findMetaAnnotatedClasses in interface IAnnotationFinder
findInheritedAnnotatedClasses
public java.util.List<java.lang.Class<?>> findInheritedAnnotatedClasses(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
- Naive implementation - works extremelly slow O(n^3)
- Specified by:
findInheritedAnnotatedClasses in interface IAnnotationFinder
- Parameters:
annotation -
- Returns:
- list of directly or indirectly (inherited) annotated classes
findAnnotatedMethods
public java.util.List<java.lang.reflect.Method> findAnnotatedMethods(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
- Specified by:
findAnnotatedMethods in interface IAnnotationFinder
findMetaAnnotatedMethods
public java.util.List<Annotated<java.lang.reflect.Method>> findMetaAnnotatedMethods(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
- Specified by:
findMetaAnnotatedMethods in interface IAnnotationFinder
findAnnotatedConstructors
public java.util.List<java.lang.reflect.Constructor> findAnnotatedConstructors(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
- Specified by:
findAnnotatedConstructors in interface IAnnotationFinder
findAnnotatedFields
public java.util.List<java.lang.reflect.Field> findAnnotatedFields(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
- Specified by:
findAnnotatedFields in interface IAnnotationFinder
findMetaAnnotatedFields
public java.util.List<Annotated<java.lang.reflect.Field>> findMetaAnnotatedFields(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
- Specified by:
findMetaAnnotatedFields in interface IAnnotationFinder
findClassesInPackage
public java.util.List<java.lang.Class<?>> findClassesInPackage(java.lang.String packageName,
boolean recursive)
- Specified by:
findClassesInPackage in interface IAnnotationFinder
findSubclasses
public <T> java.util.List<java.lang.Class<? extends T>> findSubclasses(java.lang.Class<T> clazz)
- Specified by:
findSubclasses in interface IAnnotationFinder
findImplementations
public <T> java.util.List<java.lang.Class<? extends T>> findImplementations(java.lang.Class<T> clazz)
- Specified by:
findImplementations in interface IAnnotationFinder
getAnnotationInfos
protected java.util.List<AbstractFinder.Info> getAnnotationInfos(java.lang.String name)
readClassDef
protected void readClassDef(java.lang.String className)
readClassDef
protected void readClassDef(java.io.InputStream in)
throws java.io.IOException
- Throws:
java.io.IOException
readClassDef
protected void readClassDef(java.io.InputStream in,
java.lang.String path)
throws java.io.IOException
- Throws:
java.io.IOException
readClassDef
protected void readClassDef(java.lang.Class clazz)
Copyright © 2005-2011 The Apache Software Foundation. All Rights Reserved.