in core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/aot/CamelRuntimeHints.java [65:97]
private static void registerCamelServices(RuntimeHints hints, ClassLoader classLoader) {
hints.resources().registerPattern("META-INF/services/org/apache/camel/*");
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(classLoader);
try {
for (Resource resource : resolver.getResources("classpath*:META-INF/services/org/apache/camel/**")) {
String filename = resource.getFilename();
if (filename == null || filename.isBlank() || filename.endsWith(".properties")) {
continue;
}
try (BufferedReader reader = new BufferedReader(new StringReader(resource.getContentAsString(StandardCharsets.UTF_8)))) {
String line = reader.readLine();
String prefixClass = "class=";
while (line != null) {
if (line.startsWith("#") || line.isBlank()) {
line = reader.readLine();
continue;
}
String className = line.trim();
if (line.startsWith(prefixClass)) {
className = line.substring(prefixClass.length());
}
LOG.debug("Found the class {} to register", className);
registerClassHierarchy(hints, classLoader, className, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_PUBLIC_METHODS,
MemberCategory.INTROSPECT_DECLARED_METHODS, MemberCategory.INTROSPECT_PUBLIC_METHODS);
line = reader.readLine();
}
}
}
} catch (IOException e) {
LOG.debug("Could not load the Camel services: {}", e.getMessage());
}
}