public class FastClasspathScanner extends Object
Modifier and Type | Field and Description |
---|---|
static boolean |
verbose
If set to true, print info while scanning
|
Constructor and Description |
---|
FastClasspathScanner(String... packagesToScan)
Constructs a FastClasspathScanner instance.
|
Modifier and Type | Method and Description |
---|---|
void |
addStaticFinalFieldProcessor(String className,
String fieldName,
StaticFinalFieldMatchProcessor staticFinalFieldMatchProcessor)
Add a StaticFinalFieldMatchProcessor that should be called if a static final field with the given name is
encountered in a class with the given fully-qualified classname while reading a classfile header.
|
long |
classpathContentsLastModifiedTime()
Returns the maximum "last modified" timestamp in the classpath (in epoch millis), or zero if scan() has not
yet been called (or if nothing was found on the classpath).
|
boolean |
classpathContentsModifiedSinceScan()
Returns true if the classpath contents have been changed since scan() was last called.
|
Set<String> |
getNamesOfAllClasses()
Returns the names of all classes and interfaces processed during the scan, i.e.
|
List<String> |
getNamesOfAnnotationsOnClass(Class<?> classOrInterface)
Return the names of all annotations and meta-annotations on the specified class or interface.
|
List<String> |
getNamesOfAnnotationsOnClass(String classOrInterfaceName)
Return the names of all annotations and meta-annotations on the specified class or interface.
|
List<String> |
getNamesOfAnnotationsWithMetaAnnotation(Class<?> metaAnnotation)
Return the names of all annotations that are annotated with the specified meta-annotation.
|
List<String> |
getNamesOfAnnotationsWithMetaAnnotation(String metaAnnotationName)
Return the names of all annotations that are annotated with the specified meta-annotation.
|
List<String> |
getNamesOfClassesImplementing(Class<?> implementedInterface)
Returns the names of classes on the classpath that implement the specified interface or a subinterface, or
whose superclasses implement the specified interface or a sub-interface.
|
List<String> |
getNamesOfClassesImplementing(String implementedInterfaceName)
Returns the names of classes on the classpath that implement the specified interface or a subinterface, or
whose superclasses implement the specified interface or a sub-interface.
|
List<String> |
getNamesOfClassesImplementingAllOf(Class<?>... implementedInterfaces)
Returns the names of classes on the classpath that implement (or have superclasses that implement) all of the
specified interfaces or their subinterfaces.
|
List<String> |
getNamesOfClassesImplementingAllOf(String... implementedInterfaceNames)
Returns the names of classes on the classpath that implement (or have superclasses that implement) all of the
specified interfaces or their subinterfaces.
|
List<String> |
getNamesOfClassesWithAnnotation(Class<?> annotation)
Returns the names of classes on the classpath that have the specified annotation.
|
List<String> |
getNamesOfClassesWithAnnotation(String annotationName)
Returns the names of classes on the classpath that have the specified annotation.
|
List<String> |
getNamesOfClassesWithAnnotationsAllOf(Class<?>... annotations)
Returns the names of classes on the classpath that have all of the specified annotations.
|
List<String> |
getNamesOfClassesWithAnnotationsAllOf(String... annotationNames)
Returns the names of classes on the classpath that have all of the specified annotations.
|
List<String> |
getNamesOfClassesWithAnnotationsAnyOf(Class<?>... annotations)
Returns the names of classes on the classpath that have any of the specified annotations.
|
List<String> |
getNamesOfClassesWithAnnotationsAnyOf(String... annotationNames)
Returns the names of classes on the classpath that have any of the specified annotations.
|
List<String> |
getNamesOfMetaAnnotationsOnAnnotation(Class<?> annotation)
Return the names of all meta-annotations on the specified annotation.
|
List<String> |
getNamesOfMetaAnnotationsOnAnnotation(String annotationName)
Return the names of all meta-annotations on the specified annotation.
|
List<String> |
getNamesOfSubclassesOf(Class<?> superclass)
Returns the names of classes on the classpath that extend the specified superclass.
|
List<String> |
getNamesOfSubclassesOf(String superclassName)
Returns the names of classes on the classpath that extend the specified superclass.
|
List<String> |
getNamesOfSubinterfacesOf(Class<?> superInterface)
Returns the names of interfaces on the classpath that extend a given superinterface.
|
List<String> |
getNamesOfSubinterfacesOf(String superInterfaceName)
Returns the names of interfaces on the classpath that extend a given superinterface.
|
List<String> |
getNamesOfSuperclassesOf(Class<?> subclass)
Returns the names of classes on the classpath that are superclasses of the specified subclass.
|
List<String> |
getNamesOfSuperclassesOf(String subclassName)
Returns the names of classes on the classpath that are superclasses of the specified subclass.
|
List<String> |
getNamesOfSuperinterfacesOf(Class<?> subInterface)
Returns the names of interfaces on the classpath that are superinterfaces of a given subinterface.
|
List<String> |
getNamesOfSuperinterfacesOf(String subInterfaceName)
Returns the names of interfaces on the classpath that are superinterfaces of a given subinterface.
|
<T> Class<? extends T> |
loadClass(String className)
Call the classloader using Class.forName(className).
|
<T> FastClasspathScanner |
matchClassesImplementing(Class<T> implementedInterface,
InterfaceMatchProcessor<T> interfaceMatchProcessor)
Calls the provided InterfaceMatchProcessor for classes on the classpath that implement the specified
interface or a subinterface, or whose superclasses implement the specified interface or a sub-interface.
|
FastClasspathScanner |
matchClassesWithAnnotation(Class<?> annotation,
ClassAnnotationMatchProcessor classAnnotationMatchProcessor)
Calls the provided ClassMatchProcessor if classes are found on the classpath that have the specified
annotation.
|
FastClasspathScanner |
matchFilenameExtension(String extensionToMatch,
FileMatchContentsProcessor fileMatchContentsProcessor)
Calls the given FileMatchProcessor if files are found on the classpath that have the given file extension.
|
FastClasspathScanner |
matchFilenameExtension(String extensionToMatch,
FileMatchProcessor fileMatchProcessor)
Calls the given FileMatchProcessor if files are found on the classpath that have the given file extension.
|
FastClasspathScanner |
matchFilenamePath(String relativePathToMatch,
FileMatchContentsProcessor fileMatchContentsProcessor)
Calls the given FileMatchContentsProcessor if files are found on the classpath that exactly match the given
relative path.
|
FastClasspathScanner |
matchFilenamePath(String relativePathToMatch,
FileMatchProcessor fileMatchProcessor)
Calls the given FileMatchProcessor if files are found on the classpath that exactly match the given relative
path.
|
FastClasspathScanner |
matchFilenamePathLeaf(String pathLeafToMatch,
FileMatchContentsProcessor fileMatchContentsProcessor)
Calls the given FileMatchContentsProcessor if files are found on the classpath that exactly match the given
path leafname.
|
FastClasspathScanner |
matchFilenamePathLeaf(String pathLeafToMatch,
FileMatchProcessor fileMatchProcessor)
Calls the given FileMatchProcessor if files are found on the classpath that exactly match the given path
leafname.
|
FastClasspathScanner |
matchFilenamePattern(String pathRegexp,
FileMatchContentsProcessor fileMatchContentsProcessor)
Calls the given FileMatchContentsProcessor if files are found on the classpath with the given regexp pattern
in their path.
|
FastClasspathScanner |
matchFilenamePattern(String pathRegexp,
FileMatchProcessor fileMatchProcessor)
Calls the given FileMatchProcessor if files are found on the classpath with the given regexp pattern in their
path.
|
FastClasspathScanner |
matchStaticFinalFieldNames(HashSet<String> fullyQualifiedStaticFinalFieldNames,
StaticFinalFieldMatchProcessor staticFinalFieldMatchProcessor)
Calls the given StaticFinalFieldMatchProcessor if classes are found on the classpath that contain static
final fields that match one of a set of fully-qualified field names, e.g.
|
FastClasspathScanner |
matchStaticFinalFieldNames(String[] fullyQualifiedStaticFinalFieldNames,
StaticFinalFieldMatchProcessor staticFinalFieldMatchProcessor)
Calls the given StaticFinalFieldMatchProcessor if classes are found on the classpath that contain static
final fields that match one of a list of fully-qualified field names, e.g.
|
FastClasspathScanner |
matchStaticFinalFieldNames(String fullyQualifiedStaticFinalFieldName,
StaticFinalFieldMatchProcessor staticFinalFieldMatchProcessor)
Calls the given StaticFinalFieldMatchProcessor if classes are found on the classpath that contain static
final fields that match a fully-qualified field name, e.g.
|
<T> FastClasspathScanner |
matchSubclassesOf(Class<T> superclass,
SubclassMatchProcessor<T> subclassMatchProcessor)
Calls the provided SubclassMatchProcessor if classes are found on the classpath that extend the specified
superclass.
|
<T> FastClasspathScanner |
matchSubinterfacesOf(Class<T> superinterface,
SubinterfaceMatchProcessor<T> subinterfaceMatchProcessor)
Calls the provided SubinterfaceMatchProcessor if an interface that extends a given superinterface is found on
the classpath.
|
FastClasspathScanner |
scan()
Scans the classpath for matching files, and calls any match processors if a match is identified.
|
FastClasspathScanner |
verbose()
Switch on verbose mode (prints debug info to System.out).
|
public FastClasspathScanner(String... packagesToScan)
packagesToScan
- the whitelist of package prefixes to scan, e.g. "com.xyz.widget", "com.xyz.gizmo". If no
whitelisted packages are given (i.e. if the constructor is called with zero arguments), or a
whitelisted package is "", then all packages on the classpath are whitelisted. If a package name
is prefixed with "-", e.g. "-com.xyz.otherthing", then that package is blacklisted, rather than
whitelisted. The final list of packages scanned is the set of whitelisted packages minus the set
of blacklisted packages.public void addStaticFinalFieldProcessor(String className, String fieldName, StaticFinalFieldMatchProcessor staticFinalFieldMatchProcessor)
public <T> Class<? extends T> loadClass(String className)
public <T> FastClasspathScanner matchSubclassesOf(Class<T> superclass, SubclassMatchProcessor<T> subclassMatchProcessor)
superclass
- The superclass to match (i.e. the class that subclasses need to extend to match).subclassMatchProcessor
- the SubclassMatchProcessor to call when a match is found.public List<String> getNamesOfSubclassesOf(Class<?> superclass)
superclass
- The superclass to match (i.e. the class that subclasses need to extend to match).public List<String> getNamesOfSubclassesOf(String superclassName)
superclassName
- The name of the superclass to match (i.e. the name of the class that subclasses need to extend).public List<String> getNamesOfSuperclassesOf(Class<?> subclass)
subclass
- The subclass to match (i.e. the class that needs to extend a superclass for the superclass to
match).public List<String> getNamesOfSuperclassesOf(String subclassName)
subclassName
- The subclass to match (i.e. the class that needs to extend a superclass for the superclass to
match).public <T> FastClasspathScanner matchSubinterfacesOf(Class<T> superinterface, SubinterfaceMatchProcessor<T> subinterfaceMatchProcessor)
superinterface
- The superinterface to match (i.e. the interface that subinterfaces need to extend to match).subinterfaceMatchProcessor
- the SubinterfaceMatchProcessor to call when a match is found.public List<String> getNamesOfSubinterfacesOf(Class<?> superInterface)
superInterface
- The superinterface to match (i.e. the interface that subinterfaces need to extend to match).public List<String> getNamesOfSubinterfacesOf(String superInterfaceName)
superInterfaceName
- The name of the superinterface to match (i.e. the name of the interface that subinterfaces need to
extend).public List<String> getNamesOfSuperinterfacesOf(Class<?> subInterface)
subInterface
- The superinterface to match (i.e. the interface that subinterfaces need to extend to match).public List<String> getNamesOfSuperinterfacesOf(String subInterfaceName)
subInterfaceName
- The name of the superinterface to match (i.e. the name of the interface that subinterfaces need to
extend).public <T> FastClasspathScanner matchClassesImplementing(Class<T> implementedInterface, InterfaceMatchProcessor<T> interfaceMatchProcessor)
implementedInterface
- The interface that classes need to implement.interfaceMatchProcessor
- the ClassMatchProcessor to call when a match is found.public List<String> getNamesOfClassesImplementing(Class<?> implementedInterface)
implementedInterface
- The interface that classes need to implement to match.public List<String> getNamesOfClassesImplementing(String implementedInterfaceName)
implementedInterfaceName
- The name of the interface that classes need to implement.public List<String> getNamesOfClassesImplementingAllOf(Class<?>... implementedInterfaces)
implementedInterfaceNames
- The name of the interfaces that classes need to implement.public List<String> getNamesOfClassesImplementingAllOf(String... implementedInterfaceNames)
implementedInterfaceNames
- The name of the interfaces that classes need to implement.public FastClasspathScanner matchClassesWithAnnotation(Class<?> annotation, ClassAnnotationMatchProcessor classAnnotationMatchProcessor)
annotation
- The class annotation to match.classAnnotationMatchProcessor
- the ClassAnnotationMatchProcessor to call when a match is found.public List<String> getNamesOfClassesWithAnnotation(Class<?> annotation)
annotation
- The class annotation.public List<String> getNamesOfClassesWithAnnotation(String annotationName)
annotationName
- The name of the class annotation.public List<String> getNamesOfClassesWithAnnotationsAllOf(Class<?>... annotations)
annotations
- The annotations.public List<String> getNamesOfClassesWithAnnotationsAllOf(String... annotationNames)
annotationNames
- The annotation names.public List<String> getNamesOfClassesWithAnnotationsAnyOf(Class<?>... annotations)
annotations
- The annotations.public List<String> getNamesOfClassesWithAnnotationsAnyOf(String... annotationNames)
annotationNames
- The annotation names.public List<String> getNamesOfAnnotationsWithMetaAnnotation(Class<?> metaAnnotation)
metaAnnotation
- The specified meta-annotation.public List<String> getNamesOfAnnotationsWithMetaAnnotation(String metaAnnotationName)
metaAnnotationName
- The name of the specified meta-annotation.public List<String> getNamesOfAnnotationsOnClass(Class<?> classOrInterface)
classOrInterface
- The class or interface.public List<String> getNamesOfAnnotationsOnClass(String classOrInterfaceName)
classOrInterfaceName
- The name of the class or interface.public List<String> getNamesOfMetaAnnotationsOnAnnotation(Class<?> annotation)
annotation
- The specified annotation.public List<String> getNamesOfMetaAnnotationsOnAnnotation(String annotationName)
annotationName
- The name of the specified annotation.public FastClasspathScanner matchStaticFinalFieldNames(HashSet<String> fullyQualifiedStaticFinalFieldNames, StaticFinalFieldMatchProcessor staticFinalFieldMatchProcessor)
fullyQualifiedStaticFinalFieldNames
- The set of fully-qualified static field names to match.staticFinalFieldMatchProcessor
- the StaticFinalFieldMatchProcessor to call when a match is found.public FastClasspathScanner matchStaticFinalFieldNames(String fullyQualifiedStaticFinalFieldName, StaticFinalFieldMatchProcessor staticFinalFieldMatchProcessor)
fullyQualifiedStaticFinalFieldName
- The fully-qualified static field name to matchstaticFinalFieldMatchProcessor
- the StaticFinalFieldMatchProcessor to call when a match is found.public FastClasspathScanner matchStaticFinalFieldNames(String[] fullyQualifiedStaticFinalFieldNames, StaticFinalFieldMatchProcessor staticFinalFieldMatchProcessor)
fullyQualifiedStaticFinalFieldNames
- The list of fully-qualified static field names to match.staticFinalFieldMatchProcessor
- the StaticFinalFieldMatchProcessor to call when a match is found.public FastClasspathScanner matchFilenamePattern(String pathRegexp, FileMatchProcessor fileMatchProcessor)
pathRegexp
- The regexp to match, e.g. "app/templates/.\*\.html"fileMatchProcessor
- The FileMatchProcessor to call when each match is found.public FastClasspathScanner matchFilenamePattern(String pathRegexp, FileMatchContentsProcessor fileMatchContentsProcessor)
pathRegexp
- The regexp to match, e.g. "app/templates/.\*\.html"fileMatchContentsProcessor
- The FileMatchContentsProcessor to call when each match is found.public FastClasspathScanner matchFilenamePath(String relativePathToMatch, FileMatchProcessor fileMatchProcessor)
relativePathToMatch
- The complete path to match relative to the classpath entry, e.g.
"app/templates/WidgetTemplate.html"fileMatchProcessor
- The FileMatchProcessor to call when each match is found.public FastClasspathScanner matchFilenamePath(String relativePathToMatch, FileMatchContentsProcessor fileMatchContentsProcessor)
relativePathToMatch
- The complete path to match relative to the classpath entry, e.g.
"app/templates/WidgetTemplate.html"fileMatchContentsProcessor
- The FileMatchContentsProcessor to call when each match is found.public FastClasspathScanner matchFilenamePathLeaf(String pathLeafToMatch, FileMatchProcessor fileMatchProcessor)
pathLeafToMatch
- The complete path leaf to match, e.g. "WidgetTemplate.html"fileMatchProcessor
- The FileMatchProcessor to call when each match is found.public FastClasspathScanner matchFilenamePathLeaf(String pathLeafToMatch, FileMatchContentsProcessor fileMatchContentsProcessor)
pathLeafToMatch
- The complete path leaf to match, e.g. "WidgetTemplate.html"fileMatchContentsProcessor
- The FileMatchContentsProcessor to call when each match is found.public FastClasspathScanner matchFilenameExtension(String extensionToMatch, FileMatchProcessor fileMatchProcessor)
extensionToMatch
- The extension to match, e.g. "html" matches "WidgetTemplate.html".fileMatchProcessor
- The FileMatchProcessor to call when each match is found.public FastClasspathScanner matchFilenameExtension(String extensionToMatch, FileMatchContentsProcessor fileMatchContentsProcessor)
extensionToMatch
- The extension to match, e.g. "html" matches "WidgetTemplate.html".fileMatchContentsProcessor
- The FileMatchContentsProcessor to call when each match is found.public Set<String> getNamesOfAllClasses()
public FastClasspathScanner scan()
public boolean classpathContentsModifiedSinceScan()
public long classpathContentsLastModifiedTime()
public FastClasspathScanner verbose()
Copyright © 2015. All rights reserved.