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;