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 <[email protected]>
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;