You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2021/02/03 18:03:33 UTC
[activemq-artemis] branch master updated: [ARTEMIS-3080]: Provide
JakartaEE 9 artefacts.
This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/master by this push:
new 40f4c02 [ARTEMIS-3080]: Provide JakartaEE 9 artefacts.
new 95e65b8 This closes #3421
40f4c02 is described below
commit 40f4c0218ea64683f6cd029bbd3fa4e71fd67d2e
Author: Emmanuel Hugonnet <eh...@redhat.com>
AuthorDate: Wed Feb 3 18:33:12 2021 +0100
[ARTEMIS-3080]: Provide JakartaEE 9 artefacts.
* using batavia and eclipse transformer to transform JMS code to JakartaEE.
* adding a test with JakartaEE
* upgrading owasp plugin to 6.1.0
Jira: https://issues.apache.org/jira/browse/ARTEMIS-3080
---
artemis-jakarta-client/pom.xml | 94 ++++++++++++++++++++++
.../src/main/resources/jms-version.properties | 19 +++++
artemis-jakarta-ra/pom.xml | 72 +++++++++++++++++
.../src/main/resources/jms-version.properties | 19 +++++
artemis-jakarta-server/pom.xml | 71 ++++++++++++++++
artemis-jakarta-service-extensions/pom.xml | 71 ++++++++++++++++
.../jms/client/ActiveMQConnectionMetaData.java | 28 ++++++-
.../src/main/resources/jms-version.properties | 19 +++++
.../artemis/ra/ActiveMQRAConnectionMetaData.java | 30 +++++--
.../src/main/resources/jms-version.properties | 19 +++++
pom.xml | 58 ++++++++++++-
tests/compatibility-tests/pom.xml | 32 ++++++++
.../artemis/tests/compatibility/GroovyRun.java | 1 +
.../jakartaReplyToQueue/receiveMessages.groovy | 53 ++++++++++++
.../jakartaReplyToQueue/sendMessagesAddress.groovy | 52 ++++++++++++
.../jakartaReplyToTempQueue/receiveMessages.groovy | 53 ++++++++++++
.../sendMessagesAddress.groovy | 52 ++++++++++++
.../jakartaReplyToTempTopic/receiveMessages.groovy | 59 ++++++++++++++
.../sendMessagesAddress.groovy | 68 ++++++++++++++++
.../jakartaReplyToTopic/receiveMessages.groovy | 53 ++++++++++++
.../jakartaReplyToTopic/sendMessagesAddress.groovy | 52 ++++++++++++
.../tests/compatibility/JmsReplyToQueueTest.java | 20 ++++-
.../compatibility/JmsReplyToTempQueueTest.java | 19 ++++-
.../compatibility/JmsReplyToTempTopicTest.java | 19 ++++-
.../tests/compatibility/JmsReplyToTopicTest.java | 19 ++++-
25 files changed, 1031 insertions(+), 21 deletions(-)
diff --git a/artemis-jakarta-client/pom.xml b/artemis-jakarta-client/pom.xml
new file mode 100644
index 0000000..fb753a9
--- /dev/null
+++ b/artemis-jakarta-client/pom.xml
@@ -0,0 +1,94 @@
+<!--
+ 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.
+-->
+<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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-pom</artifactId>
+ <version>2.17.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>artemis-jakarta-client</artifactId>
+ <packaging>jar</packaging>
+ <name>ActiveMQ Artemis Jakarta Messaging Client</name>
+
+ <properties>
+ <activemq.basedir>${project.basedir}/..</activemq.basedir>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-jms-client</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ <!-- needed for the maven reactor -->
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-core-client</artifactId>
+ <version>${project.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-commons</artifactId>
+ <version>${project.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-selector</artifactId>
+ <version>${project.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>jakarta.jms</groupId>
+ <artifactId>jakarta.jms-api</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.wildfly.extras.batavia</groupId>
+ <artifactId>transformer-tools-mvn</artifactId>
+ <executions>
+ <execution>
+ <id>transform</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>transform-classes</goal>
+ </goals>
+ <configuration>
+ <inputFile>${project.basedir}/../artemis-jms-client/target/classes/</inputFile>
+ <outputFolder>${project.build.outputDirectory}</outputFolder>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.wildfly.extras.batavia</groupId>
+ <artifactId>transformer-impl-eclipse</artifactId>
+ <version>${version.batavia}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/artemis-jakarta-client/src/main/resources/jms-version.properties b/artemis-jakarta-client/src/main/resources/jms-version.properties
new file mode 100644
index 0000000..1d60a49
--- /dev/null
+++ b/artemis-jakarta-client/src/main/resources/jms-version.properties
@@ -0,0 +1,19 @@
+# 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.
+#
+
+activemq.version.implementation.versionName=3.0
+activemq.version.implementation.majorVersion=3
+activemq.version.implementation.minorVersion=0
\ No newline at end of file
diff --git a/artemis-jakarta-ra/pom.xml b/artemis-jakarta-ra/pom.xml
new file mode 100644
index 0000000..df06b82
--- /dev/null
+++ b/artemis-jakarta-ra/pom.xml
@@ -0,0 +1,72 @@
+<!--
+ 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.
+-->
+<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/maven-v4_0_0.xsd">
+ <name>ActiveMQ Artemis Jakarta RAR</name>
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-pom</artifactId>
+ <version>2.17.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>artemis-jakarta-ra</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <activemq.basedir>${project.basedir}/..</activemq.basedir>
+ </properties>
+
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-ra</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.wildfly.extras.batavia</groupId>
+ <artifactId>transformer-tools-mvn</artifactId>
+ <executions>
+ <execution>
+ <id>transform</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>transform-classes</goal>
+ </goals>
+ <configuration>
+ <inputFile>${project.basedir}/../artemis-ra/target/classes/</inputFile>
+ <outputFolder>${project.build.outputDirectory}</outputFolder>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.wildfly.extras.batavia</groupId>
+ <artifactId>transformer-impl-eclipse</artifactId>
+ <version>${version.batavia}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/artemis-jakarta-ra/src/main/resources/jms-version.properties b/artemis-jakarta-ra/src/main/resources/jms-version.properties
new file mode 100644
index 0000000..1d60a49
--- /dev/null
+++ b/artemis-jakarta-ra/src/main/resources/jms-version.properties
@@ -0,0 +1,19 @@
+# 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.
+#
+
+activemq.version.implementation.versionName=3.0
+activemq.version.implementation.majorVersion=3
+activemq.version.implementation.minorVersion=0
\ No newline at end of file
diff --git a/artemis-jakarta-server/pom.xml b/artemis-jakarta-server/pom.xml
new file mode 100644
index 0000000..014d9ad
--- /dev/null
+++ b/artemis-jakarta-server/pom.xml
@@ -0,0 +1,71 @@
+<!--
+ 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.
+-->
+<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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-pom</artifactId>
+ <version>2.17.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>artemis-jakarta-server</artifactId>
+ <packaging>jar</packaging>
+ <name>ActiveMQ Artemis Jakarta Messaging Server</name>
+
+ <properties>
+ <activemq.basedir>${project.basedir}/..</activemq.basedir>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-jms-server</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.wildfly.extras.batavia</groupId>
+ <artifactId>transformer-tools-mvn</artifactId>
+ <executions>
+ <execution>
+ <id>transform</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>transform-classes</goal>
+ </goals>
+ <configuration>
+ <inputFile>${project.basedir}/../artemis-jms-server/target/classes/</inputFile>
+ <outputFolder>${project.build.outputDirectory}</outputFolder>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.wildfly.extras.batavia</groupId>
+ <artifactId>transformer-impl-eclipse</artifactId>
+ <version>${version.batavia}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/artemis-jakarta-service-extensions/pom.xml b/artemis-jakarta-service-extensions/pom.xml
new file mode 100644
index 0000000..b64c47d
--- /dev/null
+++ b/artemis-jakarta-service-extensions/pom.xml
@@ -0,0 +1,71 @@
+<!--
+ 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.
+-->
+<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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-pom</artifactId>
+ <version>2.17.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>artemis-jakarta-service-extensions</artifactId>
+ <packaging>jar</packaging>
+ <name>ActiveMQ Artemis Jakarta Service Extensions</name>
+
+ <properties>
+ <activemq.basedir>${project.basedir}/..</activemq.basedir>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>artemis-service-extensions</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.wildfly.extras.batavia</groupId>
+ <artifactId>transformer-tools-mvn</artifactId>
+ <executions>
+ <execution>
+ <id>transform</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>transform-classes</goal>
+ </goals>
+ <configuration>
+ <inputFile>${project.basedir}/../artemis-service-extensions/target/classes/</inputFile>
+ <outputFolder>${project.build.outputDirectory}</outputFolder>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.wildfly.extras.batavia</groupId>
+ <artifactId>transformer-impl-eclipse</artifactId>
+ <version>${version.batavia}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionMetaData.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionMetaData.java
index c72c4d4..4d69b71 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionMetaData.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionMetaData.java
@@ -16,9 +16,13 @@
*/
package org.apache.activemq.artemis.jms.client;
+
+import java.io.IOException;
+import java.io.InputStream;
import javax.jms.ConnectionMetaData;
import javax.jms.JMSException;
import java.util.Enumeration;
+import java.util.Properties;
import java.util.Vector;
import org.apache.activemq.artemis.core.version.Version;
@@ -27,6 +31,24 @@ import org.apache.activemq.artemis.core.version.Version;
* ActiveMQ Artemis implementation of a JMS ConnectionMetaData.
*/
public class ActiveMQConnectionMetaData implements ConnectionMetaData {
+ public static final String DEFAULT_PROP_FILE_NAME = "jms-version.properties";
+
+ private static final String JMS_VERSION_NAME;
+ private static final int JMS_MAJOR_VERSION;
+ private static final int JMS_MINOR_VERSION;
+ static {
+ Properties versionProps = new Properties();
+ try (InputStream in = ActiveMQConnectionMetaData.class.getClassLoader().getResourceAsStream(DEFAULT_PROP_FILE_NAME)) {
+ if (in != null) {
+ versionProps.load(in);
+ }
+ } catch (IOException e) {
+ }
+ JMS_VERSION_NAME = versionProps.getProperty("activemq.version.implementation.versionName", "2.0");
+ JMS_MAJOR_VERSION = Integer.valueOf(versionProps.getProperty("activemq.version.implementation.majorVersion", "2"));
+ JMS_MINOR_VERSION = Integer.valueOf(versionProps.getProperty("activemq.version.implementation.minorVersion", "0"));
+ }
+
// Constants -----------------------------------------------------
private static final String ACTIVEMQ = "ActiveMQ";
@@ -50,17 +72,17 @@ public class ActiveMQConnectionMetaData implements ConnectionMetaData {
@Override
public String getJMSVersion() throws JMSException {
- return "2.0";
+ return JMS_VERSION_NAME;
}
@Override
public int getJMSMajorVersion() throws JMSException {
- return 2;
+ return JMS_MAJOR_VERSION;
}
@Override
public int getJMSMinorVersion() throws JMSException {
- return 0;
+ return JMS_MINOR_VERSION;
}
@Override
diff --git a/artemis-jms-client/src/main/resources/jms-version.properties b/artemis-jms-client/src/main/resources/jms-version.properties
new file mode 100644
index 0000000..bc97a63
--- /dev/null
+++ b/artemis-jms-client/src/main/resources/jms-version.properties
@@ -0,0 +1,19 @@
+# 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.
+#
+
+activemq.version.implementation.versionName=2.0
+activemq.version.implementation.majorVersion=2
+activemq.version.implementation.minorVersion=0
\ No newline at end of file
diff --git a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAConnectionMetaData.java b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAConnectionMetaData.java
index 901ecf4..5c8abb7 100644
--- a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAConnectionMetaData.java
+++ b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAConnectionMetaData.java
@@ -16,8 +16,11 @@
*/
package org.apache.activemq.artemis.ra;
+import java.io.IOException;
+import java.io.InputStream;
import javax.jms.ConnectionMetaData;
import java.util.Enumeration;
+import java.util.Properties;
import java.util.Vector;
/**
@@ -25,6 +28,24 @@ import java.util.Vector;
*/
public class ActiveMQRAConnectionMetaData implements ConnectionMetaData {
+ public static final String DEFAULT_PROP_FILE_NAME = "jms-version.properties";
+
+ private static final String JMS_VERSION_NAME;
+ private static final int JMS_MAJOR_VERSION;
+ private static final int JMS_MINOR_VERSION;
+ static {
+ Properties versionProps = new Properties();
+ try (InputStream in = ActiveMQRAConnectionMetaData.class.getClassLoader().getResourceAsStream(DEFAULT_PROP_FILE_NAME)) {
+ if (in != null) {
+ versionProps.load(in);
+ }
+ } catch (IOException e) {
+ }
+ JMS_VERSION_NAME = versionProps.getProperty("activemq.version.implementation.versionName", "2.0");
+ JMS_MAJOR_VERSION = Integer.valueOf(versionProps.getProperty("activemq.version.implementation.majorVersion", "2"));
+ JMS_MINOR_VERSION = Integer.valueOf(versionProps.getProperty("activemq.version.implementation.minorVersion", "0"));
+ }
+
/**
* Constructor
*/
@@ -44,8 +65,7 @@ public class ActiveMQRAConnectionMetaData implements ConnectionMetaData {
if (ActiveMQRALogger.LOGGER.isTraceEnabled()) {
ActiveMQRALogger.LOGGER.trace("getJMSVersion()");
}
-
- return "2.0";
+ return JMS_VERSION_NAME;
}
/**
@@ -58,8 +78,7 @@ public class ActiveMQRAConnectionMetaData implements ConnectionMetaData {
if (ActiveMQRALogger.LOGGER.isTraceEnabled()) {
ActiveMQRALogger.LOGGER.trace("getJMSMajorVersion()");
}
-
- return 2;
+ return JMS_MAJOR_VERSION;
}
/**
@@ -72,8 +91,7 @@ public class ActiveMQRAConnectionMetaData implements ConnectionMetaData {
if (ActiveMQRALogger.LOGGER.isTraceEnabled()) {
ActiveMQRALogger.LOGGER.trace("getJMSMinorVersion()");
}
-
- return 0;
+ return JMS_MINOR_VERSION;
}
/**
diff --git a/artemis-ra/src/main/resources/jms-version.properties b/artemis-ra/src/main/resources/jms-version.properties
new file mode 100644
index 0000000..dd6a10f
--- /dev/null
+++ b/artemis-ra/src/main/resources/jms-version.properties
@@ -0,0 +1,19 @@
+# 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.
+#
+
+activemq.version.implementation.versionName=2.0
+activemq.version.implementation.majorVersion=2
+activemq.version.implementation.minorVersion=0
diff --git a/pom.xml b/pom.xml
index 2644a3d..76e8700 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,11 +47,15 @@
<module>artemis-jms-client</module>
<module>artemis-jms-client-all</module>
<module>artemis-jms-client-osgi</module>
+ <module>artemis-jakarta-client</module>
<module>artemis-jms-server</module>
+ <module>artemis-jakarta-server</module>
<module>artemis-journal</module>
<module>artemis-ra</module>
+ <module>artemis-jakarta-ra</module>
<module>artemis-rest</module>
<module>artemis-service-extensions</module>
+ <module>artemis-jakarta-service-extensions</module>
<module>artemis-jdbc-store</module>
<module>artemis-maven-plugin</module>
<module>artemis-server-osgi</module>
@@ -119,6 +123,12 @@
<geronimo.ejb.3.0.spec.version>1.0.1</geronimo.ejb.3.0.spec.version>
<geronimo.jta.1.1.spec.version>1.1.1</geronimo.jta.1.1.spec.version>
<geronimo.jms.2.spec.version>1.0-alpha-2</geronimo.jms.2.spec.version>
+ <jakarta.json-api.version>2.0.0</jakarta.json-api.version>
+ <jakarta.annotation-api.version>2.0.0</jakarta.annotation-api.version>
+ <jakarta.ejb-api.version>4.0.0</jakarta.ejb-api.version>
+ <jakarta.resource-api.version>2.0.0</jakarta.resource-api.version>
+ <jakarta.transaction-api.version>2.0.0</jakarta.transaction-api.version>
+ <jakarta.jms-api.version>3.0.0</jakarta.jms-api.version>
<weld.version>2.4.0.Final</weld.version>
<arquillian-weld-embedded.version>2.0.0.Beta3</arquillian-weld-embedded.version>
<owb.version>1.7.0</owb.version>
@@ -130,12 +140,14 @@
<version.micrometer>1.6.1</version.micrometer>
<hamcrest.version>2.1</hamcrest.version>
<surefire.version>2.22.2</surefire.version>
+ <!-- for JakrtaEE -->
+ <version.batavia>1.0.5.Final</version.batavia>
<!-- used on tests -->
<groovy.version>2.5.10</groovy.version>
<vertx.version>3.9.4</vertx.version>
- <owasp.version>1.4.3</owasp.version>
+ <owasp.version>6.1.0</owasp.version>
<spring.version>5.1.7.RELEASE</spring.version>
<activemq.version.versionName>${project.version}</activemq.version.versionName>
@@ -442,7 +454,42 @@
<version>${geronimo.jms.2.spec.version}</version>
<!-- License: Apache 2.0 -->
</dependency>
-
+ <dependency>
+ <groupId>jakarta.jms</groupId>
+ <artifactId>jakarta.jms-api</artifactId>
+ <version>${jakarta.jms-api.version}</version>
+ <!-- License: EPL 2.0 -->
+ </dependency>
+ <dependency>
+ <groupId>jakarta.transaction</groupId>
+ <artifactId>jakarta.transaction-api</artifactId>
+ <version>${jakarta.transaction-api.version}</version>
+ <!-- License: EPL 2.0 -->
+ </dependency>
+ <dependency>
+ <groupId>jakarta.json</groupId>
+ <artifactId>jakarta.json-api</artifactId>
+ <version>${jakarta.json-api.version}</version>
+ <!-- License: EPL 2.0 -->
+ </dependency>
+ <dependency>
+ <groupId>jakarta.ejb</groupId>
+ <artifactId>jakarta.ejb-api</artifactId>
+ <version>${jakarta.ejb-api.version}</version>
+ <!-- License: EPL 2.0 -->
+ </dependency>
+ <dependency>
+ <groupId>jakarta.annotation</groupId>
+ <artifactId>jakarta.annotation-api</artifactId>
+ <version>${jakarta.annotation-api.version}</version>
+ <!-- License: EPL 2.0 -->
+ </dependency>
+ <dependency>
+ <groupId>jakarta.resource</groupId>
+ <artifactId>jakarta.resource-api</artifactId>
+ <version>${jakarta.resource-api.version}</version>
+ <!-- License: EPL 2.0 -->
+ </dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
@@ -1503,6 +1550,11 @@
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
</plugin>
+ <plugin>
+ <groupId>org.wildfly.extras.batavia</groupId>
+ <artifactId>transformer-tools-mvn</artifactId>
+ <version>${version.batavia}</version>
+ </plugin>
<plugin>
<inherited>true</inherited>
@@ -1815,8 +1867,6 @@
</artifactItems>
</configuration>
</plugin>
-
-
</plugins>
</build>
diff --git a/tests/compatibility-tests/pom.xml b/tests/compatibility-tests/pom.xml
index e3fb144..813e0a2 100644
--- a/tests/compatibility-tests/pom.xml
+++ b/tests/compatibility-tests/pom.xml
@@ -334,6 +334,34 @@
</libList>
<variableName>ARTEMIS-SNAPSHOT</variableName>
</configuration>
+ </execution><!-- The executions of dependency-scan will calculate dependencies for each specific version used here on this testsuite. -->
+ <execution>
+ <id>jakartaee</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>dependency-scan</goal>
+ </goals>
+ <configuration>
+ <libListWithDeps>
+ <arg>org.apache.activemq:artemis-core-client:${project.version}</arg>
+ <arg>org.apache.activemq:artemis-commons:${project.version}</arg>
+ <arg>org.apache.activemq:artemis-selector:${project.version}</arg>
+ <arg>org.apache.activemq:artemis-server:${project.version}</arg>
+ <arg>org.apache.activemq:artemis-journal:${project.version}</arg>
+ <arg>org.apache.activemq:artemis-hornetq-protocol:${project.version}</arg>
+ <arg>org.codehaus.groovy:groovy-all:pom:${groovy.version}</arg>
+ </libListWithDeps>
+ <libList>
+ <arg>jakarta.json:jakarta.json-api:${jakarta.json-api.version}</arg>
+ <arg>jakarta.transaction:jakarta.transaction-api:${jakarta.transaction-api.version}</arg>
+ <arg>org.apache.activemq:artemis-jakarta-server:${project.version}</arg>
+ <arg>org.apache.activemq:artemis-jakarta-client:${project.version}</arg>
+ <arg>org.apache.activemq:artemis-jakarta-service-extensions:${project.version}</arg>
+ <arg>jakarta.jms:jakarta.jms-api:${jakarta.jms-api.version}</arg>
+ <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
+ </libList>
+ <variableName>ARTEMIS-JAKARTAEE</variableName>
+ </configuration>
</execution>
<execution>
<phase>compile</phase>
@@ -639,6 +667,10 @@
<name>ARTEMIS-270</name>
<value>${ARTEMIS-270}</value>
</property>
+ <property>
+ <name>ARTEMIS-JAKARTAEE</name>
+ <value>${ARTEMIS-JAKARTAEE}</value>
+ </property>
</systemProperties>
<skipTests>${skipCompatibilityTests}</skipTests>
<argLine>${modular.jdk.surefire.arg} -Djgroups.bind_addr=::1 ${activemq-surefire-argline}</argLine>
diff --git a/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java b/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
index 345f85a..2ccfa5f 100644
--- a/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
+++ b/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
@@ -28,6 +28,7 @@ import groovy.lang.GroovyShell;
public class GroovyRun {
public static final String SNAPSHOT = "ARTEMIS-SNAPSHOT";
+ public static final String JAKARTAEE = "ARTEMIS-JAKARTAEE";
public static final String ONE_FIVE = "ARTEMIS-155";
public static final String ONE_FOUR = "ARTEMIS-140";
public static final String TWO_ZERO = "ARTEMIS-200";
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/receiveMessages.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/receiveMessages.groovy
new file mode 100644
index 0000000..122f462
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/receiveMessages.groovy
@@ -0,0 +1,53 @@
+package jmsReplyToQueue
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+ cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+ // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+Queue myQueue = session.createQueue("myQueue");
+MessageConsumer queueConsumer = session.createConsumer(myQueue);
+consumerCreated.countDown();
+connection.start()
+
+Message message = queueConsumer.receive(5000);
+GroovyRun.assertNotNull(message)
+session.commit();
+queueConsumer.close();
+
+MessageProducer producer = session.createProducer(message.getJMSReplyTo());
+message = session.createMessage();
+producer.send(message);
+session.commit();
+
+connection.close();
+
+latch.countDown();
+
+
+
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/sendMessagesAddress.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/sendMessagesAddress.groovy
new file mode 100644
index 0000000..5e69b16
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/sendMessagesAddress.groovy
@@ -0,0 +1,52 @@
+package jmsReplyToQueue
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+ cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+ // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+connection.start();
+
+Queue myQueue = session.createQueue("myQueue");
+Queue temporaryQueue = session.createQueue("myTemporaryQueue");
+MessageConsumer consumer = session.createConsumer(temporaryQueue);
+
+MessageProducer queueProducer = session.createProducer(myQueue)
+
+queueProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
+Message message = session.createMessage();
+message.setJMSReplyTo(temporaryQueue);
+queueProducer.send(message);
+session.commit();
+
+message = consumer.receive(10000);
+GroovyRun.assertNotNull(message);
+session.commit();
+
+connection.close();
+senderLatch.countDown();
\ No newline at end of file
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/receiveMessages.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/receiveMessages.groovy
new file mode 100644
index 0000000..ee08470
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/receiveMessages.groovy
@@ -0,0 +1,53 @@
+package jmsReplyToTempQueue
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+ cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+ // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+Queue myQueue = session.createQueue("myQueue");
+MessageConsumer queueConsumer = session.createConsumer(myQueue);
+consumerCreated.countDown();
+connection.start()
+
+Message message = queueConsumer.receive(5000);
+GroovyRun.assertNotNull(message)
+session.commit();
+queueConsumer.close();
+
+MessageProducer producer = session.createProducer(message.getJMSReplyTo());
+message = session.createMessage();
+producer.send(message);
+session.commit();
+
+connection.close();
+
+latch.countDown();
+
+
+
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/sendMessagesAddress.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/sendMessagesAddress.groovy
new file mode 100644
index 0000000..3c8f4a1
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/sendMessagesAddress.groovy
@@ -0,0 +1,52 @@
+package jmsReplyToTempQueue
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+ cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+ // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+connection.start();
+
+Queue myQueue = session.createQueue("myQueue");
+Queue temporaryQueue = session.createTemporaryQueue();
+MessageConsumer consumer = session.createConsumer(temporaryQueue);
+
+MessageProducer queueProducer = session.createProducer(myQueue)
+
+queueProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
+Message message = session.createMessage();
+message.setJMSReplyTo(temporaryQueue);
+queueProducer.send(message);
+session.commit();
+
+message = consumer.receive(10000);
+GroovyRun.assertNotNull(message);
+session.commit();
+
+connection.close();
+senderLatch.countDown();
\ No newline at end of file
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/receiveMessages.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/receiveMessages.groovy
new file mode 100644
index 0000000..0fb72d9
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/receiveMessages.groovy
@@ -0,0 +1,59 @@
+package jmsReplyToTempTopic
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+ cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+ // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+Queue myQueue = session.createQueue("myQueue");
+
+GroovyRun.assertEquals("myQueue", myQueue.getQueueName());
+
+MessageConsumer queueConsumer = session.createConsumer(myQueue);
+consumerCreated.countDown();
+connection.start()
+
+for (int i = 0; i < 5; i++) {
+ Message message = queueConsumer.receive(5000);
+ GroovyRun.assertNotNull(message)
+
+ GroovyRun.assertEquals("myQueue", ((Queue)message.getJMSDestination()).getQueueName());
+
+ MessageProducer producer = session.createProducer(message.getJMSReplyTo());
+ message = session.createMessage();
+ producer.send(message);
+}
+queueConsumer.close();
+session.commit();
+
+connection.close();
+
+latch.countDown();
+
+
+
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/sendMessagesAddress.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/sendMessagesAddress.groovy
new file mode 100644
index 0000000..0eb5ba1
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/sendMessagesAddress.groovy
@@ -0,0 +1,68 @@
+package jmsReplyToTempTopic
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+ cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+ // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+connection.start();
+
+Queue myQueue = session.createQueue("myQueue");
+
+GroovyRun.assertEquals("myQueue", myQueue.getQueueName());
+
+TemporaryTopic replyTopic = session.createTemporaryTopic();
+MessageConsumer consumer = session.createConsumer(replyTopic);
+
+
+MessageProducer queueProducer = session.createProducer(myQueue)
+
+queueProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
+sendMessage(session.createTextMessage("hello"), replyTopic, myQueue, queueProducer);
+sendMessage(session.createMapMessage(), replyTopic, myQueue, queueProducer);
+sendMessage(session.createObjectMessage(), replyTopic, myQueue, queueProducer);
+sendMessage(session.createStreamMessage(), replyTopic, myQueue, queueProducer);
+sendMessage(session.createMessage(), replyTopic, myQueue, queueProducer);
+session.commit();
+
+
+for (int i = 0; i < 5; i++) {
+ message = consumer.receive(10000);
+ GroovyRun.assertNotNull(message);
+}
+GroovyRun.assertNull(consumer.receiveNoWait());
+session.commit();
+
+connection.close();
+senderLatch.countDown();
+
+
+void sendMessage(Message message, TemporaryTopic replyTopic, Queue myQueue, MessageProducer queueProducer) {
+ message.setJMSReplyTo(replyTopic);
+ queueProducer.send(message);
+}
\ No newline at end of file
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/receiveMessages.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/receiveMessages.groovy
new file mode 100644
index 0000000..8c77f27
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/receiveMessages.groovy
@@ -0,0 +1,53 @@
+package jmsReplyToTopic
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+ cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+ // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+Queue myQueue = session.createQueue("myQueue");
+MessageConsumer queueConsumer = session.createConsumer(myQueue);
+consumerCreated.countDown();
+connection.start()
+
+Message message = queueConsumer.receive(5000);
+GroovyRun.assertNotNull(message)
+session.commit();
+queueConsumer.close();
+
+MessageProducer producer = session.createProducer(message.getJMSReplyTo());
+message = session.createMessage();
+producer.send(message);
+session.commit();
+
+connection.close();
+
+latch.countDown();
+
+
+
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/sendMessagesAddress.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/sendMessagesAddress.groovy
new file mode 100644
index 0000000..f65a883
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/sendMessagesAddress.groovy
@@ -0,0 +1,52 @@
+package jmsReplyToTopic
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+ cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+ // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+connection.start();
+
+Queue myQueue = session.createQueue("myQueue");
+Topic replyTopic = session.createTopic("myReplyTopic");
+MessageConsumer consumer = session.createConsumer(replyTopic);
+
+MessageProducer queueProducer = session.createProducer(myQueue)
+
+queueProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
+Message message = session.createMessage();
+message.setJMSReplyTo(replyTopic);
+queueProducer.send(message);
+session.commit();
+
+message = consumer.receive(10000);
+GroovyRun.assertNotNull(message);
+session.commit();
+
+connection.close();
+senderLatch.countDown();
\ No newline at end of file
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToQueueTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToQueueTest.java
index 3930544..7b6047e 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToQueueTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToQueueTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.activemq.artemis.tests.compatibility;
+import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.JAKARTAEE;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -44,6 +46,12 @@ public class JmsReplyToQueueTest extends VersionedBase {
combinations.add(new Object[]{SNAPSHOT, ONE_FIVE, SNAPSHOT});
combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, ONE_FIVE});
combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, SNAPSHOT});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, JAKARTAEE});
+ combinations.add(new Object[]{JAKARTAEE, SNAPSHOT, SNAPSHOT});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, SNAPSHOT});
+ combinations.add(new Object[]{JAKARTAEE, SNAPSHOT, JAKARTAEE});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, ONE_FIVE});
+ combinations.add(new Object[]{JAKARTAEE, ONE_FIVE, JAKARTAEE});
return combinations;
}
@@ -78,7 +86,11 @@ public class JmsReplyToQueueTest extends VersionedBase {
@Override
public void run() {
try {
- evaluate(receiverClassloader, "jmsReplyToQueue/receiveMessages.groovy", receiver);
+ if (JAKARTAEE.equals(receiver)) {
+ evaluate(receiverClassloader, "jakartaReplyToQueue/receiveMessages.groovy", receiver);
+ } else {
+ evaluate(receiverClassloader, "jmsReplyToQueue/receiveMessages.groovy", receiver);
+ }
} catch (Throwable e) {
e.printStackTrace();
errors.incrementAndGet();
@@ -94,7 +106,11 @@ public class JmsReplyToQueueTest extends VersionedBase {
@Override
public void run() {
try {
- evaluate(senderClassloader, "jmsReplyToQueue/sendMessagesAddress.groovy", sender);
+ if (JAKARTAEE.equals(sender)) {
+ evaluate(senderClassloader, "jakartaReplyToQueue/sendMessagesAddress.groovy", sender);
+ } else {
+ evaluate(senderClassloader, "jmsReplyToQueue/sendMessagesAddress.groovy", sender);
+ }
} catch (Throwable e) {
e.printStackTrace();
errors.incrementAndGet();
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempQueueTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempQueueTest.java
index 3bb5cc0..93b8ca1 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempQueueTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempQueueTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.activemq.artemis.tests.compatibility;
+import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.JAKARTAEE;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -44,6 +46,11 @@ public class JmsReplyToTempQueueTest extends VersionedBase {
combinations.add(new Object[]{SNAPSHOT, ONE_FIVE, SNAPSHOT});
combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, ONE_FIVE});
combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, SNAPSHOT});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, JAKARTAEE});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, SNAPSHOT});
+ combinations.add(new Object[]{JAKARTAEE, SNAPSHOT, JAKARTAEE});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, ONE_FIVE});
+ combinations.add(new Object[]{JAKARTAEE, ONE_FIVE, JAKARTAEE});
return combinations;
}
@@ -78,7 +85,11 @@ public class JmsReplyToTempQueueTest extends VersionedBase {
@Override
public void run() {
try {
- evaluate(receiverClassloader, "jmsReplyToTempQueue/receiveMessages.groovy", receiver);
+ if (JAKARTAEE.equals(receiver)) {
+ evaluate(receiverClassloader, "jakartaReplyToTempQueue/receiveMessages.groovy", receiver);
+ } else {
+ evaluate(receiverClassloader, "jmsReplyToTempQueue/receiveMessages.groovy", receiver);
+ }
} catch (Throwable e) {
e.printStackTrace();
errors.incrementAndGet();
@@ -94,7 +105,11 @@ public class JmsReplyToTempQueueTest extends VersionedBase {
@Override
public void run() {
try {
- evaluate(senderClassloader, "jmsReplyToTempQueue/sendMessagesAddress.groovy", sender);
+ if (JAKARTAEE.equals(sender)) {
+ evaluate(senderClassloader, "jakartaReplyToTempQueue/sendMessagesAddress.groovy", sender);
+ } else {
+ evaluate(senderClassloader, "jmsReplyToTempQueue/sendMessagesAddress.groovy", sender);
+ }
} catch (Throwable e) {
e.printStackTrace();
errors.incrementAndGet();
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempTopicTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempTopicTest.java
index 1efa3de..7cbec8d 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempTopicTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempTopicTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.activemq.artemis.tests.compatibility;
+import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.JAKARTAEE;
+
import org.apache.activemq.artemis.tests.compatibility.base.VersionedBase;
import org.apache.activemq.artemis.utils.FileUtil;
import org.junit.After;
@@ -44,6 +46,11 @@ public class JmsReplyToTempTopicTest extends VersionedBase {
combinations.add(new Object[]{SNAPSHOT, ONE_FIVE, SNAPSHOT});
combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, ONE_FIVE});
combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, SNAPSHOT});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, JAKARTAEE});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, SNAPSHOT});
+ combinations.add(new Object[]{JAKARTAEE, SNAPSHOT, JAKARTAEE});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, ONE_FIVE});
+ combinations.add(new Object[]{JAKARTAEE, ONE_FIVE, JAKARTAEE});
return combinations;
}
@@ -78,7 +85,11 @@ public class JmsReplyToTempTopicTest extends VersionedBase {
@Override
public void run() {
try {
- evaluate(receiverClassloader, "jmsReplyToTempTopic/receiveMessages.groovy", receiver);
+ if (JAKARTAEE.equals(receiver)) {
+ evaluate(receiverClassloader, "jakartaReplyToTempTopic/receiveMessages.groovy", receiver);
+ } else {
+ evaluate(receiverClassloader, "jmsReplyToTempTopic/receiveMessages.groovy", receiver);
+ }
} catch (Throwable e) {
e.printStackTrace();
errors.incrementAndGet();
@@ -94,7 +105,11 @@ public class JmsReplyToTempTopicTest extends VersionedBase {
@Override
public void run() {
try {
- evaluate(senderClassloader, "jmsReplyToTempTopic/sendMessagesAddress.groovy", sender);
+ if (JAKARTAEE.equals(sender)) {
+ evaluate(senderClassloader, "jakartaReplyToTempTopic/sendMessagesAddress.groovy", sender);
+ } else {
+ evaluate(senderClassloader, "jmsReplyToTempTopic/sendMessagesAddress.groovy", sender);
+ }
} catch (Throwable e) {
e.printStackTrace();
errors.incrementAndGet();
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTopicTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTopicTest.java
index 3d2406b..a20bc06 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTopicTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTopicTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.activemq.artemis.tests.compatibility;
+import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.JAKARTAEE;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -44,6 +46,11 @@ public class JmsReplyToTopicTest extends VersionedBase {
combinations.add(new Object[]{SNAPSHOT, ONE_FIVE, SNAPSHOT});
combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, ONE_FIVE});
combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, SNAPSHOT});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, JAKARTAEE});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, SNAPSHOT});
+ combinations.add(new Object[]{JAKARTAEE, SNAPSHOT, JAKARTAEE});
+ combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, ONE_FIVE});
+ combinations.add(new Object[]{JAKARTAEE, ONE_FIVE, JAKARTAEE});
return combinations;
}
@@ -78,7 +85,11 @@ public class JmsReplyToTopicTest extends VersionedBase {
@Override
public void run() {
try {
- evaluate(receiverClassloader, "jmsReplyToTopic/receiveMessages.groovy", receiver);
+ if (JAKARTAEE.equals(receiver)) {
+ evaluate(receiverClassloader, "jakartaReplyToTopic/receiveMessages.groovy", receiver);
+ } else {
+ evaluate(receiverClassloader, "jmsReplyToTopic/receiveMessages.groovy", receiver);
+ }
} catch (Throwable e) {
e.printStackTrace();
errors.incrementAndGet();
@@ -94,7 +105,11 @@ public class JmsReplyToTopicTest extends VersionedBase {
@Override
public void run() {
try {
- evaluate(senderClassloader, "jmsReplyToTopic/sendMessagesAddress.groovy", sender);
+ if (JAKARTAEE.equals(sender)) {
+ evaluate(senderClassloader, "jakartaReplyToTopic/sendMessagesAddress.groovy", sender);
+ } else {
+ evaluate(senderClassloader, "jmsReplyToTopic/sendMessagesAddress.groovy", sender);
+ }
} catch (Throwable e) {
e.printStackTrace();
errors.incrementAndGet();