Burningwave Core is an advanced and highly optimized Java library to build frameworks and it is useful for scanning class paths, generating classes at runtime, facilitating the use of reflection, scanning the filesystem, executing stringified source code, iterating collections or arrays in parallel, executing tasks in parallel and much more…
Below you will find how to include the library in your projects and a simple code example. In the right side links you will find more examples of the ClassHunter and of some other components and here you can find some junit test of all most used components.
Get Started!
To use BurningWave Core in your projects you just need to name a dependency as following:
with Apache Maven:
<dependency> <groupId>org.burningwave</groupId> <artifactId>core</artifactId> <version>12.64.3</version> </dependency>
… And to use Burningwave Core as a Java module, add the following to your module-info.java
:
requires org.burningwave.core;
… And now, the code: let’s retrieve all classes whose package name contains “springframework” string in the runtime class paths!
import java.util.Collection; import org.burningwave.core.assembler.ComponentContainer; import org.burningwave.core.assembler.ComponentSupplier; import org.burningwave.core.classes.ClassHunter; import org.burningwave.core.classes.JavaClass; import org.burningwave.core.classes.SearchConfig; import org.burningwave.core.io.FileSystemItem; public class Finder { public Collection<Class<?>> find() { ComponentSupplier componentSupplier = ComponentContainer.getInstance(); ClassHunter classHunter = componentSupplier.getClassHunter(); SearchConfig searchConfig = SearchConfig.create().setFileFilter( //Highly optimized scanning by filtering resources before loading from ClassLoader FileSystemItem.Criteria.forAllFileThat( fileSystemItem -> { JavaClass javaClass = fileSystemItem.toJavaClass(); if (javaClass == null) { return false; } String packageName = javaClass.getPackageName(); return packageName != null && packageName.contains("springframework"); }) ); try(ClassHunter.SearchResult searchResult = classHunter.findBy(searchConfig)) { return searchResult.getClasses(); } } }
BackgroundExecutor
ClassFactory
ClassHunter
- In depth look to and configuration guide
- USE CASE: how to retrieve all classes of the classpath
- USE CASE: how to retrieve all classes that implement one or more interfaces
- USE CASE: finding all classes that extend a base class
- USE CASE: how to find all classes in a package
- USE CASE: Finding all classes for module name (Java 9 and later)
- USE CASE: finding all annotated classes
- USE CASE: how to scan classes for specific annotations and collect their values
- USE CASE: how to search for all classes with a constructor that takes a specific type as first parameter and with at least 2 methods that begin for a given string
- USE CASE: how to search for all classes with methods whose name begins for a given string and that takes a specific type as its first parameter
- USE CASE: finding all classes that have at least 2 protected fields
ClassPathHunter
CodeExecutor
FileSystemItem
FunctionalInterfaceFactory
IterableObjectHelper
JavaMemoryCompiler
PropertyAccessor
UnitSourceGenerator