in extensions/java-joor-dsl/deployment/src/main/java/org/apache/camel/quarkus/dsl/java/joor/deployment/JavaJoorDslProcessor.java [67:111]
void compileClassesAOT(BuildProducer<JavaJoorGeneratedClassBuildItem> generatedClass,
BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
BuildProducer<LambdaCapturingTypeBuildItem> lambdaCapturingTypeProducer,
CurateOutcomeBuildItem curateOutcomeBuildItem) throws Exception {
Map<String, Resource> nameToResource = new HashMap<>();
LOG.debug("Loading .java resources");
CompilationUnit unit = CompilationUnit.input();
CamelMainHelper.forEachMatchingResource(
resource -> {
if (!resource.getLocation().endsWith(".java")) {
return;
}
try (InputStream is = resource.getInputStream()) {
String content = IOHelper.loadText(is);
String name = Helper.determineName(resource, content);
unit.addClass(name, content);
nameToResource.put(name, resource);
} catch (IOException e) {
throw new RuntimeException(e);
}
});
if (nameToResource.isEmpty()) {
return;
}
LOG.debug("Compiling unit: {}", unit);
CompilationUnit.Result result = MultiCompile.compileUnit(
unit,
List.of(
"-classpath",
curateOutcomeBuildItem.getApplicationModel().getDependencies().stream()
.map(ResolvedDependency::getResolvedPaths)
.flatMap(PathCollection::stream)
.map(Objects::toString)
.collect(Collectors.joining(System.getProperty("path.separator")))));
for (String className : result.getClassNames()) {
registerForReflection(reflectiveClass, lambdaCapturingTypeProducer, result.getClass(className));
}
for (String className : result.getCompiledClassNames()) {
int index = className.indexOf("$");
String outerClassName = index == -1 ? className : className.substring(0, index);
generatedClass
.produce(new JavaJoorGeneratedClassBuildItem(className, nameToResource.get(outerClassName).getLocation(),
result.getByteCode(className)));
}
}