Class ClassScanner


  • public class ClassScanner
    extends java.lang.Object
    A 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 void addClassesForPackage​(ClassResource classResource, java.lang.String filter, java.lang.Integer limit, java.util.Set<java.lang.Class<?>> classes)  
      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)  
      protected void addPackageResources​(java.lang.Package aPackage, java.util.Map<java.lang.String,​ClassResource> urlSet, java.lang.ClassLoader[] classLoaders)  
      protected boolean classNameMatches​(java.lang.String className, java.lang.String search)
      Returns true if the given class name matches the filter search
      void clearCache()  
      protected CacheValue createCacheValue​(java.lang.String key, ClassResource classResource)  
      java.lang.Class<?> findClass​(java.lang.String className)
      Finds a class from its name
      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
      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)  
      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 map
      java.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 packages
      java.util.List<java.lang.ClassLoader> getClassLoaders()  
      java.util.Set<java.lang.String> getIgnorePackages()  
      protected java.lang.String getJavaResourceKey​(java.net.URL resource)  
      protected java.lang.String getPackageRelativePath​(java.lang.String packageName)  
      protected java.util.List<java.net.URL> getResources​(java.lang.String relPath, java.lang.ClassLoader... classLoaders)  
      static ClassScanner newInstance()  
      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 loaded
      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
      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)  
      protected void processDirectoryClassNames​(java.io.File directory, java.lang.String packageName, java.util.Set<java.lang.String> classes)  
      protected void processJar​(ClassResource classResource, java.util.Set<java.lang.Class<?>> classes, java.lang.String filter, java.lang.Integer limit)  
      protected void processJarClassNames​(ClassResource classResource, java.util.Set<java.lang.String> classes)  
      void setClassLoaderProvider​(java.lang.String id, ClassLoaderProvider classLoaderProvider)
      Registers a named class loader provider or removes it if the classLoaderProvider is null
      void setIgnorePackages​(java.util.Set<java.lang.String> ignorePackages)  
      protected java.lang.Class<?> tryFindClass​(java.lang.String className, java.lang.String filter)  
      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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ClassScanner

        public ClassScanner​(java.lang.ClassLoader... classLoaders)
    • Method Detail

      • 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.ClassNotFoundException
        Finds 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)
      • 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()