Class ClasspathScanner


  • class ClasspathScanner
    extends java.lang.Object

    DISCLAIMER

    These utilities are intended solely for usage within the JUnit framework itself. Any usage by external parties is not supported. Use at your own risk!

    Since:
    1.0
    • Constructor Summary

      Constructors 
      Constructor Description
      ClasspathScanner​(java.util.function.Supplier<java.lang.ClassLoader> classLoaderSupplier, java.util.function.BiFunction<java.lang.String,​java.lang.ClassLoader,​Try<java.lang.Class<?>>> loadClass)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private java.lang.String determineFullyQualifiedClassName​(java.nio.file.Path baseDir, java.lang.String basePackageName, java.nio.file.Path classFile)  
      private java.lang.String determineSimpleClassName​(java.nio.file.Path classFile)  
      private java.lang.String determineSubpackageName​(java.nio.file.Path baseDir, java.nio.file.Path classFile)  
      private java.util.List<java.lang.Class<?>> findClassesForPath​(java.nio.file.Path baseDir, java.lang.String basePackageName, ClassFilter classFilter)  
      private java.util.List<java.lang.Class<?>> findClassesForUri​(java.net.URI baseUri, java.lang.String basePackageName, ClassFilter classFilter)  
      private java.util.List<java.lang.Class<?>> findClassesForUris​(java.util.List<java.net.URI> baseUris, java.lang.String basePackageName, ClassFilter classFilter)
      Recursively scan for classes in all of the supplied source directories.
      private java.lang.ClassLoader getClassLoader()  
      private java.util.List<java.net.URI> getRootUrisForPackage​(java.lang.String basePackageName)  
      private void handleInternalError​(java.nio.file.Path classFile, java.lang.String fullyQualifiedClassName, java.lang.InternalError ex)  
      private void handleThrowable​(java.nio.file.Path classFile, java.lang.Throwable throwable)  
      private void logGenericFileProcessingException​(java.nio.file.Path classFile, java.lang.Throwable throwable)  
      private void logMalformedClassName​(java.nio.file.Path classFile, java.lang.String fullyQualifiedClassName, java.lang.InternalError ex)  
      private static java.lang.String packagePath​(java.lang.String packageName)  
      private void processClassFileSafely​(java.nio.file.Path baseDir, java.lang.String basePackageName, ClassFilter classFilter, java.nio.file.Path classFile, java.util.function.Consumer<java.lang.Class<?>> classConsumer)  
      (package private) java.util.List<java.lang.Class<?>> scanForClassesInClasspathRoot​(java.net.URI root, ClassFilter classFilter)  
      (package private) java.util.List<java.lang.Class<?>> scanForClassesInPackage​(java.lang.String basePackageName, ClassFilter classFilter)  
      • Methods inherited from class java.lang.Object

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

      • logger

        private static final Logger logger
      • CLASSPATH_RESOURCE_PATH_SEPARATOR

        private static final char CLASSPATH_RESOURCE_PATH_SEPARATOR
        See Also:
        Constant Field Values
      • PACKAGE_SEPARATOR_CHAR

        private static final char PACKAGE_SEPARATOR_CHAR
        See Also:
        Constant Field Values
      • PACKAGE_SEPARATOR_STRING

        private static final java.lang.String PACKAGE_SEPARATOR_STRING
      • MALFORMED_CLASS_NAME_ERROR_MESSAGE

        private static final java.lang.String MALFORMED_CLASS_NAME_ERROR_MESSAGE
        Malformed class name InternalError like reported in #401.
        See Also:
        Constant Field Values
      • classLoaderSupplier

        private final java.util.function.Supplier<java.lang.ClassLoader> classLoaderSupplier
      • loadClass

        private final java.util.function.BiFunction<java.lang.String,​java.lang.ClassLoader,​Try<java.lang.Class<?>>> loadClass
    • Constructor Detail

      • ClasspathScanner

        ClasspathScanner​(java.util.function.Supplier<java.lang.ClassLoader> classLoaderSupplier,
                         java.util.function.BiFunction<java.lang.String,​java.lang.ClassLoader,​Try<java.lang.Class<?>>> loadClass)
    • Method Detail

      • scanForClassesInPackage

        java.util.List<java.lang.Class<?>> scanForClassesInPackage​(java.lang.String basePackageName,
                                                                   ClassFilter classFilter)
      • scanForClassesInClasspathRoot

        java.util.List<java.lang.Class<?>> scanForClassesInClasspathRoot​(java.net.URI root,
                                                                         ClassFilter classFilter)
      • findClassesForUris

        private java.util.List<java.lang.Class<?>> findClassesForUris​(java.util.List<java.net.URI> baseUris,
                                                                      java.lang.String basePackageName,
                                                                      ClassFilter classFilter)
        Recursively scan for classes in all of the supplied source directories.
      • findClassesForUri

        private java.util.List<java.lang.Class<?>> findClassesForUri​(java.net.URI baseUri,
                                                                     java.lang.String basePackageName,
                                                                     ClassFilter classFilter)
      • findClassesForPath

        private java.util.List<java.lang.Class<?>> findClassesForPath​(java.nio.file.Path baseDir,
                                                                      java.lang.String basePackageName,
                                                                      ClassFilter classFilter)
      • processClassFileSafely

        private void processClassFileSafely​(java.nio.file.Path baseDir,
                                            java.lang.String basePackageName,
                                            ClassFilter classFilter,
                                            java.nio.file.Path classFile,
                                            java.util.function.Consumer<java.lang.Class<?>> classConsumer)
      • determineFullyQualifiedClassName

        private java.lang.String determineFullyQualifiedClassName​(java.nio.file.Path baseDir,
                                                                  java.lang.String basePackageName,
                                                                  java.nio.file.Path classFile)
      • determineSimpleClassName

        private java.lang.String determineSimpleClassName​(java.nio.file.Path classFile)
      • determineSubpackageName

        private java.lang.String determineSubpackageName​(java.nio.file.Path baseDir,
                                                         java.nio.file.Path classFile)
      • handleInternalError

        private void handleInternalError​(java.nio.file.Path classFile,
                                         java.lang.String fullyQualifiedClassName,
                                         java.lang.InternalError ex)
      • handleThrowable

        private void handleThrowable​(java.nio.file.Path classFile,
                                     java.lang.Throwable throwable)
      • logMalformedClassName

        private void logMalformedClassName​(java.nio.file.Path classFile,
                                           java.lang.String fullyQualifiedClassName,
                                           java.lang.InternalError ex)
      • logGenericFileProcessingException

        private void logGenericFileProcessingException​(java.nio.file.Path classFile,
                                                       java.lang.Throwable throwable)
      • getClassLoader

        private java.lang.ClassLoader getClassLoader()
      • packagePath

        private static java.lang.String packagePath​(java.lang.String packageName)
      • getRootUrisForPackage

        private java.util.List<java.net.URI> getRootUrisForPackage​(java.lang.String basePackageName)