diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index 5ca0de9de846..5593fbfc17b7 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -597,7 +597,7 @@ class BeamModulePlugin implements Plugin { // // There are a few versions are determined by the BOMs by running scripts/tools/bomupgrader.py // marked as [bomupgrader]. See the documentation of that script for detail. - def activemq_version = "5.19.2" + def activemq_version = "6.2.5" def autovalue_version = "1.9" def autoservice_version = "1.0.1" def aws_java_sdk2_version = "2.20.162" @@ -641,7 +641,7 @@ class BeamModulePlugin implements Plugin { def protobuf_version = "4.33.2" // TODO(https://github.com/apache/beam/issues/37637): Remove this once the Bom has been updated to at least reach this version def bigtable_version = "2.73.1" - def qpid_jms_client_version = "0.61.0" + def qpid_jms_client_version = "2.10.0" def quickcheck_version = "1.0" def sbe_tool_version = "1.25.1" def singlestore_jdbc_version = "1.1.4" diff --git a/sdks/java/io/jms/build.gradle b/sdks/java/io/jms/build.gradle index 24a195e63f14..fdd6cde3aa32 100644 --- a/sdks/java/io/jms/build.gradle +++ b/sdks/java/io/jms/build.gradle @@ -32,7 +32,7 @@ dependencies { implementation project(path: ":sdks:java:core", configuration: "shadow") implementation library.java.slf4j_api implementation library.java.joda_time - implementation "org.apache.geronimo.specs:geronimo-jms_2.0_spec:1.0-alpha-2" + implementation "jakarta.jms:jakarta.jms-api:3.1.0" testImplementation library.java.activemq_amqp testImplementation library.java.activemq_broker testImplementation library.java.activemq_jaas diff --git a/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsCheckpointMark.java b/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsCheckpointMark.java index 276d61ae5ef5..5780235c5b54 100644 --- a/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsCheckpointMark.java +++ b/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsCheckpointMark.java @@ -17,14 +17,14 @@ */ package org.apache.beam.sdk.io.jms; +import jakarta.jms.JMSException; +import jakarta.jms.Message; +import jakarta.jms.MessageConsumer; +import jakarta.jms.Session; import java.io.IOException; import java.io.Serializable; import java.util.Objects; import java.util.concurrent.locks.ReentrantReadWriteLock; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.Session; import org.apache.beam.sdk.io.UnboundedSource; import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.annotations.VisibleForTesting; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsIO.java b/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsIO.java index 5deb7a2b62c7..d1c666a83ad7 100644 --- a/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsIO.java +++ b/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsIO.java @@ -22,6 +22,15 @@ import com.google.auto.value.AutoValue; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import jakarta.jms.Connection; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.Destination; +import jakarta.jms.JMSException; +import jakarta.jms.Message; +import jakarta.jms.MessageConsumer; +import jakarta.jms.MessageProducer; +import jakarta.jms.Session; +import jakarta.jms.TextMessage; import java.io.IOException; import java.io.Serializable; import java.nio.charset.StandardCharsets; @@ -36,15 +45,6 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.stream.Stream; -import javax.jms.Connection; -import javax.jms.ConnectionFactory; -import javax.jms.Destination; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.MessageProducer; -import javax.jms.Session; -import javax.jms.TextMessage; import org.apache.beam.sdk.coders.Coder; import org.apache.beam.sdk.coders.SerializableCoder; import org.apache.beam.sdk.io.Read.Unbounded; @@ -86,9 +86,9 @@ * *

JmsIO source returns unbounded collection of JMS records as {@code PCollection}. A * {@link JmsRecord} includes JMS headers and properties, along with the JMS {@link - * javax.jms.TextMessage} payload. + * jakarta.jms.TextMessage} payload. * - *

To configure a JMS source, you have to provide a {@link javax.jms.ConnectionFactory} and the + *

To configure a JMS source, you have to provide a {@link jakarta.jms.ConnectionFactory} and the * destination (queue or topic) where to consume. The following example illustrates various options * for configuring the source: * @@ -102,8 +102,8 @@ * * } * - *

It is possible to read any type of JMS {@link javax.jms.Message} into a custom POJO using the - * following configuration: + *

It is possible to read any type of JMS {@link jakarta.jms.Message} into a custom POJO using + * the following configuration: * *

{@code
  * pipeline.apply(JmsIO.readMessage()
@@ -121,8 +121,8 @@
  * 

Writing to a JMS destination

* *

JmsIO sink supports writing text messages to a JMS destination on a broker. To configure a JMS - * sink, you must specify a {@link javax.jms.ConnectionFactory} and a {@link javax.jms.Destination} - * name. For instance: + * sink, you must specify a {@link jakarta.jms.ConnectionFactory} and a {@link + * jakarta.jms.Destination} name. For instance: * *

{@code
  * pipeline
@@ -1053,7 +1053,7 @@ public Write withTopicNameMapper(SerializableFunction to
     }
 
     /**
-     * Map the {@code EventT} object to a {@link javax.jms.Message}.
+     * Map the {@code EventT} object to a {@link jakarta.jms.Message}.
      *
      * 

For instance: * @@ -1075,7 +1075,7 @@ public Write withTopicNameMapper(SerializableFunction to * .apply(JmsIO.write().withValueMapper(valueNapper) * }

* - * @param valueMapper The function returning the {@link javax.jms.Message} + * @param valueMapper The function returning the {@link jakarta.jms.Message} * @return The corresponding {@link JmsIO.Write}. */ public Write withValueMapper( diff --git a/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsRecord.java b/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsRecord.java index 9f547a801d04..137ec39fe715 100644 --- a/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsRecord.java +++ b/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsRecord.java @@ -18,10 +18,10 @@ package org.apache.beam.sdk.io.jms; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import jakarta.jms.Destination; import java.io.Serializable; import java.util.Map; import java.util.Objects; -import javax.jms.Destination; import org.checkerframework.checker.nullness.qual.Nullable; /** diff --git a/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/TextMessageMapper.java b/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/TextMessageMapper.java index d5d85c46794d..6a93c5ea639f 100644 --- a/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/TextMessageMapper.java +++ b/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/TextMessageMapper.java @@ -17,15 +17,15 @@ */ package org.apache.beam.sdk.io.jms; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.Session; -import javax.jms.TextMessage; +import jakarta.jms.JMSException; +import jakarta.jms.Message; +import jakarta.jms.Session; +import jakarta.jms.TextMessage; import org.apache.beam.sdk.transforms.SerializableBiFunction; /** - * The TextMessageMapper takes a {@link String} value, a {@link javax.jms.Session} and returns a - * {@link javax.jms.TextMessage}. + * The TextMessageMapper takes a {@link String} value, a {@link jakarta.jms.Session} and returns a + * {@link jakarta.jms.TextMessage}. */ public class TextMessageMapper implements SerializableBiFunction { diff --git a/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/CommonJms.java b/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/CommonJms.java index 1d1245e6877d..b8d6cf23fae6 100644 --- a/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/CommonJms.java +++ b/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/CommonJms.java @@ -17,15 +17,15 @@ */ package org.apache.beam.sdk.io.jms; +import jakarta.jms.BytesMessage; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.Message; import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; -import javax.jms.BytesMessage; -import javax.jms.ConnectionFactory; -import javax.jms.Message; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.broker.BrokerPlugin; import org.apache.activemq.broker.BrokerService; @@ -143,7 +143,7 @@ Class getConnectionFactoryClass() { return this.connectionFactoryClass; } - /** A test class that maps a {@link javax.jms.BytesMessage} into a {@link String}. */ + /** A test class that maps a {@link jakarta.jms.BytesMessage} into a {@link String}. */ public static class BytesMessageToStringMessageMapper implements JmsIO.MessageMapper { @Override diff --git a/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/JmsIOIT.java b/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/JmsIOIT.java index 266d04342d1f..e4f484c148d7 100644 --- a/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/JmsIOIT.java +++ b/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/JmsIOIT.java @@ -23,6 +23,13 @@ import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; +import jakarta.jms.Connection; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.JMSException; +import jakarta.jms.Message; +import jakarta.jms.QueueBrowser; +import jakarta.jms.Session; +import jakarta.jms.TextMessage; import java.io.IOException; import java.io.Serializable; import java.time.Instant; @@ -32,13 +39,6 @@ import java.util.Set; import java.util.UUID; import java.util.function.Function; -import javax.jms.Connection; -import javax.jms.ConnectionFactory; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.QueueBrowser; -import javax.jms.Session; -import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQTextMessage; import org.apache.beam.sdk.PipelineResult; diff --git a/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/JmsIOTest.java b/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/JmsIOTest.java index b3233f866172..6bc425ca3e21 100644 --- a/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/JmsIOTest.java +++ b/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/JmsIOTest.java @@ -51,6 +51,16 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; +import jakarta.jms.BytesMessage; +import jakarta.jms.Connection; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.JMSException; +import jakarta.jms.Message; +import jakarta.jms.MessageConsumer; +import jakarta.jms.MessageProducer; +import jakarta.jms.QueueBrowser; +import jakarta.jms.Session; +import jakarta.jms.TextMessage; import java.io.IOException; import java.io.NotSerializableException; import java.io.Serializable; @@ -71,16 +81,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; -import javax.jms.BytesMessage; -import javax.jms.Connection; -import javax.jms.ConnectionFactory; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.MessageProducer; -import javax.jms.QueueBrowser; -import javax.jms.Session; -import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQMessage; import org.apache.activemq.util.Callback; diff --git a/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/MockNonSerializableConnectionFactory.java b/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/MockNonSerializableConnectionFactory.java index 752123327e9b..b9deef4991e7 100644 --- a/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/MockNonSerializableConnectionFactory.java +++ b/sdks/java/io/jms/src/test/java/org/apache/beam/sdk/io/jms/MockNonSerializableConnectionFactory.java @@ -17,10 +17,10 @@ */ package org.apache.beam.sdk.io.jms; -import javax.jms.Connection; -import javax.jms.ConnectionFactory; -import javax.jms.JMSContext; -import javax.jms.JMSException; +import jakarta.jms.Connection; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.JMSContext; +import jakarta.jms.JMSException; public class MockNonSerializableConnectionFactory implements ConnectionFactory { @Override