Top Description Fields Constructors Methods
org.junit.platform.commons.util

pack-priv Class DefaultClasspathScanner

extends Object
implements ClasspathScanner
Class Inheritance
All Implemented Interfaces
org.junit.platform.commons.support.scanning.ClasspathScanner
Static Imports
java.util.stream.Collectors.joining, org.junit.platform.commons.util.ClasspathFilters.CLASS_FILE_SUFFIX, .StringUtils.isNotBlank

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

Field Summary

Modifier and TypeField and Description
private final Supplier<ClassLoader>
private static final char
private static final String
private final BiFunction<String, ClassLoader, Try<Class<?>>>
private static final Logger
private static final String
MALFORMED_CLASS_NAME_ERROR_MESSAGE

Malformed class name InternalError like reported in #401.

private static final char
private static final String

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
private String
determineFullyQualifiedClassName(Path baseDir, String basePackageName, Path classFile)

private String

Returns:

the resource name; never null
determineFullyQualifiedResourceName
(Path baseDir, String basePackageName, Path resourceFile)

The fully qualified resource name is a /-separated path.

private String
private String
private String
determineSubpackageName(Path baseDir, Path classFile)

private List<Class<?>>
findClassesForUri(URI baseUri, String basePackageName, ClassFilter classFilter)

private List<Class<?>>
findClassesForUris(List<URI> baseUris, String basePackageName, ClassFilter classFilter)

Recursively scan for classes in all the supplied source directories.

private List<Resource>
findResourcesForUri(URI baseUri, String basePackageName, ResourceFilter resourceFilter)

private List<Resource>
findResourcesForUris(List<URI> baseUris, String basePackageName, ResourceFilter resourceFilter)

Recursively scan for resources in all the supplied source directories.

private ClassLoader
private List<URI>
getRootUrisForPackage(String basePackageName)

private List<URI>
private void
handleInternalError(Path classFile, String fullyQualifiedClassName, InternalError ex)

private void
handleThrowable(Path classFile, Throwable throwable)

private void
private void
logMalformedClassName(Path classFile, String fullyQualifiedClassName, InternalError ex)

private static String
packagePath(String packageName)

private void
processClassFileSafely(Path baseDir, String basePackageName, ClassFilter classFilter, Path classFile, Consumer<Class<?>> classConsumer)

private void
processResourceFileSafely(Path baseDir, String basePackageName, ResourceFilter resourceFilter, Path resourceFile, Consumer<Resource> resourceConsumer)

private static URI
public List<Class<?>>
scanForClassesInClasspathRoot(URI root, ClassFilter classFilter)

Implements org.junit.platform.commons.support.scanning.ClasspathScanner.scanForClassesInClasspathRoot.

Find all classes in the supplied classpath root that match the specified classFilter filter.

public List<Class<?>>
scanForClassesInPackage(String basePackageName, ClassFilter classFilter)

Implements org.junit.platform.commons.support.scanning.ClasspathScanner.scanForClassesInPackage.

Find all classes in the supplied classpath root that match the specified classFilter filter.

public List<Resource>
scanForResourcesInClasspathRoot(URI root, ResourceFilter resourceFilter)

Overrides default org.junit.platform.commons.support.scanning.ClasspathScanner.scanForResourcesInClasspathRoot.

Find all resources in the supplied classpath root that match the specified resourceFilter predicate.

public List<Resource>
scanForResourcesInPackage(String basePackageName, ResourceFilter resourceFilter)

Overrides default org.junit.platform.commons.support.scanning.ClasspathScanner.scanForResourcesInPackage.

Find all resources in the supplied classpath root that match the specified resourceFilter predicate.

private static void
walkFilesForUri(URI baseUri, Predicate<Path> filter, BiConsumer<Path, Path> consumer)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

classLoaderSupplierback to summary
private final Supplier<ClassLoader> classLoaderSupplier
CLASSPATH_RESOURCE_PATH_SEPARATORback to summary
private static final char CLASSPATH_RESOURCE_PATH_SEPARATOR
CLASSPATH_RESOURCE_PATH_SEPARATOR_STRINGback to summary
private static final String CLASSPATH_RESOURCE_PATH_SEPARATOR_STRING
loadClassback to summary
private final BiFunction<String, ClassLoader, Try<Class<?>>> loadClass
loggerback to summary
private static final Logger logger
MALFORMED_CLASS_NAME_ERROR_MESSAGEback to summary
private static final String MALFORMED_CLASS_NAME_ERROR_MESSAGE

Malformed class name InternalError like reported in #401.

PACKAGE_SEPARATOR_CHARback to summary
private static final char PACKAGE_SEPARATOR_CHAR
PACKAGE_SEPARATOR_STRINGback to summary
private static final String PACKAGE_SEPARATOR_STRING

Constructor Detail

DefaultClasspathScannerback to summary
pack-priv DefaultClasspathScanner(Supplier<ClassLoader> classLoaderSupplier, BiFunction<String, ClassLoader, Try<Class<?>>> loadClass)

Method Detail

determineFullyQualifiedClassNameback to summary
private String determineFullyQualifiedClassName(Path baseDir, String basePackageName, Path classFile)
determineFullyQualifiedResourceNameback to summary
private String determineFullyQualifiedResourceName(Path baseDir, String basePackageName, Path resourceFile)

The fully qualified resource name is a /-separated path.

The path is relative to the classpath root in which the resource is located.

Returns:String

the resource name; never null

determineSimpleClassNameback to summary
private String determineSimpleClassName(Path classFile)
determineSimpleResourceNameback to summary
private String determineSimpleResourceName(Path resourceFile)
determineSubpackageNameback to summary
private String determineSubpackageName(Path baseDir, Path classFile)
findClassesForUriback to summary
private List<Class<?>> findClassesForUri(URI baseUri, String basePackageName, ClassFilter classFilter)
findClassesForUrisback to summary
private List<Class<?>> findClassesForUris(List<URI> baseUris, String basePackageName, ClassFilter classFilter)

Recursively scan for classes in all the supplied source directories.

findResourcesForUriback to summary
private List<Resource> findResourcesForUri(URI baseUri, String basePackageName, ResourceFilter resourceFilter)
findResourcesForUrisback to summary
private List<Resource> findResourcesForUris(List<URI> baseUris, String basePackageName, ResourceFilter resourceFilter)

Recursively scan for resources in all the supplied source directories.

getClassLoaderback to summary
private ClassLoader getClassLoader()
getRootUrisForPackageback to summary
private List<URI> getRootUrisForPackage(String basePackageName)
getRootUrisForPackageNameOnClassPathAndModulePathback to summary
private List<URI> getRootUrisForPackageNameOnClassPathAndModulePath(String basePackageName)
handleInternalErrorback to summary
private void handleInternalError(Path classFile, String fullyQualifiedClassName, InternalError ex)
handleThrowableback to summary
private void handleThrowable(Path classFile, Throwable throwable)
logGenericFileProcessingExceptionback to summary
private void logGenericFileProcessingException(Path classpathFile, Throwable throwable)
logMalformedClassNameback to summary
private void logMalformedClassName(Path classFile, String fullyQualifiedClassName, InternalError ex)
packagePathback to summary
private static String packagePath(String packageName)
processClassFileSafelyback to summary
private void processClassFileSafely(Path baseDir, String basePackageName, ClassFilter classFilter, Path classFile, Consumer<Class<?>> classConsumer)
processResourceFileSafelyback to summary
private void processResourceFileSafely(Path baseDir, String basePackageName, ResourceFilter resourceFilter, Path resourceFile, Consumer<Resource> resourceConsumer)
removeTrailingClasspathResourcePathSeparatorback to summary
private static URI removeTrailingClasspathResourcePathSeparator(URI uri)
scanForClassesInClasspathRootback to summary
public List<Class<?>> scanForClassesInClasspathRoot(URI root, ClassFilter classFilter)

Implements org.junit.platform.commons.support.scanning.ClasspathScanner.scanForClassesInClasspathRoot.

Doc from org.junit.platform.commons.support.scanning.ClasspathScanner.scanForClassesInClasspathRoot.

Find all classes in the supplied classpath root that match the specified classFilter filter.

The classpath scanning algorithm searches recursively in subpackages beginning with the root of the classpath.

Annotations
@Override
scanForClassesInPackageback to summary
public List<Class<?>> scanForClassesInPackage(String basePackageName, ClassFilter classFilter)

Implements org.junit.platform.commons.support.scanning.ClasspathScanner.scanForClassesInPackage.

Doc from org.junit.platform.commons.support.scanning.ClasspathScanner.scanForClassesInPackage.

Find all classes in the supplied classpath root that match the specified classFilter filter.

The classpath scanning algorithm searches recursively in subpackages beginning with the root of the classpath.

Annotations
@Override
scanForResourcesInClasspathRootback to summary
public List<Resource> scanForResourcesInClasspathRoot(URI root, ResourceFilter resourceFilter)

Overrides default org.junit.platform.commons.support.scanning.ClasspathScanner.scanForResourcesInClasspathRoot.

Doc from org.junit.platform.commons.support.scanning.ClasspathScanner.scanForResourcesInClasspathRoot.

Find all resources in the supplied classpath root that match the specified resourceFilter predicate.

The classpath scanning algorithm searches recursively in subpackages beginning with the root of the classpath.

Annotations
@Override
scanForResourcesInPackageback to summary
public List<Resource> scanForResourcesInPackage(String basePackageName, ResourceFilter resourceFilter)

Overrides default org.junit.platform.commons.support.scanning.ClasspathScanner.scanForResourcesInPackage.

Doc from org.junit.platform.commons.support.scanning.ClasspathScanner.scanForResourcesInPackage.

Find all resources in the supplied classpath root that match the specified resourceFilter predicate.

The classpath scanning algorithm searches recursively in subpackages beginning with the root of the classpath.

Annotations
@Override
walkFilesForUriback to summary
private static void walkFilesForUri(URI baseUri, Predicate<Path> filter, BiConsumer<Path, Path> consumer)