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

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 1c4bbbc  CAMEL-16891: camel-jaxb - Prefix mapper should be created via 
new constructor and not dynamic loaded which can cause problems for GraalVM 
based systems. Also no need to extend the com.sun class as the abstract class 
is sufficient.
1c4bbbc is described below

commit 1c4bbbc216d83fb1c956f72a15c3712fb3b4c7ad
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Aug 26 07:17:07 2021 +0200

    CAMEL-16891: camel-jaxb - Prefix mapper should be created via new 
constructor and not dynamic loaded which can cause problems for GraalVM based 
systems. Also no need to extend the com.sun class as the abstract class is 
sufficient.
---
 .../converter/jaxb/NamespacePrefixMapperFactory.java | 20 +++++++-------------
 ...Mapper.java => DefaultNamespacePrefixMapper.java} |  4 ++--
 2 files changed, 9 insertions(+), 15 deletions(-)

diff --git 
a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/NamespacePrefixMapperFactory.java
 
b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/NamespacePrefixMapperFactory.java
index a463c74..93745f6 100644
--- 
a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/NamespacePrefixMapperFactory.java
+++ 
b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/NamespacePrefixMapperFactory.java
@@ -19,27 +19,21 @@ package org.apache.camel.converter.jaxb;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.converter.jaxb.mapper.DefaultNamespacePrefixMapper;
 
 /**
- * Factory for creating {@link JaxbNamespacePrefixMapper} which supports 
various JAXB-RI implementations.
+ * Factory for creating {@link JaxbNamespacePrefixMapper}.
  */
 public final class NamespacePrefixMapperFactory {
 
-    private static final String SUN_JAXB_21_MAPPER = 
"org.apache.camel.converter.jaxb.mapper.SunJaxb21NamespacePrefixMapper";
-
     private NamespacePrefixMapperFactory() {
     }
 
     static JaxbNamespacePrefixMapper newNamespacePrefixMapper(CamelContext 
camelContext, Map<String, String> namespaces) {
-
-        // try to load the Sun JAXB 2.1 based
-        Class<?> clazz = 
camelContext.getClassResolver().resolveClass(SUN_JAXB_21_MAPPER);
-        if (clazz != null) {
-            JaxbNamespacePrefixMapper mapper = (JaxbNamespacePrefixMapper) 
camelContext.getInjector().newInstance(clazz);
-            mapper.setNamespaces(namespaces);
-            return mapper;
-        }
-
-        throw new IllegalStateException("Cannot load 
CamelNamespacePrefixMapper class");
+        DefaultNamespacePrefixMapper mapper = new 
DefaultNamespacePrefixMapper();
+        CamelContextAware.trySetCamelContext(mapper, camelContext);
+        mapper.setNamespaces(namespaces);
+        return mapper;
     }
 }
diff --git 
a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/mapper/SunJaxb21NamespacePrefixMapper.java
 
b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/mapper/DefaultNamespacePrefixMapper.java
similarity index 88%
rename from 
components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/mapper/SunJaxb21NamespacePrefixMapper.java
rename to 
components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/mapper/DefaultNamespacePrefixMapper.java
index 41f9e0f..ba1d5ad 100644
--- 
a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/mapper/SunJaxb21NamespacePrefixMapper.java
+++ 
b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/mapper/DefaultNamespacePrefixMapper.java
@@ -22,9 +22,9 @@ import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
 import org.apache.camel.converter.jaxb.JaxbNamespacePrefixMapper;
 
 /**
- * A namespace prefix mapper which uses JAXB-RI 2.1 or better from SUN.
+ * A namespace prefix mapper which overrides SUN JAXB-RI to allow Camel to 
control the prefixes
  */
-public class SunJaxb21NamespacePrefixMapper extends NamespacePrefixMapper 
implements JaxbNamespacePrefixMapper {
+public class DefaultNamespacePrefixMapper extends NamespacePrefixMapper 
implements JaxbNamespacePrefixMapper {
 
     private Map<String, String> namespaces;
 

Reply via email to