in extensions/jolokia/deployment/src/main/java/org/apache/camel/quarkus/jolokia/deployment/JolokiaProcessor.java [225:272]
private static void configureJolokiaServiceNativeSupport(
CurateOutcomeBuildItem curateOutcome,
BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
BuildProducer<NativeImageResourceBuildItem> nativeImageResource) {
Set<String> jolokiaServiceIncludes = Collections.singleton("META-INF/jolokia/*");
PathFilter pathFilter = PathFilter.forIncludes(jolokiaServiceIncludes);
Set<ResolvedDependency> jolokiaDependencies = curateOutcome.getApplicationModel()
.getRuntimeDependencies()
.stream()
.filter(dependency -> dependency.getGroupId().equals("org.jolokia"))
.collect(Collectors.toUnmodifiableSet());
Set<String> jolokiaReflectiveClasses = new HashSet<>();
for (ResolvedDependency dependency : jolokiaDependencies) {
dependency.getContentTree(pathFilter).walk(new PathVisitor() {
@Override
public void visitPath(PathVisit visit) {
String resourcePath = StringHelper.after(visit.getPath().toString(), "/");
nativeImageResource.produce(new NativeImageResourceBuildItem(resourcePath));
try {
for (String line : Files.readAllLines(visit.getPath())) {
if (ObjectHelper.isEmpty(line) || line.startsWith("#")) {
continue;
}
String serviceClass;
if (line.indexOf(',') > -1) {
serviceClass = line.substring(0, line.indexOf(',')).trim();
} else {
serviceClass = line.trim();
}
jolokiaReflectiveClasses.add(serviceClass);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
}
if (!jolokiaReflectiveClasses.isEmpty()) {
reflectiveClass.produce(ReflectiveClassBuildItem.builder(jolokiaReflectiveClasses.toArray(new String[0])).build());
}
}