You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2014/10/01 00:43:23 UTC

git commit: Move all the default implementations now used only for tests into the tests package.

Repository: qpid-jms
Updated Branches:
  refs/heads/master c695388b1 -> 9064cc8a5


Move all the default implementations now used only for tests into the
tests package.

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

Branch: refs/heads/master
Commit: 9064cc8a515f05475f90fbdb2b920dd29b148bfa
Parents: c695388
Author: Timothy Bish <ta...@gmail.com>
Authored: Tue Sep 30 18:43:15 2014 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Tue Sep 30 18:43:15 2014 -0400

----------------------------------------------------------------------
 .../jms/message/JmsDefaultMessageFactory.java   |  94 ------
 .../defaults/JmsDefaultBytesMessageFacade.java  |  69 ----
 .../defaults/JmsDefaultMapMessageFacade.java    |  75 -----
 .../defaults/JmsDefaultMessageFacade.java       | 328 -------------------
 .../defaults/JmsDefaultObjectMessageFacade.java | 105 ------
 .../defaults/JmsDefaultStreamMessageFacade.java |  85 -----
 .../defaults/JmsDefaultTextMessageFacade.java   |  62 ----
 .../qpid/jms/message/JmsBytesMessageTest.java   |   1 +
 .../qpid/jms/message/JmsMapMessageTest.java     |   2 +-
 .../apache/qpid/jms/message/JmsMessageTest.java |   2 +-
 .../qpid/jms/message/JmsObjectMessageTest.java  |   2 +-
 .../qpid/jms/message/JmsStreamMessageTest.java  |   2 +-
 .../qpid/jms/message/JmsTextMessageTest.java    |   2 +-
 .../defaults/JmsDefaultBytesMessageFacade.java  |  69 ++++
 .../defaults/JmsDefaultMapMessageFacade.java    |  75 +++++
 .../defaults/JmsDefaultMessageFacade.java       | 328 +++++++++++++++++++
 .../defaults/JmsDefaultMessageFactory.java      |  95 ++++++
 .../defaults/JmsDefaultObjectMessageFacade.java | 105 ++++++
 .../defaults/JmsDefaultStreamMessageFacade.java |  85 +++++
 .../defaults/JmsDefaultTextMessageFacade.java   |  62 ++++
 20 files changed, 825 insertions(+), 823 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsDefaultMessageFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsDefaultMessageFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsDefaultMessageFactory.java
deleted file mode 100644
index c909f2d..0000000
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsDefaultMessageFactory.java
+++ /dev/null
@@ -1,94 +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;
-
-import java.io.Serializable;
-
-import javax.jms.JMSException;
-
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultBytesMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMapMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultObjectMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultStreamMessageFacade;
-import org.apache.qpid.jms.message.facade.defaults.JmsDefaultTextMessageFacade;
-
-/**
- * Default implementation of the ProviderMessageFactory that create simple
- * generic javax.jms.Message types that can be sent to any Provider instance.
- *
- * TODO: Once the AMQP Message Facade stuff is done we should move this factory
- *       and the default JmsMessageFacade implementations into the test package
- *       since their primary use will be to test the JMS spec compliance of the
- *       JmsMessage classes.
- */
-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/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java
deleted file mode 100644
index 23f1817..0000000
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java
+++ /dev/null
@@ -1,69 +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 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;
-
-    @Override
-    public JmsMsgType getMsgType() {
-        return JmsMsgType.BYTES;
-    }
-
-    @Override
-    public JmsDefaultBytesMessageFacade copy() {
-        JmsDefaultBytesMessageFacade copy = new JmsDefaultBytesMessageFacade();
-        copyInto(copy);
-        if (this.content != null) {
-            copy.setContent(this.content.copy());
-        }
-
-        return copy;
-    }
-
-    @Override
-    public boolean isEmpty() {
-        if (content == null || content.readableBytes() == 0) {
-            return true;
-        }
-
-        return false;
-    }
-
-    @Override
-    public void clearBody() {
-        this.content = null;
-    }
-
-    @Override
-    public ByteBuf getContent() {
-        return content;
-    }
-
-    @Override
-    public void setContent(ByteBuf content) {
-        this.content = content;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java
deleted file mode 100644
index 33da603..0000000
--- a/qpid-jms-client/src/main/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/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
deleted file mode 100644
index eff3ad7..0000000
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
+++ /dev/null
@@ -1,328 +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.Map;
-
-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 byte 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 Map<String, Object> getProperties() throws JMSException {
-        lazyCreateProperties();
-        return properties;
-    }
-
-    @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() throws JMSException {
-    }
-
-    @Override
-    public void onDispatch() throws JMSException {
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return true;
-    }
-
-    @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 byte getPriority() {
-        return priority;
-    }
-
-    @Override
-    public void setPriority(byte priority) {
-        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;
-    }
-
-    private void lazyCreateProperties() {
-        if (properties == null) {
-            properties = new HashMap<String, Object>();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java
deleted file mode 100644
index f9bf220..0000000
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java
+++ /dev/null
@@ -1,105 +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 boolean isEmpty() {
-        return object == null || object.length == 0;
-    }
-
-    @Override
-    public JmsDefaultObjectMessageFacade copy() {
-        JmsDefaultObjectMessageFacade copy = new JmsDefaultObjectMessageFacade();
-        copyInto(copy);
-        if (!isEmpty()) {
-            copy.object = Arrays.copyOf(object, object.length);
-        }
-
-        return copy;
-    }
-
-    @Override
-    public void clearBody() {
-        this.object = null;
-    }
-
-    @Override
-    public Serializable getObject() throws IOException, ClassNotFoundException {
-
-        if (isEmpty()) {
-            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/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java
deleted file mode 100644
index 1a0a17a..0000000
--- a/qpid-jms-client/src/main/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/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java
deleted file mode 100644
index c21d5c1..0000000
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java
+++ /dev/null
@@ -1,62 +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 boolean isEmpty() {
-        return text != null && !text.isEmpty();
-    }
-
-    @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/9064cc8a/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 9314821..e3f1ac5 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
@@ -34,6 +34,7 @@ import javax.jms.MessageNotReadableException;
 import javax.jms.MessageNotWriteableException;
 
 import org.apache.qpid.jms.message.facade.defaults.JmsDefaultBytesMessageFacade;
+import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
 import org.junit.Test;
 
 /**

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/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 9b335af..648ab7d 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
@@ -31,11 +31,11 @@ import javax.jms.JMSException;
 import javax.jms.MessageFormatException;
 import javax.jms.MessageNotWriteableException;
 
-import org.apache.qpid.jms.message.JmsDefaultMessageFactory;
 import org.apache.qpid.jms.message.JmsMapMessage;
 import org.apache.qpid.jms.message.JmsMessageFactory;
 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.junit.Test;
 
 /**

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/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 174ba32..a60b676 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
@@ -34,9 +34,9 @@ import javax.jms.MessageNotWriteableException;
 import org.apache.qpid.jms.JmsDestination;
 import org.apache.qpid.jms.JmsTopic;
 import org.apache.qpid.jms.message.JmsBytesMessage;
-import org.apache.qpid.jms.message.JmsDefaultMessageFactory;
 import org.apache.qpid.jms.message.JmsMessage;
 import org.apache.qpid.jms.message.JmsMessageFactory;
+import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/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 b5e2e98..7ca6b79 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
@@ -36,10 +36,10 @@ import javax.jms.MessageNotReadableException;
 import javax.jms.MessageNotWriteableException;
 import javax.jms.ObjectMessage;
 
-import org.apache.qpid.jms.message.JmsDefaultMessageFactory;
 import org.apache.qpid.jms.message.JmsMessageFactory;
 import org.apache.qpid.jms.message.JmsObjectMessage;
 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.junit.Test;
 import org.mockito.Mockito;

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/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 b21068b..ff9c390 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
@@ -34,9 +34,9 @@ import javax.jms.MessageNotReadableException;
 import javax.jms.MessageNotWriteableException;
 import javax.jms.StreamMessage;
 
-import org.apache.qpid.jms.message.JmsDefaultMessageFactory;
 import org.apache.qpid.jms.message.JmsMessageFactory;
 import org.apache.qpid.jms.message.JmsStreamMessage;
+import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
 import org.junit.Ignore;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/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 6757ab8..605143a 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,9 +28,9 @@ import javax.jms.JMSException;
 import javax.jms.MessageNotReadableException;
 import javax.jms.MessageNotWriteableException;
 
-import org.apache.qpid.jms.message.JmsDefaultMessageFactory;
 import org.apache.qpid.jms.message.JmsMessageFactory;
 import org.apache.qpid.jms.message.JmsTextMessage;
+import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory;
 import org.junit.Test;
 
 /**

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/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
new file mode 100644
index 0000000..23f1817
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java
@@ -0,0 +1,69 @@
+/**
+ * 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 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;
+
+    @Override
+    public JmsMsgType getMsgType() {
+        return JmsMsgType.BYTES;
+    }
+
+    @Override
+    public JmsDefaultBytesMessageFacade copy() {
+        JmsDefaultBytesMessageFacade copy = new JmsDefaultBytesMessageFacade();
+        copyInto(copy);
+        if (this.content != null) {
+            copy.setContent(this.content.copy());
+        }
+
+        return copy;
+    }
+
+    @Override
+    public boolean isEmpty() {
+        if (content == null || content.readableBytes() == 0) {
+            return true;
+        }
+
+        return false;
+    }
+
+    @Override
+    public void clearBody() {
+        this.content = null;
+    }
+
+    @Override
+    public ByteBuf getContent() {
+        return content;
+    }
+
+    @Override
+    public void setContent(ByteBuf content) {
+        this.content = content;
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/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
new file mode 100644
index 0000000..33da603
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.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.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/9064cc8a/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
new file mode 100644
index 0000000..eff3ad7
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
@@ -0,0 +1,328 @@
+/**
+ * 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.Map;
+
+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 byte 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 Map<String, Object> getProperties() throws JMSException {
+        lazyCreateProperties();
+        return properties;
+    }
+
+    @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() throws JMSException {
+    }
+
+    @Override
+    public void onDispatch() throws JMSException {
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return true;
+    }
+
+    @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 byte getPriority() {
+        return priority;
+    }
+
+    @Override
+    public void setPriority(byte priority) {
+        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;
+    }
+
+    private void lazyCreateProperties() {
+        if (properties == null) {
+            properties = new HashMap<String, Object>();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/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
new file mode 100644
index 0000000..2e8aa0b
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFactory.java
@@ -0,0 +1,95 @@
+/**
+ * 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;
+
+/**
+ * Default implementation of the ProviderMessageFactory that create simple
+ * generic javax.jms.Message types that can be sent to any Provider instance.
+ *
+ * TODO: Once the AMQP Message Facade stuff is done we should move this factory
+ *       and the default JmsMessageFacade implementations into the test package
+ *       since their primary use will be to test the JMS spec compliance of the
+ *       JmsMessage classes.
+ */
+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/9064cc8a/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
new file mode 100644
index 0000000..f9bf220
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java
@@ -0,0 +1,105 @@
+/**
+ * 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 boolean isEmpty() {
+        return object == null || object.length == 0;
+    }
+
+    @Override
+    public JmsDefaultObjectMessageFacade copy() {
+        JmsDefaultObjectMessageFacade copy = new JmsDefaultObjectMessageFacade();
+        copyInto(copy);
+        if (!isEmpty()) {
+            copy.object = Arrays.copyOf(object, object.length);
+        }
+
+        return copy;
+    }
+
+    @Override
+    public void clearBody() {
+        this.object = null;
+    }
+
+    @Override
+    public Serializable getObject() throws IOException, ClassNotFoundException {
+
+        if (isEmpty()) {
+            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/9064cc8a/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
new file mode 100644
index 0000000..1a0a17a
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.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.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/9064cc8a/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
new file mode 100644
index 0000000..c21d5c1
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java
@@ -0,0 +1,62 @@
+/**
+ * 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 boolean isEmpty() {
+        return text != null && !text.isEmpty();
+    }
+
+    @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;
+    }
+}


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