You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by fm...@apache.org on 2024/01/25 12:46:45 UTC

(camel-spring-boot) 32/40: fix: Adapt JAXBRuntimeHints to the behavior change in Spring 6.0.13 (#984) (#291)

This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch camel-spring-boot-4.0.0-branch
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git

commit 478f4f373fc1680a81a1d0ff802976e56387c7cc
Author: John Poth <po...@gmail.com>
AuthorDate: Mon Nov 27 14:29:12 2023 +0100

    fix: Adapt JAXBRuntimeHints to the behavior change in Spring 6.0.13 (#984) (#291)
    
    ## Motivation
    
    Since Spring 6.0.13 and the fix for https://github.com/spring-projects/spring-framework/issues/31224, the member category `INVOKE_DECLARED_METHODS` no longer includes public methods so the code needs to be adapted to this behavior change.
    
    ## Modifications:
    
    * Register also the member category `INVOKE_PUBLIC_METHODS` when `INVOKE_DECLARED_METHODS` is registered
    
    (cherry picked from commit ba22da88eed6feccfef10e91b46f57a23f8924e9)
    
    Co-authored-by: Nicolas Filotto <es...@users.noreply.github.com>
---
 .../apache/camel/xml/jaxb/springboot/JAXBRuntimeHints.java    | 11 +++++++----
 .../test/java/org/apache/camel/xml/jaxb/springboot/Book.java  |  1 -
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/components-starter/camel-xml-jaxb-starter/src/main/java/org/apache/camel/xml/jaxb/springboot/JAXBRuntimeHints.java b/components-starter/camel-xml-jaxb-starter/src/main/java/org/apache/camel/xml/jaxb/springboot/JAXBRuntimeHints.java
index d8002c20ecf..26012c1e1fe 100644
--- a/components-starter/camel-xml-jaxb-starter/src/main/java/org/apache/camel/xml/jaxb/springboot/JAXBRuntimeHints.java
+++ b/components-starter/camel-xml-jaxb-starter/src/main/java/org/apache/camel/xml/jaxb/springboot/JAXBRuntimeHints.java
@@ -196,9 +196,11 @@ final class JAXBRuntimeHints implements RuntimeHintsRegistrar {
             }
             applyIfMatch(c, XmlJavaTypeAdapter.class, XmlJavaTypeAdapter::value,
                     type -> hints.reflection().registerType(type, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
-                    MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.DECLARED_FIELDS));
+                            MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_PUBLIC_METHODS,
+                            MemberCategory.DECLARED_FIELDS));
             hints.reflection().registerType(c, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
-                    MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.DECLARED_FIELDS);
+                    MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_PUBLIC_METHODS,
+                    MemberCategory.DECLARED_FIELDS);
         }
         boolean classDetected = false;
         for (String className : getClassesFromIndexes(classLoader)) {
@@ -217,7 +219,7 @@ final class JAXBRuntimeHints implements RuntimeHintsRegistrar {
                 MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
         for (Class<?> c : JAXB_ANNOTATIONS) {
             hints.reflection().registerType(c, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
-                    MemberCategory.INVOKE_DECLARED_METHODS);
+                    MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_PUBLIC_METHODS);
         }
         hints.proxies().registerJdkProxy(TypeReference.of(XmlSeeAlso.class), TypeReference.of("org.glassfish.jaxb.core.v2.model.annotation.Locatable"));
         for (String className : NATIVE_PROXY_DEFINITIONS) {
@@ -225,7 +227,8 @@ final class JAXBRuntimeHints implements RuntimeHintsRegistrar {
         }
         for (String className : JAXB_RUNTIME_CLASSES) {
             hints.reflection().registerTypeIfPresent(classLoader, className,
-                    MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
+                    MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
+                    MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_PUBLIC_METHODS);
         }
         // Register the JAXB resource bundles
         hints.reflection().registerTypeIfPresent(classLoader, "jakarta.xml.bind.Messages");
diff --git a/components-starter/camel-xml-jaxb-starter/src/test/java/org/apache/camel/xml/jaxb/springboot/Book.java b/components-starter/camel-xml-jaxb-starter/src/test/java/org/apache/camel/xml/jaxb/springboot/Book.java
index 72829dcdef5..280e5b1fef2 100644
--- a/components-starter/camel-xml-jaxb-starter/src/test/java/org/apache/camel/xml/jaxb/springboot/Book.java
+++ b/components-starter/camel-xml-jaxb-starter/src/test/java/org/apache/camel/xml/jaxb/springboot/Book.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.xml.jaxb.springboot;
 
-import jakarta.xml.bind.annotation.XmlAttribute;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlRootElement;
 import jakarta.xml.bind.annotation.XmlTransient;