You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2019/11/19 07:24:13 UTC

[camel-quarkus] branch master updated: xslt extension not working on java 11 #427

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

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/master by this push:
     new 46636b1  xslt extension not working on java 11 #427
46636b1 is described below

commit 46636b1d222a4840d44079b85d4e97b93f775676
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Mon Nov 18 17:27:49 2019 +0100

    xslt extension not working on java 11 #427
---
 extensions/support/pom.xml                         |  1 +
 .../{xslt => support/xalan}/deployment/pom.xml     | 22 +++------
 .../support/xalan/deployment/XalanFeature.java}    | 19 ++++----
 .../deployment/XalanNativeImageProcessor.java      | 54 ++++++++++++++++++++++
 extensions/support/{ => xalan}/pom.xml             | 15 +++---
 extensions/{xslt => support/xalan}/runtime/pom.xml | 24 ++++------
 .../camel/quarkus/support/xalan/XalanSupport.java  | 44 ++++++++++++++++++
 .../xalan/graal/SunTemplatesImplSubstitution.java} |  4 +-
 .../xalan}/graal/TemplatesImplSubstitution.java    |  6 +--
 .../main/resources/META-INF/quarkus-extension.yaml | 29 ++++++++++++
 extensions/xslt/deployment/pom.xml                 |  4 ++
 .../xslt/deployment/XsltNativeImageProcessor.java  | 23 ++++-----
 .../component/xslt/deployment/XsltProcessor.java   | 16 +++----
 extensions/xslt/runtime/pom.xml                    |  9 ++--
 .../quarkus/component/xslt/CamelXsltRecorder.java  | 16 ++-----
 integration-tests/xslt/pom.xml                     | 23 ---------
 pom.xml                                            |  1 +
 poms/bom-deployment/pom.xml                        |  5 ++
 poms/bom/pom.xml                                   | 10 ++++
 19 files changed, 207 insertions(+), 118 deletions(-)

diff --git a/extensions/support/pom.xml b/extensions/support/pom.xml
index 0379141..7d38d28 100644
--- a/extensions/support/pom.xml
+++ b/extensions/support/pom.xml
@@ -36,5 +36,6 @@
         <module>jetty</module>
         <module>xstream</module>
         <module>xml</module>
+        <module>xalan</module>
     </modules>
 </project>
diff --git a/extensions/xslt/deployment/pom.xml b/extensions/support/xalan/deployment/pom.xml
similarity index 80%
copy from extensions/xslt/deployment/pom.xml
copy to extensions/support/xalan/deployment/pom.xml
index 8e8f28a..292da5d 100644
--- a/extensions/xslt/deployment/pom.xml
+++ b/extensions/support/xalan/deployment/pom.xml
@@ -18,16 +18,15 @@
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus-xslt-parent</artifactId>
+        <artifactId>camel-quarkus-support-xalan-parent</artifactId>
         <version>0.4.1-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>camel-quarkus-xslt-deployment</artifactId>
-    <name>Camel Quarkus :: XSLT :: Deployment</name>
+    <artifactId>camel-quarkus-support-xalan-deployment</artifactId>
+    <name>Camel Quarkus :: Support :: Xalan :: Deployment</name>
 
     <dependencyManagement>
         <dependencies>
@@ -43,24 +42,18 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-core-xml-deployment</artifactId>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-core-deployment</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-xslt</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.oracle.substratevm</groupId>
-            <artifactId>svm</artifactId>
+            <artifactId>camel-quarkus-support-xalan</artifactId>
         </dependency>
     </dependencies>
 
     <build>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
                     <annotationProcessorPaths>
@@ -74,5 +67,4 @@
             </plugin>
         </plugins>
     </build>
-
 </project>
diff --git a/extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/graal/TemplatesImplSubstitution.java b/extensions/support/xalan/deployment/src/main/java/org/apache/camel/quarkus/support/xalan/deployment/XalanFeature.java
similarity index 58%
copy from extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/graal/TemplatesImplSubstitution.java
copy to extensions/support/xalan/deployment/src/main/java/org/apache/camel/quarkus/support/xalan/deployment/XalanFeature.java
index 471c3d4..390ad4b 100644
--- a/extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/graal/TemplatesImplSubstitution.java
+++ b/extensions/support/xalan/deployment/src/main/java/org/apache/camel/quarkus/support/xalan/deployment/XalanFeature.java
@@ -14,19 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.xslt.graal;
+package org.apache.camel.quarkus.support.xalan.deployment;
 
-import com.oracle.svm.core.annotate.Substitute;
-import com.oracle.svm.core.annotate.TargetClass;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
 
-@TargetClass(className = "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl")
-final class TemplatesImplSubstitution {
+class XalanFeature {
+    public static final String FEATURE = "camel-suport-xalan";
 
-    @TargetClass(className = "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl", innerClass = "TransletClassLoader")
-    static final class TransletClassLoader {
-        @Substitute
-        Class defineClass(final byte[] b) {
-            throw new UnsupportedOperationException();
-        }
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
     }
 }
diff --git a/extensions/support/xalan/deployment/src/main/java/org/apache/camel/quarkus/support/xalan/deployment/XalanNativeImageProcessor.java b/extensions/support/xalan/deployment/src/main/java/org/apache/camel/quarkus/support/xalan/deployment/XalanNativeImageProcessor.java
new file mode 100644
index 0000000..f814908
--- /dev/null
+++ b/extensions/support/xalan/deployment/src/main/java/org/apache/camel/quarkus/support/xalan/deployment/XalanNativeImageProcessor.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.support.xalan.deployment;
+
+import java.util.Arrays;
+import java.util.List;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBundleBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+
+class XalanNativeImageProcessor {
+    @BuildStep
+    ReflectiveClassBuildItem reflectiveClasses() {
+        return new ReflectiveClassBuildItem(
+                true,
+                false,
+                "org.apache.xalan.xsltc.dom.ObjectFactory",
+                "org.apache.xalan.xsltc.dom.XSLTCDTMManager",
+                "org.apache.xalan.xsltc.trax.TransformerFactoryImpl",
+                "org.apache.xml.serializer.OutputPropertiesFactory",
+                "org.apache.xml.serializer.CharInfo",
+                "org.apache.xml.serializer.XMLEntities");
+    }
+
+    @BuildStep
+    List<NativeImageResourceBundleBuildItem> resourceBundles() {
+        return Arrays.asList(
+                new NativeImageResourceBundleBuildItem("com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMessages"),
+                new NativeImageResourceBundleBuildItem("org.apache.xml.serializer.utils.SerializerMessages"),
+                new NativeImageResourceBundleBuildItem("org.apache.xml.serializer.XMLEntities"));
+    }
+
+    @BuildStep
+    List<NativeImageResourceBuildItem> resources() {
+        return Arrays.asList(
+                new NativeImageResourceBuildItem("org/apache/xml/serializer/output_xml.properties"));
+    }
+}
diff --git a/extensions/support/pom.xml b/extensions/support/xalan/pom.xml
similarity index 80%
copy from extensions/support/pom.xml
copy to extensions/support/xalan/pom.xml
index 0379141..77a8b8e 100644
--- a/extensions/support/pom.xml
+++ b/extensions/support/xalan/pom.xml
@@ -21,20 +21,19 @@
 
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus-extensions</artifactId>
+        <artifactId>camel-quarkus-build-parent</artifactId>
         <version>0.4.1-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent/pom.xml</relativePath>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>camel-quarkus-support-extensions</artifactId>
-    <name>Camel Quarkus :: Support</name>
+    <artifactId>camel-quarkus-support-xalan-parent</artifactId>
+    <name>Camel Quarkus :: Support :: Xalan</name>
     <packaging>pom</packaging>
-
     <modules>
-        <module>common</module>
-        <module>jetty</module>
-        <module>xstream</module>
-        <module>xml</module>
+        <module>deployment</module>
+        <module>runtime</module>
     </modules>
+
 </project>
diff --git a/extensions/xslt/runtime/pom.xml b/extensions/support/xalan/runtime/pom.xml
similarity index 81%
copy from extensions/xslt/runtime/pom.xml
copy to extensions/support/xalan/runtime/pom.xml
index a38515f..45d2b51 100644
--- a/extensions/xslt/runtime/pom.xml
+++ b/extensions/support/xalan/runtime/pom.xml
@@ -18,20 +18,15 @@
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus-xslt-parent</artifactId>
+        <artifactId>camel-quarkus-support-xalan-parent</artifactId>
         <version>0.4.1-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>camel-quarkus-xslt</artifactId>
-    <name>Camel Quarkus :: XSLT :: Runtime</name>
-
-    <properties>
-        <firstVersion>0.4.0</firstVersion>
-    </properties>
+    <artifactId>camel-quarkus-support-xalan</artifactId>
+    <name>Camel Quarkus :: Support :: Xalan :: Runtime</name>
 
     <dependencyManagement>
         <dependencies>
@@ -47,17 +42,17 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-core-xml</artifactId>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-xslt</artifactId>
+            <groupId>xalan</groupId>
+            <artifactId>xalan</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.oracle.substratevm</groupId>
             <artifactId>svm</artifactId>
-            <scope>compile</scope>
         </dependency>
     </dependencies>
 
@@ -68,7 +63,6 @@
                 <artifactId>quarkus-bootstrap-maven-plugin</artifactId>
             </plugin>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
                     <annotationProcessorPaths>
diff --git a/extensions/support/xalan/runtime/src/main/java/org/apache/camel/quarkus/support/xalan/XalanSupport.java b/extensions/support/xalan/runtime/src/main/java/org/apache/camel/quarkus/support/xalan/XalanSupport.java
new file mode 100644
index 0000000..3bde531
--- /dev/null
+++ b/extensions/support/xalan/runtime/src/main/java/org/apache/camel/quarkus/support/xalan/XalanSupport.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.support.xalan;
+
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public final class XalanSupport {
+    private static final Logger LOGGER = LoggerFactory.getLogger(XalanSupport.class);
+
+    private XalanSupport() {
+    }
+
+    public static TransformerFactory newTransformerFactoryInstance() {
+        TransformerFactory factory = TransformerFactory.newInstance(
+                "org.apache.xalan.xsltc.trax.TransformerFactoryImpl",
+                Thread.currentThread().getContextClassLoader());
+
+        try {
+            factory.setFeature(javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING, true);
+        } catch (TransformerException e) {
+            LOGGER.warn("Unsupported feature " + javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING);
+        }
+
+        return factory;
+    }
+}
diff --git a/extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/graal/TemplatesImplSubstitution.java b/extensions/support/xalan/runtime/src/main/java/org/apache/camel/quarkus/support/xalan/graal/SunTemplatesImplSubstitution.java
similarity index 93%
copy from extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/graal/TemplatesImplSubstitution.java
copy to extensions/support/xalan/runtime/src/main/java/org/apache/camel/quarkus/support/xalan/graal/SunTemplatesImplSubstitution.java
index 471c3d4..266e0da 100644
--- a/extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/graal/TemplatesImplSubstitution.java
+++ b/extensions/support/xalan/runtime/src/main/java/org/apache/camel/quarkus/support/xalan/graal/SunTemplatesImplSubstitution.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.xslt.graal;
+package org.apache.camel.quarkus.support.xalan.graal;
 
 import com.oracle.svm.core.annotate.Substitute;
 import com.oracle.svm.core.annotate.TargetClass;
 
 @TargetClass(className = "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl")
-final class TemplatesImplSubstitution {
+final class SunTemplatesImplSubstitution {
 
     @TargetClass(className = "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl", innerClass = "TransletClassLoader")
     static final class TransletClassLoader {
diff --git a/extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/graal/TemplatesImplSubstitution.java b/extensions/support/xalan/runtime/src/main/java/org/apache/camel/quarkus/support/xalan/graal/TemplatesImplSubstitution.java
similarity index 80%
rename from extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/graal/TemplatesImplSubstitution.java
rename to extensions/support/xalan/runtime/src/main/java/org/apache/camel/quarkus/support/xalan/graal/TemplatesImplSubstitution.java
index 471c3d4..f9a4561 100644
--- a/extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/graal/TemplatesImplSubstitution.java
+++ b/extensions/support/xalan/runtime/src/main/java/org/apache/camel/quarkus/support/xalan/graal/TemplatesImplSubstitution.java
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.xslt.graal;
+package org.apache.camel.quarkus.support.xalan.graal;
 
 import com.oracle.svm.core.annotate.Substitute;
 import com.oracle.svm.core.annotate.TargetClass;
 
-@TargetClass(className = "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl")
+@TargetClass(className = "org.apache.xalan.xsltc.trax.TemplatesImpl")
 final class TemplatesImplSubstitution {
 
-    @TargetClass(className = "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl", innerClass = "TransletClassLoader")
+    @TargetClass(className = "org.apache.xalan.xsltc.trax.TemplatesImpl", innerClass = "TransletClassLoader")
     static final class TransletClassLoader {
         @Substitute
         Class defineClass(final byte[] b) {
diff --git a/extensions/support/xalan/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/support/xalan/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..af79ebc
--- /dev/null
+++ b/extensions/support/xalan/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,29 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+---
+name: "Camel Quarkus Support Xalan"
+description: "Camel Quarkus Support Xalan"
+metadata:
+  unlisted: true
+  keywords:
+  - "camel"
+  - "xalan"
+  guide: "https://quarkus.io/guides/camel"
+  categories:
+  - "integration"
+
diff --git a/extensions/xslt/deployment/pom.xml b/extensions/xslt/deployment/pom.xml
index 8e8f28a..9f09e81 100644
--- a/extensions/xslt/deployment/pom.xml
+++ b/extensions/xslt/deployment/pom.xml
@@ -48,6 +48,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-xalan-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-xslt</artifactId>
         </dependency>
 
diff --git a/extensions/xslt/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/deployment/XsltNativeImageProcessor.java b/extensions/xslt/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/deployment/XsltNativeImageProcessor.java
index 14d71ff..65cffdb 100644
--- a/extensions/xslt/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/deployment/XsltNativeImageProcessor.java
+++ b/extensions/xslt/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/deployment/XsltNativeImageProcessor.java
@@ -17,13 +17,12 @@
 package org.apache.camel.quarkus.component.xslt.deployment;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
-import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBundleBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import org.apache.camel.quarkus.component.xslt.CamelXsltConfig;
 import org.apache.camel.support.ResourceHelper;
@@ -32,22 +31,16 @@ class XsltNativeImageProcessor {
     public static final String CLASSPATH_SCHEME = "classpath:";
 
     @BuildStep
-    List<ReflectiveClassBuildItem> reflectiveClasses(List<XsltGeneratedClassBuildItem> generatedClasses) {
-        List<ReflectiveClassBuildItem> items = new ArrayList<>(generatedClasses.size() + 1);
-
-        items.add(new ReflectiveClassBuildItem(true, false, "org.apache.camel.component.xslt.XsltBuilder"));
-
-        for (XsltGeneratedClassBuildItem generatedClass : generatedClasses) {
-            items.add(new ReflectiveClassBuildItem(true, false, generatedClass.getClassName()));
-        }
-
-        return items;
+    ReflectiveClassBuildItem reflectiveClasses() {
+        return new ReflectiveClassBuildItem(true, false, "org.apache.camel.component.xslt.XsltBuilder");
     }
 
     @BuildStep
-    List<NativeImageResourceBundleBuildItem> resourceBundles() {
-        return Arrays.asList(
-                new NativeImageResourceBundleBuildItem("com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMessages"));
+    List<ReflectiveClassBuildItem> generatedReflectiveClasses(List<XsltGeneratedClassBuildItem> generatedClasses) {
+        return generatedClasses.stream()
+                .map(XsltGeneratedClassBuildItem::getClassName)
+                .map(className -> new ReflectiveClassBuildItem(true, false, className))
+                .collect(Collectors.toList());
     }
 
     @BuildStep
diff --git a/extensions/xslt/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/deployment/XsltProcessor.java b/extensions/xslt/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/deployment/XsltProcessor.java
index c293a9c..0e0c417 100644
--- a/extensions/xslt/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/deployment/XsltProcessor.java
+++ b/extensions/xslt/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/deployment/XsltProcessor.java
@@ -21,10 +21,14 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Comparator;
-
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 
+import io.quarkus.deployment.annotations.BuildProducer;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
+import io.quarkus.deployment.builditem.GeneratedClassBuildItem;
 import org.apache.camel.component.xslt.XsltComponent;
 import org.apache.camel.component.xslt.XsltUriResolver;
 import org.apache.camel.quarkus.component.xslt.CamelXsltConfig;
@@ -34,16 +38,11 @@ import org.apache.camel.quarkus.core.CamelServiceFilter;
 import org.apache.camel.quarkus.core.FastCamelContext;
 import org.apache.camel.quarkus.core.deployment.CamelBeanBuildItem;
 import org.apache.camel.quarkus.core.deployment.CamelServiceFilterBuildItem;
+import org.apache.camel.quarkus.support.xalan.XalanSupport;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.StringHelper;
 import org.apache.commons.lang3.StringUtils;
 
-import io.quarkus.deployment.annotations.BuildProducer;
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.annotations.ExecutionTime;
-import io.quarkus.deployment.annotations.Record;
-import io.quarkus.deployment.builditem.GeneratedClassBuildItem;
-
 class XsltProcessor {
     /*
      * The xslt component is programmatically configured by the extension thus
@@ -76,8 +75,7 @@ class XsltProcessor {
                 final String name = FileUtil.stripExt(source, true);
 
                 try {
-                    TransformerFactory tf = TransformerFactory.newInstance();
-                    tf.setFeature(javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING, true);
+                    TransformerFactory tf = XalanSupport.newTransformerFactoryInstance();
                     tf.setAttribute("generate-translet", true);
                     tf.setAttribute("translet-name", StringHelper.capitalize(name, true));
                     tf.setAttribute("package-name", config.packageName);
diff --git a/extensions/xslt/runtime/pom.xml b/extensions/xslt/runtime/pom.xml
index a38515f..28f345a 100644
--- a/extensions/xslt/runtime/pom.xml
+++ b/extensions/xslt/runtime/pom.xml
@@ -51,13 +51,12 @@
             <artifactId>camel-quarkus-core-xml</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-xslt</artifactId>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-xalan</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.oracle.substratevm</groupId>
-            <artifactId>svm</artifactId>
-            <scope>compile</scope>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-xslt</artifactId>
         </dependency>
     </dependencies>
 
diff --git a/extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/CamelXsltRecorder.java b/extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/CamelXsltRecorder.java
index d5f5ccf..656d6f2 100644
--- a/extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/CamelXsltRecorder.java
+++ b/extensions/xslt/runtime/src/main/java/org/apache/camel/quarkus/component/xslt/CamelXsltRecorder.java
@@ -17,18 +17,16 @@
 package org.apache.camel.quarkus.component.xslt;
 
 import java.util.Map;
-
-import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 
+import io.quarkus.runtime.RuntimeValue;
+import io.quarkus.runtime.annotations.Recorder;
 import org.apache.camel.component.xslt.XsltComponent;
 import org.apache.camel.component.xslt.XsltEndpoint;
+import org.apache.camel.quarkus.support.xalan.XalanSupport;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.StringHelper;
 
-import io.quarkus.runtime.RuntimeValue;
-import io.quarkus.runtime.annotations.Recorder;
-
 @Recorder
 public class CamelXsltRecorder {
     public RuntimeValue<XsltComponent> createXsltComponent(CamelXsltConfig config) {
@@ -51,13 +49,7 @@ public class CamelXsltRecorder {
             final String fileName = FileUtil.stripExt(remaining, true);
             final String className = StringHelper.capitalize(fileName, true);
 
-            TransformerFactory tf = TransformerFactory.newInstance();
-            try {
-                tf.setFeature(javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING, true);
-            } catch (TransformerException e) {
-                log.warn("Unsupported feature " + javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING);
-            }
-
+            TransformerFactory tf = XalanSupport.newTransformerFactoryInstance();
             tf.setAttribute("use-classpath", true);
             tf.setAttribute("translet-name", className);
             tf.setAttribute("package-name", this.config.packageName);
diff --git a/integration-tests/xslt/pom.xml b/integration-tests/xslt/pom.xml
index eed7e7e..033d265 100644
--- a/integration-tests/xslt/pom.xml
+++ b/integration-tests/xslt/pom.xml
@@ -81,35 +81,12 @@
     </build>
 
     <profiles>
-        <!--
-            It appears there is an issue in JDK 11 that prevent the compiler
-            to generate the right package + className and the result is always
-            based on default values instead of those given by the attributes
-        -->
-        <profile>
-            <id>jdk-greater-than-8</id>
-            <activation>
-                <jdk>[9,</jdk>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <skip>true</skip>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
         <profile>
             <id>native</id>
             <activation>
                 <property>
                     <name>native</name>
                 </property>
-                <jdk>1.8</jdk>
             </activation>
             <build>
                 <plugins>
diff --git a/pom.xml b/pom.xml
index 3f4beb4..99236cd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,6 +48,7 @@
         <snakeyaml.version>1.25</snakeyaml.version>
         <geronimo-jms_2.0_spec.version>1.0-alpha-2</geronimo-jms_2.0_spec.version>
         <artemis.version>2.10.0</artemis.version>
+        <xalan.version>2.7.2</xalan.version>
 
         <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
         <maven.compiler.target>1.8</maven.compiler.target>
diff --git a/poms/bom-deployment/pom.xml b/poms/bom-deployment/pom.xml
index 75349ab..1ffa119 100644
--- a/poms/bom-deployment/pom.xml
+++ b/poms/bom-deployment/pom.xml
@@ -78,6 +78,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-support-xalan-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-support-xml-deployment</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 9dbaf95..1fa3b90 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -361,6 +361,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-support-xalan</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-support-xml</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
@@ -650,6 +655,11 @@
                 <artifactId>artemis-server</artifactId>
                 <version>${artemis.version}</version>
             </dependency>
+            <dependency>
+                <groupId>xalan</groupId>
+                <artifactId>xalan</artifactId>
+                <version>${xalan.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>