in extensions/groovy-dsl/deployment/src/main/java/org/apache/camel/quarkus/dsl/groovy/deployment/GroovyDslProcessor.java [93:135]
void compileScriptsAOT(BuildProducer<GeneratedClassBuildItem> generatedClass,
BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
BuildProducer<DslGeneratedClassBuildItem> generatedGroovyClass,
CurateOutcomeBuildItem curateOutcomeBuildItem) throws Exception {
LOG.debug("Loading .groovy resources");
Map<String, Resource> nameToResource = new HashMap<>();
CompilationUnit unit = new CompilationUnit();
CamelMainHelper.forEachMatchingResource(
resource -> {
if (!resource.getLocation().endsWith(".groovy")) {
return;
}
try (InputStream is = resource.getInputStream()) {
String name = determineName(resource);
String fqn = String.format("%s.%s", PACKAGE_NAME, name);
unit.addSource(fqn, toGroovyClass(name, IOHelper.loadText(is)));
nameToResource.put(fqn, resource);
} catch (IOException e) {
throw new RuntimeException(e);
}
});
if (nameToResource.isEmpty()) {
return;
}
CompilerConfiguration cc = new CompilerConfiguration();
cc.setClasspathList(
curateOutcomeBuildItem.getApplicationModel().getDependencies().stream()
.map(ResolvedDependency::getResolvedPaths)
.flatMap(PathCollection::stream)
.map(Objects::toString)
.toList());
unit.configure(cc);
unit.compile(Phases.CLASS_GENERATION);
for (GroovyClass clazz : unit.getClasses()) {
String className = clazz.getName();
generatedClass.produce(new GeneratedClassBuildItem(true, className, clazz.getBytes()));
if (nameToResource.containsKey(className)) {
reflectiveClass.produce(ReflectiveClassBuildItem.builder(className).build());
generatedGroovyClass
.produce(new DslGeneratedClassBuildItem(className, nameToResource.get(className).getLocation()));
}
}
}