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 2018/08/30 19:04:52 UTC

[2/2] activemq-artemis git commit: ARTEMIS-2023 Avoiding boolean on every message for 1x and tests

ARTEMIS-2023 Avoiding boolean on every message for 1x and tests

(cherry picked from commit 93cffedcba9d293c24b3497a1aff1de491bbf39c)


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/68521143
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/68521143
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/68521143

Branch: refs/heads/2.6.x
Commit: 685211434a84a7a6ca2a65b8d0c187740743cb0b
Parents: 4f76ef4
Author: Clebert Suconic <cl...@apache.org>
Authored: Tue Aug 28 17:35:57 2018 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Aug 30 15:04:36 2018 -0400

----------------------------------------------------------------------
 .../artemis/jms/client/ActiveMQMapMessage.java  |   2 +-
 .../artemis/jms/client/ActiveMQMessage.java     |  57 ++-----
 .../jms/client/ActiveMQMessageConsumer.java     |   6 +-
 .../jms/client/ActiveMQQueueBrowser.java        |   7 +-
 .../artemis/jms/client/ActiveMQSession.java     |  70 ++++++--
 .../jms/client/ActiveMQStreamMessage.java       |   2 +-
 .../jms/client/JMSMessageListenerWrapper.java   |  13 +-
 .../ActiveMQBytesCompatibleMessage.java         |  57 +++++++
 .../compatible1X/ActiveMQCompatibleMessage.java | 159 ++++++++++++++++++
 .../ActiveMQMapCompatibleMessage.java           |  58 +++++++
 .../ActiveMQObjectCompatibleMessage.java        |  61 +++++++
 .../ActiveMQStreamCompatibleMessage.java        |  59 +++++++
 .../ActiveMQTextCompabileMessage.java           |  50 ++++++
 .../artemis/ra/inflow/ActiveMQActivation.java   |   5 +
 .../ra/inflow/ActiveMQMessageHandler.java       |  13 +-
 .../artemis/tests/compatibility/GroovyRun.java  |   6 +
 .../validateClient.groovy                       |   2 +
 .../resources/ReplyToTest/replyToReceive.groovy |  87 ++++++++++
 .../resources/ReplyToTest/replyToSend.groovy    |  70 ++++++++
 .../addressConfig/artemisServer.groovy          |   2 +-
 .../addressConfig/receiveMessages.groovy        |   2 +-
 .../addressConfig/sendMessagesAddress.groovy    |   2 +-
 .../resources/exportimport/artemisServer.groovy |   2 +-
 .../main/resources/exportimport/export.groovy   |   1 +
 .../main/resources/exportimport/export1X.groovy |   1 +
 .../main/resources/exportimport/import.groovy   |   1 +
 .../journalcompatibility/forcepaging.groovy     |   2 +
 .../journalcompatibility/ispaging.groovy        |   2 +
 .../oldAddressSpace/receiveMessages.groovy      |   2 +
 .../prefixSendAckTest/artemisServer.groovy      |   2 +-
 .../prefixSendAckTest/sendAckMessages.groovy    |   2 +-
 .../sendAckTest/sendAckMessages.groovy          |   2 +-
 .../src/main/resources/serial/cfserial.groovy   |   2 +-
 .../src/main/resources/serial/jbmserial.groovy  |   2 +-
 .../src/main/resources/serial/serial.groovy     |   2 +-
 .../ActiveMQJMSClientCompatibilityTest.java     |   3 +-
 .../tests/compatibility/AddressConfigTest.java  |   3 +-
 .../tests/compatibility/ClasspathBaseTest.java  | 152 -----------------
 ...onFactoryConfigurationSerializationTest.java |   3 +-
 .../tests/compatibility/ExportImportTest.java   |   3 +-
 .../compatibility/HQClientTopologyTest.java     |   3 +-
 .../tests/compatibility/HQFailoverTest.java     |   3 +-
 .../compatibility/JournalCompatibilityTest.java |   3 +-
 .../artemis/tests/compatibility/MeshTest.java   |  11 +-
 .../compatibility/OldAddressSpaceTest.java      |   3 +-
 .../tests/compatibility/PrefixSendAckTest.java  |   3 +-
 .../tests/compatibility/ReplyToTest.java        | 134 +++++++++++++++
 .../tests/compatibility/SendAckTest.java        |   3 +-
 .../tests/compatibility/SerializationTest.java  |   3 +-
 .../tests/compatibility/ServerBaseTest.java     |  41 -----
 .../tests/compatibility/VersionedBaseTest.java  | 103 ------------
 .../tests/compatibility/base/ClasspathBase.java | 164 +++++++++++++++++++
 .../tests/compatibility/base/ServerBase.java    |  41 +++++
 .../tests/compatibility/base/VersionedBase.java | 115 +++++++++++++
 54 files changed, 1216 insertions(+), 391 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMapMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMapMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMapMessage.java
index 9749328..557b0b8 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMapMessage.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMapMessage.java
@@ -38,7 +38,7 @@ import static org.apache.activemq.artemis.reader.MapMessageUtil.writeBodyMap;
 /**
  * ActiveMQ Artemis implementation of a JMS MapMessage.
  */
-public final class ActiveMQMapMessage extends ActiveMQMessage implements MapMessage {
+public class ActiveMQMapMessage extends ActiveMQMessage implements MapMessage {
    // Constants -----------------------------------------------------
 
    public static final byte TYPE = Message.MAP_TYPE;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
index ff7da00..a3360ef 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
@@ -197,7 +197,7 @@ public class ActiveMQMessage implements javax.jms.Message {
    private String msgID;
 
    // Cache it
-   private Destination replyTo;
+   protected Destination replyTo;
 
    // Cache it
    private String jmsCorrelationID;
@@ -209,8 +209,6 @@ public class ActiveMQMessage implements javax.jms.Message {
 
    private boolean clientAck;
 
-   private boolean enable1xPrefixes;
-
    private long jmsDeliveryTime;
 
    // Constructors --------------------------------------------------
@@ -366,23 +364,11 @@ public class ActiveMQMessage implements javax.jms.Message {
    @Override
    public Destination getJMSReplyTo() throws JMSException {
       if (replyTo == null) {
-         SimpleString address = MessageUtil.getJMSReplyTo(message);
-         if (address != null) {
-            String name = address.toString();
-
-            // swap the old prefixes for the new ones so the proper destination type gets created
-            if (enable1xPrefixes) {
-               if (address.startsWith(OLD_QUEUE_QUALIFIED_PREFIX)) {
-                  name = address.subSeq(OLD_QUEUE_QUALIFIED_PREFIX.length(), address.length()).toString();
-               } else if (address.startsWith(OLD_TEMP_QUEUE_QUALIFED_PREFIX)) {
-                  name = address.subSeq(OLD_TEMP_QUEUE_QUALIFED_PREFIX.length(), address.length()).toString();
-               } else if (address.startsWith(OLD_TOPIC_QUALIFIED_PREFIX)) {
-                  name = address.subSeq(OLD_TOPIC_QUALIFIED_PREFIX.length(), address.length()).toString();
-               } else if (address.startsWith(OLD_TEMP_TOPIC_QUALIFED_PREFIX)) {
-                  name = address.subSeq(OLD_TEMP_TOPIC_QUALIFED_PREFIX.length(), address.length()).toString();
-               }
-            }
-            replyTo = ActiveMQDestination.fromPrefixedName(address.toString(), name);
+
+         SimpleString repl = MessageUtil.getJMSReplyTo(message);
+
+         if (repl != null) {
+            replyTo = ActiveMQDestination.fromPrefixedName(repl.toString());
          }
       }
       return replyTo;
@@ -417,23 +403,20 @@ public class ActiveMQMessage implements javax.jms.Message {
       }
    }
 
+   protected SimpleString checkPrefix(SimpleString address) {
+      return address;
+   }
+
+   protected SimpleString checkPrefixStr(SimpleString address) {
+      return address;
+   }
+
+
    @Override
    public Destination getJMSDestination() throws JMSException {
       if (dest == null) {
          SimpleString address = message.getAddressSimpleString();
-         SimpleString name = address;
-
-         if (address != null & enable1xPrefixes) {
-            if (address.startsWith(PacketImpl.OLD_QUEUE_PREFIX)) {
-               name = address.subSeq(PacketImpl.OLD_QUEUE_PREFIX.length(), address.length());
-            } else if (address.startsWith(PacketImpl.OLD_TEMP_QUEUE_PREFIX)) {
-               name = address.subSeq(PacketImpl.OLD_TEMP_QUEUE_PREFIX.length(), address.length());
-            } else if (address.startsWith(PacketImpl.OLD_TOPIC_PREFIX)) {
-               name = address.subSeq(PacketImpl.OLD_TOPIC_PREFIX.length(), address.length());
-            } else if (address.startsWith(PacketImpl.OLD_TEMP_TOPIC_PREFIX)) {
-               name = address.subSeq(PacketImpl.OLD_TEMP_TOPIC_PREFIX.length(), address.length());
-            }
-         }
+         SimpleString changedAddress = checkPrefix(address);
 
          if (address == null) {
             dest = null;
@@ -445,8 +428,8 @@ public class ActiveMQMessage implements javax.jms.Message {
             dest = (ActiveMQDestination) ActiveMQDestination.fromPrefixedName(address.toString());
          }
 
-         if (name != null) {
-            ((ActiveMQDestination) dest).setName(name.toString());
+         if (changedAddress != null) {
+            ((ActiveMQDestination) dest).setName(changedAddress.toString());
          }
       }
 
@@ -903,10 +886,6 @@ public class ActiveMQMessage implements javax.jms.Message {
       }
    }
 
-   public void setEnable1xPrefixes(boolean enable1xPrefixes) {
-      this.enable1xPrefixes = enable1xPrefixes;
-   }
-
    @Override
    public String toString() {
       StringBuffer sb = new StringBuffer("ActiveMQMessage[");

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.java
index 8fabe8b..dac8e57 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.java
@@ -36,6 +36,7 @@ import org.apache.activemq.artemis.api.core.client.MessageHandler;
 import org.apache.activemq.artemis.api.jms.ActiveMQJMSConstants;
 import org.apache.activemq.artemis.core.client.ActiveMQClientLogger;
 import org.apache.activemq.artemis.core.client.impl.ClientSessionInternal;
+import org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQCompatibleMessage;
 
 /**
  * ActiveMQ Artemis implementation of a JMS MessageConsumer.
@@ -218,10 +219,11 @@ public final class ActiveMQMessageConsumer implements QueueReceiver, TopicSubscr
             boolean needSession = ackMode == Session.CLIENT_ACKNOWLEDGE ||
                ackMode == ActiveMQJMSConstants.INDIVIDUAL_ACKNOWLEDGE ||
                coreMessage.getType() == ActiveMQObjectMessage.TYPE;
-            jmsMsg = ActiveMQMessage.createMessage(coreMessage, needSession ? coreSession : null, options);
 
             if (session.isEnable1xPrefixes()) {
-               jmsMsg.setEnable1xPrefixes(true);
+               jmsMsg = ActiveMQCompatibleMessage.createMessage(coreMessage, needSession ? coreSession : null, options);
+            } else {
+               jmsMsg = ActiveMQMessage.createMessage(coreMessage, needSession ? coreSession : null, options);
             }
 
             try {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQQueueBrowser.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQQueueBrowser.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQQueueBrowser.java
index 716d044..810166c 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQQueueBrowser.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQQueueBrowser.java
@@ -27,6 +27,7 @@ import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientConsumer;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
 import org.apache.activemq.artemis.api.core.client.ClientSession;
+import org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQCompatibleMessage;
 import org.apache.activemq.artemis.utils.SelectorTranslator;
 
 /**
@@ -141,10 +142,10 @@ public final class ActiveMQQueueBrowser implements QueueBrowser {
          if (hasMoreElements()) {
             ClientMessage next = current;
             current = null;
-            msg = ActiveMQMessage.createMessage(next, session, options);
-
             if (enable1xPrefixes) {
-               msg.setEnable1xPrefixes(true);
+               msg = ActiveMQCompatibleMessage.createMessage(next, session, options);
+            } else {
+               msg = ActiveMQMessage.createMessage(next, session, options);
             }
 
             try {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
index 528310f..95d3608 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
@@ -62,6 +62,12 @@ import org.apache.activemq.artemis.api.core.client.ClientSession.AddressQuery;
 import org.apache.activemq.artemis.api.core.client.ClientSession.QueueQuery;
 import org.apache.activemq.artemis.api.core.RoutingType;
 import org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl;
+import org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQBytesCompatibleMessage;
+import org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQCompatibleMessage;
+import org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQMapCompatibleMessage;
+import org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQObjectCompatibleMessage;
+import org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQStreamCompatibleMessage;
+import org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQTextCompabileMessage;
 import org.apache.activemq.artemis.selector.filter.FilterException;
 import org.apache.activemq.artemis.selector.impl.SelectorParser;
 import org.apache.activemq.artemis.utils.SelectorTranslator;
@@ -144,8 +150,12 @@ public class ActiveMQSession implements QueueSession, TopicSession {
    public BytesMessage createBytesMessage() throws JMSException {
       checkClosed();
 
-      ActiveMQBytesMessage message = new ActiveMQBytesMessage(session);
-      message.setEnable1xPrefixes(enable1xPrefixes);
+      ActiveMQBytesMessage message;
+      if (enable1xPrefixes) {
+         message = new ActiveMQBytesCompatibleMessage(session);
+      } else {
+         message = new ActiveMQBytesMessage(session);
+      }
       return message;
    }
 
@@ -153,8 +163,12 @@ public class ActiveMQSession implements QueueSession, TopicSession {
    public MapMessage createMapMessage() throws JMSException {
       checkClosed();
 
-      ActiveMQMapMessage message = new ActiveMQMapMessage(session);
-      message.setEnable1xPrefixes(enable1xPrefixes);
+      ActiveMQMapMessage message;
+      if (enable1xPrefixes) {
+         message = new ActiveMQMapCompatibleMessage(session);
+      } else {
+         message = new ActiveMQMapMessage(session);
+      }
       return message;
    }
 
@@ -162,8 +176,12 @@ public class ActiveMQSession implements QueueSession, TopicSession {
    public Message createMessage() throws JMSException {
       checkClosed();
 
-      ActiveMQMessage message = new ActiveMQMessage(session);
-      message.setEnable1xPrefixes(enable1xPrefixes);
+      ActiveMQMessage message;
+      if (enable1xPrefixes) {
+         message = new ActiveMQCompatibleMessage(session);
+      } else {
+         message = new ActiveMQMessage(session);
+      }
       return message;
    }
 
@@ -171,8 +189,12 @@ public class ActiveMQSession implements QueueSession, TopicSession {
    public ObjectMessage createObjectMessage() throws JMSException {
       checkClosed();
 
-      ActiveMQObjectMessage message = new ActiveMQObjectMessage(session, options);
-      message.setEnable1xPrefixes(enable1xPrefixes);
+      ActiveMQObjectMessage message;
+      if (enable1xPrefixes) {
+         message = new ActiveMQObjectCompatibleMessage(session, options);
+      } else {
+         message = new ActiveMQObjectMessage(session, options);
+      }
       return message;
    }
 
@@ -180,9 +202,13 @@ public class ActiveMQSession implements QueueSession, TopicSession {
    public ObjectMessage createObjectMessage(final Serializable object) throws JMSException {
       checkClosed();
 
-      ActiveMQObjectMessage msg = new ActiveMQObjectMessage(session, options);
+      ActiveMQObjectMessage msg;
+      if (enable1xPrefixes) {
+         msg = new ActiveMQObjectCompatibleMessage(session, options);
+      } else {
+         msg = new ActiveMQObjectMessage(session, options);
+      }
       msg.setObject(object);
-      msg.setEnable1xPrefixes(enable1xPrefixes);
 
       return msg;
    }
@@ -191,8 +217,12 @@ public class ActiveMQSession implements QueueSession, TopicSession {
    public StreamMessage createStreamMessage() throws JMSException {
       checkClosed();
 
-      ActiveMQStreamMessage message = new ActiveMQStreamMessage(session);
-      message.setEnable1xPrefixes(enable1xPrefixes);
+      ActiveMQStreamMessage message;
+      if (enable1xPrefixes) {
+         message = new ActiveMQStreamMessage(session);
+      } else {
+         message = new ActiveMQStreamCompatibleMessage(session);
+      }
       return message;
    }
 
@@ -200,9 +230,13 @@ public class ActiveMQSession implements QueueSession, TopicSession {
    public TextMessage createTextMessage() throws JMSException {
       checkClosed();
 
-      ActiveMQTextMessage msg = new ActiveMQTextMessage(session);
+      ActiveMQTextMessage msg;
+      if (enable1xPrefixes) {
+         msg = new ActiveMQTextCompabileMessage(session);
+      } else {
+         msg = new ActiveMQTextMessage(session);
+      }
       msg.setText(null);
-      msg.setEnable1xPrefixes(enable1xPrefixes);
 
       return msg;
    }
@@ -211,9 +245,13 @@ public class ActiveMQSession implements QueueSession, TopicSession {
    public TextMessage createTextMessage(final String text) throws JMSException {
       checkClosed();
 
-      ActiveMQTextMessage msg = new ActiveMQTextMessage(session);
+      ActiveMQTextMessage msg;
+      if (enable1xPrefixes) {
+         msg = new ActiveMQTextCompabileMessage(session);
+      } else {
+         msg = new ActiveMQTextMessage(session);
+      }
       msg.setText(text);
-      msg.setEnable1xPrefixes(enable1xPrefixes);
 
       return msg;
    }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQStreamMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQStreamMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQStreamMessage.java
index 1c70c5b..6904df4 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQStreamMessage.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQStreamMessage.java
@@ -44,7 +44,7 @@ import static org.apache.activemq.artemis.reader.StreamMessageUtil.streamReadStr
 /**
  * ActiveMQ Artemis implementation of a JMS StreamMessage.
  */
-public final class ActiveMQStreamMessage extends ActiveMQMessage implements StreamMessage {
+public class ActiveMQStreamMessage extends ActiveMQMessage implements StreamMessage {
 
    public static final byte TYPE = Message.STREAM_TYPE;
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/JMSMessageListenerWrapper.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/JMSMessageListenerWrapper.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/JMSMessageListenerWrapper.java
index 0d2420b..f24e90d 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/JMSMessageListenerWrapper.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/JMSMessageListenerWrapper.java
@@ -25,6 +25,7 @@ import org.apache.activemq.artemis.api.core.client.ClientMessage;
 import org.apache.activemq.artemis.api.core.client.MessageHandler;
 import org.apache.activemq.artemis.api.jms.ActiveMQJMSConstants;
 import org.apache.activemq.artemis.core.client.impl.ClientSessionInternal;
+import org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQCompatibleMessage;
 
 public class JMSMessageListenerWrapper implements MessageHandler {
 
@@ -72,7 +73,13 @@ public class JMSMessageListenerWrapper implements MessageHandler {
     */
    @Override
    public void onMessage(final ClientMessage message) {
-      ActiveMQMessage msg = ActiveMQMessage.createMessage(message, session.getCoreSession(), options);
+      ActiveMQMessage msg;
+
+      if (session.isEnable1xPrefixes()) {
+         msg = ActiveMQCompatibleMessage.createMessage(message, session.getCoreSession(), options);
+      } else {
+         msg = ActiveMQMessage.createMessage(message, session.getCoreSession(), options);
+      }
 
       if (individualACK) {
          msg.setIndividualAcknowledge();
@@ -82,10 +89,6 @@ public class JMSMessageListenerWrapper implements MessageHandler {
          msg.setClientAcknowledge();
       }
 
-      if (session.isEnable1xPrefixes()) {
-         msg.setEnable1xPrefixes(true);
-      }
-
       try {
          msg.doBeforeReceive();
       } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQBytesCompatibleMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQBytesCompatibleMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQBytesCompatibleMessage.java
new file mode 100644
index 0000000..626b5a5
--- /dev/null
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQBytesCompatibleMessage.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.jms.client.compatible1X;
+
+import javax.jms.BytesMessage;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
+import org.apache.activemq.artemis.api.core.client.ClientSession;
+import org.apache.activemq.artemis.jms.client.ActiveMQBytesMessage;
+
+public class ActiveMQBytesCompatibleMessage extends ActiveMQBytesMessage {
+
+   @Override
+   protected SimpleString checkPrefix(SimpleString address) {
+      return ActiveMQCompatibleMessage.checkPrefix1X(address);
+   }
+
+
+   @Override
+   public Destination getJMSReplyTo() throws JMSException {
+      if (replyTo == null) {
+         replyTo = ActiveMQCompatibleMessage.findCompatibleReplyTo(message);
+      }
+      return replyTo;
+   }
+
+
+   public ActiveMQBytesCompatibleMessage(ClientSession session) {
+      super(session);
+   }
+
+   protected ActiveMQBytesCompatibleMessage(ClientMessage message, ClientSession session) {
+      super(message, session);
+   }
+
+   public ActiveMQBytesCompatibleMessage(BytesMessage foreign, ClientSession session) throws JMSException {
+      super(foreign, session);
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQCompatibleMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQCompatibleMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQCompatibleMessage.java
new file mode 100644
index 0000000..1b21cbf
--- /dev/null
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQCompatibleMessage.java
@@ -0,0 +1,159 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.jms.client.compatible1X;
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.JMSRuntimeException;
+import javax.jms.Message;
+
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
+import org.apache.activemq.artemis.api.core.client.ClientSession;
+import org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl;
+import org.apache.activemq.artemis.jms.client.ActiveMQBytesMessage;
+import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
+import org.apache.activemq.artemis.jms.client.ActiveMQMapMessage;
+import org.apache.activemq.artemis.jms.client.ActiveMQMessage;
+import org.apache.activemq.artemis.jms.client.ActiveMQObjectMessage;
+import org.apache.activemq.artemis.jms.client.ActiveMQStreamMessage;
+import org.apache.activemq.artemis.jms.client.ActiveMQTextMessage;
+import org.apache.activemq.artemis.jms.client.ConnectionFactoryOptions;
+import org.apache.activemq.artemis.reader.MessageUtil;
+
+public class ActiveMQCompatibleMessage extends ActiveMQMessage {
+
+   public ActiveMQCompatibleMessage(byte type, ClientSession session) {
+      super(type, session);
+   }
+
+   public ActiveMQCompatibleMessage(ClientSession session) {
+      super(session);
+   }
+
+   public ActiveMQCompatibleMessage(ClientMessage message, ClientSession session) {
+      super(message, session);
+   }
+
+   public ActiveMQCompatibleMessage(Message foreign, ClientSession session) throws JMSException {
+      super(foreign, session);
+   }
+
+   public ActiveMQCompatibleMessage() {
+   }
+
+   public ActiveMQCompatibleMessage(Message foreign, byte type, ClientSession session) throws JMSException {
+      super(foreign, type, session);
+   }
+
+   @Override
+   public Destination getJMSReplyTo() throws JMSException {
+      if (replyTo == null) {
+         replyTo = findCompatibleReplyTo(message);
+      }
+      return replyTo;
+   }
+
+   public static Destination findCompatibleReplyTo(ClientMessage message) {
+      SimpleString address = MessageUtil.getJMSReplyTo(message);
+      if (address != null) {
+         String name = address.toString();
+
+         // swap the old prefixes for the new ones so the proper destination type gets created
+         if (address.startsWith(OLD_QUEUE_QUALIFIED_PREFIX)) {
+            name = address.subSeq(OLD_QUEUE_QUALIFIED_PREFIX.length(), address.length()).toString();
+         } else if (address.startsWith(OLD_TEMP_QUEUE_QUALIFED_PREFIX)) {
+            name = address.subSeq(OLD_TEMP_QUEUE_QUALIFED_PREFIX.length(), address.length()).toString();
+         } else if (address.startsWith(OLD_TOPIC_QUALIFIED_PREFIX)) {
+            name = address.subSeq(OLD_TOPIC_QUALIFIED_PREFIX.length(), address.length()).toString();
+         } else if (address.startsWith(OLD_TEMP_TOPIC_QUALIFED_PREFIX)) {
+            name = address.subSeq(OLD_TEMP_TOPIC_QUALIFED_PREFIX.length(), address.length()).toString();
+         }
+         return ActiveMQDestination.fromPrefixedName(address.toString(), name);
+      }
+
+      return null;
+   }
+
+   @Override
+   public SimpleString checkPrefix(SimpleString address) {
+      return checkPrefix1X(address);
+   }
+
+   protected static SimpleString checkPrefix1X(SimpleString address) {
+      if (address != null) {
+         if (address.startsWith(PacketImpl.OLD_QUEUE_PREFIX)) {
+            return address.subSeq(PacketImpl.OLD_QUEUE_PREFIX.length(), address.length());
+         } else if (address.startsWith(PacketImpl.OLD_TEMP_QUEUE_PREFIX)) {
+            return address.subSeq(PacketImpl.OLD_TEMP_QUEUE_PREFIX.length(), address.length());
+         } else if (address.startsWith(PacketImpl.OLD_TOPIC_PREFIX)) {
+            return address.subSeq(PacketImpl.OLD_TOPIC_PREFIX.length(), address.length());
+         } else if (address.startsWith(PacketImpl.OLD_TEMP_TOPIC_PREFIX)) {
+            return address.subSeq(PacketImpl.OLD_TEMP_TOPIC_PREFIX.length(), address.length());
+         }
+      }
+
+      return null;
+   }
+
+   public static ActiveMQMessage createMessage(final ClientMessage message,
+                                               final ClientSession session,
+                                               final ConnectionFactoryOptions options) {
+      int type = message.getType();
+
+      ActiveMQMessage msg;
+
+      switch (type) {
+         case ActiveMQMessage.TYPE: // 0
+         {
+            msg = new ActiveMQCompatibleMessage(message, session);
+            break;
+         }
+         case ActiveMQBytesMessage.TYPE: // 4
+         {
+            msg = new ActiveMQBytesCompatibleMessage(message, session);
+            break;
+         }
+         case ActiveMQMapMessage.TYPE: // 5
+         {
+            msg = new ActiveMQMapCompatibleMessage(message, session);
+            break;
+         }
+         case ActiveMQObjectMessage.TYPE: {
+            msg = new ActiveMQObjectCompatibleMessage(message, session, options);
+            break;
+         }
+         case ActiveMQStreamMessage.TYPE: // 6
+         {
+            msg = new ActiveMQStreamCompatibleMessage(message, session);
+            break;
+         }
+         case ActiveMQTextMessage.TYPE: // 3
+         {
+            msg = new ActiveMQTextCompabileMessage(message, session);
+            break;
+         }
+         default: {
+            throw new JMSRuntimeException("Invalid message type " + type);
+         }
+      }
+
+      return msg;
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQMapCompatibleMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQMapCompatibleMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQMapCompatibleMessage.java
new file mode 100644
index 0000000..2d6e576
--- /dev/null
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQMapCompatibleMessage.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.jms.client.compatible1X;
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.MapMessage;
+
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
+import org.apache.activemq.artemis.api.core.client.ClientSession;
+import org.apache.activemq.artemis.jms.client.ActiveMQMapMessage;
+
+public class ActiveMQMapCompatibleMessage extends ActiveMQMapMessage {
+
+   @Override
+   protected SimpleString checkPrefix(SimpleString address) {
+      return ActiveMQCompatibleMessage.checkPrefix1X(address);
+   }
+
+   @Override
+   public Destination getJMSReplyTo() throws JMSException {
+      if (replyTo == null) {
+         replyTo = ActiveMQCompatibleMessage.findCompatibleReplyTo(message);
+      }
+      return replyTo;
+   }
+
+   public ActiveMQMapCompatibleMessage(ClientSession session) {
+      super(session);
+   }
+
+   public ActiveMQMapCompatibleMessage(ClientMessage message, ClientSession session) {
+      super(message, session);
+   }
+
+   public ActiveMQMapCompatibleMessage() {
+   }
+
+   public ActiveMQMapCompatibleMessage(MapMessage foreign, ClientSession session) throws JMSException {
+      super(foreign, session);
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQObjectCompatibleMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQObjectCompatibleMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQObjectCompatibleMessage.java
new file mode 100644
index 0000000..13a9d7d
--- /dev/null
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQObjectCompatibleMessage.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.jms.client.compatible1X;
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.ObjectMessage;
+
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
+import org.apache.activemq.artemis.api.core.client.ClientSession;
+import org.apache.activemq.artemis.jms.client.ActiveMQObjectMessage;
+import org.apache.activemq.artemis.jms.client.ConnectionFactoryOptions;
+
+public class ActiveMQObjectCompatibleMessage extends ActiveMQObjectMessage {
+
+   @Override
+   protected SimpleString checkPrefix(SimpleString address) {
+      return ActiveMQCompatibleMessage.checkPrefix1X(address);
+   }
+
+
+   @Override
+   public Destination getJMSReplyTo() throws JMSException {
+      if (replyTo == null) {
+         replyTo = ActiveMQCompatibleMessage.findCompatibleReplyTo(message);
+      }
+      return replyTo;
+   }
+
+   public ActiveMQObjectCompatibleMessage(ClientSession session, ConnectionFactoryOptions options) {
+      super(session, options);
+   }
+
+   public ActiveMQObjectCompatibleMessage(ClientMessage message,
+                                          ClientSession session,
+                                          ConnectionFactoryOptions options) {
+      super(message, session, options);
+   }
+
+   public ActiveMQObjectCompatibleMessage(ObjectMessage foreign,
+                                          ClientSession session,
+                                          ConnectionFactoryOptions options) throws JMSException {
+      super(foreign, session, options);
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQStreamCompatibleMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQStreamCompatibleMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQStreamCompatibleMessage.java
new file mode 100644
index 0000000..bb2fda6
--- /dev/null
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQStreamCompatibleMessage.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.jms.client.compatible1X;
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.StreamMessage;
+
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
+import org.apache.activemq.artemis.api.core.client.ClientSession;
+import org.apache.activemq.artemis.jms.client.ActiveMQStreamMessage;
+
+public class ActiveMQStreamCompatibleMessage extends ActiveMQStreamMessage {
+
+   @Override
+   protected SimpleString checkPrefix(SimpleString address) {
+      return ActiveMQCompatibleMessage.checkPrefix1X(address);
+   }
+
+
+   @Override
+   public Destination getJMSReplyTo() throws JMSException {
+      if (replyTo == null) {
+         replyTo = ActiveMQCompatibleMessage.findCompatibleReplyTo(message);
+      }
+      return replyTo;
+   }
+
+   public ActiveMQStreamCompatibleMessage(ClientSession session) {
+      super(session);
+   }
+
+   public ActiveMQStreamCompatibleMessage(ClientMessage message, ClientSession session) {
+      super(message, session);
+   }
+
+   public ActiveMQStreamCompatibleMessage(StreamMessage foreign, ClientSession session) throws JMSException {
+      super(foreign, session);
+   }
+
+   public ActiveMQStreamCompatibleMessage() {
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQTextCompabileMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQTextCompabileMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQTextCompabileMessage.java
new file mode 100644
index 0000000..451c582
--- /dev/null
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/compatible1X/ActiveMQTextCompabileMessage.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.jms.client.compatible1X;
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.TextMessage;
+
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
+import org.apache.activemq.artemis.api.core.client.ClientSession;
+import org.apache.activemq.artemis.jms.client.ActiveMQTextMessage;
+
+public class ActiveMQTextCompabileMessage extends ActiveMQTextMessage {
+
+
+   @Override
+   public Destination getJMSReplyTo() throws JMSException {
+      if (replyTo == null) {
+         replyTo = ActiveMQCompatibleMessage.findCompatibleReplyTo(message);
+      }
+      return replyTo;
+   }
+
+   public ActiveMQTextCompabileMessage(ClientSession session) {
+      super(session);
+   }
+
+   public ActiveMQTextCompabileMessage(ClientMessage message, ClientSession session) {
+      super(message, session);
+   }
+
+   public ActiveMQTextCompabileMessage(TextMessage foreign, ClientSession session) throws JMSException {
+      super(foreign, session);
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQActivation.java
----------------------------------------------------------------------
diff --git a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQActivation.java b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQActivation.java
index d6013e3..b0f0aff 100644
--- a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQActivation.java
+++ b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQActivation.java
@@ -385,6 +385,11 @@ public class ActiveMQActivation {
             Thread interruptThread = handler.getCurrentThread();
             if (interruptThread != null) {
                try {
+                  logger.tracef("Interrupting thread %s", interruptThread.getName());
+               } catch (Throwable justLog) {
+                  logger.warn(justLog);
+               }
+               try {
                   interruptThread.interrupt();
                } catch (Throwable e) {
                   //ok

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQMessageHandler.java
----------------------------------------------------------------------
diff --git a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQMessageHandler.java b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQMessageHandler.java
index 33c6445..ef23d50 100644
--- a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQMessageHandler.java
+++ b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQMessageHandler.java
@@ -41,6 +41,7 @@ import org.apache.activemq.artemis.core.client.impl.ClientSessionInternal;
 import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
 import org.apache.activemq.artemis.jms.client.ActiveMQMessage;
 import org.apache.activemq.artemis.jms.client.ConnectionFactoryOptions;
+import org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQCompatibleMessage;
 import org.apache.activemq.artemis.ra.ActiveMQRALogger;
 import org.apache.activemq.artemis.ra.ActiveMQResourceAdapter;
 import org.apache.activemq.artemis.service.extensions.ServiceUtils;
@@ -86,6 +87,8 @@ public class ActiveMQMessageHandler implements MessageHandler, FailoverEventList
 
    private volatile boolean connected;
 
+   private boolean enable1XPrefix;
+
    public ActiveMQMessageHandler(final ConnectionFactoryOptions options,
                                  final ActiveMQActivation activation,
                                  final TransactionManager tm,
@@ -105,6 +108,8 @@ public class ActiveMQMessageHandler implements MessageHandler, FailoverEventList
          logger.trace("setup()");
       }
 
+      this.enable1XPrefix = activation.getConnectionFactory().isEnable1xPrefixes();
+
       ActiveMQActivationSpec spec = activation.getActivationSpec();
       String selector = spec.getMessageSelector();
 
@@ -281,8 +286,12 @@ public class ActiveMQMessageHandler implements MessageHandler, FailoverEventList
          logger.trace("onMessage(" + message + ")");
       }
 
-      ActiveMQMessage msg = ActiveMQMessage.createMessage(message, session, options);
-      msg.setEnable1xPrefixes(activation.getConnectionFactory().isEnable1xPrefixes());
+      ActiveMQMessage msg;
+      if (enable1XPrefix) {
+         msg = ActiveMQCompatibleMessage.createMessage(message, session, options);
+      } else {
+         msg = ActiveMQMessage.createMessage(message, session, options);
+      }
 
       boolean beforeDelivery = false;
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
----------------------------------------------------------------------
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 5efa3d3..3be275b 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
@@ -39,6 +39,11 @@ public class GroovyRun {
    public static Binding binding = new Binding();
    public static GroovyShell shell = new GroovyShell(binding);
 
+   public static void clear() {
+      binding = new Binding();
+      shell = new GroovyShell(binding);
+   }
+
    /**
     * This can be called from the scripts as well.
     *  The scripts will use this method instead of its own groovy method.
@@ -68,6 +73,7 @@ public class GroovyRun {
       return shell.evaluate(scriptURI);
    }
 
+
    public static void setVariable(String name, Object arg) {
       binding.setVariable(name, arg);
    }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/ActiveMQJMSClientCompatibilityTest/validateClient.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/ActiveMQJMSClientCompatibilityTest/validateClient.groovy b/tests/compatibility-tests/src/main/resources/ActiveMQJMSClientCompatibilityTest/validateClient.groovy
index 400a69e..d1c77f8 100644
--- a/tests/compatibility-tests/src/main/resources/ActiveMQJMSClientCompatibilityTest/validateClient.groovy
+++ b/tests/compatibility-tests/src/main/resources/ActiveMQJMSClientCompatibilityTest/validateClient.groovy
@@ -1,3 +1,5 @@
+package ActiveMQJMSClientCompatibilityTest
+
 import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient
 import org.apache.activemq.artemis.jms.client.ActiveMQQueue
 import org.apache.activemq.artemis.jms.client.ActiveMQTopic

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/ReplyToTest/replyToReceive.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/ReplyToTest/replyToReceive.groovy b/tests/compatibility-tests/src/main/resources/ReplyToTest/replyToReceive.groovy
new file mode 100644
index 0000000..156cbdb
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/ReplyToTest/replyToReceive.groovy
@@ -0,0 +1,87 @@
+package ReplyToTest
+
+import org.apache.activemq.artemis.api.core.client.ActiveMQClient
+import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.jms.client.ActiveMQQueue
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import javax.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.
+ */
+
+cf = new ActiveMQConnectionFactory("tcp://localhost:61616?confirmationWindowSize=1048576&blockOnDurableSend=false&ha=true&reconnectAttempts=-1&retryInterval=100");
+Connection connection = cf.createConnection();
+connection.start();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+Queue queue = session.createQueue("queue");
+QueueBrowser browser = session.createBrowser(queue);
+
+Enumeration<Message> messageEnumeration = browser.getEnumeration();
+
+ArrayList<Message> messages = new ArrayList<>();
+
+while (messageEnumeration.hasMoreElements()) {
+    messages.add(messageEnumeration.nextElement());
+}
+
+check(messages);
+
+MessageConsumer consumer = session.createConsumer(queue);
+messages.clear();
+
+while(true) {
+    Message message = consumer.receiveNoWait();
+    if (message == null) {
+        break;
+    }
+    messages.add(message);
+}
+
+check(messages);
+
+connection.close();
+
+void check(List<Message> messages) {
+    Iterator<Message> iterator = messages.iterator();
+    Message bareMessage = iterator.next();
+    checkMessage(bareMessage);
+
+    BytesMessage bytesMessage = iterator.next();
+    checkMessage(bytesMessage);
+
+
+    MapMessage mapMessage = iterator.next();
+    checkMessage(mapMessage);
+
+    ObjectMessage objectMessage = iterator.next();
+    checkMessage(objectMessage);
+
+    StreamMessage streamMessage = iterator.next();
+    checkMessage(streamMessage);
+
+    TextMessage textMessage = iterator.next();
+    checkMessage(objectMessage);
+}
+
+
+void checkMessage(Message message) {
+    ActiveMQQueue queue = message.getJMSReplyTo();
+    GroovyRun.assertEquals("jms.queue.t1", queue.getAddress());
+    GroovyRun.assertEquals("t1", queue.getName());
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/ReplyToTest/replyToSend.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/ReplyToTest/replyToSend.groovy b/tests/compatibility-tests/src/main/resources/ReplyToTest/replyToSend.groovy
new file mode 100644
index 0000000..478699e
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/ReplyToTest/replyToSend.groovy
@@ -0,0 +1,70 @@
+package ReplyToTest
+
+import org.apache.activemq.artemis.api.core.client.ActiveMQClient
+import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.jms.client.ActiveMQQueue
+import org.apache.activemq.artemis.jms.client.ActiveMQTopic
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import javax.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.
+ */
+
+ActiveMQQueue queue = (ActiveMQQueue) ActiveMQJMSClient.createQueue("q1");
+GroovyRun.assertEquals("jms.queue.q1", queue.getAddress());
+GroovyRun.assertEquals("q1", queue.getQueueName());
+ActiveMQTopic topic = (ActiveMQTopic) ActiveMQJMSClient.createTopic("t1");
+GroovyRun.assertEquals("jms.topic.t1", topic.getAddress());
+GroovyRun.assertEquals("t1", topic.getTopicName());
+
+cf = new ActiveMQConnectionFactory("tcp://localhost:61616?confirmationWindowSize=1048576&blockOnDurableSend=false&ha=true&reconnectAttempts=-1&retryInterval=100");
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+queue = session.createQueue("queue");
+replyToQueue = ActiveMQJMSClient.createQueue("t1");
+
+producer = session.createProducer(queue);
+producer.setDeliveryMode(DeliveryMode.PERSISTENT);
+
+Message bareMessage = session.createMessage();
+send(bareMessage);
+
+BytesMessage bytesMessage = session.createBytesMessage();
+bytesMessage.writeBytes("hello".getBytes());
+send(bytesMessage);
+
+
+MapMessage mapMessage = session.createMapMessage();
+send(mapMessage);
+
+ObjectMessage objectMessage = session.createObjectMessage("hello");
+send(objectMessage);
+
+send(session.createStreamMessage());
+
+TextMessage textMessage = session.createTextMessage("May the force be with you");
+send(textMessage);
+
+session.commit();
+
+
+void send(Message message) {
+    message.setJMSReplyTo(replyToQueue);
+    producer.send(message);
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/addressConfig/artemisServer.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/addressConfig/artemisServer.groovy b/tests/compatibility-tests/src/main/resources/addressConfig/artemisServer.groovy
index 0f85332..be7a3ff 100644
--- a/tests/compatibility-tests/src/main/resources/addressConfig/artemisServer.groovy
+++ b/tests/compatibility-tests/src/main/resources/addressConfig/artemisServer.groovy
@@ -1,4 +1,4 @@
-package servers
+package addressConfig
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements. See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/addressConfig/receiveMessages.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/addressConfig/receiveMessages.groovy b/tests/compatibility-tests/src/main/resources/addressConfig/receiveMessages.groovy
index 0dbf4ba..441b8e5 100644
--- a/tests/compatibility-tests/src/main/resources/addressConfig/receiveMessages.groovy
+++ b/tests/compatibility-tests/src/main/resources/addressConfig/receiveMessages.groovy
@@ -1,4 +1,4 @@
-package meshTest
+package addressConfig
 
 import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
 import org.apache.activemq.artemis.tests.compatibility.GroovyRun

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/addressConfig/sendMessagesAddress.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/addressConfig/sendMessagesAddress.groovy b/tests/compatibility-tests/src/main/resources/addressConfig/sendMessagesAddress.groovy
index b75f8f5..7567b2c 100644
--- a/tests/compatibility-tests/src/main/resources/addressConfig/sendMessagesAddress.groovy
+++ b/tests/compatibility-tests/src/main/resources/addressConfig/sendMessagesAddress.groovy
@@ -1,4 +1,4 @@
-package meshTest
+package addressConfig
 
 import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/exportimport/artemisServer.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/exportimport/artemisServer.groovy b/tests/compatibility-tests/src/main/resources/exportimport/artemisServer.groovy
index 92d2a10..0064493 100644
--- a/tests/compatibility-tests/src/main/resources/exportimport/artemisServer.groovy
+++ b/tests/compatibility-tests/src/main/resources/exportimport/artemisServer.groovy
@@ -1,4 +1,4 @@
-package servers
+package exportimport
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements. See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/exportimport/export.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/exportimport/export.groovy b/tests/compatibility-tests/src/main/resources/exportimport/export.groovy
index bad99e7..2388fdd 100644
--- a/tests/compatibility-tests/src/main/resources/exportimport/export.groovy
+++ b/tests/compatibility-tests/src/main/resources/exportimport/export.groovy
@@ -1,3 +1,4 @@
+package exportimport
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements. See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/exportimport/export1X.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/exportimport/export1X.groovy b/tests/compatibility-tests/src/main/resources/exportimport/export1X.groovy
index 79b81c1..399f5c3 100644
--- a/tests/compatibility-tests/src/main/resources/exportimport/export1X.groovy
+++ b/tests/compatibility-tests/src/main/resources/exportimport/export1X.groovy
@@ -1,3 +1,4 @@
+package exportimport
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements. See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/exportimport/import.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/exportimport/import.groovy b/tests/compatibility-tests/src/main/resources/exportimport/import.groovy
index 39481d5..b71871c 100644
--- a/tests/compatibility-tests/src/main/resources/exportimport/import.groovy
+++ b/tests/compatibility-tests/src/main/resources/exportimport/import.groovy
@@ -1,3 +1,4 @@
+package exportimport
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements. See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/journalcompatibility/forcepaging.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/journalcompatibility/forcepaging.groovy b/tests/compatibility-tests/src/main/resources/journalcompatibility/forcepaging.groovy
index 032bcc1..76e5f0d 100644
--- a/tests/compatibility-tests/src/main/resources/journalcompatibility/forcepaging.groovy
+++ b/tests/compatibility-tests/src/main/resources/journalcompatibility/forcepaging.groovy
@@ -1,3 +1,5 @@
+package journalcompatibility
+
 import org.apache.activemq.artemis.api.core.SimpleString
 import org.apache.activemq.artemis.core.server.Queue
 import org.apache.activemq.artemis.tests.compatibility.GroovyRun

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/journalcompatibility/ispaging.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/journalcompatibility/ispaging.groovy b/tests/compatibility-tests/src/main/resources/journalcompatibility/ispaging.groovy
index a6dea7d..8bc8ed5 100644
--- a/tests/compatibility-tests/src/main/resources/journalcompatibility/ispaging.groovy
+++ b/tests/compatibility-tests/src/main/resources/journalcompatibility/ispaging.groovy
@@ -1,3 +1,5 @@
+package journalcompatibility
+
 import org.apache.activemq.artemis.api.core.SimpleString
 import org.apache.activemq.artemis.core.server.Queue
 import org.apache.activemq.artemis.tests.compatibility.GroovyRun

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/oldAddressSpace/receiveMessages.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/oldAddressSpace/receiveMessages.groovy b/tests/compatibility-tests/src/main/resources/oldAddressSpace/receiveMessages.groovy
index 632993f..0a32798 100644
--- a/tests/compatibility-tests/src/main/resources/oldAddressSpace/receiveMessages.groovy
+++ b/tests/compatibility-tests/src/main/resources/oldAddressSpace/receiveMessages.groovy
@@ -65,6 +65,8 @@ for (int i = 0; i < 500; i++) {
 }
 session.commit();
 
+connection.close();
+
 // Defined on AddressConfigTest.java at the test with setVariable
 
 latch.countDown();

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/prefixSendAckTest/artemisServer.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/prefixSendAckTest/artemisServer.groovy b/tests/compatibility-tests/src/main/resources/prefixSendAckTest/artemisServer.groovy
index b85cfcf..5c456a8 100644
--- a/tests/compatibility-tests/src/main/resources/prefixSendAckTest/artemisServer.groovy
+++ b/tests/compatibility-tests/src/main/resources/prefixSendAckTest/artemisServer.groovy
@@ -1,4 +1,4 @@
-package servers
+package prefixSendAckTest
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements. See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/prefixSendAckTest/sendAckMessages.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/prefixSendAckTest/sendAckMessages.groovy b/tests/compatibility-tests/src/main/resources/prefixSendAckTest/sendAckMessages.groovy
index a24ad83..03d98b9 100644
--- a/tests/compatibility-tests/src/main/resources/prefixSendAckTest/sendAckMessages.groovy
+++ b/tests/compatibility-tests/src/main/resources/prefixSendAckTest/sendAckMessages.groovy
@@ -1,4 +1,4 @@
-package meshTest
+package prefixSendAckTest
 
 import org.apache.activemq.artemis.tests.compatibility.GroovyRun
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/sendAckTest/sendAckMessages.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/sendAckTest/sendAckMessages.groovy b/tests/compatibility-tests/src/main/resources/sendAckTest/sendAckMessages.groovy
index b0814ce..89a0dc1 100644
--- a/tests/compatibility-tests/src/main/resources/sendAckTest/sendAckMessages.groovy
+++ b/tests/compatibility-tests/src/main/resources/sendAckTest/sendAckMessages.groovy
@@ -1,4 +1,4 @@
-package meshTest
+package sendAckTest
 
 import org.apache.activemq.artemis.tests.compatibility.GroovyRun
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/serial/cfserial.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/serial/cfserial.groovy b/tests/compatibility-tests/src/main/resources/serial/cfserial.groovy
index 26085cd..a1a82da 100644
--- a/tests/compatibility-tests/src/main/resources/serial/cfserial.groovy
+++ b/tests/compatibility-tests/src/main/resources/serial/cfserial.groovy
@@ -1,4 +1,4 @@
-package clients
+package serial
 
 import io.netty.buffer.Unpooled
 import org.apache.activemq.artemis.api.core.ActiveMQBuffer

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/serial/jbmserial.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/serial/jbmserial.groovy b/tests/compatibility-tests/src/main/resources/serial/jbmserial.groovy
index 02ee468..93cceeb 100644
--- a/tests/compatibility-tests/src/main/resources/serial/jbmserial.groovy
+++ b/tests/compatibility-tests/src/main/resources/serial/jbmserial.groovy
@@ -1,4 +1,4 @@
-package clients
+package serial
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements. See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/main/resources/serial/serial.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/serial/serial.groovy b/tests/compatibility-tests/src/main/resources/serial/serial.groovy
index 7caa332..d112c6c 100644
--- a/tests/compatibility-tests/src/main/resources/serial/serial.groovy
+++ b/tests/compatibility-tests/src/main/resources/serial/serial.groovy
@@ -1,4 +1,4 @@
-package clients
+package serial
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements. See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ActiveMQJMSClientCompatibilityTest.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ActiveMQJMSClientCompatibilityTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ActiveMQJMSClientCompatibilityTest.java
index 91e0e22..da60623 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ActiveMQJMSClientCompatibilityTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ActiveMQJMSClientCompatibilityTest.java
@@ -23,13 +23,14 @@ import java.io.PrintStream;
 
 import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
 import org.apache.activemq.artemis.jms.client.ActiveMQQueue;
+import org.apache.activemq.artemis.tests.compatibility.base.ClasspathBase;
 import org.junit.Assert;
 import org.junit.Assume;
 import org.junit.Test;
 import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.SNAPSHOT;
 import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.ONE_FIVE;
 
-public class ActiveMQJMSClientCompatibilityTest extends ClasspathBaseTest {
+public class ActiveMQJMSClientCompatibilityTest extends ClasspathBase {
 
    @Test
    public void testActiveMQJMSCompatibility_1XPrefix_SNAPSHOT() throws Exception {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/AddressConfigTest.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/AddressConfigTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/AddressConfigTest.java
index cba29af..2419e29 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/AddressConfigTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/AddressConfigTest.java
@@ -24,6 +24,7 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.activemq.artemis.tests.compatibility.base.VersionedBase;
 import org.apache.activemq.artemis.utils.FileUtil;
 import org.junit.After;
 import org.junit.Assert;
@@ -36,7 +37,7 @@ import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.ONE_FIVE
 import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.SNAPSHOT;
 
 @RunWith(Parameterized.class)
-public class AddressConfigTest extends VersionedBaseTest {
+public class AddressConfigTest extends VersionedBase {
 
    // this will ensure that all tests in this class are run twice,
    // once with "true" passed to the class' constructor and once with "false"

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ClasspathBaseTest.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ClasspathBaseTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ClasspathBaseTest.java
deleted file mode 100644
index d2a4b50..0000000
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ClasspathBaseTest.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.activemq.artemis.tests.compatibility;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-
-import org.junit.Assume;
-import org.junit.ClassRule;
-import org.junit.rules.TemporaryFolder;
-
-import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.SNAPSHOT;
-
-public class ClasspathBaseTest {
-
-
-   @ClassRule
-   public static TemporaryFolder serverFolder;
-
-   static {
-      File parent = new File("./target/tmp");
-      parent.mkdirs();
-      serverFolder = new TemporaryFolder(parent);
-   }
-
-   protected static Map<String, ClassLoader> loaderMap = new HashMap<>();
-
-   private static HashSet<String> printed = new HashSet<>();
-
-   protected static ClassLoader defineClassLoader(String classPath) throws MalformedURLException {
-      String[] classPathArray = classPath.split(File.pathSeparator);
-      URL[] elements = new URL[classPathArray.length];
-      for (int i = 0; i < classPathArray.length; i++) {
-         elements[i] = new File(classPathArray[i]).toPath().toUri().toURL();
-      }
-
-      return new URLClassLoader(elements, null);
-   }
-
-   public static ClassLoader getClasspath(String name) throws Exception {
-      return getClasspath(name, false);
-   }
-
-   public static ClassLoader getClasspath(String name, boolean forceNew) throws Exception {
-
-      if (!forceNew) {
-         if (name.equals(SNAPSHOT)) {
-            return VersionedBaseTest.class.getClassLoader();
-         }
-
-         ClassLoader loader = loaderMap.get(name);
-         if (loader != null && !forceNew) {
-            return loader;
-         }
-      }
-
-      String value = System.getProperty(name);
-
-      if (!printed.contains(name)) {
-         boolean ok = value != null && !value.trim().isEmpty();
-         if (!ok) {
-            System.out.println("Add \"-D" + name + "=\'CLASSPATH\'\" into your VM settings");
-            System.out.println("You will see it in the output from mvn install at the compatibility-tests");
-            System.out.println("... look for output from dependency-scan");
-
-            // our dependency scan used at the pom under compatibility-tests/pom.xml will generate these, example:
-            // [INFO] dependency-scan setting: -DARTEMIS-140="/Users/someuser/....."
-            // copy that into your IDE setting and you should be able to debug it
-         }
-         Assume.assumeTrue("Cannot run these tests, no classpath found", ok);
-      }
-
-      ClassLoader loader = defineClassLoader(value);
-      if (!forceNew) {
-         // if we are forcing a new one, there's no point in caching it
-         loaderMap.put(name, loader);
-      }
-
-      return loader;
-   }
-
-   protected static Object evaluate(ClassLoader loader, String script, String... arguments) throws Exception {
-      return tclCall(loader, () -> {
-         Class clazz = loader.loadClass(GroovyRun.class.getName());
-         Method method = clazz.getMethod("evaluate", String.class, String[].class);
-         return method.invoke(null, script, arguments);
-      });
-   }
-
-   protected static void setVariable(ClassLoader loader, String name, Object object) throws Exception {
-      tclCall(loader, () -> {
-         Class clazz = loader.loadClass(GroovyRun.class.getName());
-         Method method = clazz.getMethod("setVariable", String.class, Object.class);
-         method.invoke(null, name, object);
-         return null;
-      });
-   }
-
-   protected static Object setVariable(ClassLoader loader, String name) throws Exception {
-      return tclCall(loader, () -> {
-         Class clazz = loader.loadClass(GroovyRun.class.getName());
-         Method method = clazz.getMethod("getVariable", String.class);
-         return method.invoke(null, name);
-      });
-   }
-
-   protected static Object execute(ClassLoader loader, String script) throws Exception {
-      return tclCall(loader, () -> {
-         Class clazz = loader.loadClass(GroovyRun.class.getName());
-         Method method = clazz.getMethod("execute", String.class);
-         return method.invoke(null, script);
-      });
-   }
-
-   protected static Object tclCall(ClassLoader loader, CallIt run) throws Exception {
-
-      ClassLoader original = Thread.currentThread().getContextClassLoader();
-      Thread.currentThread().setContextClassLoader(loader);
-      try {
-         return run.run();
-      } finally {
-         Thread.currentThread().setContextClassLoader(original);
-      }
-   }
-
-   public interface CallIt {
-
-      Object run() throws Exception;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ConnectionFactoryConfigurationSerializationTest.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ConnectionFactoryConfigurationSerializationTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ConnectionFactoryConfigurationSerializationTest.java
index 9389452..18bcd7b 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ConnectionFactoryConfigurationSerializationTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ConnectionFactoryConfigurationSerializationTest.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.activemq.artemis.tests.compatibility.base.VersionedBase;
 import org.apache.activemq.artemis.utils.FileUtil;
 import org.junit.After;
 import org.junit.Before;
@@ -47,7 +48,7 @@ import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.TWO_FOUR
  * Run->Edit Configuration->Add ArtemisMeshTest and add your properties.
  */
 @RunWith(Parameterized.class)
-public class ConnectionFactoryConfigurationSerializationTest extends VersionedBaseTest {
+public class ConnectionFactoryConfigurationSerializationTest extends VersionedBase {
 
    // this will ensure that all tests in this class are run twice,
    // once with "true" passed to the class' constructor and once with "false"

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ExportImportTest.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ExportImportTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ExportImportTest.java
index 854ef1e..903165f 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ExportImportTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/ExportImportTest.java
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.activemq.artemis.tests.compatibility.base.VersionedBase;
 import org.apache.activemq.artemis.utils.FileUtil;
 import org.junit.After;
 import org.junit.Before;
@@ -45,7 +46,7 @@ import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.SNAPSHOT
  * Run->Edit Configuration->Add ArtemisMeshTest and add your properties.
  */
 @RunWith(Parameterized.class)
-public class ExportImportTest extends VersionedBaseTest {
+public class ExportImportTest extends VersionedBase {
    private String serverScriptToUse;
 
    // this will ensure that all tests in this class are run twice,

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQClientTopologyTest.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQClientTopologyTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQClientTopologyTest.java
index 7a9ab9d..87299d4 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQClientTopologyTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQClientTopologyTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.activemq.artemis.tests.compatibility;
 
+import org.apache.activemq.artemis.tests.compatibility.base.VersionedBase;
 import org.apache.activemq.artemis.utils.FileUtil;
 import org.junit.After;
 import org.junit.Before;
@@ -37,7 +38,7 @@ import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.SNAPSHOT
  * correct connector parameters (keys must be dash-delimited instead of camelCase).
  */
 @RunWith(Parameterized.class)
-public class HQClientTopologyTest extends VersionedBaseTest {
+public class HQClientTopologyTest extends VersionedBase {
 
    @Parameterized.Parameters(name = "server={0}, producer={1}, consumer={2}")
    public static Collection getParameters() {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQFailoverTest.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQFailoverTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQFailoverTest.java
index d3bdaf1..8b34946 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQFailoverTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQFailoverTest.java
@@ -30,6 +30,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.activemq.artemis.api.core.client.FailoverEventType;
 import org.apache.activemq.artemis.jms.client.ActiveMQConnection;
 import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
+import org.apache.activemq.artemis.tests.compatibility.base.VersionedBase;
 import org.apache.activemq.artemis.utils.FileUtil;
 import org.junit.After;
 import org.junit.Before;
@@ -46,7 +47,7 @@ import static org.junit.Assert.assertTrue;
  * and it will make sure that failover happens without any problems.
  */
 @RunWith(Parameterized.class)
-public class HQFailoverTest extends VersionedBaseTest {
+public class HQFailoverTest extends VersionedBase {
 
    @Parameterized.Parameters(name = "server={0}, producer={1}, consumer={2}")
    public static Collection getParameters() {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/68521143/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JournalCompatibilityTest.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JournalCompatibilityTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JournalCompatibilityTest.java
index 27ebdd0..ae94083 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JournalCompatibilityTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JournalCompatibilityTest.java
@@ -26,6 +26,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.activemq.artemis.tests.compatibility.base.VersionedBase;
 import org.apache.activemq.artemis.utils.FileUtil;
 import org.junit.After;
 import org.junit.Before;
@@ -47,7 +48,7 @@ import org.junit.runners.Parameterized;
  * Run->Edit Configuration->Add ArtemisMeshTest and add your properties.
  */
 @RunWith(Parameterized.class)
-public class JournalCompatibilityTest extends VersionedBaseTest {
+public class JournalCompatibilityTest extends VersionedBase {
 
    // this will ensure that all tests in this class are run twice,
    // once with "true" passed to the class' constructor and once with "false"