in components-starter/camel-xml-jaxb-starter/src/main/java/org/apache/camel/xml/jaxb/springboot/JAXBRuntimeHints.java [188:235]
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
List<Class<?>> classes = getClassesByAnnotations(classLoader, JAXB_ROOT_ANNOTATIONS);
for (Class<?> c : classes) {
if (c.isAnnotationPresent(XmlSeeAlso.class)) {
XmlSeeAlso annotation = c.getAnnotation(XmlSeeAlso.class);
for (Class<?> type : annotation.value()) {
hints.reflection().registerType(type, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
}
}
applyIfMatch(c, XmlJavaTypeAdapter.class, XmlJavaTypeAdapter::value,
type -> hints.reflection().registerType(type, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.DECLARED_FIELDS));
hints.reflection().registerType(c, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.DECLARED_FIELDS);
}
boolean classDetected = false;
for (String className : getClassesFromIndexes(classLoader)) {
registerClassHierarchy(hints, classLoader, className, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
MemberCategory.INTROSPECT_DECLARED_METHODS, MemberCategory.DECLARED_FIELDS
);
classDetected = true;
}
if (classes.isEmpty() && !classDetected) {
return;
}
// Register all JAXB indexes
hints.resources().registerPattern("*/jaxb.index");
hints.reflection().registerTypeIfPresent(classLoader, "jakarta.xml.bind.annotation.W3CDomHandler",
MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
for (Class<?> c : JAXB_ANNOTATIONS) {
hints.reflection().registerType(c, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
MemberCategory.INVOKE_DECLARED_METHODS);
}
hints.proxies().registerJdkProxy(TypeReference.of(XmlSeeAlso.class), TypeReference.of("org.glassfish.jaxb.core.v2.model.annotation.Locatable"));
for (String className : NATIVE_PROXY_DEFINITIONS) {
hints.proxies().registerJdkProxy(TypeReference.of(className));
}
for (String className : JAXB_RUNTIME_CLASSES) {
hints.reflection().registerTypeIfPresent(classLoader, className,
MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
}
// Register the JAXB resource bundles
hints.reflection().registerTypeIfPresent(classLoader, "jakarta.xml.bind.Messages");
hints.resources().registerPattern("jakarta/xml/bind/Messages.properties");
hints.reflection().registerTypeIfPresent(classLoader, "jakarta.xml.bind.helpers.Messages");
hints.resources().registerPattern("jakarta/xml/bind/helpers/Messages.properties");
}