Package io.hawt.util.introspect.support
Class ClassScanner
- java.lang.Object
-
- io.hawt.util.introspect.support.ClassScanner
-
public class ClassScanner extends java.lang.ObjectA helper class to scan classes on the classpath
-
-
Constructor Summary
Constructors Constructor Description ClassScanner(java.lang.ClassLoader... classLoaders)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddClassesForPackage(ClassResource classResource, java.lang.String filter, java.lang.Integer limit, java.util.Set<java.lang.Class<?>> classes)protected voidaddClassNamesInDirectoryWithMethodsAnnotatedWith(java.util.SortedSet<java.lang.String> answer, java.io.File dir, java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass, java.lang.String packageName)protected voidaddPackageResources(java.lang.Package aPackage, java.util.Map<java.lang.String,ClassResource> urlSet, java.lang.ClassLoader[] classLoaders)protected booleanclassNameMatches(java.lang.String className, java.lang.String search)Returns true if the given class name matches the filter searchvoidclearCache()protected CacheValuecreateCacheValue(java.lang.String key, ClassResource classResource)java.lang.Class<?>findClass(java.lang.String className)Finds a class from its namejava.util.SortedSet<java.lang.String>findClassNames(java.lang.String search, java.lang.Integer limit)Searches for the available class names given the text searchprotected java.util.SortedSet<java.lang.String>findClassNames(java.util.Map<java.lang.Package,java.lang.ClassLoader[]> packages, Predicate<java.lang.String> filter, java.lang.Integer limit)java.util.SortedSet<java.lang.String>findClassNamesInDirectoryWithMethodAnnotatedWith(java.io.File dir, java.lang.String annotationClassName)java.util.SortedSet<java.lang.String>findClassNamesInPackages(java.lang.String search, java.lang.Integer limit, java.util.Map<java.lang.Package,java.lang.ClassLoader[]> packages)java.util.SortedSet<java.lang.String>findClassNamesMethodsAnnotatedWith(java.lang.String annotationClassName)java.util.SortedSet<java.lang.String>findClassNamesMethodsAnnotatedWith(java.lang.String annotationClassName, java.lang.Integer limit, java.util.Map<java.lang.Package,java.lang.ClassLoader[]> packages)java.util.SortedMap<java.lang.String,java.lang.Class<?>>getAllClassesMap()Returns all the classes found in a sorted mapjava.util.Set<java.lang.Class<?>>getClassesForPackage(ClassResource classResource, java.lang.String filter, java.lang.Integer limit)java.util.SortedMap<java.lang.String,java.lang.Class<?>>getClassesMap(java.lang.Package... packages)Returns all the classes found in a sorted map for the given list of packagesjava.util.List<java.lang.ClassLoader>getClassLoaders()java.util.Set<java.lang.String>getIgnorePackages()protected java.lang.StringgetJavaResourceKey(java.net.URL resource)protected java.lang.StringgetPackageRelativePath(java.lang.String packageName)protected java.util.List<java.net.URL>getResources(java.lang.String relPath, java.lang.ClassLoader... classLoaders)static ClassScannernewInstance()protected java.lang.Class<? extends java.lang.annotation.Annotation>optionallyFindAnnotationClass(java.lang.String annotationClassName)java.lang.Class<?>optionallyFindClass(java.lang.String className)Returns the given class or null if it cannot be loadedjava.util.List<java.lang.Class<?>>optionallyFindClasses(java.lang.Iterable<java.lang.String> classNames)Tries to find as many of the class names on the class loaders as possible and return themprotected voidprocessDirectory(java.io.File directory, java.lang.String packageName, java.util.Set<java.lang.Class<?>> classes, java.lang.String filter, java.lang.Integer limit)protected voidprocessDirectoryClassNames(java.io.File directory, java.lang.String packageName, java.util.Set<java.lang.String> classes)protected voidprocessJar(ClassResource classResource, java.util.Set<java.lang.Class<?>> classes, java.lang.String filter, java.lang.Integer limit)protected voidprocessJarClassNames(ClassResource classResource, java.util.Set<java.lang.String> classes)voidsetClassLoaderProvider(java.lang.String id, ClassLoaderProvider classLoaderProvider)Registers a named class loader provider or removes it if the classLoaderProvider is nullvoidsetIgnorePackages(java.util.Set<java.lang.String> ignorePackages)protected java.lang.Class<?>tryFindClass(java.lang.String className, java.lang.String filter)protected booleanwithinLimit(java.lang.Integer limit, java.util.Collection<?> collection)Returns true if we are within the limit value for the number of results in the collection
-
-
-
Method Detail
-
newInstance
public static ClassScanner newInstance()
-
clearCache
public void clearCache()
-
setClassLoaderProvider
public void setClassLoaderProvider(java.lang.String id, ClassLoaderProvider classLoaderProvider)Registers a named class loader provider or removes it if the classLoaderProvider is null
-
findClassNames
public java.util.SortedSet<java.lang.String> findClassNames(java.lang.String search, java.lang.Integer limit)Searches for the available class names given the text search- Returns:
- all the class names found on the current classpath using the given text search filter
-
findClassNamesMethodsAnnotatedWith
public java.util.SortedSet<java.lang.String> findClassNamesMethodsAnnotatedWith(java.lang.String annotationClassName)
-
findClassNamesInDirectoryWithMethodAnnotatedWith
public java.util.SortedSet<java.lang.String> findClassNamesInDirectoryWithMethodAnnotatedWith(java.io.File dir, java.lang.String annotationClassName)
-
addClassNamesInDirectoryWithMethodsAnnotatedWith
protected void addClassNamesInDirectoryWithMethodsAnnotatedWith(java.util.SortedSet<java.lang.String> answer, java.io.File dir, java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass, java.lang.String packageName)
-
optionallyFindAnnotationClass
protected java.lang.Class<? extends java.lang.annotation.Annotation> optionallyFindAnnotationClass(java.lang.String annotationClassName)
-
findClassNamesMethodsAnnotatedWith
public java.util.SortedSet<java.lang.String> findClassNamesMethodsAnnotatedWith(java.lang.String annotationClassName, java.lang.Integer limit, java.util.Map<java.lang.Package,java.lang.ClassLoader[]> packages)
-
findClassNamesInPackages
public java.util.SortedSet<java.lang.String> findClassNamesInPackages(java.lang.String search, java.lang.Integer limit, java.util.Map<java.lang.Package,java.lang.ClassLoader[]> packages)
-
findClassNames
protected java.util.SortedSet<java.lang.String> findClassNames(java.util.Map<java.lang.Package,java.lang.ClassLoader[]> packages, Predicate<java.lang.String> filter, java.lang.Integer limit)
-
getAllClassesMap
public java.util.SortedMap<java.lang.String,java.lang.Class<?>> getAllClassesMap()
Returns all the classes found in a sorted map
-
getClassesMap
public java.util.SortedMap<java.lang.String,java.lang.Class<?>> getClassesMap(java.lang.Package... packages)
Returns all the classes found in a sorted map for the given list of packages
-
getClassesForPackage
public java.util.Set<java.lang.Class<?>> getClassesForPackage(ClassResource classResource, java.lang.String filter, java.lang.Integer limit)
-
findClass
public java.lang.Class<?> findClass(java.lang.String className) throws java.lang.ClassNotFoundExceptionFinds a class from its name- Throws:
java.lang.ClassNotFoundException
-
optionallyFindClass
public java.lang.Class<?> optionallyFindClass(java.lang.String className)
Returns the given class or null if it cannot be loaded
-
optionallyFindClasses
public java.util.List<java.lang.Class<?>> optionallyFindClasses(java.lang.Iterable<java.lang.String> classNames)
Tries to find as many of the class names on the class loaders as possible and return them
-
getIgnorePackages
public java.util.Set<java.lang.String> getIgnorePackages()
-
setIgnorePackages
public void setIgnorePackages(java.util.Set<java.lang.String> ignorePackages)
-
addPackageResources
protected void addPackageResources(java.lang.Package aPackage, java.util.Map<java.lang.String,ClassResource> urlSet, java.lang.ClassLoader[] classLoaders)
-
createCacheValue
protected CacheValue createCacheValue(java.lang.String key, ClassResource classResource)
-
processDirectoryClassNames
protected void processDirectoryClassNames(java.io.File directory, java.lang.String packageName, java.util.Set<java.lang.String> classes)
-
processJarClassNames
protected void processJarClassNames(ClassResource classResource, java.util.Set<java.lang.String> classes)
-
addClassesForPackage
protected void addClassesForPackage(ClassResource classResource, java.lang.String filter, java.lang.Integer limit, java.util.Set<java.lang.Class<?>> classes)
-
processDirectory
protected void processDirectory(java.io.File directory, java.lang.String packageName, java.util.Set<java.lang.Class<?>> classes, java.lang.String filter, java.lang.Integer limit)
-
processJar
protected void processJar(ClassResource classResource, java.util.Set<java.lang.Class<?>> classes, java.lang.String filter, java.lang.Integer limit)
-
getJavaResourceKey
protected java.lang.String getJavaResourceKey(java.net.URL resource)
-
tryFindClass
protected java.lang.Class<?> tryFindClass(java.lang.String className, java.lang.String filter)
-
getResources
protected java.util.List<java.net.URL> getResources(java.lang.String relPath, java.lang.ClassLoader... classLoaders)
-
classNameMatches
protected boolean classNameMatches(java.lang.String className, java.lang.String search)Returns true if the given class name matches the filter search
-
getPackageRelativePath
protected java.lang.String getPackageRelativePath(java.lang.String packageName)
-
withinLimit
protected boolean withinLimit(java.lang.Integer limit, java.util.Collection<?> collection)Returns true if we are within the limit value for the number of results in the collection
-
getClassLoaders
public java.util.List<java.lang.ClassLoader> getClassLoaders()
-
-