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 2016/10/21 15:48:17 UTC

[2/5] qpid-jms git commit: QPIDJMS-215 Perform Message encoding at send time

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/657747b7/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageBuilderTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageBuilderTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageBuilderTest.java
deleted file mode 100644
index eee5f8e..0000000
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageBuilderTest.java
+++ /dev/null
@@ -1,737 +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.provider.amqp.message;
-
-import static org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.encodeMessage;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.qpid.jms.message.JmsBytesMessage;
-import org.apache.qpid.jms.message.JmsMessage;
-import org.apache.qpid.jms.message.JmsObjectMessage;
-import org.apache.qpid.jms.message.JmsStreamMessage;
-import org.apache.qpid.jms.message.JmsTextMessage;
-import org.apache.qpid.jms.message.facade.JmsMessageFacade;
-import org.apache.qpid.jms.meta.JmsConsumerId;
-import org.apache.qpid.jms.meta.JmsConsumerInfo;
-import org.apache.qpid.jms.provider.amqp.AmqpConsumer;
-import org.apache.qpid.jms.test.QpidJmsTestCase;
-import org.apache.qpid.proton.Proton;
-import org.apache.qpid.proton.amqp.Binary;
-import org.apache.qpid.proton.amqp.Symbol;
-import org.apache.qpid.proton.amqp.messaging.AmqpSequence;
-import org.apache.qpid.proton.amqp.messaging.AmqpValue;
-import org.apache.qpid.proton.amqp.messaging.Data;
-import org.apache.qpid.proton.amqp.messaging.MessageAnnotations;
-import org.apache.qpid.proton.message.Message;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-public class AmqpJmsMessageBuilderTest extends QpidJmsTestCase {
-    private AmqpConsumer mockConsumer;
-
-    @Before
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-
-        JmsConsumerId consumerId = new JmsConsumerId("ID:MOCK:1", 1, 1);
-        mockConsumer = Mockito.mock(AmqpConsumer.class);
-        Mockito.when(mockConsumer.getResourceInfo()).thenReturn(new JmsConsumerInfo(consumerId));
-    }
-
-    @Test
-    public void testCreate() {
-        new AmqpJmsMessageBuilder();
-    }
-
-    // =============== With The Message Type Annotation =========
-    // ==========================================================
-
-    /**
-     * Test that a message with the {@value AmqpMessageSupport#JMS_MSG_TYPE}
-     * annotation set to  {@value AmqpMessageSupport#JMS_MESSAGE} is
-     * treated as a generic {@link JmsMessage} with {@link AmqpJmsMessageFacade}
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test(expected = IOException.class)
-    public void testCreateMessageFromUnknownMessageTypeAnnotationValueThrows() throws Exception {
-        Message message = Proton.message();
-
-        Map<Symbol, Object> map = new HashMap<Symbol, Object>();
-        map.put(Symbol.valueOf(AmqpMessageSupport.JMS_MSG_TYPE), (byte) -1);
-
-        MessageAnnotations messageAnnotations = new MessageAnnotations(map);
-        message.setMessageAnnotations(messageAnnotations);
-
-        AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-    }
-
-    /**
-     * Test that a message with the {@value AmqpMessageSupport#JMS_MSG_TYPE}
-     * annotation set to  {@value AmqpMessageSupport#JMS_MESSAGE} is
-     * treated as a generic {@link JmsMessage} with {@link AmqpJmsMessageFacade}
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateGenericMessageFromMessageTypeAnnotation() throws Exception {
-        Message message = Proton.message();
-
-        Map<Symbol, Object> map = new HashMap<Symbol, Object>();
-        map.put(Symbol.valueOf(AmqpMessageSupport.JMS_MSG_TYPE), AmqpMessageSupport.JMS_MESSAGE);
-
-        MessageAnnotations messageAnnotations = new MessageAnnotations(map);
-        message.setMessageAnnotations(messageAnnotations);
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that a message with the {@value AmqpMessageSupport#JMS_MSG_TYPE}
-     * annotation set to  {@value AmqpMessageSupport#JMS_BYTES_MESSAGE} is
-     * treated as a {@link JmsBytesMessage} with {@link AmqpJmsBytesMessageFacade}
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateBytesMessageFromMessageTypeAnnotation() throws Exception {
-        Message message = Proton.message();
-
-        Map<Symbol, Object> map = new HashMap<Symbol, Object>();
-        map.put(Symbol.valueOf(AmqpMessageSupport.JMS_MSG_TYPE), AmqpMessageSupport.JMS_BYTES_MESSAGE);
-
-        MessageAnnotations messageAnnotations = new MessageAnnotations(map);
-        message.setMessageAnnotations(messageAnnotations);
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsBytesMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsBytesMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that a message with the {@value AmqpMessageSupport#JMS_MSG_TYPE}
-     * annotation set to  {@value AmqpMessageSupport#JMS_BYTES_MESSAGE} is
-     * treated as a {@link JmsTextMessage} with {@link AmqpJmsTextMessageFacade}
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateTextMessageFromMessageTypeAnnotation() throws Exception {
-        Message message = Proton.message();
-
-        Map<Symbol, Object> map = new HashMap<Symbol, Object>();
-        map.put(Symbol.valueOf(AmqpMessageSupport.JMS_MSG_TYPE), AmqpMessageSupport.JMS_TEXT_MESSAGE);
-
-        MessageAnnotations messageAnnotations = new MessageAnnotations(map);
-        message.setMessageAnnotations(messageAnnotations);
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsTextMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsTextMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that a message with the {@value AmqpMessageSupport#JMS_MSG_TYPE}
-     * annotation set to  {@value AmqpMessageSupport#JMS_OBJECT_MESSAGE} and
-     * content-type set to {@value AmqpMessageSupport#OCTET_STREAM_CONTENT_TYPE} is
-     * treated as a {@link JmsObjectMessage} with {@link AmqpJmsObjectMessageFacade}
-     * containing a {@link AmqpSerializedObjectDelegate}.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateObjectMessageFromMessageTypeAnnotation() throws Exception {
-        createObjectMessageFromMessageTypeAnnotationTestImpl(true);
-    }
-
-    /**
-     * Test that a message with the {@value AmqpMessageSupport#JMS_MSG_TYPE}
-     * annotation set to  {@value AmqpMessageSupport#JMS_OBJECT_MESSAGE} and
-     * content-type not set is treated as a {@link JmsObjectMessage} with
-     * {@link AmqpJmsObjectMessageFacade} containing a {@link AmqpTypedObjectDelegate}.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateObjectMessageFromMessageTypeAnnotationAnd() throws Exception {
-        createObjectMessageFromMessageTypeAnnotationTestImpl(false);
-    }
-
-    private void createObjectMessageFromMessageTypeAnnotationTestImpl(boolean setJavaSerializedContentType) throws Exception {
-        Message message = Proton.message();
-
-        Map<Symbol, Object> map = new HashMap<Symbol, Object>();
-        map.put(Symbol.valueOf(AmqpMessageSupport.JMS_MSG_TYPE), AmqpMessageSupport.JMS_OBJECT_MESSAGE);
-
-        MessageAnnotations messageAnnotations = new MessageAnnotations(map);
-        message.setMessageAnnotations(messageAnnotations);
-
-        if (setJavaSerializedContentType) {
-            message.setContentType(AmqpMessageSupport.SERIALIZED_JAVA_OBJECT_CONTENT_TYPE);
-        }
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsObjectMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsObjectMessageFacade.class, facade.getClass());
-
-        AmqpObjectTypeDelegate delegate = ((AmqpJmsObjectMessageFacade) facade).getDelegate();
-        if (setJavaSerializedContentType) {
-            assertTrue("Unexpected delegate type: " + delegate, delegate instanceof AmqpSerializedObjectDelegate);
-        } else {
-            assertTrue("Unexpected delegate type: " + delegate, delegate instanceof AmqpTypedObjectDelegate);
-        }
-    }
-
-    /**
-     * Test that a message with the {@value AmqpMessageSupport#JMS_MSG_TYPE}
-     * annotation set to  {@value AmqpMessageSupport#JMS_STREAM_MESSAGE} is
-     * treated as a {@link JmsStreamMessage} with {@link AmqpJmsStreamMessageFacade}
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateStreamMessageFromMessageTypeAnnotation() throws Exception {
-
-        Message message = Proton.message();
-
-        Map<Symbol, Object> map = new HashMap<Symbol, Object>();
-        map.put(Symbol.valueOf(AmqpMessageSupport.JMS_MSG_TYPE), AmqpMessageSupport.JMS_STREAM_MESSAGE);
-
-        MessageAnnotations messageAnnotations = new MessageAnnotations(map);
-        message.setMessageAnnotations(messageAnnotations);
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsStreamMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsStreamMessageFacade.class, facade.getClass());
-    }
-
-    // =============== Without The Message Type Annotation =========
-    // =============================================================
-
-    // --------- No Body Section ---------
-
-    /**
-     * Test that a message with no body section, but with the content type set to
-     * {@value AmqpMessageSupport#OCTET_STREAM_CONTENT_TYPE} results in a BytesMessage
-     * when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateBytesMessageFromNoBodySectionAndContentType() throws Exception {
-        Message message = Proton.message();
-        message.setContentType(AmqpMessageSupport.OCTET_STREAM_CONTENT_TYPE);
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsBytesMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsBytesMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that a message with no body section, and no content-type results in a BytesMessage
-     * when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateBytesMessageFromNoBodySectionAndNoContentType() throws Exception {
-        Message message = Proton.message();
-
-        assertNull(message.getContentType());
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsBytesMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsBytesMessageFacade.class, facade.getClass());
-    }
-
-    /**
-    * Test that a message with no body section, but with the content type set to
-    * {@value AmqpMessageSupport#SERIALIZED_JAVA_OBJECT_CONTENT_TYPE} results in an ObjectMessage
-    * when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-    */
-    @Test
-    public void testCreateObjectMessageFromNoBodySectionAndContentType() throws Exception {
-        Message message = Proton.message();
-        message.setContentType(AmqpMessageSupport.SERIALIZED_JAVA_OBJECT_CONTENT_TYPE);
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsObjectMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsObjectMessageFacade.class, facade.getClass());
-
-        AmqpObjectTypeDelegate delegate = ((AmqpJmsObjectMessageFacade) facade).getDelegate();
-        assertTrue("Unexpected delegate type: " + delegate, delegate instanceof AmqpSerializedObjectDelegate);
-    }
-
-    @Test
-    public void testCreateTextMessageFromNoBodySectionAndContentType() throws Exception {
-        Message message = Proton.message();
-        message.setContentType("text/plain");
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsTextMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsTextMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that a message with no body section, and with the content type set to
-     * an unknown value results in a plain Message when not otherwise annotated to
-     * indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    public void testCreateGenericMessageFromNoBodySectionAndUnknownContentType() throws Exception {
-        Message message = Proton.message();
-        message.setContentType("unknown-content-type");
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsMessageFacade.class, facade.getClass());
-    }
-
-    // --------- Data Body Section ---------
-
-    /**
-     * Test that a data body containing nothing, but with the content type set to
-     * {@value AmqpMessageSupport#OCTET_STREAM_CONTENT_TYPE} results in a BytesMessage when not
-     * otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateBytesMessageFromDataWithEmptyBinaryAndContentType() throws Exception {
-        Message message = Proton.message();
-        Binary binary = new Binary(new byte[0]);
-        message.setBody(new Data(binary));
-        message.setContentType(AmqpMessageSupport.OCTET_STREAM_CONTENT_TYPE);
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsBytesMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsBytesMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that a message with an empty data body section, and with the content type
-     * set to an unknown value results in a BytesMessage when not otherwise annotated
-     * to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    public void testCreateBytesMessageFromDataWithUnknownContentType() throws Exception {
-        Message message = Proton.message();
-        Binary binary = new Binary(new byte[0]);
-        message.setBody(new Data(binary));
-        message.setContentType("unknown-content-type");
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsBytesMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsBytesMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that a receiving a data body containing nothing and no content type being set
-     * results in a BytesMessage when not otherwise annotated to indicate the type of
-     * JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateBytesMessageFromDataWithEmptyBinaryAndNoContentType() throws Exception {
-        Message message = Proton.message();
-        Binary binary = new Binary(new byte[0]);
-        message.setBody(new Data(binary));
-
-        assertNull(message.getContentType());
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsBytesMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsBytesMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that receiving a data body containing nothing, but with the content type set to
-     * {@value AmqpMessageSupport#SERIALIZED_JAVA_OBJECT_CONTENT_TYPE} results in an ObjectMessage
-     * when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateObjectMessageFromDataWithContentTypeAndEmptyBinary() throws Exception {
-        Message message = Proton.message();
-        Binary binary = new Binary(new byte[0]);
-        message.setBody(new Data(binary));
-        message.setContentType(AmqpMessageSupport.SERIALIZED_JAVA_OBJECT_CONTENT_TYPE);
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsObjectMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsObjectMessageFacade.class, facade.getClass());
-
-        AmqpObjectTypeDelegate delegate = ((AmqpJmsObjectMessageFacade) facade).getDelegate();
-        assertTrue("Unexpected delegate type: " + delegate, delegate instanceof AmqpSerializedObjectDelegate);
-    }
-
-    /**
-     * Test that receiving a Data body section with the content type set to
-     * 'text/plain' results in a TextMessage when not otherwise annotated to
-     * indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeTextPlain() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/plain;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/plain;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/plain;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/plain", StandardCharsets.UTF_8);
-    }
-
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeTextJson() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/json;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/json;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/json;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/json", StandardCharsets.UTF_8);
-    }
-
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeTextHtml() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/html;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/html;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/html;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/html", StandardCharsets.UTF_8);
-    }
-
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeTextFoo() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/foo;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/foo;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/foo;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("text/foo", StandardCharsets.UTF_8);
-    }
-
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeApplicationJson() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/json;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/json;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/json;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/json", StandardCharsets.UTF_8);
-    }
-
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeApplicationJsonVariant() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/something+json;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/something+json;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/something+json;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/something+json", StandardCharsets.UTF_8);
-    }
-
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeApplicationJavascript() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/javascript;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/javascript;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/javascript;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/javascript", StandardCharsets.UTF_8);
-    }
-
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeApplicationEcmascript() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/ecmascript;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/ecmascript;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/ecmascript;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/ecmascript", StandardCharsets.UTF_8);
-    }
-
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeApplicationXml() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/xml;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/xml;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/xml;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/xml", StandardCharsets.UTF_8);
-    }
-
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeApplicationXmlVariant() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/something+xml;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/something+xml;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/something+xml;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/something+xml", StandardCharsets.UTF_8);
-    }
-
-    @Test
-    public void testCreateTextMessageFromDataWithContentTypeApplicationXmlDtd() throws Exception {
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/xml-dtd;charset=iso-8859-1", StandardCharsets.ISO_8859_1);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/xml-dtd;charset=us-ascii", StandardCharsets.US_ASCII);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/xml-dtd;charset=utf-8", StandardCharsets.UTF_8);
-        doCreateTextMessageFromDataWithContentTypeTestImpl("application/xml-dtd", StandardCharsets.UTF_8);
-    }
-
-    private void doCreateTextMessageFromDataWithContentTypeTestImpl(String contentType, Charset expectedCharset) throws IOException {
-        Message message = Proton.message();
-        Binary binary = new Binary(new byte[0]);
-        message.setBody(new Data(binary));
-        message.setContentType(contentType);
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsTextMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsTextMessageFacade.class, facade.getClass());
-
-        AmqpJmsTextMessageFacade textFacade = (AmqpJmsTextMessageFacade) facade;
-        assertEquals("Unexpected character set", expectedCharset, textFacade.getCharset());
-    }
-
-    // --------- AmqpValue Body Section ---------
-
-    /**
-     * Test that an amqp-value body containing a string results in a TextMessage
-     * when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateTextMessageFromAmqpValueWithString() throws Exception {
-        Message message = Proton.message();
-        message.setBody(new AmqpValue("content"));
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsTextMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsTextMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that an amqp-value body containing a null results in an TextMessage
-     * when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateTextMessageFromAmqpValueWithNull() throws Exception {
-        Message message = Proton.message();
-        message.setBody(new AmqpValue(null));
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsTextMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsTextMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that an amqp-value body containing a map results in an ObjectMessage
-     * when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateAmqpObjectMessageFromAmqpValueWithMap() throws Exception {
-        Message message = Proton.message();
-        Map<String, String> map = new HashMap<String,String>();
-        message.setBody(new AmqpValue(map));
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsObjectMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsObjectMessageFacade.class, facade.getClass());
-
-        AmqpObjectTypeDelegate delegate = ((AmqpJmsObjectMessageFacade) facade).getDelegate();
-        assertTrue("Unexpected delegate type: " + delegate, delegate instanceof AmqpTypedObjectDelegate);
-    }
-
-    /**
-     * Test that an amqp-value body containing a list results in an ObjectMessage
-     * when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateAmqpObjectMessageFromAmqpValueWithList() throws Exception {
-        Message message = Proton.message();
-        List<String> list = new ArrayList<String>();
-        message.setBody(new AmqpValue(list));
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsObjectMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsObjectMessageFacade.class, facade.getClass());
-
-        AmqpObjectTypeDelegate delegate = ((AmqpJmsObjectMessageFacade) facade).getDelegate();
-        assertTrue("Unexpected delegate type: " + delegate, delegate instanceof AmqpTypedObjectDelegate);
-    }
-
-    /**
-     * Test that an amqp-value body containing a binary value results in BytesMessage
-     * when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateAmqpBytesMessageFromAmqpValueWithBinary() throws Exception {
-        Message message = Proton.message();
-        Binary binary = new Binary(new byte[0]);
-        message.setBody(new AmqpValue(binary));
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsBytesMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsBytesMessageFacade.class, facade.getClass());
-    }
-
-    /**
-     * Test that an amqp-value body containing a value which can't be categorised results in
-     * an ObjectMessage when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateObjectMessageFromAmqpValueWithUncategorisedContent() throws Exception {
-        Message message = Proton.message();
-        message.setBody(new AmqpValue(UUID.randomUUID()));
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsObjectMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsObjectMessageFacade.class, facade.getClass());
-
-        AmqpObjectTypeDelegate delegate = ((AmqpJmsObjectMessageFacade) facade).getDelegate();
-        assertTrue("Unexpected delegate type: " + delegate, delegate instanceof AmqpTypedObjectDelegate);
-    }
-
-    // --------- AmqpSequence Body Section ---------
-
-    /**
-     * Test that an amqp-sequence body containing a binary value results in an ObjectMessage
-     * when not otherwise annotated to indicate the type of JMS message it is.
-     *
-     * @throws Exception if an error occurs during the test.
-     */
-    @Test
-    public void testCreateObjectMessageMessageFromAmqpSequence() throws Exception
-    {
-        Message message = Proton.message();
-        List<String> list = new ArrayList<String>();
-        message.setBody(new AmqpSequence(list));
-
-        JmsMessage jmsMessage = AmqpJmsMessageBuilder.createJmsMessage(mockConsumer, encodeMessage(message));
-        assertNotNull("Message should not be null", jmsMessage);
-        assertEquals("Unexpected message class type", JmsObjectMessage.class, jmsMessage.getClass());
-
-        JmsMessageFacade facade = jmsMessage.getFacade();
-        assertNotNull("Facade should not be null", facade);
-        assertEquals("Unexpected facade class type", AmqpJmsObjectMessageFacade.class, facade.getClass());
-
-        AmqpObjectTypeDelegate delegate = ((AmqpJmsObjectMessageFacade) facade).getDelegate();
-        assertTrue("Unexpected delegate type: " + delegate, delegate instanceof AmqpTypedObjectDelegate);
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/657747b7/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
index bd50a67..544b70f 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
@@ -97,18 +97,17 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
     public void testNewMessageHasUnderlyingHeaderSectionWithDurableTrue() {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
 
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertNotNull("Expected message to have Header section", underlying.getHeader());
-        assertTrue("Durable not as expected", underlying.getHeader().getDurable());
+        assertNotNull("Expected message to have Header section", amqpMessageFacade.getHeader());
+        assertTrue("Durable not as expected", amqpMessageFacade.getHeader().getDurable());
     }
 
     @Test
     public void testNewMessageHasUnderlyingHeaderSectionWithNoTtlSet() {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
+        amqpMessageFacade.setHeader(new Header());
 
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertNotNull("Expected message to have Header section", underlying.getHeader());
-        assertNull("Ttl field should not be set", underlying.getHeader().getTtl());
+        assertNotNull("Expected message to have Header section", amqpMessageFacade.getHeader());
+        assertNull("Ttl field should not be set", amqpMessageFacade.getHeader().getTtl());
     }
 
     @Test
@@ -147,7 +146,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         assertTrue("Should have a ttl override", amqpMessageFacade.hasAmqpTimeToLiveOverride());
         assertEquals(ttl, amqpMessageFacade.getAmqpTimeToLiveOverride());
         // check value on underlying TTL field is NOT set
-        assertNull("TTL field on underlying message should NOT be set", amqpMessageFacade.getAmqpMessage().getHeader().getTtl());
+        assertNull("TTL field on underlying message should NOT be set", amqpMessageFacade.getHeader().getTtl());
     }
 
     @Test
@@ -164,7 +163,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         // check value on underlying TTL field is NOT set
         assertEquals("TTL has not been cleared", 0, message.getTtl());
-        assertNull("TTL field on underlying message should NOT be set", amqpMessageFacade.getAmqpMessage().getHeader().getTtl());
+        assertNull("TTL field on underlying message should NOT be set", amqpMessageFacade.getHeader().getTtl());
     }
 
     @Test
@@ -182,7 +181,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         // check value on underlying TTL field is NOT set
         assertEquals("TTL has not been overriden", newTtl, message.getTtl());
-        assertEquals("TTL field on underlying message should be set", UnsignedInteger.valueOf(newTtl), amqpMessageFacade.getAmqpMessage().getHeader().getTtl());
+        assertEquals("TTL field on underlying message should be set", UnsignedInteger.valueOf(newTtl), amqpMessageFacade.getHeader().getTtl());
     }
 
     @Test
@@ -197,7 +196,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         amqpMessageFacade.onSend(producerTtl);
 
         // check value on underlying TTL field is set to the override
-        assertEquals("TTL has not been overriden", overrideTtl, message.getTtl());
+        assertEquals("TTL has not been overriden", overrideTtl, amqpMessageFacade.getHeader().getTtl().intValue());
     }
 
     // --- delivery count  ---
@@ -247,12 +246,12 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
     @Test
     public void testGetDeliveryCountForReceivedMessageWithHeaderWithDeliveryCount() {
         Message message = Proton.message();
-        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
-
         Header header = new Header();
         header.setDeliveryCount(new UnsignedInteger(1));
         message.setHeader(header);
 
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+
         // JMS delivery count starts at one.
         assertEquals("expected delivery count value not found", 2, amqpMessageFacade.getDeliveryCount());
 
@@ -278,12 +277,12 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
     @Test
     public void testSetRedeliveredWhenAlreadyRedeliveredDoesNotChangeDeliveryCount() {
         Message message = Proton.message();
-        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
-
         Header header = new Header();
         header.setDeliveryCount(new UnsignedInteger(1));
         message.setHeader(header);
 
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+
         // Redelivered state inferred from delivery count
         assertTrue(amqpMessageFacade.isRedelivered());
         assertEquals(1, amqpMessageFacade.getRedeliveryCount());;
@@ -296,12 +295,12 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
     @Test
     public void testSetRedeliveredFalseClearsDeliveryCount() {
         Message message = Proton.message();
-        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
-
         Header header = new Header();
         header.setDeliveryCount(new UnsignedInteger(1));
         message.setHeader(header);
 
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+
         // Redelivered state inferred from delivery count
         assertTrue(amqpMessageFacade.isRedelivered());
         assertEquals(1, amqpMessageFacade.getRedeliveryCount());;
@@ -424,9 +423,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         amqpMessageFacade.setPriority(priority);
 
         assertEquals("expected priority value not found", priority, amqpMessageFacade.getPriority());
-
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertEquals("expected priority value not found", priority, underlying.getPriority());
+        assertEquals("expected priority value not found", priority, amqpMessageFacade.getHeader().getPriority().intValue());
     }
 
     /**
@@ -439,9 +436,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         amqpMessageFacade.setPriority(-1);
 
         assertEquals("expected priority value not found", 0, amqpMessageFacade.getPriority());
-
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertEquals("expected priority value not found", 0, underlying.getPriority());
+        assertEquals("expected priority value not found", 0, amqpMessageFacade.getHeader().getPriority().intValue());
     }
 
     /**
@@ -454,9 +449,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         amqpMessageFacade.setPriority(11);
 
         assertEquals("expected priority value not found", 9, amqpMessageFacade.getPriority());
-
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertEquals("expected priority value not found", 9, underlying.getPriority());
+        assertEquals("expected priority value not found", 9, amqpMessageFacade.getHeader().getPriority().intValue());
     }
 
     /**
@@ -497,8 +490,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         assertEquals("expected priority value not returned", Message.DEFAULT_PRIORITY, amqpMessageFacade.getPriority());
 
         //check the underlying header field was actually cleared rather than set to Message.DEFAULT_PRIORITY
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertNull("underlying header priority field was not cleared", underlying.getHeader().getPriority());
+        assertNull("underlying header priority field was not cleared", amqpMessageFacade.getHeader().getPriority());
     }
 
     // ====== AMQP Properties Section =======
@@ -507,9 +499,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
     @Test
     public void testNewMessageHasNoUnderlyingPropertiesSection() {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
-
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertNull(underlying.getProperties());
+        assertNull(amqpMessageFacade.getProperties());
     }
 
     // --- group-id field ---
@@ -534,7 +524,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setGroupId(null);
 
-        assertNull("properties section was created", amqpMessageFacade.getAmqpMessage().getProperties());
+        assertNull("properties section was created", amqpMessageFacade.getProperties());
     }
 
     /**
@@ -551,8 +541,8 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setGroupId(groupId);
 
-        assertNotNull("properties section was not created", amqpMessageFacade.getAmqpMessage().getProperties());
-        assertEquals("value was not set for GroupId as expected", groupId, amqpMessageFacade.getAmqpMessage().getProperties().getGroupId());
+        assertNotNull("properties section was not created", amqpMessageFacade.getProperties());
+        assertEquals("value was not set for GroupId as expected", groupId, amqpMessageFacade.getProperties().getGroupId());
 
         assertEquals("value was not set for GroupId as expected", groupId, amqpMessageFacade.getGroupId());
     }
@@ -570,7 +560,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         amqpMessageFacade.setGroupId(groupId);
         amqpMessageFacade.setGroupId(null);
 
-        assertNull("value was not cleared for GroupId as expected", amqpMessageFacade.getAmqpMessage().getProperties().getGroupId());
+        assertNull("value was not cleared for GroupId as expected", amqpMessageFacade.getProperties().getGroupId());
         assertNull("value was not cleared for GroupId as expected", amqpMessageFacade.getGroupId());
     }
 
@@ -613,7 +603,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setReplyToGroupId(null);
 
-        assertNull("properties section was created", amqpMessageFacade.getAmqpMessage().getProperties());
+        assertNull("properties section was created", amqpMessageFacade.getProperties());
     }
 
     /**
@@ -665,12 +655,10 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
 
-        Message underlyingMessage = amqpMessageFacade.getAmqpMessage();
-
         amqpMessageFacade.setReplyToGroupId(replyToGroupId);
 
-        assertNotNull("expected ReplyToGroupId on message was not found", underlyingMessage.getReplyToGroupId());
-        assertEquals("expected ReplyToGroupId on message was not found", replyToGroupId, underlyingMessage.getReplyToGroupId());
+        assertNotNull("expected ReplyToGroupId on message was not found", amqpMessageFacade.getProperties().getReplyToGroupId());
+        assertEquals("expected ReplyToGroupId on message was not found", replyToGroupId, amqpMessageFacade.getProperties().getReplyToGroupId());
     }
 
     /**
@@ -699,7 +687,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         int groupSequence = 5;
         amqpMessageFacade.setGroupSequence(groupSequence);
 
-        assertEquals("underlying message should have groupSequence field value", groupSequence, amqpMessageFacade.getAmqpMessage().getProperties().getGroupSequence().longValue());
+        assertEquals("underlying message should have groupSequence field value", groupSequence, amqpMessageFacade.getProperties().getGroupSequence().longValue());
         assertEquals("GroupSequence not as expected", groupSequence, amqpMessageFacade.getGroupSequence());
     }
 
@@ -717,7 +705,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         UnsignedInteger mapped = UnsignedInteger.valueOf(MAX_UINT - delta);
         amqpMessageFacade.setGroupSequence(-1 - delta);
 
-        assertEquals("underlying message should have no groupSequence field value",mapped, amqpMessageFacade.getAmqpMessage().getProperties().getGroupSequence());
+        assertEquals("underlying message should have no groupSequence field value",mapped, amqpMessageFacade.getProperties().getGroupSequence());
         assertEquals("GroupSequence not as expected", -1 - delta, amqpMessageFacade.getGroupSequence());
     }
 
@@ -766,7 +754,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setGroupSequence(0);
 
-        assertNull("underlying message should still have no properties setion", amqpMessageFacade.getAmqpMessage().getProperties());
+        assertNull("underlying message should still have no properties setion", amqpMessageFacade.getProperties());
         assertEquals("GroupSequence should be 0", 0, amqpMessageFacade.getGroupSequence());
     }
 
@@ -782,13 +770,12 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
 
-        Message underlyingMessage = amqpMessageFacade.getAmqpMessage();
-        assertNull(underlyingMessage.getAddress());
+        assertNull(amqpMessageFacade.getProperties());
 
         amqpMessageFacade.setDestination(dest);
 
-        assertNotNull(underlyingMessage.getAddress());
-        assertEquals(testToAddress, underlyingMessage.getAddress());
+        assertNotNull(amqpMessageFacade.getProperties().getTo());
+        assertEquals(testToAddress, amqpMessageFacade.getProperties().getTo());
         assertEquals(dest, amqpMessageFacade.getDestination());
     }
 
@@ -822,13 +809,12 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
 
-        Message underlyingMessage = amqpMessageFacade.getAmqpMessage();
-        assertNull(underlyingMessage.getReplyTo());
+        assertNull(amqpMessageFacade.getProperties());
 
         amqpMessageFacade.setReplyTo(dest);
 
-        assertNotNull(underlyingMessage.getReplyTo());
-        assertEquals(testReplyToAddress, underlyingMessage.getReplyTo());
+        assertNotNull(amqpMessageFacade.getProperties().getReplyTo());
+        assertEquals(testReplyToAddress, amqpMessageFacade.getProperties().getReplyTo());
         assertEquals(dest, amqpMessageFacade.getReplyTo());
     }
 
@@ -871,10 +857,8 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
         amqpMessageFacade.setCorrelationId(testCorrelationId);
 
-        Message amqpMessage = amqpMessageFacade.getAmqpMessage();
-        assertEquals("correlationId value on underlying AMQP message not as expected", testCorrelationId, amqpMessage.getCorrelationId());
+        assertEquals("correlationId value on underlying AMQP message not as expected", testCorrelationId, amqpMessageFacade.getProperties().getCorrelationId());
         assertEquals("Expected correlationId not returned", testCorrelationId, amqpMessageFacade.getCorrelationId());
-
     }
 
     /**
@@ -889,8 +873,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
         amqpMessageFacade.setCorrelationId(testCorrelationId);
 
-        Message amqpMessage = amqpMessageFacade.getAmqpMessage();
-        assertEquals("correlationId value on underlying AMQP message not as expected", testCorrelationId, amqpMessage.getCorrelationId());
+        assertEquals("correlationId value on underlying AMQP message not as expected", testCorrelationId, amqpMessageFacade.getProperties().getCorrelationId());
         assertEquals("Expected correlationId not returned from facade", testCorrelationId, amqpMessageFacade.getCorrelationId());
     }
 
@@ -906,7 +889,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         amqpMessageFacade.setCorrelationId("cid");
         amqpMessageFacade.setCorrelationId(null);
 
-        assertNull("Unexpected correlationId value on underlying AMQP message", amqpMessageFacade.getAmqpMessage().getCorrelationId());
+        assertNull("Unexpected correlationId value on underlying AMQP message", amqpMessageFacade.getCorrelationId());
         assertNull("Expected correlationId bytes to be null", amqpMessageFacade.getCorrelationId());
     }
 
@@ -944,7 +927,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
         amqpMessageFacade.setCorrelationId(converted);
 
-        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getAmqpMessage().getCorrelationId());
+        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getProperties().getCorrelationId());
         assertEquals("Expected correlationId not returned", converted, amqpMessageFacade.getCorrelationId());
     }
 
@@ -972,7 +955,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
         amqpMessageFacade.setCorrelationId(converted);
 
-        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getAmqpMessage().getCorrelationId());
+        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getProperties().getCorrelationId());
         assertEquals("Expected correlationId not returned", converted, amqpMessageFacade.getCorrelationId());
     }
 
@@ -1004,7 +987,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
         amqpMessageFacade.setCorrelationId(converted);
 
-        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getAmqpMessage().getCorrelationId());
+        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getProperties().getCorrelationId());
         assertEquals("Expected correlationId not returned", converted, amqpMessageFacade.getCorrelationId());
     }
 
@@ -1021,7 +1004,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
         amqpMessageFacade.setCorrelationIdBytes(bytes);
 
-        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getAmqpMessage().getCorrelationId());
+        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getProperties().getCorrelationId());
         assertArrayEquals("Expected correlationId bytes not returned", bytes, amqpMessageFacade.getCorrelationIdBytes());
     }
 
@@ -1039,7 +1022,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         amqpMessageFacade.setCorrelationIdBytes(bytes);
         amqpMessageFacade.setCorrelationIdBytes(null);
 
-        assertNull("Unexpected correlationId value on underlying AMQP message", amqpMessageFacade.getAmqpMessage().getCorrelationId());
+        assertNull("Unexpected correlationId value on underlying AMQP message", amqpMessageFacade.getCorrelationId());
         assertNull("Expected correlationId bytes to be null", amqpMessageFacade.getCorrelationIdBytes());
     }
 
@@ -1069,7 +1052,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
 
-        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getAmqpMessage().getCorrelationId());
+        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getProperties().getCorrelationId());
         assertArrayEquals("Expected correlationId bytes not returned", bytes, amqpMessageFacade.getCorrelationIdBytes());
     }
 
@@ -1140,7 +1123,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setMessageId(testMessageId);
 
-        assertEquals("underlying messageId value not as expected", testMessageId, amqpMessageFacade.getAmqpMessage().getMessageId());
+        assertEquals("underlying messageId value not as expected", testMessageId, amqpMessageFacade.getMessageId());
     }
 
     /**
@@ -1157,11 +1140,11 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setMessageId(testMessageId);
 
-        assertNotNull("messageId should not be null", amqpMessageFacade.getAmqpMessage().getMessageId());
+        assertNotNull("messageId should not be null", amqpMessageFacade.getMessageId());
 
         amqpMessageFacade.setMessageId(null);
 
-        assertNull("Expected messageId to be null", amqpMessageFacade.getAmqpMessage().getMessageId());
+        assertNull("Expected messageId to be null", amqpMessageFacade.getMessageId());
         assertNull("ID was not null", amqpMessageFacade.getMessageId());
     }
 
@@ -1256,13 +1239,13 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
     public void testSetCreationTimeOnNewNewMessage() {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
 
-        assertNull("Expected null Properties section", amqpMessageFacade.getAmqpMessage().getProperties());
+        assertNull("Expected null Properties section", amqpMessageFacade.getProperties());
 
         long expected = 1;
         amqpMessageFacade.setTimestamp(expected);
 
         assertEquals("Unexpected timestamp value", expected, amqpMessageFacade.getTimestamp());
-        assertEquals("Expected creation-time field to be set on new Properties section", new Date(expected), amqpMessageFacade.getAmqpMessage().getProperties().getCreationTime());
+        assertEquals("Expected creation-time field to be set on new Properties section", new Date(expected), amqpMessageFacade.getProperties().getCreationTime());
     }
 
     @Test
@@ -1280,7 +1263,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setTimestamp(timestamp);
 
-        assertEquals("Expected creation-time field to be set", timestamp.longValue(), amqpMessageFacade.getAmqpMessage().getProperties().getCreationTime().getTime());
+        assertEquals("Expected creation-time field to be set", timestamp.longValue(), amqpMessageFacade.getProperties().getCreationTime().getTime());
         assertEquals("Expected timestamp", timestamp.longValue(), amqpMessageFacade.getTimestamp());
     }
 
@@ -1290,7 +1273,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setTimestamp(0);
 
-        assertNull("underlying message should have no properties section", amqpMessageFacade.getAmqpMessage().getProperties());
+        assertNull("underlying message should have no properties section", amqpMessageFacade.getProperties());
         assertEquals("Timestamp should not be set", 0, amqpMessageFacade.getTimestamp());
     }
 
@@ -1303,7 +1286,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setTimestamp(0);
 
-        assertNull("Expected creation-time to be null", amqpMessageFacade.getAmqpMessage().getProperties().getCreationTime());
+        assertNull("Expected creation-time to be null", amqpMessageFacade.getProperties().getCreationTime());
         assertEquals("Expected no timestamp", 0, amqpMessageFacade.getTimestamp());
     }
 
@@ -1324,7 +1307,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setExpiration(timestamp);
 
-        assertEquals("Expected absolute-expiry-time to be set", timestamp.longValue(), amqpMessageFacade.getAmqpMessage().getProperties().getAbsoluteExpiryTime().getTime());
+        assertEquals("Expected absolute-expiry-time to be set", timestamp.longValue(), amqpMessageFacade.getProperties().getAbsoluteExpiryTime().getTime());
         assertEquals("Expected expiration to be set", timestamp.longValue(), amqpMessageFacade.getExpiration());
     }
 
@@ -1332,11 +1315,11 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
     public void testSetExpirationZeroOnNewMessageDoesNotCreatePropertiesSection() {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
 
-        assertNull("Expected properties section not to exist", amqpMessageFacade.getAmqpMessage().getProperties());
+        assertNull("Expected properties section not to exist", amqpMessageFacade.getProperties());
 
         amqpMessageFacade.setExpiration(0);
 
-        assertNull("Expected properties section still not to exist", amqpMessageFacade.getAmqpMessage().getProperties());
+        assertNull("Expected properties section still not to exist", amqpMessageFacade.getProperties());
     }
 
     @Test
@@ -1348,7 +1331,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setExpiration(0);
 
-        assertNull("Expected absolute-expiry-time to be null", amqpMessageFacade.getAmqpMessage().getProperties().getAbsoluteExpiryTime());
+        assertNull("Expected absolute-expiry-time to be null", amqpMessageFacade.getProperties().getAbsoluteExpiryTime());
         assertEquals("Expected no expiration", 0, amqpMessageFacade.getExpiration());
     }
 
@@ -1393,8 +1376,8 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setUserId(userIdString);
 
-        assertNotNull("properties section was not created", amqpMessageFacade.getAmqpMessage().getProperties());
-        assertTrue("bytes were not set as expected for userid", Arrays.equals(bytes, amqpMessageFacade.getAmqpMessage().getProperties().getUserId().getArray()));
+        assertNotNull("properties section was not created", amqpMessageFacade.getProperties());
+        assertTrue("bytes were not set as expected for userid", Arrays.equals(bytes, amqpMessageFacade.getProperties().getUserId().getArray()));
         assertEquals("userid not as expected", userIdString, amqpMessageFacade.getUserId());
     }
 
@@ -1411,8 +1394,8 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         amqpMessageFacade.setUserId(userIdString);
         amqpMessageFacade.setUserId(null);
 
-        assertNotNull("properties section was not created", amqpMessageFacade.getAmqpMessage().getProperties());
-        assertNull("bytes were not cleared as expected for userid", amqpMessageFacade.getAmqpMessage().getProperties().getUserId());
+        assertNotNull("properties section was not created", amqpMessageFacade.getProperties());
+        assertNull("bytes were not cleared as expected for userid", amqpMessageFacade.getProperties().getUserId());
         assertNull("userid not as expected", amqpMessageFacade.getUserId());
     }
 
@@ -1422,7 +1405,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setUserId(null);
 
-        assertNull("underlying message should still have no properties setion", amqpMessageFacade.getAmqpMessage().getProperties());
+        assertNull("underlying message should still have no properties setion", amqpMessageFacade.getProperties());
         assertEquals("UserId should be null", null, amqpMessageFacade.getUserId());
     }
 
@@ -1469,8 +1452,8 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setUserIdBytes(bytes);
 
-        assertNotNull("properties section was not created", amqpMessageFacade.getAmqpMessage().getProperties());
-        assertTrue("bytes were not set as expected for userid", Arrays.equals(bytes, amqpMessageFacade.getAmqpMessage().getProperties().getUserId().getArray()));
+        assertNotNull("properties section was not created", amqpMessageFacade.getProperties());
+        assertTrue("bytes were not set as expected for userid", Arrays.equals(bytes, amqpMessageFacade.getProperties().getUserId().getArray()));
         assertArrayEquals("userid bytes not as expected", bytes, amqpMessageFacade.getUserIdBytes());
     }
 
@@ -1489,8 +1472,8 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         amqpMessageFacade.setUserIdBytes(bytes);
         amqpMessageFacade.setUserId(null);
 
-        assertNotNull("properties section was not created", amqpMessageFacade.getAmqpMessage().getProperties());
-        assertNull("bytes were not cleared as expected for userid", amqpMessageFacade.getAmqpMessage().getProperties().getUserId());
+        assertNotNull("properties section was not created", amqpMessageFacade.getProperties());
+        assertNull("bytes were not cleared as expected for userid", amqpMessageFacade.getProperties().getUserId());
         assertNull("userid bytes not as expected", amqpMessageFacade.getUserIdBytes());
     }
 
@@ -1500,7 +1483,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setUserIdBytes(null);
 
-        assertNull("underlying message should still have no properties setion", amqpMessageFacade.getAmqpMessage().getProperties());
+        assertNull("underlying message should still have no properties setion", amqpMessageFacade.getProperties());
         assertEquals("UserId should be null", null, amqpMessageFacade.getUserIdBytes());
     }
 
@@ -1511,20 +1494,18 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
     public void testNewMessageHasUnderlyingMessageAnnotationsSectionWithTypeAnnotation() {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();;
 
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertNotNull(underlying.getMessageAnnotations());
+        assertNotNull(amqpMessageFacade.getMessageAnnotations());
         Symbol annotationKey = AmqpMessageSupport.getSymbol(AmqpMessageSupport.JMS_MSG_TYPE);
-        assertEquals(AmqpMessageSupport.JMS_MESSAGE, underlying.getMessageAnnotations().getValue().get(annotationKey));
+        assertEquals(AmqpMessageSupport.JMS_MESSAGE, amqpMessageFacade.getMessageAnnotations().getValue().get(annotationKey));
     }
 
     @Test
     public void testNewMessageDoesNotHaveUnderlyingMessageAnnotationsSectionWithDeliveryTime() {
         AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();;
 
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertNotNull(underlying.getMessageAnnotations());
+        assertNotNull(amqpMessageFacade.getMessageAnnotations());
         Symbol annotationKey = AmqpMessageSupport.getSymbol(AmqpMessageSupport.JMS_DELIVERY_TIME);
-        assertNull(underlying.getMessageAnnotations().getValue().get(annotationKey));
+        assertNull(amqpMessageFacade.getMessageAnnotations().getValue().get(annotationKey));
     }
 
     @Test
@@ -1594,7 +1575,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         // check setting first annotation
         amqpMessageFacade.setMessageAnnotation(symbolKeyName, value);
 
-        MessageAnnotations underlyingAnnotations = amqpMessageFacade.getAmqpMessage().getMessageAnnotations();
+        MessageAnnotations underlyingAnnotations = amqpMessageFacade.getMessageAnnotations();
         assertNotNull(underlyingAnnotations);
 
         assertTrue(underlyingAnnotations.getValue().containsKey(Symbol.valueOf(symbolKeyName)));
@@ -1643,8 +1624,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.clearMessageAnnotations();
 
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertNull(underlying.getMessageAnnotations());
+        assertNull(amqpMessageFacade.getMessageAnnotations());
     }
 
     @Test
@@ -1662,8 +1642,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.clearMessageAnnotations();
 
-        Message underlying = amqpMessageFacade.getAmqpMessage();
-        assertNull(underlying.getMessageAnnotations());
+        assertNull(amqpMessageFacade.getMessageAnnotations());
     }
 
     // ====== Type =======
@@ -1681,7 +1660,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         amqpMessageFacade.setType(jmsType);
 
         assertEquals("Subject should be set to the provded JMSType string", jmsType,
-                        amqpMessageFacade.getAmqpMessage().getSubject());
+                        amqpMessageFacade.getProperties().getSubject());
     }
 
     @Test
@@ -1691,9 +1670,9 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
         amqpMessageFacade.setType(jmsType);
         assertEquals("Subject should be set to the provded JMSType string", jmsType,
-                        amqpMessageFacade.getAmqpMessage().getSubject());
+                        amqpMessageFacade.getProperties().getSubject());
         amqpMessageFacade.setType(null);
-        assertNull("Subject should be clear", amqpMessageFacade.getAmqpMessage().getSubject());
+        assertNull("Subject should be clear", amqpMessageFacade.getProperties().getSubject());
     }
 
     /**
@@ -1838,7 +1817,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         assertEquals(TEST_VALUE_STRING_A, amqpMessageFacade.getProperty(TEST_PROP_A));
 
         @SuppressWarnings("unchecked")
-        Map<String, Object> underlyingApplicationProps = amqpMessageFacade.getAmqpMessage().getApplicationProperties().getValue();
+        Map<String, Object> underlyingApplicationProps = amqpMessageFacade.getApplicationProperties().getValue();
         assertTrue(underlyingApplicationProps.containsKey(TEST_PROP_A));
         assertEquals(TEST_VALUE_STRING_A, underlyingApplicationProps.get(TEST_PROP_A));
     }
@@ -1947,9 +1926,10 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
 
     @Test
     public void testClearBodyRemoveMessageBody() {
-        Message message = Mockito.mock(Message.class);
-        JmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+        Message message = Message.Factory.create();
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+        amqpMessageFacade = Mockito.spy(amqpMessageFacade);
         amqpMessageFacade.clearBody();
-        Mockito.verify(message).setBody(null);
+        Mockito.verify(amqpMessageFacade).setBody(null);
     }
 }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/657747b7/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageTypesTestCase.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageTypesTestCase.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageTypesTestCase.java
index 48a78f6..813cc82 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageTypesTestCase.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageTypesTestCase.java
@@ -16,10 +16,6 @@
  */
 package org.apache.qpid.jms.provider.amqp.message;
 
-import static org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.encodeMessage;
-
-import java.nio.charset.StandardCharsets;
-
 import org.apache.qpid.jms.JmsDestination;
 import org.apache.qpid.jms.JmsTopic;
 import org.apache.qpid.jms.meta.JmsConnectionId;
@@ -47,51 +43,86 @@ public class AmqpJmsMessageTypesTestCase extends QpidJmsTestCase {
     //---------- Test Support Methods ----------------------------------------//
 
     protected AmqpJmsMessageFacade createNewMessageFacade() {
-        return new AmqpJmsMessageFacade(createMockAmqpConnection());
+        AmqpJmsMessageFacade facade = new AmqpJmsMessageFacade();
+        facade.initialize(createMockAmqpConnection());
+        return facade;
     }
 
     protected AmqpJmsMessageFacade createReceivedMessageFacade(AmqpConsumer amqpConsumer, Message message) {
-        return new AmqpJmsMessageFacade(amqpConsumer, message);
+        AmqpJmsMessageFacade facade = new AmqpJmsMessageFacade();
+        initializeReceivedMessage(facade, amqpConsumer, message);
+        return facade;
     }
 
     protected AmqpJmsTextMessageFacade createNewTextMessageFacade() {
-        return new AmqpJmsTextMessageFacade(createMockAmqpConnection());
+        AmqpJmsTextMessageFacade facade = new AmqpJmsTextMessageFacade();
+        facade.initialize(createMockAmqpConnection());
+        return facade;
     }
 
     protected AmqpJmsTextMessageFacade createReceivedTextMessageFacade(AmqpConsumer amqpConsumer, Message message) {
-        return new AmqpJmsTextMessageFacade(amqpConsumer, message, StandardCharsets.UTF_8);
+        AmqpJmsTextMessageFacade facade = new AmqpJmsTextMessageFacade();
+        initializeReceivedMessage(facade, amqpConsumer, message);
+        return facade;
     }
 
     protected AmqpJmsBytesMessageFacade createNewBytesMessageFacade() {
-        return new AmqpJmsBytesMessageFacade(createMockAmqpConnection());
+        AmqpJmsBytesMessageFacade facade = new AmqpJmsBytesMessageFacade();
+        facade.initialize(createMockAmqpConnection());
+        return facade;
     }
 
     protected AmqpJmsBytesMessageFacade createReceivedBytesMessageFacade(AmqpConsumer amqpConsumer, Message message) {
-        return new AmqpJmsBytesMessageFacade(amqpConsumer, message);
+        AmqpJmsBytesMessageFacade facade = new AmqpJmsBytesMessageFacade();
+        initializeReceivedMessage(facade, amqpConsumer, message);
+        return facade;
     }
 
     protected AmqpJmsMapMessageFacade createNewMapMessageFacade() {
-        return new AmqpJmsMapMessageFacade(createMockAmqpConnection());
+        AmqpJmsMapMessageFacade facade = new AmqpJmsMapMessageFacade();
+        facade.initialize(createMockAmqpConnection());
+        return facade;
     }
 
     protected AmqpJmsMapMessageFacade createReceivedMapMessageFacade(AmqpConsumer amqpConsumer, Message message) {
-        return new AmqpJmsMapMessageFacade(amqpConsumer, message);
+        AmqpJmsMapMessageFacade facade = new AmqpJmsMapMessageFacade();
+        initializeReceivedMessage(facade, amqpConsumer, message);
+        return facade;
     }
 
     protected AmqpJmsStreamMessageFacade createNewStreamMessageFacade() {
-        return new AmqpJmsStreamMessageFacade(createMockAmqpConnection());
+        AmqpJmsStreamMessageFacade facade = new AmqpJmsStreamMessageFacade();
+        facade.initialize(createMockAmqpConnection());
+        return facade;
     }
 
     protected AmqpJmsStreamMessageFacade createReceivedStreamMessageFacade(AmqpConsumer amqpConsumer, Message message) {
-        return new AmqpJmsStreamMessageFacade(amqpConsumer, message);
+        AmqpJmsStreamMessageFacade facade = new AmqpJmsStreamMessageFacade();
+        initializeReceivedMessage(facade, amqpConsumer, message);
+        return facade;
     }
 
     protected AmqpJmsObjectMessageFacade createNewObjectMessageFacade(boolean amqpTyped) {
-        return new AmqpJmsObjectMessageFacade(createMockAmqpConnection(), amqpTyped);
+        AmqpJmsObjectMessageFacade facade = new AmqpJmsObjectMessageFacade();
+        facade.initialize(createMockAmqpConnection(amqpTyped));
+        return facade;
     }
 
     protected AmqpJmsObjectMessageFacade createReceivedObjectMessageFacade(AmqpConsumer amqpConsumer, Message message) {
-        return new AmqpJmsObjectMessageFacade(amqpConsumer, message, encodeMessage(message));
+        AmqpJmsObjectMessageFacade facade = new AmqpJmsObjectMessageFacade();
+        initializeReceivedMessage(facade, amqpConsumer, message);
+        return facade;
+    }
+
+    protected void initializeReceivedMessage(AmqpJmsMessageFacade facade, AmqpConsumer amqpConsumer, Message message) {
+        facade.setHeader(message.getHeader());
+        facade.setDeliveryAnnotations(message.getDeliveryAnnotations());
+        facade.setMessageAnnotations(message.getMessageAnnotations());
+        facade.setProperties(message.getProperties());
+        facade.setApplicationProperties(message.getApplicationProperties());
+        facade.setBody(message.getBody());
+        facade.setFooter(message.getFooter());
+        facade.initialize(amqpConsumer);
     }
 
     protected AmqpConsumer createMockAmqpConsumer() {
@@ -105,9 +136,14 @@ public class AmqpJmsMessageTypesTestCase extends QpidJmsTestCase {
     }
 
     protected AmqpConnection createMockAmqpConnection() {
+        return createMockAmqpConnection(false);
+    }
+
+    protected AmqpConnection createMockAmqpConnection(boolean amqpTyped) {
         JmsConnectionId connectionId = new JmsConnectionId("ID:MOCK:1");
         AmqpConnection connection = Mockito.mock(AmqpConnection.class);
         Mockito.when(connection.getResourceInfo()).thenReturn(new JmsConnectionInfo(connectionId));
+        Mockito.when(connection.isObjectMessageUsesAmqpTypes()).thenReturn(amqpTyped);
 
         return connection;
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/657747b7/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacadeTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacadeTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacadeTest.java
index f95c685..7a6f10f 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacadeTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacadeTest.java
@@ -56,8 +56,7 @@ public class AmqpJmsObjectMessageFacadeTest extends AmqpJmsMessageTypesTestCase
     public void testNewMessageToSendContainsMessageTypeAnnotation() throws Exception {
         AmqpJmsObjectMessageFacade amqpObjectMessageFacade = createNewObjectMessageFacade(false);
 
-        Message protonMessage = amqpObjectMessageFacade.getAmqpMessage();
-        MessageAnnotations annotations = protonMessage.getMessageAnnotations();
+        MessageAnnotations annotations = amqpObjectMessageFacade.getMessageAnnotations();
         Map<Symbol, Object> annotationsMap = annotations.getValue();
 
         assertNotNull("MessageAnnotations section was not present", annotations);
@@ -99,12 +98,11 @@ public class AmqpJmsObjectMessageFacadeTest extends AmqpJmsMessageTypesTestCase
         AmqpJmsObjectMessageFacade amqpObjectMessageFacade = createNewObjectMessageFacade(amqpTyped);
         amqpObjectMessageFacade.onSend(0);
 
-        Message protonMessage = amqpObjectMessageFacade.getAmqpMessage();
-        assertNotNull("Message body should be presents", protonMessage.getBody());
+        assertNotNull("Message body should be presents", amqpObjectMessageFacade.getBody());
         if(amqpTyped) {
-            assertSame("Expected existing body section to be replaced", AmqpTypedObjectDelegate.NULL_OBJECT_BODY, protonMessage.getBody());
+            assertSame("Expected existing body section to be replaced", AmqpTypedObjectDelegate.NULL_OBJECT_BODY, amqpObjectMessageFacade.getBody());
         } else {
-            assertSame("Expected existing body section to be replaced", AmqpSerializedObjectDelegate.NULL_OBJECT_BODY, protonMessage.getBody());
+            assertSame("Expected existing body section to be replaced", AmqpSerializedObjectDelegate.NULL_OBJECT_BODY, amqpObjectMessageFacade.getBody());
         }
     }
 
@@ -123,8 +121,6 @@ public class AmqpJmsObjectMessageFacadeTest extends AmqpJmsMessageTypesTestCase
         AmqpJmsObjectMessageFacade amqpObjectMessageFacade = createNewObjectMessageFacade(false);
         amqpObjectMessageFacade.setObject(content);
 
-        Message protonMessage = amqpObjectMessageFacade.getAmqpMessage();
-
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         ObjectOutputStream oos = new ObjectOutputStream(baos);
         oos.writeObject(content);
@@ -133,7 +129,7 @@ public class AmqpJmsObjectMessageFacadeTest extends AmqpJmsMessageTypesTestCase
         byte[] bytes = baos.toByteArray();
 
         // retrieve the bytes from the underlying message, check they match expectation
-        Section section = protonMessage.getBody();
+        Section section = amqpObjectMessageFacade.getBody();
         assertNotNull(section);
         assertEquals(Data.class, section.getClass());
         assertArrayEquals("Underlying message data section did not contain the expected bytes", bytes, ((Data) section).getValue().getArray());
@@ -152,10 +148,8 @@ public class AmqpJmsObjectMessageFacadeTest extends AmqpJmsMessageTypesTestCase
         AmqpJmsObjectMessageFacade amqpObjectMessageFacade = createNewObjectMessageFacade(true);
         amqpObjectMessageFacade.setObject(content);
 
-        Message protonMessage = amqpObjectMessageFacade.getAmqpMessage();
-
         // retrieve the body from the underlying message, check it matches expectation
-        Section section = protonMessage.getBody();
+        Section section = amqpObjectMessageFacade.getBody();
         assertNotNull(section);
         assertEquals(AmqpValue.class, section.getClass());
         assertEquals("Underlying message body did not contain the expected content", content, ((AmqpValue) section).getValue());
@@ -175,9 +169,9 @@ public class AmqpJmsObjectMessageFacadeTest extends AmqpJmsMessageTypesTestCase
 
         AmqpJmsObjectMessageFacade amqpObjectMessageFacade = createReceivedObjectMessageFacade(createMockAmqpConsumer(), protonMessage);
 
-        assertNotNull("Expected existing body section to be found", protonMessage.getBody());
+        assertNotNull("Expected existing body section to be found", amqpObjectMessageFacade.getBody());
         amqpObjectMessageFacade.setObject(null);
-        assertSame("Expected existing body section to be replaced", AmqpSerializedObjectDelegate.NULL_OBJECT_BODY, protonMessage.getBody());
+        assertSame("Expected existing body section to be replaced", AmqpSerializedObjectDelegate.NULL_OBJECT_BODY, amqpObjectMessageFacade.getBody());
         assertNull("Expected null object", amqpObjectMessageFacade.getObject());
     }
 
@@ -195,9 +189,9 @@ public class AmqpJmsObjectMessageFacadeTest extends AmqpJmsMessageTypesTestCase
 
         AmqpJmsObjectMessageFacade amqpObjectMessageFacade = createReceivedObjectMessageFacade(createMockAmqpConsumer(), protonMessage);
 
-        assertNotNull("Expected existing body section to be found", protonMessage.getBody());
+        assertNotNull("Expected existing body section to be found", amqpObjectMessageFacade.getBody());
         amqpObjectMessageFacade.clearBody();
-        assertSame("Expected existing body section to be replaced", AmqpSerializedObjectDelegate.NULL_OBJECT_BODY, protonMessage.getBody());
+        assertSame("Expected existing body section to be replaced", AmqpSerializedObjectDelegate.NULL_OBJECT_BODY, amqpObjectMessageFacade.getBody());
         assertNull("Expected null object", amqpObjectMessageFacade.getObject());
     }
 
@@ -321,11 +315,7 @@ public class AmqpJmsObjectMessageFacadeTest extends AmqpJmsMessageTypesTestCase
         Serializable serialized = amqpObjectMessageFacade.getObject();
         assertTrue("Unexpected object type returned", serialized instanceof Map<?, ?>);
         Map<String, String> returnedObject1 = (Map<String, String>) serialized;
-        if (contentType) {
-            assertNotSame("Expected different objects, due to snapshot being taken", origMap, returnedObject1);
-        } else {
-            assertSame("Expected same objects, due to initial snapshot of delivered value", origMap, returnedObject1);
-        }
+        assertNotSame("Expected different objects, due to snapshot being taken", origMap, returnedObject1);
         assertEquals("Expected equal objects, due to snapshot being taken", origMap, returnedObject1);
 
         // verify we get a different-but-equal object back when compared to the previously retrieved object


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