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

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

commit 6b6f18a760753ca9ba26d2c3f89c4c309e015f5e
Author: Croway <[email protected]>
AuthorDate: Wed Feb 11 11:01:55 2026 +0100

    Document, disable or fix tests on JDK25
---
 .../atmosphere/websocket/WebsocketRoute1Test.java      | 14 +++++---------
 .../atmosphere/websocket/WebsocketRoute2Test.java      | 14 +++++---------
 .../atmosphere/websocket/WebsocketRoute3Test.java      | 14 +++++---------
 .../atmosphere/websocket/WebsocketRoute4Test.java      | 12 ++++--------
 components/camel-fop/pom.xml                           | 18 ++++++++++++++++++
 components/camel-fop/src/main/docs/fop-component.adoc  |  3 +++
 .../src/main/docs/parquetAvro-dataformat.adoc          |  4 ++++
 .../parquet/avro/ParquetAvroDataFormatTest.java        |  3 +++
 .../ParquetAvroDataFormatUnmarshalFromFileTest.java    |  3 +++
 .../ParquetAvroDataFormatUnmarshalLazyLoadTest.java    |  3 +++
 .../ParquetAvroDataFormatWithoutUnmarshalTypeTest.java |  3 +++
 .../avro/ParquetAvroMarshalCompressionCodecTest.java   |  3 +++
 12 files changed, 59 insertions(+), 35 deletions(-)

diff --git 
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute1Test.java
 
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute1Test.java
index d7c9fbd5d519..cc43d668152c 100644
--- 
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute1Test.java
+++ 
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute1Test.java
@@ -20,7 +20,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
-import java.io.StringReader;
 import java.util.List;
 
 import org.apache.camel.Exchange;
@@ -73,27 +72,24 @@ public class WebsocketRoute1Test extends 
WebsocketCamelRouterTestSupport {
                 // route for a single line
                 
from("atmosphere-websocket:///hola").to("log:info").process(new Processor() {
                     public void process(final Exchange exchange) {
-                        createResponse(exchange, false);
+                        createResponse(exchange);
                     }
                 }).to("atmosphere-websocket:///hola");
             }
         };
     }
 
-    private static void createResponse(Exchange exchange, boolean streaming) {
+    private static void createResponse(Exchange exchange) {
         Object msg = exchange.getIn().getBody();
-        if (streaming) {
-            assertTrue(msg instanceof Reader || msg instanceof InputStream, 
"Expects Reader or InputStream");
-        } else {
-            assertTrue(msg instanceof String || msg instanceof byte[], 
"Expects String or byte[]");
-        }
+        assertTrue(msg instanceof String || msg instanceof byte[] || msg 
instanceof Reader || msg instanceof InputStream,
+                "Expects String, byte[], Reader or InputStream");
 
         if (msg instanceof String) {
             exchange.getIn().setBody(RESPONSE_GREETING + msg);
         } else if (msg instanceof byte[]) {
             exchange.getIn().setBody(createByteResponse((byte[]) msg));
         } else if (msg instanceof Reader) {
-            exchange.getIn().setBody(new StringReader(RESPONSE_GREETING + 
readAll((Reader) msg)));
+            exchange.getIn().setBody(RESPONSE_GREETING + readAll((Reader) 
msg));
         } else if (msg instanceof InputStream) {
             exchange.getIn().setBody(createByteResponse(readAll((InputStream) 
msg)));
         }
diff --git 
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute2Test.java
 
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute2Test.java
index f2730c1f1237..cf97b5d5cac4 100644
--- 
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute2Test.java
+++ 
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute2Test.java
@@ -20,7 +20,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
-import java.io.StringReader;
 import java.util.List;
 
 import org.apache.camel.Exchange;
@@ -73,27 +72,24 @@ public class WebsocketRoute2Test extends 
WebsocketCamelRouterTestSupport {
                 // route for a broadcast line
                 
from("atmosphere-websocket:///broadcast").to("log:info").process(new 
Processor() {
                     public void process(final Exchange exchange) {
-                        createResponse(exchange, false);
+                        createResponse(exchange);
                     }
                 }).to("atmosphere-websocket:///broadcast?sendToAll=true");
             }
         };
     }
 
-    private static void createResponse(Exchange exchange, boolean streaming) {
+    private static void createResponse(Exchange exchange) {
         Object msg = exchange.getIn().getBody();
-        if (streaming) {
-            assertTrue(msg instanceof Reader || msg instanceof InputStream, 
"Expects Reader or InputStream");
-        } else {
-            assertTrue(msg instanceof String || msg instanceof byte[], 
"Expects String or byte[]");
-        }
+        assertTrue(msg instanceof String || msg instanceof byte[] || msg 
instanceof Reader || msg instanceof InputStream,
+                "Expects String, byte[], Reader or InputStream");
 
         if (msg instanceof String) {
             exchange.getIn().setBody(RESPONSE_GREETING + msg);
         } else if (msg instanceof byte[]) {
             exchange.getIn().setBody(createByteResponse((byte[]) msg));
         } else if (msg instanceof Reader) {
-            exchange.getIn().setBody(new StringReader(RESPONSE_GREETING + 
readAll((Reader) msg)));
+            exchange.getIn().setBody(RESPONSE_GREETING + readAll((Reader) 
msg));
         } else if (msg instanceof InputStream) {
             exchange.getIn().setBody(createByteResponse(readAll((InputStream) 
msg)));
         }
diff --git 
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute3Test.java
 
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute3Test.java
index 2dc9664ce94d..b79e135ec090 100644
--- 
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute3Test.java
+++ 
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute3Test.java
@@ -20,7 +20,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
-import java.io.StringReader;
 import java.util.List;
 
 import org.apache.camel.Exchange;
@@ -73,27 +72,24 @@ public class WebsocketRoute3Test extends 
WebsocketCamelRouterTestSupport {
                 // route for a single stream line
                 
from("atmosphere-websocket:///hola3?useStreaming=true").to("log:info").process(new
 Processor() {
                     public void process(final Exchange exchange) {
-                        createResponse(exchange, true);
+                        createResponse(exchange);
                     }
                 }).to("atmosphere-websocket:///hola3");
             }
         };
     }
 
-    private static void createResponse(Exchange exchange, boolean streaming) {
+    private static void createResponse(Exchange exchange) {
         Object msg = exchange.getIn().getBody();
-        if (streaming) {
-            assertTrue(msg instanceof Reader || msg instanceof InputStream, 
"Expects Reader or InputStream");
-        } else {
-            assertTrue(msg instanceof String || msg instanceof byte[], 
"Expects String or byte[]");
-        }
+        assertTrue(msg instanceof String || msg instanceof byte[] || msg 
instanceof Reader || msg instanceof InputStream,
+                "Expects String, byte[], Reader or InputStream");
 
         if (msg instanceof String) {
             exchange.getIn().setBody(RESPONSE_GREETING + msg);
         } else if (msg instanceof byte[]) {
             exchange.getIn().setBody(createByteResponse((byte[]) msg));
         } else if (msg instanceof Reader) {
-            exchange.getIn().setBody(new StringReader(RESPONSE_GREETING + 
readAll((Reader) msg)));
+            exchange.getIn().setBody(RESPONSE_GREETING + readAll((Reader) 
msg));
         } else if (msg instanceof InputStream) {
             exchange.getIn().setBody(createByteResponse(readAll((InputStream) 
msg)));
         }
diff --git 
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute4Test.java
 
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute4Test.java
index 72bbd62bee98..a5a549d88007 100644
--- 
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute4Test.java
+++ 
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute4Test.java
@@ -20,7 +20,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
-import java.io.StringReader;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
@@ -59,20 +58,17 @@ public class WebsocketRoute4Test extends 
WebsocketCamelRouterTestSupport {
         };
     }
 
-    private static void createResponse(Exchange exchange, boolean streaming) {
+    private static void createResponse(Exchange exchange) {
         Object msg = exchange.getIn().getBody();
-        if (streaming) {
-            assertTrue(msg instanceof Reader || msg instanceof InputStream, 
"Expects Reader or InputStream");
-        } else {
-            assertTrue(msg instanceof String || msg instanceof byte[], 
"Expects String or byte[]");
-        }
+        assertTrue(msg instanceof String || msg instanceof byte[] || msg 
instanceof Reader || msg instanceof InputStream,
+                "Expects String, byte[], Reader or InputStream");
 
         if (msg instanceof String) {
             exchange.getIn().setBody(RESPONSE_GREETING + msg);
         } else if (msg instanceof byte[]) {
             exchange.getIn().setBody(createByteResponse((byte[]) msg));
         } else if (msg instanceof Reader) {
-            exchange.getIn().setBody(new StringReader(RESPONSE_GREETING + 
readAll((Reader) msg)));
+            exchange.getIn().setBody(RESPONSE_GREETING + readAll((Reader) 
msg));
         } else if (msg instanceof InputStream) {
             exchange.getIn().setBody(createByteResponse(readAll((InputStream) 
msg)));
         }
diff --git a/components/camel-fop/pom.xml b/components/camel-fop/pom.xml
index b05a7b8bca78..ccfdda970f22 100644
--- a/components/camel-fop/pom.xml
+++ b/components/camel-fop/pom.xml
@@ -83,4 +83,22 @@
         </dependency>
 
     </dependencies>
+
+    <profiles>
+        <!-- Workaround for FOP-3275: JDK 25+ has a re-entrant XML parsing bug 
that breaks Apache FOP -->
+        <profile>
+            <id>jdk25-fop-workaround</id>
+            <activation>
+                <jdk>[25,)</jdk>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>net.sf.saxon</groupId>
+                    <artifactId>Saxon-HE</artifactId>
+                    <version>${saxon-version}</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+        </profile>
+    </profiles>
 </project>
diff --git a/components/camel-fop/src/main/docs/fop-component.adoc 
b/components/camel-fop/src/main/docs/fop-component.adoc
index 026bc6186c64..7a11658ea1d0 100644
--- a/components/camel-fop/src/main/docs/fop-component.adoc
+++ b/components/camel-fop/src/main/docs/fop-component.adoc
@@ -17,6 +17,9 @@
 The FOP component allows you to render a message into different output
 formats using http://xmlgraphics.apache.org/fop/index.html[Apache FOP].
 
+NOTE: When running on JDK 25 or later, Apache FOP encounters a re-entrant XML 
parsing error due to an internal JDK change 
(https://issues.apache.org/jira/browse/FOP-3275[FOP-3275]).
+To work around this, add `net.sf.saxon:Saxon-HE` to your classpath, which 
provides an alternative XSLT processor that is not affected by this issue.
+
 Maven users will need to add the following dependency to their `pom.xml`
 for this component:
 
diff --git 
a/components/camel-parquet-avro/src/main/docs/parquetAvro-dataformat.adoc 
b/components/camel-parquet-avro/src/main/docs/parquetAvro-dataformat.adoc
index 5ce01a20a4f7..3e8113d6ccd1 100644
--- a/components/camel-parquet-avro/src/main/docs/parquetAvro-dataformat.adoc
+++ b/components/camel-parquet-avro/src/main/docs/parquetAvro-dataformat.adoc
@@ -15,6 +15,10 @@ The ParquetAvro Data Format is a Camel Framework's data 
format implementation ba
 Messages can be unmarshalled to Avro's GenericRecords or plain Java objects 
(POJOs).
 With the help of Camel's routing engine and data transformations, you can then 
play with them and apply customised formatting and call other Camel Components 
to convert and send messages to upstream systems.
 
+NOTE: This component does not support JDK 22 or later due to a Hadoop 
incompatibility 
(https://issues.apache.org/jira/browse/HADOOP-19486[HADOOP-19486]).
+Hadoop relies on the deprecated `javax.security.auth.Subject.getSubject()` 
method, which was removed in JDK 22 (JEP 411).
+This limitation will be resolved once an updated Hadoop version with a fix is 
available.
+
 == Parquet Data Format Options
 
 // dataformat options: START
diff --git 
a/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatTest.java
 
b/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatTest.java
index 3c086622451f..3825e991011b 100644
--- 
a/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatTest.java
+++ 
b/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatTest.java
@@ -24,9 +24,12 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
 
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 
+@DisabledForJreRange(min = JRE.JAVA_22, disabledReason = "Hadoop does not 
support JDK 22+ - see HADOOP-19486")
 public class ParquetAvroDataFormatTest extends CamelTestSupport {
 
     @Test
diff --git 
a/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatUnmarshalFromFileTest.java
 
b/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatUnmarshalFromFileTest.java
index d83586f7d0f9..c47fb1f1d27c 100644
--- 
a/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatUnmarshalFromFileTest.java
+++ 
b/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatUnmarshalFromFileTest.java
@@ -28,10 +28,13 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.apache.commons.io.FileUtils;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
 
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+@DisabledForJreRange(min = JRE.JAVA_22, disabledReason = "Hadoop does not 
support JDK 22+ - see HADOOP-19486")
 public class ParquetAvroDataFormatUnmarshalFromFileTest extends 
CamelTestSupport {
 
     @Test
diff --git 
a/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatUnmarshalLazyLoadTest.java
 
b/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatUnmarshalLazyLoadTest.java
index d5c552f41796..df41f5630ee7 100644
--- 
a/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatUnmarshalLazyLoadTest.java
+++ 
b/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatUnmarshalLazyLoadTest.java
@@ -28,9 +28,12 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+@DisabledForJreRange(min = JRE.JAVA_22, disabledReason = "Hadoop does not 
support JDK 22+ - see HADOOP-19486")
 public class ParquetAvroDataFormatUnmarshalLazyLoadTest extends 
CamelTestSupport {
 
     @Test
diff --git 
a/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatWithoutUnmarshalTypeTest.java
 
b/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatWithoutUnmarshalTypeTest.java
index 4c9096738157..677791bec998 100644
--- 
a/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatWithoutUnmarshalTypeTest.java
+++ 
b/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroDataFormatWithoutUnmarshalTypeTest.java
@@ -26,9 +26,12 @@ import org.apache.camel.test.junit5.CamelTestSupport;
 import org.apache.parquet.ParquetReadOptions;
 import org.apache.parquet.hadoop.ParquetFileReader;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
 
 import static org.junit.jupiter.api.Assertions.*;
 
+@DisabledForJreRange(min = JRE.JAVA_22, disabledReason = "Hadoop does not 
support JDK 22+ - see HADOOP-19486")
 public class ParquetAvroDataFormatWithoutUnmarshalTypeTest extends 
CamelTestSupport {
 
     @Test
diff --git 
a/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroMarshalCompressionCodecTest.java
 
b/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroMarshalCompressionCodecTest.java
index 2d969218733b..7e32827c034a 100644
--- 
a/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroMarshalCompressionCodecTest.java
+++ 
b/components/camel-parquet-avro/src/test/java/org/apache/camel/dataformat/parquet/avro/ParquetAvroMarshalCompressionCodecTest.java
@@ -27,10 +27,13 @@ import org.apache.parquet.ParquetReadOptions;
 import org.apache.parquet.hadoop.ParquetFileReader;
 import org.apache.parquet.hadoop.metadata.CompressionCodecName;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
 
 import static org.apache.parquet.hadoop.metadata.CompressionCodecName.*;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+@DisabledForJreRange(min = JRE.JAVA_22, disabledReason = "Hadoop does not 
support JDK 22+ - see HADOOP-19486")
 public class ParquetAvroMarshalCompressionCodecTest extends CamelTestSupport {
 
     Collection<Pojo> in = List.of(

Reply via email to