It´s a lightweight class scanner that allows us to apply filters and collect results in a stream pipeline.
List<Class> scanResults = ClassScanner.scan(classLoader, "com.beerboy.scanner")
.collect(Collectors.toList());
Map<Package, List<Class>> scanResultByPackages = ClassScanner.scan(classLoader, "com.beerboy.scanner")
.collect(Collectors.groupingBy(Class::getPackage));
ScannerConfig config = ScannerConfig.newBuilder()
.withRecursive(true)
.withScanDirs(true)
.withScanJars(true)
.build();
List<Class> result = ClassScanner.scan(classLoader, "com.beerboy.scanner", config)
.collect(Collectors.toList());
List<Class> annotatedClasses = ClassScanner.scan(classLoader, "com.beerboy.scanner")
.stream()
.annotatedWith(Logger.class)
.collect(Collectors.toList());
List<Class> childClasses = ClassScanner.scan(classLoader, "com.beerboy.scanner")
.stream()
.subClasses(ParentType.class)
.collect(Collectors.toList());
List<Class> implementerClasses = ClassScanner.scan(classLoader, "com.beerboy.scanner")
.stream()
.implementers(Interface.class)
.collect(Collectors.toList());
List<Class> filteredClasses = ClassScanner.scan(classLoader, "com.beerboy.scanner")
.stream()
.filter(clazz -> {
return true; // Filter code goes here
})
.collect(Collectors.toList());
List<Class> filteredClasses = ClassScanner.scan(classLoader, "com.beerboy.scanner")
.stream()
.implementers(Interface.class)
.subClasses(ParentType.class)
.annotatedWith(Logger.class)
.collect(Collectors.toList());
Add this entry to your build.gradle file
repositories {
maven {
url "https://packagecloud.io/manusant/beerRepo/maven2"
}
}
And add the dependency
compile 'com.beerboy.scanner:class-scanner-stream:1.0.0.3'
Add this to dependencyManagement section of your pom.xml
<repositories>
<repository>
<id>manusant-beerRepo</id>
<url>https://packagecloud.io/manusant/beerRepo/maven2</url>
</repository>
</repositories>
And add the dependency
<dependency>
<groupId>com.beerboy.scanner</groupId>
<artifactId>class-scanner-stream</artifactId>
<version>1.0.0.3</version>
</dependency>