public void registerHints()

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