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>