private static void configureJolokiaServiceNativeSupport()

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());
        }
    }