public final class ClassFinder extends Object
Modifier and Type | Class and Description |
---|---|
static interface |
ClassFinder.Closeable |
Modifier and Type | Field and Description |
---|---|
static String |
JMETER_SKIP_CLASS_SCANNING_ATTRIBUTE |
Modifier and Type | Method and Description |
---|---|
static List<String> |
findAnnotatedClasses(String[] strPathsOrJars,
Class<? extends Annotation>[] annotations)
Deprecated.
use
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler) or JMeterUtils#loadServicesAndScanJars |
static List<String> |
findAnnotatedClasses(String[] strPathsOrJars,
Class<? extends Annotation>[] annotations,
boolean innerClasses)
Deprecated.
use
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler) or JMeterUtils#loadServicesAndScanJars |
static List<String> |
findClasses(String[] searchPathsOrJars,
ClassFilter filter)
Deprecated.
use
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler) or JMeterUtils#loadServicesAndScanJars |
static List<String> |
findClassesThatExtend(String[] paths,
Class<?>[] superClasses)
Deprecated.
use
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler) or JMeterUtils#loadServicesAndScanJars |
static List<String> |
findClassesThatExtend(String[] strPathsOrJars,
Class<?>[] superClasses,
boolean innerClasses)
Deprecated.
use
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler) or JMeterUtils#loadServicesAndScanJars |
static List<String> |
findClassesThatExtend(String[] strPathsOrJars,
Class<?>[] superClasses,
boolean innerClasses,
String contains,
String notContains)
Deprecated.
use
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler) or JMeterUtils#loadServicesAndScanJars |
static List<String> |
findClassesThatExtend(String[] searchPathsOrJars,
Class<?>[] classNames,
boolean innerClasses,
String contains,
String notContains,
boolean annotations)
Deprecated.
use
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler) or JMeterUtils#loadServicesAndScanJars |
static boolean |
getSkipJarsWithJmeterSkipClassScanningAttribute() |
static <S> Collection<S> |
loadServices(Class<S> service,
ServiceLoader<S> serviceLoader,
ServiceLoadExceptionHandler<? super S> exceptionHandler)
Loads services implementing a given interface.
|
static ClassFinder.Closeable |
skipJarsWithJmeterSkipClassScanningAttribute()
Configures if
ClassFinder should skip jar files that have JMeter-Skip-Class-Scanning: true
manifest attribute. |
public static final String JMETER_SKIP_CLASS_SCANNING_ATTRIBUTE
@API(status=EXPERIMENTAL, since="5.6") public static boolean getSkipJarsWithJmeterSkipClassScanningAttribute()
@API(status=INTERNAL, since="5.6") public static ClassFinder.Closeable skipJarsWithJmeterSkipClassScanningAttribute()
ClassFinder
should skip jar files that have JMeter-Skip-Class-Scanning: true
manifest attribute.
JMeter will skip such jars when it uses both ServiceLoader
and ClassFinder
.
However, ClassFinder
was public, so it was possible that custom plugins could use it, and they should
be able to find the implementations even if they are in jars with JMeter-Skip-Class-Scanning: true
.
Sample usage:
List<String> classNames; try (ClassFinder.Closeable ignored = ClassFinder.skipJarsWithJmeterSkipClassScanningAttribute()) { // findClassesThatExtend will not skip jars with JMeter-Skip-Class-Scanning: true manifest attribute classNames = ClassFinder.findClassesThatExtend(...);
public static <S> Collection<S> loadServices(Class<S> service, ServiceLoader<S> serviceLoader, ServiceLoadExceptionHandler<? super S> exceptionHandler)
findClassesThatExtend
.S
- type of service (class or interface)service
- interface that services should extend.serviceLoader
- ServiceLoader to fetch services.exceptionHandler
- exception handler to use for services that fail to load.@Deprecated public static List<String> findClassesThatExtend(String[] paths, Class<?>[] superClasses) throws IOException
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler)
or JMeterUtils#loadServicesAndScanJars
findClassesThatExtend(String[], Class[], boolean)
with the
option to include inner classes in the search set to false.paths
- pathnames or jarfiles to search for classessuperClasses
- required parent class(es)IOException
- when scanning the classes fails@Deprecated public static List<String> findClassesThatExtend(String[] strPathsOrJars, Class<?>[] superClasses, boolean innerClasses) throws IOException
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler)
or JMeterUtils#loadServicesAndScanJars
strPathsOrJars
- pathnames or jarfiles to search for classessuperClasses
- required parent class(es)innerClasses
- should we include inner classes?IOException
- when scanning for classes fails@API(status=DEPRECATED, since="5.6") @Deprecated public static List<String> findClassesThatExtend(String[] strPathsOrJars, Class<?>[] superClasses, boolean innerClasses, String contains, String notContains) throws IOException
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler)
or JMeterUtils#loadServicesAndScanJars
strPathsOrJars
- pathnames or jarfiles to search for classessuperClasses
- required parent class(es)innerClasses
- should we include inner classes?contains
- classname should contain this stringnotContains
- classname should not contain this stringIOException
- when scanning classes fails@API(status=DEPRECATED, since="5.6") @Deprecated public static List<String> findAnnotatedClasses(String[] strPathsOrJars, Class<? extends Annotation>[] annotations, boolean innerClasses) throws IOException
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler)
or JMeterUtils#loadServicesAndScanJars
strPathsOrJars
- pathnames or jarfiles to search for classesannotations
- required annotationsinnerClasses
- should we include inner classes?IOException
- when scanning classes fails@API(status=DEPRECATED, since="5.6") @Deprecated public static List<String> findAnnotatedClasses(String[] strPathsOrJars, Class<? extends Annotation>[] annotations) throws IOException
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler)
or JMeterUtils#loadServicesAndScanJars
strPathsOrJars
- pathnames or jarfiles to search for classesannotations
- required annotationsIOException
- when scanning classes fails@API(status=DEPRECATED, since="5.6") @Deprecated public static List<String> findClassesThatExtend(String[] searchPathsOrJars, Class<?>[] classNames, boolean innerClasses, String contains, String notContains, boolean annotations) throws IOException
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler)
or JMeterUtils#loadServicesAndScanJars
searchPathsOrJars
- pathnames or jarfiles to search for classesclassNames
- required parent class(es) or annotationsinnerClasses
- should we include inner classes?contains
- classname should contain this stringnotContains
- classname should not contain this stringannotations
- true if classnames are annotationsIOException
- when scanning classes fails@API(status=DEPRECATED, since="5.6") @Deprecated public static List<String> findClasses(String[] searchPathsOrJars, ClassFilter filter) throws IOException
loadServices(Class, ServiceLoader, ServiceLoadExceptionHandler)
or JMeterUtils#loadServicesAndScanJars
searchPathsOrJars
- list of strings representing the jar locationsfilter
- ClassFilter
that the classes in the jars should
conform tofilter
IOException
- when reading the jar files failsCopyright © 1998-2023 Apache Software Foundation. All Rights Reserved.