private static List getClassesFromIndexes()

in components-starter/camel-xml-jaxb-starter/src/main/java/org/apache/camel/xml/jaxb/springboot/JAXBRuntimeHints.java [210:243]


    private static List<String> getClassesFromIndexes(ClassLoader classLoader) {
        List<String> classNames = new ArrayList<>();
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(classLoader);
        try {
            for (Resource resource : resolver.getResources("classpath*:**/jaxb.index")) {
                String filename = resource.getFilename();
                if (filename == null || filename.isBlank()) {
                    continue;
                }
                String packageName = getPackageName(resource, "jaxb.index");
                if (packageName == null) {
                    LOG.debug("The package name could not be found for the resource {}", resource);
                    continue;
                }
                try (BufferedReader reader = new BufferedReader(
                        new StringReader(resource.getContentAsString(StandardCharsets.UTF_8)))) {
                    String line = reader.readLine();
                    while (line != null) {
                        if (line.startsWith("#") || line.isBlank()) {
                            line = reader.readLine();
                            continue;
                        }
                        String className = "%s%s".formatted(packageName, line.trim());
                        LOG.debug("Found the class {} to register", className);
                        classNames.add(className);
                        line = reader.readLine();
                    }
                }
            }
        } catch (IOException e) {
            LOG.debug("Could not load the JAXB indexes: {}", e.getMessage());
        }
        return classNames;
    }