in extensions/groovy/deployment/src/main/java/org/apache/camel/quarkus/component/groovy/deployment/GroovyProcessor.java [111:145]
void compileScriptsAOT(CurateOutcomeBuildItem curateOutcomeBuildItem,
BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
List<GroovyExpressionSourceBuildItem> sources,
BuildProducer<GeneratedClassBuildItem> generatedClass) {
if (sources.isEmpty()) {
return;
}
CompilationUnit unit = new CompilationUnit();
Set<String> classNames = new HashSet<>();
for (GroovyExpressionSourceBuildItem source : sources) {
String name = source.getClassName();
String content = source.getSourceCode();
if (LOG.isDebugEnabled()) {
LOG.debug("Compiling script:\n\n{}\n", content);
}
unit.addSource(name, content);
classNames.add(name);
}
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 (classNames.contains(className)) {
reflectiveClass.produce(ReflectiveClassBuildItem.builder(className).methods().fields().build());
}
}
}