You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2015/06/09 19:03:27 UTC

[1/6] qpid-jms git commit: NO-JIRA: use a more typical option in the example URI

Repository: qpid-jms
Updated Branches:
  refs/heads/master c2bc1463a -> 6667bcffc


NO-JIRA: use a more typical option in the example URI


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/6667bcff
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/6667bcff
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/6667bcff

Branch: refs/heads/master
Commit: 6667bcffc975f0e0bd895c33b798cc75ce4f066a
Parents: ef37505
Author: Robert Gemmell <ro...@apache.org>
Authored: Tue Jun 9 17:56:26 2015 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Tue Jun 9 18:03:04 2015 +0100

----------------------------------------------------------------------
 qpid-jms-docs/Configuration.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/6667bcff/qpid-jms-docs/Configuration.md
----------------------------------------------------------------------
diff --git a/qpid-jms-docs/Configuration.md b/qpid-jms-docs/Configuration.md
index 661b3ab..84f22a9 100644
--- a/qpid-jms-docs/Configuration.md
+++ b/qpid-jms-docs/Configuration.md
@@ -100,7 +100,7 @@ These values control how many messages the remote peer can send to the client an
 
 When connected to a remote using plain TCP these options configure the behaviour of the underlying socket.  These options are appended to the connection URI along with the other configuration options, for example:
 
-      amqp://localhost:5672?jms.topicPrefix=foo&transport.connectTimeout=30000
+      amqp://localhost:5672?jms.clientID=foo&transport.connectTimeout=30000
 
 The complete set of TCP Transport options is listed below:
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[2/6] qpid-jms git commit: QPIDJMS-48: wire up connection option for toggling behaviour, add some integration test to verify new and received messages both pick it up

Posted by ro...@apache.org.
QPIDJMS-48: wire up connection option for toggling behaviour, add some integration test to verify new and received messages both pick it up


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/e9d752a0
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/e9d752a0
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/e9d752a0

Branch: refs/heads/master
Commit: e9d752a048ea984fc5ea750a23c539fcb7a12b65
Parents: dacdce0
Author: Robert Gemmell <ro...@apache.org>
Authored: Tue Jun 9 17:27:11 2015 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Tue Jun 9 18:03:04 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/qpid/jms/JmsConnection.java |  12 +-
 .../apache/qpid/jms/JmsConnectionFactory.java   |   9 ++
 .../apache/qpid/jms/meta/JmsConnectionInfo.java |  10 ++
 .../jms/integration/IntegrationTestFixture.java |   2 +-
 .../jms/integration/MessageIntegrationTest.java | 110 +++++++++++++++++++
 .../qpid/jms/meta/JmsConnectionInfoTest.java    |   3 +
 6 files changed, 144 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/e9d752a0/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
index f6c907a..bd8ebbd 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
@@ -845,6 +845,14 @@ public class JmsConnection implements Connection, TopicConnection, QueueConnecti
         connectionInfo.setQueuePrefix(queuePrefix);
     }
 
+    public boolean isValidatePropertyNames() {
+        return connectionInfo.isValidatePropertyNames();
+    }
+
+    public void setValidatePropertyNames(boolean validatePropertyNames) {
+        connectionInfo.setValidatePropertyNames(validatePropertyNames);
+    }
+
     public JmsPrefetchPolicy getPrefetchPolicy() {
         return prefetchPolicy;
     }
@@ -970,10 +978,12 @@ public class JmsConnection implements Connection, TopicConnection, QueueConnecti
     public void onInboundMessage(final JmsInboundMessageDispatch envelope) {
 
         JmsMessage incoming = envelope.getMessage();
-        // Ensure incoming Messages are in readonly mode.
         if (incoming != null) {
+            // Ensure incoming Messages are in readonly mode.
             incoming.setReadOnlyBody(true);
             incoming.setReadOnlyProperties(true);
+
+            incoming.setValidatePropertyNames(isValidatePropertyNames());
         }
 
         JmsMessageDispatcher dispatcher = dispatchers.get(envelope.getConsumerId());

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/e9d752a0/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
index 47a936f..dbeec40 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
@@ -62,6 +62,7 @@ public class JmsConnectionFactory extends JNDIStorable implements ConnectionFact
     private boolean localMessagePriority;
     private String queuePrefix = null;
     private String topicPrefix = null;
+    private boolean validatePropertyNames = true;
     private long sendTimeout = JmsConnectionInfo.DEFAULT_SEND_TIMEOUT;
     private long requestTimeout = JmsConnectionInfo.DEFAULT_REQUEST_TIMEOUT;
     private long closeTimeout = JmsConnectionInfo.DEFAULT_CLOSE_TIMEOUT;
@@ -424,6 +425,14 @@ public class JmsConnectionFactory extends JNDIStorable implements ConnectionFact
         this.topicPrefix = topicPrefix;
     }
 
+    public boolean isValidatePropertyNames() {
+        return validatePropertyNames;
+    }
+
+    public void setValidatePropertyNames(boolean validatePropertyNames) {
+        this.validatePropertyNames = validatePropertyNames;
+    }
+
     /**
      * Gets the currently set close timeout.
      *

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/e9d752a0/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsConnectionInfo.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsConnectionInfo.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsConnectionInfo.java
index 0f7ec3f..b7d1ae7 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsConnectionInfo.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsConnectionInfo.java
@@ -42,6 +42,7 @@ public final class JmsConnectionInfo implements JmsResource, Comparable<JmsConne
     public long closeTimeout = DEFAULT_CLOSE_TIMEOUT;
     private String queuePrefix = null;
     private String topicPrefix = null;
+    private boolean validatePropertyNames = true;
 
     public JmsConnectionInfo(JmsConnectionId connectionId) {
         if (connectionId == null) {
@@ -69,6 +70,7 @@ public final class JmsConnectionInfo implements JmsResource, Comparable<JmsConne
         copy.queuePrefix = queuePrefix;
         copy.topicPrefix = topicPrefix;
         copy.connectTimeout = connectTimeout;
+        copy.validatePropertyNames = validatePropertyNames;
     }
 
     public boolean isForceAsyncSend() {
@@ -131,6 +133,14 @@ public final class JmsConnectionInfo implements JmsResource, Comparable<JmsConne
         this.topicPrefix = topicPrefix;
     }
 
+    public boolean isValidatePropertyNames() {
+        return validatePropertyNames;
+    }
+
+    public void setValidatePropertyNames(boolean validatePropertyNames) {
+        this.validatePropertyNames = validatePropertyNames;
+    }
+
     public long getCloseTimeout() {
         return closeTimeout;
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/e9d752a0/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IntegrationTestFixture.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IntegrationTestFixture.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IntegrationTestFixture.java
index 1791cd8..fef76fe 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IntegrationTestFixture.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IntegrationTestFixture.java
@@ -50,7 +50,7 @@ public class IntegrationTestFixture {
     }
 
     Connection establishConnecton(TestAmqpPeer testPeer, String optionsString, Symbol[] serverCapabilities, Map<Symbol, Object> serverProperties) throws JMSException {
-        return establishConnecton(testPeer, false, null, serverCapabilities, serverProperties, true);
+        return establishConnecton(testPeer, false, optionsString, serverCapabilities, serverProperties, true);
     }
 
     Connection establishConnecton(TestAmqpPeer testPeer, boolean ssl, String optionsString, Symbol[] serverCapabilities, Map<Symbol, Object> serverProperties, boolean setClientId) throws JMSException {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/e9d752a0/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
index 2ab5857..1a1c426 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
@@ -30,6 +30,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.io.IOException;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -38,6 +39,7 @@ import java.util.UUID;
 
 import javax.jms.Connection;
 import javax.jms.Destination;
+import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.MessageConsumer;
 import javax.jms.MessageProducer;
@@ -211,6 +213,114 @@ public class MessageIntegrationTest extends QpidJmsTestCase
         }
     }
 
+    @Test(timeout = 5000)
+    public void testReceiveMessageWithInvalidPropertyName() throws Exception {
+        doReceiveMessageWithInvalidPropertyNameTestImpl(false);
+    }
+
+    @Test(timeout = 5000)
+    public void testReceiveMessageWithInvalidPropertyNameAndWithValidationDisabled() throws Exception {
+        doReceiveMessageWithInvalidPropertyNameTestImpl(true);
+    }
+
+    private void doReceiveMessageWithInvalidPropertyNameTestImpl(boolean disableValidation) throws JMSException, InterruptedException, Exception, IOException {
+        try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
+            Connection connection = testFixture.establishConnecton(testPeer, "?jms.validatePropertyNames=" + !disableValidation);
+            connection.start();
+
+            testPeer.expectBegin(true);
+
+            String invalidPropName = "invalid-name";
+            String value = "valueA";
+            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            Queue queue = session.createQueue("myQueue");
+
+            ApplicationPropertiesDescribedType appProperties = new ApplicationPropertiesDescribedType();
+            appProperties.setApplicationProperty(invalidPropName, value);
+
+            DescribedType amqpValueNullContent = new AmqpValueDescribedType(null);
+
+            testPeer.expectReceiverAttach();
+            testPeer.expectLinkFlowRespondWithTransfer(null, null, null, appProperties, amqpValueNullContent);
+            testPeer.expectDispositionThatIsAcceptedAndSettled();
+
+            MessageConsumer messageConsumer = session.createConsumer(queue);
+            Message receivedMessage = messageConsumer.receive(1000);
+            testPeer.waitForAllHandlersToComplete(3000);
+
+            if(!disableValidation) {
+                assertFalse("Expected property to be indicated as not existing", receivedMessage.propertyExists(invalidPropName));
+
+                try {
+                    receivedMessage.getStringProperty(invalidPropName);
+                    fail("Expected exception to be thrown");
+                } catch (IllegalArgumentException iae) {
+                    // expected
+                }
+            } else {
+                assertTrue(receivedMessage.propertyExists(invalidPropName));
+                assertEquals(value, receivedMessage.getStringProperty(invalidPropName));
+            }
+
+        }
+    }
+
+    @Test(timeout = 5000)
+    public void testSendMessageWithInvalidPropertyName() throws Exception {
+        doSendMessageWithInvalidPropertyNameTestImpl(false);
+    }
+
+    @Test(timeout = 5000)
+    public void testSendMessageWithInvalidPropertyNameAndWithValidationDisabled() throws Exception {
+        doSendMessageWithInvalidPropertyNameTestImpl(true);
+    }
+
+    private void doSendMessageWithInvalidPropertyNameTestImpl(boolean disableValidation) throws Exception {
+        try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
+            Connection connection = testFixture.establishConnecton(testPeer, "?jms.validatePropertyNames=" + !disableValidation);
+            connection.start();
+
+            testPeer.expectBegin(true);
+
+            String invalidPropName = "invalid-name";
+            String value = "valueA";
+            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            Queue queue = session.createQueue("myQueue");
+
+            testPeer.expectSenderAttach();
+
+            MessageProducer producer = session.createProducer(queue);
+
+            Message message = session.createMessage();
+
+            if (!disableValidation) {
+                try {
+                    message.setStringProperty(invalidPropName, value);
+                    fail("Expected exception to be thrown");
+                } catch (IllegalArgumentException iae) {
+                    // expected
+                }
+            } else {
+                MessageHeaderSectionMatcher headersMatcher = new MessageHeaderSectionMatcher(true);
+                MessageAnnotationsSectionMatcher msgAnnotationsMatcher = new MessageAnnotationsSectionMatcher(true);
+                MessagePropertiesSectionMatcher propsMatcher = new MessagePropertiesSectionMatcher(true);
+                ApplicationPropertiesSectionMatcher appPropsMatcher = new ApplicationPropertiesSectionMatcher(true);
+                appPropsMatcher.withEntry(invalidPropName, equalTo(value));
+
+                TransferPayloadCompositeMatcher messageMatcher = new TransferPayloadCompositeMatcher();
+                messageMatcher.setHeadersMatcher(headersMatcher);
+                messageMatcher.setMessageAnnotationsMatcher(msgAnnotationsMatcher);
+                messageMatcher.setPropertiesMatcher(propsMatcher);
+
+                testPeer.expectTransfer(messageMatcher);
+
+                producer.send(message);
+            }
+
+            testPeer.waitForAllHandlersToComplete(2000);
+        }
+    }
+
     //==== Destination Handling ====
     //==============================
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/e9d752a0/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionInfoTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionInfoTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionInfoTest.java
index 8df0949..8f4ec31 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionInfoTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionInfoTest.java
@@ -71,6 +71,8 @@ public class JmsConnectionInfoTest {
         info.setSendTimeout(150);
         info.setTopicPrefix("topic");
         info.setUsername("user");
+        boolean validatePropertyNames = ! info.isValidatePropertyNames();
+        info.setValidatePropertyNames(validatePropertyNames);
 
         JmsConnectionInfo copy = info.copy();
 
@@ -85,6 +87,7 @@ public class JmsConnectionInfoTest {
         assertEquals(150, copy.getSendTimeout());
         assertEquals("topic", copy.getTopicPrefix());
         assertEquals("user", copy.getUsername());
+        assertEquals(validatePropertyNames, copy.isValidatePropertyNames());
 
         assertEquals(info, copy);
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[5/6] qpid-jms git commit: QPIDJMS-48: update docs with new option

Posted by ro...@apache.org.
QPIDJMS-48: update docs with new option


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/ef375058
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/ef375058
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/ef375058

Branch: refs/heads/master
Commit: ef375058577c79340fd84125b6ba877bda048224
Parents: e9d752a
Author: Robert Gemmell <ro...@apache.org>
Authored: Tue Jun 9 17:55:38 2015 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Tue Jun 9 18:03:04 2015 +0100

----------------------------------------------------------------------
 qpid-jms-docs/Configuration.md | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ef375058/qpid-jms-docs/Configuration.md
----------------------------------------------------------------------
diff --git a/qpid-jms-docs/Configuration.md b/qpid-jms-docs/Configuration.md
index 983c160..661b3ab 100644
--- a/qpid-jms-docs/Configuration.md
+++ b/qpid-jms-docs/Configuration.md
@@ -80,6 +80,7 @@ The options apply to the behaviour of the JMS objects such as Connection, Sessio
 + **jms.alwaysSyncSend** Override all asynchronous send conditions and always sends every Message from a MessageProducer synchronously.
 + **jms.sendAcksAsync** Causes all Message acknowledgments to be sent asynchronously.
 + **jms.localMessagePriority** If enabled prefetched messages are reordered locally based on their given Message priority value.
++ **jms.validatePropertyNames** If message property names should be validated as valid Java identifiers. Default is true.
 + **jms.queuePrefix** Optional prefix value added to the name of any Queue created from a JMS Session.
 + **jms.topicPrefix** Optional prefix value added to the name of any Topic created from a JMS Session.
 + **jms.closeTimeout** Timeout value that controls how long the client waits on Connection close before returning. (By default the client waits 15 seconds for a normal close completion event).


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[6/6] qpid-jms git commit: QPIDJMS-48: make getPropertyNames and propertyExists consistent with the get/set property methods validation behaviour. Add initial base for toggle to escape the validation

Posted by ro...@apache.org.
QPIDJMS-48: make getPropertyNames and propertyExists consistent with the get/set property methods validation behaviour. Add initial base for toggle to escape the validation


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/dacdce01
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/dacdce01
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/dacdce01

Branch: refs/heads/master
Commit: dacdce01580485de7b0a86fe08bfd39aeae0d1b1
Parents: f1cb952
Author: Robert Gemmell <ro...@apache.org>
Authored: Tue Jun 9 12:33:27 2015 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Tue Jun 9 18:03:04 2015 +0100

----------------------------------------------------------------------
 .../org/apache/qpid/jms/message/JmsMessage.java |  42 ++++-
 .../apache/qpid/jms/message/JmsMessageTest.java | 176 ++++++++++++++++++-
 2 files changed, 202 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/dacdce01/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
index 094ef4a..82f74b2 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
@@ -43,6 +43,7 @@ public class JmsMessage implements javax.jms.Message {
     protected final JmsMessageFacade facade;
     protected boolean readOnlyBody;
     protected boolean readOnlyProperties;
+    protected boolean validatePropertyNames = true;
 
     public JmsMessage(JmsMessageFacade facade) {
         this.facade = facade;
@@ -59,6 +60,7 @@ public class JmsMessage implements javax.jms.Message {
         this.readOnlyProperties = other.readOnlyBody;
         this.acknowledgeCallback = other.acknowledgeCallback;
         this.connection = other.connection;
+        this.validatePropertyNames = other.validatePropertyNames;
     }
 
     @Override
@@ -105,6 +107,14 @@ public class JmsMessage implements javax.jms.Message {
         facade.clearBody();
     }
 
+    public boolean isValidatePropertyNames() {
+        return validatePropertyNames;
+    }
+
+    public void setValidatePropertyNames(boolean validatePropertyNames) {
+        this.validatePropertyNames = validatePropertyNames;
+    }
+
     public boolean isReadOnlyBody() {
         return this.readOnlyBody;
     }
@@ -243,13 +253,31 @@ public class JmsMessage implements javax.jms.Message {
 
     @Override
     public boolean propertyExists(String name) throws JMSException {
+        try {
+            checkPropertyNameIsValid(name);
+        } catch (IllegalArgumentException iae) {
+            return false;
+        }
+
         return JmsMessagePropertyIntercepter.propertyExists(facade, name);
     }
 
     @Override
     public Enumeration<?> getPropertyNames() throws JMSException {
         Set<String> result = new HashSet<String>();
-        result.addAll(JmsMessagePropertyIntercepter.getPropertyNames(facade, true));
+
+        Set<String> propertyNames = JmsMessagePropertyIntercepter.getPropertyNames(facade, true);
+        for (String name : propertyNames) {
+            try {
+                checkPropertyNameIsValid(name);
+            } catch (IllegalArgumentException iae) {
+                // Don't add the name
+                continue;
+            }
+
+            result.add(name);
+        }
+
         return Collections.enumeration(result);
     }
 
@@ -524,13 +552,11 @@ public class JmsMessage implements javax.jms.Message {
             throw new IllegalArgumentException("Property name must not be the empty string");
         }
 
-        checkIdentifierFormat(propertyName);
-    }
-
-    private void checkIdentifierFormat(String identifier) throws IllegalArgumentException {
-        checkIdentifierLetterAndDigitRequirements(identifier);
-        checkIdentifierIsntNullTrueFalse(identifier);
-        checkIdentifierIsntLogicOperator(identifier);
+        if (isValidatePropertyNames()) {
+            checkIdentifierLetterAndDigitRequirements(propertyName);
+            checkIdentifierIsntNullTrueFalse(propertyName);
+            checkIdentifierIsntLogicOperator(propertyName);
+        }
     }
 
     private void checkIdentifierIsntLogicOperator(String identifier) {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/dacdce01/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
index 82ede41..23d2b95 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
@@ -36,6 +36,7 @@ import org.apache.qpid.jms.JmsConnection;
 import org.apache.qpid.jms.JmsDestination;
 import org.apache.qpid.jms.JmsTopic;
 import org.apache.qpid.jms.message.facade.JmsMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFacade;
 import org.apache.qpid.jms.message.facade.test.JmsTestMessageFactory;
 import org.junit.Before;
 import org.junit.Test;
@@ -211,6 +212,8 @@ public class JmsMessageTest {
         msg1.setJMSTimestamp(this.jmsTimestamp);
         msg1.setReadOnlyProperties(true);
         msg1.setConnection(connection);
+        boolean isValidate = !msg1.isValidatePropertyNames();
+        msg1.setValidatePropertyNames(isValidate);
         JmsMessage msg2 = msg1.copy();
         assertEquals(msg1.getJMSMessageID(), msg2.getJMSMessageID());
         assertTrue(msg1.getJMSCorrelationID().equals(msg2.getJMSCorrelationID()));
@@ -223,6 +226,7 @@ public class JmsMessageTest {
         assertEquals(msg1.getJMSPriority(), msg2.getJMSPriority());
         assertEquals(msg1.getJMSTimestamp(), msg2.getJMSTimestamp());
         assertEquals(msg1.getConnection(), msg2.getConnection());
+        assertEquals(msg1.isValidatePropertyNames(), msg2.isValidatePropertyNames());
 
         LOG.info("Message is:  " + msg1);
     }
@@ -364,6 +368,34 @@ public class JmsMessageTest {
     }
 
     @Test
+    public void testPropertyExistsWithInvalidName() throws JMSException {
+        doPropertyExistsWithInvalidNameTestImpl(false);
+    }
+
+    private void doPropertyExistsWithInvalidNameTestImpl(boolean disableValidation) throws JMSException {
+        String invalidPropName = "my-invalid-property";
+        String valueA = "valueA";
+
+        JmsMessage msg = factory.createMessage();
+        if(disableValidation) {
+            msg.setValidatePropertyNames(false);
+        }
+
+        assertTrue(msg.getFacade() instanceof JmsTestMessageFacade);
+        JmsTestMessageFacade testFacade = (JmsTestMessageFacade) msg.getFacade();
+
+        assertFalse(testFacade.propertyExists(invalidPropName));
+        testFacade.setProperty(invalidPropName, valueA);
+        assertTrue(testFacade.propertyExists(invalidPropName));
+
+        if(!disableValidation) {
+            assertFalse("Property should be indicated to not exist", msg.propertyExists(invalidPropName));
+        } else {
+            assertTrue("Property should be indicated to exist", msg.propertyExists(invalidPropName));
+        }
+    }
+
+    @Test
     public void testGetBooleanProperty() throws JMSException {
         JmsMessage msg = factory.createMessage();
         String name = "booleanProperty";
@@ -437,7 +469,39 @@ public class JmsMessageTest {
     }
 
     @Test
-    @SuppressWarnings("rawtypes")
+    public void testGetObjectPropertyWithInvalidNameThrowsIAEByDefault() throws JMSException {
+        doGetObjectPropertyNameValidationTestImpl(false);
+    }
+
+    private void doGetObjectPropertyNameValidationTestImpl(boolean disableValidation) throws JMSException {
+        String invalidPropName1 = "my-invalid-property";
+        String valueA = "valueA";
+
+        JmsMessage msg = factory.createMessage();
+        if(disableValidation) {
+            msg.setValidatePropertyNames(false);
+        }
+
+        assertTrue(msg.getFacade() instanceof JmsTestMessageFacade);
+        JmsTestMessageFacade testFacade = (JmsTestMessageFacade) msg.getFacade();
+
+        assertNull(testFacade.getProperty(invalidPropName1));
+        testFacade.setProperty(invalidPropName1, valueA);
+        assertEquals(valueA, testFacade.getProperty(invalidPropName1));
+
+        if (!disableValidation) {
+            try {
+                msg.getObjectProperty(invalidPropName1);
+                fail("expected rejection of identifier");
+            } catch (IllegalArgumentException iae) {
+                //expected
+            }
+        } else {
+            assertEquals(valueA, msg.getObjectProperty(invalidPropName1));
+        }
+    }
+
+    @Test
     public void testGetPropertyNames() throws JMSException {
         JmsMessage msg = factory.createMessage();
         String propName = "floatProperty";
@@ -449,7 +513,7 @@ public class JmsMessageTest {
         boolean propNameFound = false;
         boolean jmsxNameFound = false;
         boolean headerNameFound1 = false;
-        for (Enumeration iter = msg.getPropertyNames(); iter.hasMoreElements();) {
+        for (Enumeration<?> iter = msg.getPropertyNames(); iter.hasMoreElements();) {
             Object element = iter.nextElement();
             propNameFound |= element.equals(propName);
             jmsxNameFound |= element.equals(jmsxName);
@@ -462,6 +526,60 @@ public class JmsMessageTest {
     }
 
     @Test
+    public void testGetPropertyNamesReturnsValidNamesByDefault() throws JMSException {
+        doGetPropertyNamesResultFilteringTestImpl(false);
+    }
+
+    private void doGetPropertyNamesResultFilteringTestImpl(boolean disableValidation) throws JMSException {
+        String invalidPropName1 = "my-invalid-property1";
+        String invalidPropName2 = "my.invalid.property2";
+        String validPropName = "my_valid_property";
+
+        String valueA = "valueA";
+        String valueB = "valueB";
+        String valueC = "valueC";
+
+        JmsMessage msg = factory.createMessage();
+        if(disableValidation) {
+            msg.setValidatePropertyNames(false);
+        }
+
+        assertTrue(msg.getFacade() instanceof JmsTestMessageFacade);
+        JmsTestMessageFacade testFacade = (JmsTestMessageFacade) msg.getFacade();
+
+        assertNull(testFacade.getProperty(invalidPropName1));
+        assertNull(testFacade.getProperty(invalidPropName2));
+        assertNull(testFacade.getProperty(validPropName));
+
+        testFacade.setProperty(invalidPropName1, valueA);
+        testFacade.setProperty(invalidPropName2, valueB);
+        testFacade.setProperty(validPropName, valueC);
+
+        assertEquals(valueA, testFacade.getProperty(invalidPropName1));
+        assertEquals(valueB, testFacade.getProperty(invalidPropName2));
+        assertEquals(valueC, testFacade.getProperty(validPropName));
+
+        boolean invalidPropName1Found = false;
+        boolean invalidPropName2Found = false;
+        boolean validPropNameFound = false;
+        for (Enumeration<?> iter = msg.getPropertyNames(); iter.hasMoreElements();) {
+            Object element = iter.nextElement();
+            invalidPropName1Found |= element.equals(invalidPropName1);
+            invalidPropName2Found |= element.equals(invalidPropName2);
+            validPropNameFound |= element.equals(validPropName);
+        }
+
+        if (!disableValidation) {
+            assertFalse("Invalid prop name 1 was found", invalidPropName1Found);
+            assertFalse("Invalid prop name 2 was found", invalidPropName2Found);
+        } else {
+            assertTrue("Invalid prop name 1 was not found", invalidPropName1Found);
+            assertTrue("Invalid prop name 2 was not found", invalidPropName2Found);
+        }
+        assertTrue("valid prop name was not found", validPropNameFound);
+    }
+
+    @Test
     @SuppressWarnings("rawtypes")
     public void testGetAllPropertyNames() throws JMSException {
         JmsMessage msg = factory.createMessage();
@@ -1108,12 +1226,32 @@ public class JmsMessageTest {
      */
     @Test
     public void testSetPropertyWithNonLetterOrDigitCharacterThrowsIAE() throws Exception {
-        String propertyName = "name-invalid";
-        JmsMessage testMessage = factory.createMessage();
-        try {
-            testMessage.setObjectProperty(propertyName, "value");
-            fail("expected rejection of identifier starting with non-letter character");
-        } catch (IllegalArgumentException iae) {
+        doSetObjectPropertyWithNonLetterOrDigitCharacterTestImpl(false);
+    }
+
+    private void doSetObjectPropertyWithNonLetterOrDigitCharacterTestImpl(boolean disableValidation) throws JMSException {
+        String invalidPropertyName = "name-invalid";
+        String valueA = "value";
+
+        JmsMessage msg = factory.createMessage();
+        if(disableValidation) {
+            msg.setValidatePropertyNames(false);
+        }
+
+        assertTrue(msg.getFacade() instanceof JmsTestMessageFacade);
+        JmsTestMessageFacade testFacade = (JmsTestMessageFacade) msg.getFacade();
+
+        if (!disableValidation) {
+            try {
+                msg.setObjectProperty(invalidPropertyName, valueA);
+                fail("expected rejection of identifier starting with non-letter character");
+            } catch (IllegalArgumentException iae) {
+                // Expected
+            }
+        } else {
+            msg.setObjectProperty(invalidPropertyName, valueA);
+
+            assertEquals(valueA, testFacade.getProperty(invalidPropertyName));
         }
     }
 
@@ -1290,6 +1428,28 @@ public class JmsMessageTest {
         }
     }
 
+    //---------- Test disabling Message Properties name validation -------------//
+
+    @Test
+    public void testGetPropertyNamesReturnsAllNamesWithValidationDisabled() throws JMSException {
+        doGetPropertyNamesResultFilteringTestImpl(true);
+    }
+
+    @Test
+    public void testGetObjectPropertyWithInvalidNameAndValidationDisabled() throws JMSException {
+        doGetObjectPropertyNameValidationTestImpl(true);
+    }
+
+    @Test
+    public void testSetObjectPropertyWithInvalidNameAndValidationDisabled() throws Exception {
+        doSetObjectPropertyWithNonLetterOrDigitCharacterTestImpl(true);
+    }
+
+    @Test
+    public void testPropertyExistsWithInvalidNameAndValidationDisabled() throws JMSException {
+        doPropertyExistsWithInvalidNameTestImpl(true);
+    }
+
     //--------- Test support method ------------------------------------------//
 
     private void assertGetMissingPropertyThrowsNumberFormatException(JmsMessage testMessage, String propertyName, Class<?> clazz) throws JMSException {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[3/6] qpid-jms git commit: NO-JIRA: rename test message facades etc for clarity

Posted by ro...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsTextMessage.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsTextMessage.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsTextMessage.java
index 1fd2c11..2da2397 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsTextMessage.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsTextMessage.java
@@ -20,7 +20,7 @@ import javax.jms.JMSException;
 import javax.jms.TextMessage;
 
 import org.apache.qpid.jms.message.JmsTextMessage;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultTextMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestTextMessageFacade;
 
 /**
  * Foreign JMS TextMessage class
@@ -30,7 +30,7 @@ public class ForeignJmsTextMessage extends ForeignJmsMessage implements TextMess
     private final JmsTextMessage message;
 
     public ForeignJmsTextMessage() {
-        super(new JmsTextMessage(new JmsDefaultTextMessageFacade()));
+        super(new JmsTextMessage(new JmsTestTextMessageFacade()));
         this.message = (JmsTextMessage) super.message;
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/mock/MockProvider.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/mock/MockProvider.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/mock/MockProvider.java
index 66521d2..6f5e279 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/mock/MockProvider.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/mock/MockProvider.java
@@ -32,7 +32,7 @@ import javax.jms.JMSException;
 import org.apache.qpid.jms.message.JmsInboundMessageDispatch;
 import org.apache.qpid.jms.message.JmsMessageFactory;
 import org.apache.qpid.jms.message.JmsOutboundMessageDispatch;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFactory;
 import org.apache.qpid.jms.meta.JmsConnectionInfo;
 import org.apache.qpid.jms.meta.JmsConsumerId;
 import org.apache.qpid.jms.meta.JmsResource;
@@ -57,7 +57,7 @@ public class MockProvider implements Provider {
 
     private static final AtomicInteger PROVIDER_SEQUENCE = new AtomicInteger();
 
-    private final JmsMessageFactory messageFactory = new JmsDefaultMessageFactory();
+    private final JmsMessageFactory messageFactory = new JmsTestMessageFactory();
     private final MockProviderStats stats;
     private final URI remoteURI;
     private final MockProviderConfiguration configuration;

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/FifoMessageQueueTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/FifoMessageQueueTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/FifoMessageQueueTest.java
index 3a7b656..fa54050 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/FifoMessageQueueTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/FifoMessageQueueTest.java
@@ -32,7 +32,7 @@ import javax.jms.JMSException;
 
 import org.apache.qpid.jms.message.JmsInboundMessageDispatch;
 import org.apache.qpid.jms.message.JmsMessage;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFacade;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -302,7 +302,7 @@ public class FifoMessageQueueTest {
     }
 
     private JmsMessage createMessage(int priority) {
-        JmsDefaultMessageFacade facade = new JmsDefaultMessageFacade();
+        JmsTestMessageFacade facade = new JmsTestMessageFacade();
         facade.setMessageId(messageId.generateId());
         facade.setPriority((byte) priority);
         JmsMessage message = new JmsMessage(facade);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PriorityMessageQueueTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PriorityMessageQueueTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PriorityMessageQueueTest.java
index ad4d4f3..325cf8b 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PriorityMessageQueueTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PriorityMessageQueueTest.java
@@ -32,7 +32,7 @@ import javax.jms.JMSException;
 
 import org.apache.qpid.jms.message.JmsInboundMessageDispatch;
 import org.apache.qpid.jms.message.JmsMessage;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFacade;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -372,7 +372,7 @@ public class PriorityMessageQueueTest {
     }
 
     private JmsMessage createMessage(int priority) {
-        JmsDefaultMessageFacade facade = new JmsDefaultMessageFacade();
+        JmsTestMessageFacade facade = new JmsTestMessageFacade();
         facade.setMessageId(messageId.generateId());
         facade.setPriority((byte) priority);
         JmsMessage message = new JmsMessage(facade);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[4/6] qpid-jms git commit: NO-JIRA: rename test message facades etc for clarity

Posted by ro...@apache.org.
NO-JIRA: rename test message facades etc for clarity


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/f1cb952d
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/f1cb952d
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/f1cb952d

Branch: refs/heads/master
Commit: f1cb952db1208774e431f5be0051dd614da3ab76
Parents: c2bc146
Author: Robert Gemmell <ro...@apache.org>
Authored: Tue Jun 9 10:49:37 2015 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Tue Jun 9 18:03:04 2015 +0100

----------------------------------------------------------------------
 .../qpid/jms/message/JmsBytesMessageTest.java   |  20 +-
 .../qpid/jms/message/JmsMapMessageTest.java     |  14 +-
 .../apache/qpid/jms/message/JmsMessageTest.java |   4 +-
 .../message/JmsMessageTransformationTest.java   |  12 +-
 .../qpid/jms/message/JmsObjectMessageTest.java  |  18 +-
 .../qpid/jms/message/JmsStreamMessageTest.java  |   8 +-
 .../qpid/jms/message/JmsTextMessageTest.java    |   4 +-
 .../defaults/JmsDefaultBytesMessageFacade.java  | 136 --------
 .../defaults/JmsDefaultMapMessageFacade.java    |  75 -----
 .../defaults/JmsDefaultMessageFacade.java       | 329 -------------------
 .../defaults/JmsDefaultMessageFactory.java      |  90 -----
 .../defaults/JmsDefaultObjectMessageFacade.java |  99 ------
 .../defaults/JmsDefaultStreamMessageFacade.java |  85 -----
 .../defaults/JmsDefaultTextMessageFacade.java   |  57 ----
 .../facade/test/JmsTestBytesMessageFacade.java  | 136 ++++++++
 .../facade/test/JmsTestMapMessageFacade.java    |  75 +++++
 .../facade/test/JmsTestMessageFacade.java       | 329 +++++++++++++++++++
 .../facade/test/JmsTestMessageFactory.java      |  90 +++++
 .../facade/test/JmsTestObjectMessageFacade.java |  99 ++++++
 .../facade/test/JmsTestStreamMessageFacade.java |  85 +++++
 .../facade/test/JmsTestTextMessageFacade.java   |  57 ++++
 .../message/foreign/ForeignJmsBytesMessage.java |   4 +-
 .../message/foreign/ForeignJmsMapMessage.java   |   4 +-
 .../jms/message/foreign/ForeignJmsMessage.java  |   4 +-
 .../foreign/ForeignJmsObjectMessage.java        |   4 +-
 .../foreign/ForeignJmsStreamMessage.java        |   4 +-
 .../message/foreign/ForeignJmsTextMessage.java  |   4 +-
 .../qpid/jms/provider/mock/MockProvider.java    |   4 +-
 .../qpid/jms/util/FifoMessageQueueTest.java     |   4 +-
 .../qpid/jms/util/PriorityMessageQueueTest.java |   4 +-
 30 files changed, 929 insertions(+), 929 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java
index 0206a68..df71e28 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java
@@ -35,8 +35,8 @@ import javax.jms.MessageNotReadableException;
 import javax.jms.MessageNotWriteableException;
 
 import org.apache.qpid.jms.message.facade.JmsBytesMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultBytesMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
+import org.apache.qpid.jms.message.facade.test.JmsTestBytesMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFactory;
 import org.junit.Test;
 import org.mockito.Mockito;
 
@@ -47,7 +47,7 @@ public class JmsBytesMessageTest {
 
     private static final int END_OF_STREAM = -1;
 
-    private final JmsMessageFactory factory = new JmsDefaultMessageFactory();
+    private final JmsMessageFactory factory = new JmsTestMessageFactory();
 
     @Test
     public void testToString() throws Exception {
@@ -89,7 +89,7 @@ public class JmsBytesMessageTest {
     @Test
     public void testReadBytesUsingReceivedMessageWithBodyReturnsBytes() throws Exception {
         byte[] content = "myBytesData".getBytes();
-        JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content);
+        JmsTestBytesMessageFacade facade = new JmsTestBytesMessageFacade(content);
 
         JmsBytesMessage bytesMessage = new JmsBytesMessage(facade);
         bytesMessage.onDispatch();
@@ -113,7 +113,7 @@ public class JmsBytesMessageTest {
     @Test(expected = MessageNotWriteableException.class)
     public void testReceivedBytesMessageThrowsMessageNotWriteableExceptionOnWriteBytes() throws Exception {
         byte[] content = "myBytesData".getBytes();
-        JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content);
+        JmsTestBytesMessageFacade facade = new JmsTestBytesMessageFacade(content);
 
         JmsBytesMessage bytesMessage = new JmsBytesMessage(facade);
         bytesMessage.onDispatch();
@@ -138,7 +138,7 @@ public class JmsBytesMessageTest {
     @Test
     public void testClearBodyOnReceivedBytesMessageMakesMessageWritable() throws Exception {
         byte[] content = "myBytesData".getBytes();
-        JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content);
+        JmsTestBytesMessageFacade facade = new JmsTestBytesMessageFacade(content);
 
         JmsBytesMessage bytesMessage = new JmsBytesMessage(facade);
         bytesMessage.onDispatch();
@@ -154,7 +154,7 @@ public class JmsBytesMessageTest {
     @Test
     public void testClearBodyOnReceivedBytesMessageClearsFacadeInputStream() throws Exception {
         byte[] content = "myBytesData".getBytes();
-        JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content);
+        JmsTestBytesMessageFacade facade = new JmsTestBytesMessageFacade(content);
 
         JmsBytesMessage bytesMessage = new JmsBytesMessage(facade);
         bytesMessage.onDispatch();
@@ -173,7 +173,7 @@ public class JmsBytesMessageTest {
     @Test
     public void testGetBodyLengthOnClearedReceivedMessageThrowsMessageNotReadableException() throws Exception {
         byte[] content = "myBytesData".getBytes();
-        JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content);
+        JmsTestBytesMessageFacade facade = new JmsTestBytesMessageFacade(content);
 
         JmsBytesMessage bytesMessage = new JmsBytesMessage(facade);
         bytesMessage.onDispatch();
@@ -195,7 +195,7 @@ public class JmsBytesMessageTest {
     @Test
     public void testResetOnReceivedBytesMessageResetsMarker() throws Exception {
         byte[] content = "myBytesData".getBytes();
-        JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content);
+        JmsTestBytesMessageFacade facade = new JmsTestBytesMessageFacade(content);
 
         JmsBytesMessage bytesMessage = new JmsBytesMessage(facade);
         bytesMessage.onDispatch();
@@ -221,7 +221,7 @@ public class JmsBytesMessageTest {
     @Test
     public void testResetOnNewlyPopulatedBytesMessageResetsMarkerAndMakesReadable() throws Exception {
         byte[] content = "myBytesData".getBytes();
-        JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content);
+        JmsTestBytesMessageFacade facade = new JmsTestBytesMessageFacade(content);
 
         JmsBytesMessage bytesMessage = new JmsBytesMessage(facade);
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMapMessageTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMapMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMapMessageTest.java
index e94dbc3..bbfc983 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMapMessageTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMapMessageTest.java
@@ -32,8 +32,8 @@ import javax.jms.MessageFormatException;
 import javax.jms.MessageNotWriteableException;
 
 import org.apache.qpid.jms.message.facade.JmsMapMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMapMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
+import org.apache.qpid.jms.message.facade.test.JmsTestMapMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFactory;
 import org.junit.Test;
 
 /**
@@ -42,7 +42,7 @@ import org.junit.Test;
  */
 public class JmsMapMessageTest {
 
-    private final JmsMessageFactory factory = new JmsDefaultMessageFactory();
+    private final JmsMessageFactory factory = new JmsTestMessageFactory();
 
     // ======= general =========
 
@@ -66,7 +66,7 @@ public class JmsMapMessageTest {
      */
     @Test
     public void testGetMapNamesUsingReceivedMessageReturnsExpectedEnumeration() throws Exception {
-        JmsMapMessageFacade facade = new JmsDefaultMapMessageFacade();
+        JmsMapMessageFacade facade = new JmsTestMapMessageFacade();
         String myKey1 = "key1";
         String myKey2 = "key2";
         facade.put(myKey1, "value1");
@@ -114,7 +114,7 @@ public class JmsMapMessageTest {
      */
     @Test
     public void testReceivedMessageIsReadOnlyAndThrowsMNWE() throws Exception {
-        JmsMapMessageFacade facade = new JmsDefaultMapMessageFacade();
+        JmsMapMessageFacade facade = new JmsTestMapMessageFacade();
         String myKey1 = "key1";
         facade.put(myKey1, "value1");
         JmsMapMessage mapMessage = new JmsMapMessage(facade);
@@ -133,7 +133,7 @@ public class JmsMapMessageTest {
      */
     @Test
     public void testClearBodyMakesReceivedMessageWritable() throws Exception {
-        JmsMapMessageFacade facade = new JmsDefaultMapMessageFacade();
+        JmsMapMessageFacade facade = new JmsTestMapMessageFacade();
         String myKey1 = "key1";
         facade.put(myKey1, "value1");
 
@@ -152,7 +152,7 @@ public class JmsMapMessageTest {
      */
     @Test
     public void testClearBodyClearsUnderlyingMessageMap() throws Exception {
-        JmsMapMessageFacade facade = new JmsDefaultMapMessageFacade();
+        JmsMapMessageFacade facade = new JmsTestMapMessageFacade();
         String myKey1 = "key1";
         facade.put(myKey1, "value1");
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
index fe4ea49..82ede41 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
@@ -36,7 +36,7 @@ import org.apache.qpid.jms.JmsConnection;
 import org.apache.qpid.jms.JmsDestination;
 import org.apache.qpid.jms.JmsTopic;
 import org.apache.qpid.jms.message.facade.JmsMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFactory;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
@@ -47,7 +47,7 @@ public class JmsMessageTest {
 
     private static final Logger LOG = LoggerFactory.getLogger(JmsMessageTest.class);
 
-    private final JmsMessageFactory factory = new JmsDefaultMessageFactory();
+    private final JmsMessageFactory factory = new JmsTestMessageFactory();
 
     protected boolean readOnlyMessage;
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTransformationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTransformationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTransformationTest.java
index 7fe8a80..4771d7f 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTransformationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTransformationTest.java
@@ -37,8 +37,8 @@ import org.apache.qpid.jms.JmsConnection;
 import org.apache.qpid.jms.JmsDestination;
 import org.apache.qpid.jms.JmsQueue;
 import org.apache.qpid.jms.JmsTopic;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFactory;
 import org.apache.qpid.jms.message.foreign.ForeignJmsBytesMessage;
 import org.apache.qpid.jms.message.foreign.ForeignJmsMapMessage;
 import org.apache.qpid.jms.message.foreign.ForeignJmsMessage;
@@ -64,7 +64,7 @@ public class JmsMessageTransformationTest {
 
     @Test
     public void testTransformJmsMessageCopies() throws JMSException {
-        JmsMessage source = new JmsMessage(new JmsDefaultMessageFacade());
+        JmsMessage source = new JmsMessage(new JmsTestMessageFacade());
 
         source.setJMSMessageID("ID:CONNECTION:1:1");
 
@@ -278,8 +278,8 @@ public class JmsMessageTransformationTest {
 
     @Test
     public void testJMSMessagePropertiesAreCopied() throws JMSException {
-        JmsMessage source = new JmsMessage(new JmsDefaultMessageFacade());
-        JmsMessage target = new JmsMessage(new JmsDefaultMessageFacade());
+        JmsMessage source = new JmsMessage(new JmsTestMessageFacade());
+        JmsMessage target = new JmsMessage(new JmsTestMessageFacade());
 
         source.setJMSType("text/test");
 
@@ -441,7 +441,7 @@ public class JmsMessageTransformationTest {
     private JmsConnection createMockJmsConnection() {
         JmsConnection connection = Mockito.mock(JmsConnection.class);
 
-        Mockito.when(connection.getMessageFactory()).thenReturn(new JmsDefaultMessageFactory());
+        Mockito.when(connection.getMessageFactory()).thenReturn(new JmsTestMessageFactory());
 
         return connection;
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsObjectMessageTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsObjectMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsObjectMessageTest.java
index 305aa5b..720aaaa 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsObjectMessageTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsObjectMessageTest.java
@@ -37,8 +37,8 @@ import javax.jms.MessageNotWriteableException;
 import javax.jms.ObjectMessage;
 
 import org.apache.qpid.jms.message.facade.JmsObjectMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultObjectMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFactory;
+import org.apache.qpid.jms.message.facade.test.JmsTestObjectMessageFacade;
 import org.junit.Test;
 import org.mockito.Mockito;
 
@@ -47,7 +47,7 @@ import org.mockito.Mockito;
  */
 public class JmsObjectMessageTest {
 
-    private final JmsMessageFactory factory = new JmsDefaultMessageFactory();
+    private final JmsMessageFactory factory = new JmsTestMessageFactory();
 
     /**
      * Test that attempting to write bytes to a received message (without calling {@link ObjectMessage#clearBody()} first)
@@ -56,7 +56,7 @@ public class JmsObjectMessageTest {
     @Test
     public void testReceivedObjectMessageThrowsMessageNotWriteableExceptionOnSetObject() throws Exception {
         String content = "myStringContent";
-        JmsObjectMessageFacade facade = new JmsDefaultObjectMessageFacade();
+        JmsObjectMessageFacade facade = new JmsTestObjectMessageFacade();
         facade.setObject(content);
         JmsObjectMessage objectMessage = new JmsObjectMessage(facade);
         objectMessage.onDispatch();
@@ -75,7 +75,7 @@ public class JmsObjectMessageTest {
     @Test
     public void testToString() throws Exception {
         String content = "myStringContent";
-        JmsObjectMessageFacade facade = new JmsDefaultObjectMessageFacade();
+        JmsObjectMessageFacade facade = new JmsTestObjectMessageFacade();
         facade.setObject(content);
         JmsObjectMessage objectMessage = new JmsObjectMessage(facade);
         objectMessage.onDispatch();
@@ -90,7 +90,7 @@ public class JmsObjectMessageTest {
     @Test
     public void testClearBodyOnReceivedObjectMessageMakesMessageWritable() throws Exception {
         String content = "myStringContent";
-        JmsObjectMessageFacade facade = new JmsDefaultObjectMessageFacade();
+        JmsObjectMessageFacade facade = new JmsTestObjectMessageFacade();
         facade.setObject(content);
         JmsObjectMessage objectMessage = new JmsObjectMessage(facade);
         objectMessage.onDispatch();
@@ -107,7 +107,7 @@ public class JmsObjectMessageTest {
     @Test
     public void testClearBodyOnReceivedObjectMessageClearsUnderlyingMessageBody() throws Exception {
         String content = "myStringContent";
-        JmsDefaultObjectMessageFacade facade = new JmsDefaultObjectMessageFacade();
+        JmsTestObjectMessageFacade facade = new JmsTestObjectMessageFacade();
         facade.setObject(content);
         JmsObjectMessage objectMessage = new JmsObjectMessage(facade);
         objectMessage.onDispatch();
@@ -132,7 +132,7 @@ public class JmsObjectMessageTest {
         Map<String,String> origMap = new HashMap<String,String>();
         origMap.put("key1", "value1");
 
-        JmsDefaultObjectMessageFacade facade = new JmsDefaultObjectMessageFacade();
+        JmsTestObjectMessageFacade facade = new JmsTestObjectMessageFacade();
         facade.setObject((Serializable) origMap);
         JmsObjectMessage objectMessage = new JmsObjectMessage(facade);
         objectMessage.onDispatch();
@@ -193,7 +193,7 @@ public class JmsObjectMessageTest {
      */
     @Test(expected=MessageFormatException.class)
     public void testGetObjectWithFailedDeserialisationThrowsJMSMFE() throws Exception {
-        JmsObjectMessageFacade facade = Mockito.mock(JmsDefaultObjectMessageFacade.class);
+        JmsObjectMessageFacade facade = Mockito.mock(JmsTestObjectMessageFacade.class);
         Mockito.when(facade.getObject()).thenThrow(new ClassCastException("Failed to get object"));
         JmsObjectMessage objectMessage = new JmsObjectMessage(facade);
         objectMessage.getObject();

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsStreamMessageTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsStreamMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsStreamMessageTest.java
index d9e4106..f1c9efe 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsStreamMessageTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsStreamMessageTest.java
@@ -36,13 +36,13 @@ import javax.jms.MessageNotWriteableException;
 import javax.jms.StreamMessage;
 
 import org.apache.qpid.jms.message.facade.JmsStreamMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultStreamMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFactory;
+import org.apache.qpid.jms.message.facade.test.JmsTestStreamMessageFacade;
 import org.junit.Test;
 
 public class JmsStreamMessageTest {
 
-    private final JmsMessageFactory factory = new JmsDefaultMessageFactory();
+    private final JmsMessageFactory factory = new JmsTestMessageFactory();
 
     // ======= general =========
 
@@ -1065,7 +1065,7 @@ public class JmsStreamMessageTest {
 
     @Test
     public void testReadObjectGetsInvalidObjectThrowsMFE() throws Exception {
-        JmsStreamMessageFacade facade = new JmsDefaultStreamMessageFacade();
+        JmsStreamMessageFacade facade = new JmsTestStreamMessageFacade();
         JmsStreamMessage streamMessage = new JmsStreamMessage(facade);
         facade.put(new URI("test://test"));
         streamMessage.reset();

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsTextMessageTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsTextMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsTextMessageTest.java
index ec71189..b9b35f8 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsTextMessageTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsTextMessageTest.java
@@ -28,7 +28,7 @@ import javax.jms.JMSException;
 import javax.jms.MessageNotReadableException;
 import javax.jms.MessageNotWriteableException;
 
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFactory;
 import org.junit.Test;
 
 /**
@@ -36,7 +36,7 @@ import org.junit.Test;
  */
 public class JmsTextMessageTest {
 
-    private final JmsMessageFactory factory = new JmsDefaultMessageFactory();
+    private final JmsMessageFactory factory = new JmsTestMessageFactory();
 
     @Test
     public void testShallowCopy() throws JMSException {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java
deleted file mode 100644
index 2ff009f..0000000
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java
+++ /dev/null
@@ -1,136 +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.qpid.jms.message.facade.defaults;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufInputStream;
-import io.netty.buffer.ByteBufOutputStream;
-import io.netty.buffer.Unpooled;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import javax.jms.IllegalStateException;
-import javax.jms.JMSException;
-
-import org.apache.qpid.jms.message.facade.JmsBytesMessageFacade;
-
-/**
- * A default implementation of the JmsBytesMessageFacade that simply holds a raw Buffer
- */
-public final class JmsDefaultBytesMessageFacade extends JmsDefaultMessageFacade implements JmsBytesMessageFacade {
-
-    private ByteBuf content = Unpooled.EMPTY_BUFFER;
-    private ByteBufOutputStream bytesOut;
-    private ByteBufInputStream bytesIn;
-
-    public JmsDefaultBytesMessageFacade() {
-    }
-
-    public JmsDefaultBytesMessageFacade(byte[] content) {
-        this.content = Unpooled.copiedBuffer(content);
-    }
-
-    @Override
-    public JmsMsgType getMsgType() {
-        return JmsMsgType.BYTES;
-    }
-
-    @Override
-    public JmsDefaultBytesMessageFacade copy() {
-        reset();
-        JmsDefaultBytesMessageFacade copy = new JmsDefaultBytesMessageFacade();
-        copyInto(copy);
-        if (this.content != null) {
-            copy.content = this.content.copy();
-        }
-
-        return copy;
-    }
-
-    @Override
-    public void clearBody() {
-        if (bytesIn != null) {
-            try {
-                bytesIn.close();
-            } catch (IOException e) {
-            }
-            bytesIn = null;
-        }
-        if (bytesOut != null) {
-            try {
-                bytesOut.close();
-            } catch (IOException e) {
-            }
-            bytesOut = null;
-        }
-
-        content = Unpooled.EMPTY_BUFFER;
-    }
-
-    @Override
-    public InputStream getInputStream() throws JMSException {
-        if (bytesOut != null) {
-            throw new IllegalStateException("Body is being written to, cannot perform a read.");
-        }
-
-        if (bytesIn == null) {
-            // Duplicate the content buffer to allow for getBodyLength() validity.
-            bytesIn = new ByteBufInputStream(content.duplicate());
-        }
-
-        return bytesIn;
-    }
-
-    @Override
-    public OutputStream getOutputStream() throws JMSException {
-        if (bytesIn != null) {
-            throw new IllegalStateException("Body is being read from, cannot perform a write.");
-        }
-
-        if (bytesOut == null) {
-            bytesOut = new ByteBufOutputStream(Unpooled.buffer());
-            content = Unpooled.EMPTY_BUFFER;
-        }
-
-        return bytesOut;
-    }
-
-    @Override
-    public void reset() {
-        if (bytesOut != null) {
-            content = bytesOut.buffer();
-            try {
-                bytesOut.close();
-            } catch (IOException e) {
-            }
-            bytesOut = null;
-        } else if (bytesIn != null) {
-            try {
-                bytesIn.close();
-            } catch (IOException e) {
-            }
-            bytesIn = null;
-        }
-    }
-
-    @Override
-    public int getBodyLength() {
-        return content.readableBytes();
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java
deleted file mode 100644
index 33da603..0000000
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java
+++ /dev/null
@@ -1,75 +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.qpid.jms.message.facade.defaults;
-
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.qpid.jms.message.facade.JmsMapMessageFacade;
-
-/**
- * Simple implementation of the JmsMapMessageFacade used for testing.
- */
-public class JmsDefaultMapMessageFacade extends JmsDefaultMessageFacade implements JmsMapMessageFacade {
-
-    protected final Map<String, Object> map = new HashMap<String, Object>();
-
-    @Override
-    public JmsMsgType getMsgType() {
-        return JmsMsgType.MAP;
-    }
-
-    @Override
-    public JmsDefaultMapMessageFacade copy() {
-        JmsDefaultMapMessageFacade copy = new JmsDefaultMapMessageFacade();
-        copyInto(copy);
-        copy.map.putAll(map);
-        return copy;
-    }
-
-    @Override
-    public Enumeration<String> getMapNames() {
-        return Collections.enumeration(map.keySet());
-    }
-
-    @Override
-    public boolean itemExists(String key) {
-        return map.containsKey(key);
-    }
-
-    @Override
-    public Object get(String key) {
-        return map.get(key);
-    }
-
-    @Override
-    public void put(String key, Object value) {
-        map.put(key, value);
-    }
-
-    @Override
-    public Object remove(String key) {
-        return map.remove(key);
-    }
-
-    @Override
-    public void clearBody() {
-        map.clear();
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
deleted file mode 100644
index c384b25..0000000
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
+++ /dev/null
@@ -1,329 +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.qpid.jms.message.facade.defaults;
-
-import java.nio.charset.Charset;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import javax.jms.JMSException;
-
-import org.apache.qpid.jms.JmsDestination;
-import org.apache.qpid.jms.message.facade.JmsMessageFacade;
-
-/**
- * A default implementation of the JmsMessageFaceade that provides a generic
- * message instance which can be used instead of implemented in Provider specific
- * version that maps to a Provider message object.
- */
-public class JmsDefaultMessageFacade implements JmsMessageFacade {
-
-    private static final Charset UTF8 = Charset.forName("UTF-8");
-
-    public static enum JmsMsgType {
-        MESSAGE("jms/message"),
-        BYTES("jms/bytes-message"),
-        MAP("jms/map-message"),
-        OBJECT("jms/object-message"),
-        STREAM("jms/stream-message"),
-        TEXT("jms/text-message"),
-        TEXT_NULL("jms/text-message-null");
-
-        public final String buffer = new String(this.name());
-        public final String mime;
-
-        JmsMsgType(String mime) {
-            this.mime = mime;
-        }
-    }
-
-    protected Map<String, Object> properties = new HashMap<String, Object>();
-
-    protected int priority = javax.jms.Message.DEFAULT_PRIORITY;
-    protected String groupId;
-    protected int groupSequence;
-    protected String messageId;
-    protected long expiration;
-    protected long timestamp;
-    protected String correlationId;
-    protected boolean persistent;
-    protected int redeliveryCount;
-    protected String type;
-    protected JmsDestination destination;
-    protected JmsDestination replyTo;
-    protected String userId;
-
-    public JmsMsgType getMsgType() {
-        return JmsMsgType.MESSAGE;
-    }
-
-    @Override
-    public JmsDefaultMessageFacade copy() {
-        JmsDefaultMessageFacade copy = new JmsDefaultMessageFacade();
-        copyInto(copy);
-        return copy;
-    }
-
-    protected void copyInto(JmsDefaultMessageFacade target) {
-        target.priority = this.priority;
-        target.groupSequence = this.groupSequence;
-        target.groupId = this.groupId;
-        target.expiration = this.expiration;
-        target.timestamp = this.timestamp;
-        target.correlationId = this.correlationId;
-        target.persistent = this.persistent;
-        target.redeliveryCount = this.redeliveryCount;
-        target.type = this.type;
-        target.destination = this.destination;
-        target.replyTo = this.replyTo;
-        target.userId = this.userId;
-        target.messageId = this.messageId;
-
-        if (this.properties != null) {
-            target.properties = new HashMap<String, Object>(this.properties);
-        } else {
-            target.properties = null;
-        }
-    }
-
-    @Override
-    public Set<String> getPropertyNames() throws JMSException {
-        Set<String> names = new HashSet<String>();
-        if (properties != null) {
-            names.addAll(properties.keySet());
-        }
-
-        return names;
-    }
-
-    @Override
-    public boolean propertyExists(String key) throws JMSException {
-        return this.properties.containsKey(key);
-    }
-
-    @Override
-    public Object getProperty(String key) throws JMSException {
-        return this.properties.get(key);
-    }
-
-    @Override
-    public void setProperty(String key, Object value) throws JMSException {
-        this.properties.put(key, value);
-    }
-
-    @Override
-    public void onSend(boolean disableMessageId, boolean disableTimestamp, long producerTtl) throws JMSException {
-    }
-
-    @Override
-    public void onDispatch() throws JMSException {
-    }
-
-    @Override
-    public void clearBody() {
-    }
-
-    @Override
-    public void clearProperties() {
-        properties.clear();
-    }
-
-    @Override
-    public String getMessageId() {
-        return messageId;
-    }
-
-    @Override
-    public Object getProviderMessageIdObject() {
-        return messageId;
-    }
-
-    @Override
-    public void setMessageId(String messageId) {
-        this.messageId = messageId;
-    }
-
-    @Override
-    public long getTimestamp() {
-        return this.timestamp;
-    }
-
-    @Override
-    public void setTimestamp(long timestamp) {
-        this.timestamp = timestamp;
-    }
-
-    @Override
-    public String getCorrelationId() {
-        return correlationId;
-    }
-
-    @Override
-    public void setCorrelationId(String correlationId) {
-        this.correlationId = correlationId;
-    }
-
-    @Override
-    public byte[] getCorrelationIdBytes() {
-        return correlationId.getBytes(UTF8);
-    }
-
-    @Override
-    public void setCorrelationIdBytes(byte[] correlationId) {
-        if (correlationId != null && correlationId.length > 0) {
-            this.correlationId = new String(correlationId, UTF8);
-        } else {
-            this.correlationId = null;
-        }
-    }
-
-    @Override
-    public boolean isPersistent() {
-        return this.persistent;
-    }
-
-    @Override
-    public void setPersistent(boolean value) {
-        this.persistent = value;
-    }
-
-    @Override
-    public int getDeliveryCount() {
-        return this.redeliveryCount + 1;
-    }
-
-    @Override
-    public void setDeliveryCount(int deliveryCount) {
-        this.redeliveryCount = deliveryCount - 1;
-    }
-
-    @Override
-    public int getRedeliveryCount() {
-        return this.redeliveryCount;
-    }
-
-    @Override
-    public void setRedeliveryCount(int redeliveryCount) {
-        this.redeliveryCount = redeliveryCount;
-    }
-
-    @Override
-    public boolean isRedelivered() {
-        return redeliveryCount > 0;
-    }
-
-    @Override
-    public void setRedelivered(boolean redelivered) {
-        if (redelivered) {
-            if (!isRedelivered()) {
-                setRedeliveryCount(1);
-            }
-        } else {
-            if (isRedelivered()) {
-                setRedeliveryCount(0);
-            }
-        }
-    }
-
-    @Override
-    public String getType() {
-        return type;
-    }
-
-    @Override
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    @Override
-    public int getPriority() {
-        return priority;
-    }
-
-    @Override
-    public void setPriority(int priority) {
-        if (priority < 0) {
-            this.priority = 0;
-        } else if (priority > 9) {
-            this.priority = 9;
-        } else {
-            this.priority = priority;
-        }
-    }
-
-    @Override
-    public long getExpiration() {
-        return expiration;
-    }
-
-    @Override
-    public void setExpiration(long expiration) {
-        this.expiration = expiration;
-    }
-
-    @Override
-    public JmsDestination getDestination() {
-        return this.destination;
-    }
-
-    @Override
-    public void setDestination(JmsDestination destination) {
-        this.destination = destination;
-    }
-
-    @Override
-    public JmsDestination getReplyTo() {
-        return this.replyTo;
-    }
-
-    @Override
-    public void setReplyTo(JmsDestination replyTo) {
-        this.replyTo = replyTo;
-    }
-
-    @Override
-    public String getUserId() {
-        return this.userId;
-    }
-
-    @Override
-    public void setUserId(String userId) {
-        this.userId = userId;
-    }
-
-    @Override
-    public String getGroupId() {
-        return this.groupId;
-    }
-
-    @Override
-    public void setGroupId(String groupId) {
-        this.groupId = groupId;
-    }
-
-    @Override
-    public int getGroupSequence() {
-        return this.groupSequence;
-    }
-
-    @Override
-    public void setGroupSequence(int groupSequence) {
-        this.groupSequence = groupSequence;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFactory.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFactory.java
deleted file mode 100644
index 2c91bad..0000000
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFactory.java
+++ /dev/null
@@ -1,90 +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.qpid.jms.message.facade.defaults;
-
-import java.io.Serializable;
-
-import javax.jms.JMSException;
-
-import org.apache.qpid.jms.message.JmsBytesMessage;
-import org.apache.qpid.jms.message.JmsMapMessage;
-import org.apache.qpid.jms.message.JmsMessage;
-import org.apache.qpid.jms.message.JmsMessageFactory;
-import org.apache.qpid.jms.message.JmsObjectMessage;
-import org.apache.qpid.jms.message.JmsStreamMessage;
-import org.apache.qpid.jms.message.JmsTextMessage;
-
-/**
- * Implementation of the JmsMessageFactory that create simple
- * javax.jms.Message instances with test facades.
- */
-public class JmsDefaultMessageFactory implements JmsMessageFactory {
-
-    @Override
-    public JmsMessage createMessage() throws UnsupportedOperationException {
-        return new JmsMessage(new JmsDefaultMessageFacade());
-    }
-
-    @Override
-    public JmsTextMessage createTextMessage() throws UnsupportedOperationException {
-        return createTextMessage(null);
-    }
-
-    @Override
-    public JmsTextMessage createTextMessage(String payload) throws UnsupportedOperationException {
-        JmsTextMessage result = new JmsTextMessage(new JmsDefaultTextMessageFacade());
-        if (payload != null) {
-            try {
-                result.setText(payload);
-            } catch (JMSException e) {
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public JmsBytesMessage createBytesMessage() throws UnsupportedOperationException {
-        return new JmsBytesMessage(new JmsDefaultBytesMessageFacade());
-    }
-
-    @Override
-    public JmsMapMessage createMapMessage() throws UnsupportedOperationException {
-        return new JmsMapMessage(new JmsDefaultMapMessageFacade());
-    }
-
-    @Override
-    public JmsStreamMessage createStreamMessage() throws UnsupportedOperationException {
-        return new JmsStreamMessage(new JmsDefaultStreamMessageFacade());
-    }
-
-    @Override
-    public JmsObjectMessage createObjectMessage() throws UnsupportedOperationException {
-        return createObjectMessage(null);
-    }
-
-    @Override
-    public JmsObjectMessage createObjectMessage(Serializable payload) throws UnsupportedOperationException {
-        JmsObjectMessage result = new JmsObjectMessage(new JmsDefaultObjectMessageFacade());
-        if (payload != null) {
-            try {
-                result.setObject(payload);
-            } catch (Exception e) {
-            }
-        }
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java
deleted file mode 100644
index 04608b8..0000000
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java
+++ /dev/null
@@ -1,99 +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.qpid.jms.message.facade.defaults;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Arrays;
-
-import org.apache.qpid.jms.message.facade.JmsObjectMessageFacade;
-import org.apache.qpid.jms.util.ClassLoadingAwareObjectInputStream;
-
-/**
- * Default implementation for a JMS Object Message Facade.
- */
-public class JmsDefaultObjectMessageFacade extends JmsDefaultMessageFacade implements JmsObjectMessageFacade {
-
-    private byte[] object;
-
-    public byte[] getSerializedObject() {
-        return object;
-    }
-
-    public void setSerializedObject(byte[] object) {
-        this.object = object;
-    }
-
-    @Override
-    public JmsMsgType getMsgType() {
-        return JmsMsgType.OBJECT;
-    }
-
-    @Override
-    public JmsDefaultObjectMessageFacade copy() {
-        JmsDefaultObjectMessageFacade copy = new JmsDefaultObjectMessageFacade();
-        copyInto(copy);
-        if (object != null) {
-            copy.object = Arrays.copyOf(object, object.length);
-        }
-
-        return copy;
-    }
-
-    @Override
-    public void clearBody() {
-        this.object = null;
-    }
-
-    @Override
-    public Serializable getObject() throws IOException, ClassNotFoundException {
-        if (object == null) {
-            return null;
-        }
-
-        Serializable serialized = null;
-
-        try (ByteArrayInputStream dataIn = new ByteArrayInputStream(object);
-             ClassLoadingAwareObjectInputStream objIn = new ClassLoadingAwareObjectInputStream(dataIn)) {
-
-            serialized = (Serializable) objIn.readObject();
-        }
-
-        return serialized;
-    }
-
-    @Override
-    public void setObject(Serializable value) throws IOException {
-        byte[] serialized = null;
-        if (value != null) {
-            try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                 ObjectOutputStream oos = new ObjectOutputStream(baos)) {
-
-                oos.writeObject(value);
-                oos.flush();
-                oos.close();
-
-                serialized = baos.toByteArray();
-            }
-        }
-
-        this.object = serialized;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java
deleted file mode 100644
index 1a0a17a..0000000
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java
+++ /dev/null
@@ -1,85 +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.qpid.jms.message.facade.defaults;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.jms.MessageEOFException;
-
-import org.apache.qpid.jms.message.facade.JmsStreamMessageFacade;
-
-/**
- * Default implementation of the JmsStreamMessageFacade
- */
-public class JmsDefaultStreamMessageFacade extends JmsDefaultMessageFacade implements JmsStreamMessageFacade {
-
-    private final List<Object> stream = new ArrayList<Object>();
-    private int index = -1;
-
-    @Override
-    public JmsMsgType getMsgType() {
-        return JmsMsgType.STREAM;
-    }
-
-    @Override
-    public JmsDefaultStreamMessageFacade copy() {
-        JmsDefaultStreamMessageFacade copy = new JmsDefaultStreamMessageFacade();
-        copyInto(copy);
-        copy.stream.addAll(stream);
-        return copy;
-    }
-
-    @Override
-    public boolean hasNext() {
-        return !stream.isEmpty() && index < stream.size();
-    }
-
-    @Override
-    public Object peek() throws MessageEOFException {
-        if (stream.isEmpty() || index + 1 >= stream.size()) {
-            throw new MessageEOFException("Attempted to read past the end of the stream");
-        }
-
-        return stream.get(index + 1);
-    }
-
-    @Override
-    public void pop() throws MessageEOFException {
-        if (stream.isEmpty() || index + 1 >= stream.size()) {
-            throw new MessageEOFException("Attempted to read past the end of the stream");
-        }
-
-        index++;
-    }
-
-    @Override
-    public void put(Object value) {
-        stream.add(value);
-    }
-
-    @Override
-    public void clearBody() {
-        stream.clear();
-        index = -1;
-    }
-
-    @Override
-    public void reset() {
-        index = -1;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java
deleted file mode 100644
index 2d56c84..0000000
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java
+++ /dev/null
@@ -1,57 +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.qpid.jms.message.facade.defaults;
-
-import org.apache.qpid.jms.message.facade.JmsTextMessageFacade;
-
-/**
- * Default implementation of the JmsTextMessageFacade.
- */
-public final class JmsDefaultTextMessageFacade extends JmsDefaultMessageFacade implements JmsTextMessageFacade {
-
-    private String text;
-
-    @Override
-    public JmsMsgType getMsgType() {
-        return JmsMsgType.TEXT;
-    }
-
-    @Override
-    public JmsDefaultTextMessageFacade copy() {
-        JmsDefaultTextMessageFacade copy = new JmsDefaultTextMessageFacade();
-        copyInto(copy);
-        if (text != null) {
-            copy.setText(text);
-        }
-        return copy;
-    }
-
-    @Override
-    public void clearBody() {
-        this.text = null;
-    }
-
-    @Override
-    public String getText() {
-        return text;
-    }
-
-    @Override
-    public void setText(String text) {
-        this.text = text;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestBytesMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestBytesMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestBytesMessageFacade.java
new file mode 100644
index 0000000..c608a76
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestBytesMessageFacade.java
@@ -0,0 +1,136 @@
+/**
+ * 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.qpid.jms.message.facade.test;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufInputStream;
+import io.netty.buffer.ByteBufOutputStream;
+import io.netty.buffer.Unpooled;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.jms.IllegalStateException;
+import javax.jms.JMSException;
+
+import org.apache.qpid.jms.message.facade.JmsBytesMessageFacade;
+
+/**
+ * A test implementation of the JmsBytesMessageFacade that simply holds a raw Buffer
+ */
+public final class JmsTestBytesMessageFacade extends JmsTestMessageFacade implements JmsBytesMessageFacade {
+
+    private ByteBuf content = Unpooled.EMPTY_BUFFER;
+    private ByteBufOutputStream bytesOut;
+    private ByteBufInputStream bytesIn;
+
+    public JmsTestBytesMessageFacade() {
+    }
+
+    public JmsTestBytesMessageFacade(byte[] content) {
+        this.content = Unpooled.copiedBuffer(content);
+    }
+
+    @Override
+    public JmsMsgType getMsgType() {
+        return JmsMsgType.BYTES;
+    }
+
+    @Override
+    public JmsTestBytesMessageFacade copy() {
+        reset();
+        JmsTestBytesMessageFacade copy = new JmsTestBytesMessageFacade();
+        copyInto(copy);
+        if (this.content != null) {
+            copy.content = this.content.copy();
+        }
+
+        return copy;
+    }
+
+    @Override
+    public void clearBody() {
+        if (bytesIn != null) {
+            try {
+                bytesIn.close();
+            } catch (IOException e) {
+            }
+            bytesIn = null;
+        }
+        if (bytesOut != null) {
+            try {
+                bytesOut.close();
+            } catch (IOException e) {
+            }
+            bytesOut = null;
+        }
+
+        content = Unpooled.EMPTY_BUFFER;
+    }
+
+    @Override
+    public InputStream getInputStream() throws JMSException {
+        if (bytesOut != null) {
+            throw new IllegalStateException("Body is being written to, cannot perform a read.");
+        }
+
+        if (bytesIn == null) {
+            // Duplicate the content buffer to allow for getBodyLength() validity.
+            bytesIn = new ByteBufInputStream(content.duplicate());
+        }
+
+        return bytesIn;
+    }
+
+    @Override
+    public OutputStream getOutputStream() throws JMSException {
+        if (bytesIn != null) {
+            throw new IllegalStateException("Body is being read from, cannot perform a write.");
+        }
+
+        if (bytesOut == null) {
+            bytesOut = new ByteBufOutputStream(Unpooled.buffer());
+            content = Unpooled.EMPTY_BUFFER;
+        }
+
+        return bytesOut;
+    }
+
+    @Override
+    public void reset() {
+        if (bytesOut != null) {
+            content = bytesOut.buffer();
+            try {
+                bytesOut.close();
+            } catch (IOException e) {
+            }
+            bytesOut = null;
+        } else if (bytesIn != null) {
+            try {
+                bytesIn.close();
+            } catch (IOException e) {
+            }
+            bytesIn = null;
+        }
+    }
+
+    @Override
+    public int getBodyLength() {
+        return content.readableBytes();
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMapMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMapMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMapMessageFacade.java
new file mode 100644
index 0000000..dc11c7b
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMapMessageFacade.java
@@ -0,0 +1,75 @@
+/**
+ * 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.qpid.jms.message.facade.test;
+
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.qpid.jms.message.facade.JmsMapMessageFacade;
+
+/**
+ * Simple implementation of the JmsMapMessageFacade used for testing.
+ */
+public class JmsTestMapMessageFacade extends JmsTestMessageFacade implements JmsMapMessageFacade {
+
+    protected final Map<String, Object> map = new HashMap<String, Object>();
+
+    @Override
+    public JmsMsgType getMsgType() {
+        return JmsMsgType.MAP;
+    }
+
+    @Override
+    public JmsTestMapMessageFacade copy() {
+        JmsTestMapMessageFacade copy = new JmsTestMapMessageFacade();
+        copyInto(copy);
+        copy.map.putAll(map);
+        return copy;
+    }
+
+    @Override
+    public Enumeration<String> getMapNames() {
+        return Collections.enumeration(map.keySet());
+    }
+
+    @Override
+    public boolean itemExists(String key) {
+        return map.containsKey(key);
+    }
+
+    @Override
+    public Object get(String key) {
+        return map.get(key);
+    }
+
+    @Override
+    public void put(String key, Object value) {
+        map.put(key, value);
+    }
+
+    @Override
+    public Object remove(String key) {
+        return map.remove(key);
+    }
+
+    @Override
+    public void clearBody() {
+        map.clear();
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFacade.java
new file mode 100644
index 0000000..29adafd
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFacade.java
@@ -0,0 +1,329 @@
+/**
+ * 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.qpid.jms.message.facade.test;
+
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.jms.JMSException;
+
+import org.apache.qpid.jms.JmsDestination;
+import org.apache.qpid.jms.message.facade.JmsMessageFacade;
+
+/**
+ * A test implementation of the JmsMessageFaceade that provides a generic
+ * message instance which can be used instead of implemented in Provider specific
+ * version that maps to a Provider message object.
+ */
+public class JmsTestMessageFacade implements JmsMessageFacade {
+
+    private static final Charset UTF8 = Charset.forName("UTF-8");
+
+    public static enum JmsMsgType {
+        MESSAGE("jms/message"),
+        BYTES("jms/bytes-message"),
+        MAP("jms/map-message"),
+        OBJECT("jms/object-message"),
+        STREAM("jms/stream-message"),
+        TEXT("jms/text-message"),
+        TEXT_NULL("jms/text-message-null");
+
+        public final String buffer = new String(this.name());
+        public final String mime;
+
+        JmsMsgType(String mime) {
+            this.mime = mime;
+        }
+    }
+
+    protected Map<String, Object> properties = new HashMap<String, Object>();
+
+    protected int priority = javax.jms.Message.DEFAULT_PRIORITY;
+    protected String groupId;
+    protected int groupSequence;
+    protected String messageId;
+    protected long expiration;
+    protected long timestamp;
+    protected String correlationId;
+    protected boolean persistent;
+    protected int redeliveryCount;
+    protected String type;
+    protected JmsDestination destination;
+    protected JmsDestination replyTo;
+    protected String userId;
+
+    public JmsMsgType getMsgType() {
+        return JmsMsgType.MESSAGE;
+    }
+
+    @Override
+    public JmsTestMessageFacade copy() {
+        JmsTestMessageFacade copy = new JmsTestMessageFacade();
+        copyInto(copy);
+        return copy;
+    }
+
+    protected void copyInto(JmsTestMessageFacade target) {
+        target.priority = this.priority;
+        target.groupSequence = this.groupSequence;
+        target.groupId = this.groupId;
+        target.expiration = this.expiration;
+        target.timestamp = this.timestamp;
+        target.correlationId = this.correlationId;
+        target.persistent = this.persistent;
+        target.redeliveryCount = this.redeliveryCount;
+        target.type = this.type;
+        target.destination = this.destination;
+        target.replyTo = this.replyTo;
+        target.userId = this.userId;
+        target.messageId = this.messageId;
+
+        if (this.properties != null) {
+            target.properties = new HashMap<String, Object>(this.properties);
+        } else {
+            target.properties = null;
+        }
+    }
+
+    @Override
+    public Set<String> getPropertyNames() throws JMSException {
+        Set<String> names = new HashSet<String>();
+        if (properties != null) {
+            names.addAll(properties.keySet());
+        }
+
+        return names;
+    }
+
+    @Override
+    public boolean propertyExists(String key) throws JMSException {
+        return this.properties.containsKey(key);
+    }
+
+    @Override
+    public Object getProperty(String key) throws JMSException {
+        return this.properties.get(key);
+    }
+
+    @Override
+    public void setProperty(String key, Object value) throws JMSException {
+        this.properties.put(key, value);
+    }
+
+    @Override
+    public void onSend(boolean disableMessageId, boolean disableTimestamp, long producerTtl) throws JMSException {
+    }
+
+    @Override
+    public void onDispatch() throws JMSException {
+    }
+
+    @Override
+    public void clearBody() {
+    }
+
+    @Override
+    public void clearProperties() {
+        properties.clear();
+    }
+
+    @Override
+    public String getMessageId() {
+        return messageId;
+    }
+
+    @Override
+    public Object getProviderMessageIdObject() {
+        return messageId;
+    }
+
+    @Override
+    public void setMessageId(String messageId) {
+        this.messageId = messageId;
+    }
+
+    @Override
+    public long getTimestamp() {
+        return this.timestamp;
+    }
+
+    @Override
+    public void setTimestamp(long timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    @Override
+    public String getCorrelationId() {
+        return correlationId;
+    }
+
+    @Override
+    public void setCorrelationId(String correlationId) {
+        this.correlationId = correlationId;
+    }
+
+    @Override
+    public byte[] getCorrelationIdBytes() {
+        return correlationId.getBytes(UTF8);
+    }
+
+    @Override
+    public void setCorrelationIdBytes(byte[] correlationId) {
+        if (correlationId != null && correlationId.length > 0) {
+            this.correlationId = new String(correlationId, UTF8);
+        } else {
+            this.correlationId = null;
+        }
+    }
+
+    @Override
+    public boolean isPersistent() {
+        return this.persistent;
+    }
+
+    @Override
+    public void setPersistent(boolean value) {
+        this.persistent = value;
+    }
+
+    @Override
+    public int getDeliveryCount() {
+        return this.redeliveryCount + 1;
+    }
+
+    @Override
+    public void setDeliveryCount(int deliveryCount) {
+        this.redeliveryCount = deliveryCount - 1;
+    }
+
+    @Override
+    public int getRedeliveryCount() {
+        return this.redeliveryCount;
+    }
+
+    @Override
+    public void setRedeliveryCount(int redeliveryCount) {
+        this.redeliveryCount = redeliveryCount;
+    }
+
+    @Override
+    public boolean isRedelivered() {
+        return redeliveryCount > 0;
+    }
+
+    @Override
+    public void setRedelivered(boolean redelivered) {
+        if (redelivered) {
+            if (!isRedelivered()) {
+                setRedeliveryCount(1);
+            }
+        } else {
+            if (isRedelivered()) {
+                setRedeliveryCount(0);
+            }
+        }
+    }
+
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    @Override
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public int getPriority() {
+        return priority;
+    }
+
+    @Override
+    public void setPriority(int priority) {
+        if (priority < 0) {
+            this.priority = 0;
+        } else if (priority > 9) {
+            this.priority = 9;
+        } else {
+            this.priority = priority;
+        }
+    }
+
+    @Override
+    public long getExpiration() {
+        return expiration;
+    }
+
+    @Override
+    public void setExpiration(long expiration) {
+        this.expiration = expiration;
+    }
+
+    @Override
+    public JmsDestination getDestination() {
+        return this.destination;
+    }
+
+    @Override
+    public void setDestination(JmsDestination destination) {
+        this.destination = destination;
+    }
+
+    @Override
+    public JmsDestination getReplyTo() {
+        return this.replyTo;
+    }
+
+    @Override
+    public void setReplyTo(JmsDestination replyTo) {
+        this.replyTo = replyTo;
+    }
+
+    @Override
+    public String getUserId() {
+        return this.userId;
+    }
+
+    @Override
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    @Override
+    public String getGroupId() {
+        return this.groupId;
+    }
+
+    @Override
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    @Override
+    public int getGroupSequence() {
+        return this.groupSequence;
+    }
+
+    @Override
+    public void setGroupSequence(int groupSequence) {
+        this.groupSequence = groupSequence;
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFactory.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFactory.java
new file mode 100644
index 0000000..5aa37ae
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFactory.java
@@ -0,0 +1,90 @@
+/**
+ * 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.qpid.jms.message.facade.test;
+
+import java.io.Serializable;
+
+import javax.jms.JMSException;
+
+import org.apache.qpid.jms.message.JmsBytesMessage;
+import org.apache.qpid.jms.message.JmsMapMessage;
+import org.apache.qpid.jms.message.JmsMessage;
+import org.apache.qpid.jms.message.JmsMessageFactory;
+import org.apache.qpid.jms.message.JmsObjectMessage;
+import org.apache.qpid.jms.message.JmsStreamMessage;
+import org.apache.qpid.jms.message.JmsTextMessage;
+
+/**
+ * Implementation of the JmsMessageFactory that create simple
+ * javax.jms.Message instances with test facades.
+ */
+public class JmsTestMessageFactory implements JmsMessageFactory {
+
+    @Override
+    public JmsMessage createMessage() throws UnsupportedOperationException {
+        return new JmsMessage(new JmsTestMessageFacade());
+    }
+
+    @Override
+    public JmsTextMessage createTextMessage() throws UnsupportedOperationException {
+        return createTextMessage(null);
+    }
+
+    @Override
+    public JmsTextMessage createTextMessage(String payload) throws UnsupportedOperationException {
+        JmsTextMessage result = new JmsTextMessage(new JmsTestTextMessageFacade());
+        if (payload != null) {
+            try {
+                result.setText(payload);
+            } catch (JMSException e) {
+            }
+        }
+        return result;
+    }
+
+    @Override
+    public JmsBytesMessage createBytesMessage() throws UnsupportedOperationException {
+        return new JmsBytesMessage(new JmsTestBytesMessageFacade());
+    }
+
+    @Override
+    public JmsMapMessage createMapMessage() throws UnsupportedOperationException {
+        return new JmsMapMessage(new JmsTestMapMessageFacade());
+    }
+
+    @Override
+    public JmsStreamMessage createStreamMessage() throws UnsupportedOperationException {
+        return new JmsStreamMessage(new JmsTestStreamMessageFacade());
+    }
+
+    @Override
+    public JmsObjectMessage createObjectMessage() throws UnsupportedOperationException {
+        return createObjectMessage(null);
+    }
+
+    @Override
+    public JmsObjectMessage createObjectMessage(Serializable payload) throws UnsupportedOperationException {
+        JmsObjectMessage result = new JmsObjectMessage(new JmsTestObjectMessageFacade());
+        if (payload != null) {
+            try {
+                result.setObject(payload);
+            } catch (Exception e) {
+            }
+        }
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestObjectMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestObjectMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestObjectMessageFacade.java
new file mode 100644
index 0000000..699ef1f
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestObjectMessageFacade.java
@@ -0,0 +1,99 @@
+/**
+ * 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.qpid.jms.message.facade.test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.Arrays;
+
+import org.apache.qpid.jms.message.facade.JmsObjectMessageFacade;
+import org.apache.qpid.jms.util.ClassLoadingAwareObjectInputStream;
+
+/**
+ * Test implementation for a JMS Object Message Facade.
+ */
+public class JmsTestObjectMessageFacade extends JmsTestMessageFacade implements JmsObjectMessageFacade {
+
+    private byte[] object;
+
+    public byte[] getSerializedObject() {
+        return object;
+    }
+
+    public void setSerializedObject(byte[] object) {
+        this.object = object;
+    }
+
+    @Override
+    public JmsMsgType getMsgType() {
+        return JmsMsgType.OBJECT;
+    }
+
+    @Override
+    public JmsTestObjectMessageFacade copy() {
+        JmsTestObjectMessageFacade copy = new JmsTestObjectMessageFacade();
+        copyInto(copy);
+        if (object != null) {
+            copy.object = Arrays.copyOf(object, object.length);
+        }
+
+        return copy;
+    }
+
+    @Override
+    public void clearBody() {
+        this.object = null;
+    }
+
+    @Override
+    public Serializable getObject() throws IOException, ClassNotFoundException {
+        if (object == null) {
+            return null;
+        }
+
+        Serializable serialized = null;
+
+        try (ByteArrayInputStream dataIn = new ByteArrayInputStream(object);
+             ClassLoadingAwareObjectInputStream objIn = new ClassLoadingAwareObjectInputStream(dataIn)) {
+
+            serialized = (Serializable) objIn.readObject();
+        }
+
+        return serialized;
+    }
+
+    @Override
+    public void setObject(Serializable value) throws IOException {
+        byte[] serialized = null;
+        if (value != null) {
+            try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                 ObjectOutputStream oos = new ObjectOutputStream(baos)) {
+
+                oos.writeObject(value);
+                oos.flush();
+                oos.close();
+
+                serialized = baos.toByteArray();
+            }
+        }
+
+        this.object = serialized;
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestStreamMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestStreamMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestStreamMessageFacade.java
new file mode 100644
index 0000000..7353b0c
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestStreamMessageFacade.java
@@ -0,0 +1,85 @@
+/**
+ * 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.qpid.jms.message.facade.test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jms.MessageEOFException;
+
+import org.apache.qpid.jms.message.facade.JmsStreamMessageFacade;
+
+/**
+ * Test implementation of the JmsStreamMessageFacade
+ */
+public class JmsTestStreamMessageFacade extends JmsTestMessageFacade implements JmsStreamMessageFacade {
+
+    private final List<Object> stream = new ArrayList<Object>();
+    private int index = -1;
+
+    @Override
+    public JmsMsgType getMsgType() {
+        return JmsMsgType.STREAM;
+    }
+
+    @Override
+    public JmsTestStreamMessageFacade copy() {
+        JmsTestStreamMessageFacade copy = new JmsTestStreamMessageFacade();
+        copyInto(copy);
+        copy.stream.addAll(stream);
+        return copy;
+    }
+
+    @Override
+    public boolean hasNext() {
+        return !stream.isEmpty() && index < stream.size();
+    }
+
+    @Override
+    public Object peek() throws MessageEOFException {
+        if (stream.isEmpty() || index + 1 >= stream.size()) {
+            throw new MessageEOFException("Attempted to read past the end of the stream");
+        }
+
+        return stream.get(index + 1);
+    }
+
+    @Override
+    public void pop() throws MessageEOFException {
+        if (stream.isEmpty() || index + 1 >= stream.size()) {
+            throw new MessageEOFException("Attempted to read past the end of the stream");
+        }
+
+        index++;
+    }
+
+    @Override
+    public void put(Object value) {
+        stream.add(value);
+    }
+
+    @Override
+    public void clearBody() {
+        stream.clear();
+        index = -1;
+    }
+
+    @Override
+    public void reset() {
+        index = -1;
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestTextMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestTextMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestTextMessageFacade.java
new file mode 100644
index 0000000..8a8cfd6
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestTextMessageFacade.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.qpid.jms.message.facade.test;
+
+import org.apache.qpid.jms.message.facade.JmsTextMessageFacade;
+
+/**
+ * Test implementation of the JmsTextMessageFacade.
+ */
+public final class JmsTestTextMessageFacade extends JmsTestMessageFacade implements JmsTextMessageFacade {
+
+    private String text;
+
+    @Override
+    public JmsMsgType getMsgType() {
+        return JmsMsgType.TEXT;
+    }
+
+    @Override
+    public JmsTestTextMessageFacade copy() {
+        JmsTestTextMessageFacade copy = new JmsTestTextMessageFacade();
+        copyInto(copy);
+        if (text != null) {
+            copy.setText(text);
+        }
+        return copy;
+    }
+
+    @Override
+    public void clearBody() {
+        this.text = null;
+    }
+
+    @Override
+    public String getText() {
+        return text;
+    }
+
+    @Override
+    public void setText(String text) {
+        this.text = text;
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsBytesMessage.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsBytesMessage.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsBytesMessage.java
index d8ea4be..7a04c96 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsBytesMessage.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsBytesMessage.java
@@ -20,7 +20,7 @@ import javax.jms.BytesMessage;
 import javax.jms.JMSException;
 
 import org.apache.qpid.jms.message.JmsBytesMessage;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultBytesMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestBytesMessageFacade;
 
 /**
  * Foreign JMS BytesMessage type.
@@ -30,7 +30,7 @@ public class ForeignJmsBytesMessage extends ForeignJmsMessage implements BytesMe
     private final JmsBytesMessage message;
 
     public ForeignJmsBytesMessage() {
-        super(new JmsBytesMessage(new JmsDefaultBytesMessageFacade()));
+        super(new JmsBytesMessage(new JmsTestBytesMessageFacade()));
         this.message = (JmsBytesMessage) super.message;
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMapMessage.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMapMessage.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMapMessage.java
index 9d31868..71888fd 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMapMessage.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMapMessage.java
@@ -22,7 +22,7 @@ import javax.jms.JMSException;
 import javax.jms.MapMessage;
 
 import org.apache.qpid.jms.message.JmsMapMessage;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMapMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestMapMessageFacade;
 
 /**
  * Foreign JMS MapMessage class
@@ -32,7 +32,7 @@ public class ForeignJmsMapMessage extends ForeignJmsMessage implements MapMessag
     private final JmsMapMessage message;
 
     public ForeignJmsMapMessage() {
-        super(new JmsMapMessage(new JmsDefaultMapMessageFacade()));
+        super(new JmsMapMessage(new JmsTestMapMessageFacade()));
         this.message = (JmsMapMessage) super.message;
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMessage.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMessage.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMessage.java
index 3ce20a0..503dd47 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMessage.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMessage.java
@@ -23,7 +23,7 @@ import javax.jms.JMSException;
 import javax.jms.Message;
 
 import org.apache.qpid.jms.message.JmsMessage;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
+import org.apache.qpid.jms.message.facade.test.JmsTestMessageFactory;
 
 /**
  * Test class used to simulate receipt of a JMS Message from another
@@ -34,7 +34,7 @@ public class ForeignJmsMessage implements Message {
     protected final JmsMessage message;
 
     public ForeignJmsMessage() {
-        this.message = new JmsDefaultMessageFactory().createMessage();
+        this.message = new JmsTestMessageFactory().createMessage();
     }
 
     protected ForeignJmsMessage(JmsMessage message) {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsObjectMessage.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsObjectMessage.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsObjectMessage.java
index dcce895..2097655 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsObjectMessage.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsObjectMessage.java
@@ -22,7 +22,7 @@ import javax.jms.JMSException;
 import javax.jms.ObjectMessage;
 
 import org.apache.qpid.jms.message.JmsObjectMessage;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultObjectMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestObjectMessageFacade;
 
 /**
  * Foreign JMS ObjectMessage class
@@ -32,7 +32,7 @@ public class ForeignJmsObjectMessage extends ForeignJmsMessage implements Object
     private final JmsObjectMessage message;
 
     public ForeignJmsObjectMessage() {
-        super(new JmsObjectMessage(new JmsDefaultObjectMessageFacade()));
+        super(new JmsObjectMessage(new JmsTestObjectMessageFacade()));
         this.message = (JmsObjectMessage) super.message;
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f1cb952d/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsStreamMessage.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsStreamMessage.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsStreamMessage.java
index b35f455..268b3f8 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsStreamMessage.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsStreamMessage.java
@@ -20,7 +20,7 @@ import javax.jms.JMSException;
 import javax.jms.StreamMessage;
 
 import org.apache.qpid.jms.message.JmsStreamMessage;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultStreamMessageFacade;
+import org.apache.qpid.jms.message.facade.test.JmsTestStreamMessageFacade;
 
 /**
  * Foreign JMS StreamMessage class
@@ -30,7 +30,7 @@ public class ForeignJmsStreamMessage extends ForeignJmsMessage implements Stream
     private final JmsStreamMessage message;
 
     public ForeignJmsStreamMessage() {
-        super(new JmsStreamMessage(new JmsDefaultStreamMessageFacade()));
+        super(new JmsStreamMessage(new JmsTestStreamMessageFacade()));
         this.message = (JmsStreamMessage) super.message;
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org