QPID-7897, QPID-7899: [Java Client, AMQP 0-x] Do not convert to/from String in Message#set-/getJMSCorrelationIDAsBytes()
diff --git a/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java b/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
index 398a6e8..dde0a1b 100644
--- a/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
+++ b/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
@@ -21,6 +21,7 @@
 
 package org.apache.qpid.client.message;
 
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
@@ -252,15 +253,13 @@
 
     public void setJMSCorrelationID(String correlationId) throws JMSException
     {
-
-        setJMSCorrelationIDAsBytes(correlationId == null ? null : correlationId.getBytes());
+        setJMSCorrelationIDAsBytes(correlationId == null ? null : correlationId.getBytes(StandardCharsets.UTF_8));
     }
 
     public String getJMSCorrelationID() throws JMSException
     {
-
         byte[] correlationIDAsBytes = getJMSCorrelationIDAsBytes();
-        return correlationIDAsBytes == null ? null : new String(correlationIDAsBytes);
+        return correlationIDAsBytes == null ? null : new String(correlationIDAsBytes, StandardCharsets.UTF_8);
     }
 
     public Destination getJMSReplyTo()
diff --git a/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java b/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
index 8e8e00d..cb61770 100644
--- a/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
+++ b/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
@@ -252,12 +252,13 @@
 
     public byte[] getJMSCorrelationIDAsBytes() throws JMSException
     {
-        return getContentHeaderProperties().getCorrelationIdAsString().getBytes();
+        final AMQShortString correlationId = getContentHeaderProperties().getCorrelationId();
+        return correlationId == null ? null : correlationId.getBytes();
     }
 
     public void setJMSCorrelationIDAsBytes(byte[] bytes) throws JMSException
     {
-        getContentHeaderProperties().setCorrelationId(new String(bytes));
+        getContentHeaderProperties().setCorrelationId(new AMQShortString(bytes));
     }
 
     public void setJMSCorrelationID(String correlationId) throws JMSException
diff --git a/client/src/test/java/org/apache/qpid/test/unit/message/MessageTest.java b/client/src/test/java/org/apache/qpid/test/unit/message/MessageTest.java
new file mode 100644
index 0000000..fc263d2
--- /dev/null
+++ b/client/src/test/java/org/apache/qpid/test/unit/message/MessageTest.java
@@ -0,0 +1,28 @@
+package org.apache.qpid.test.unit.message;
+
+import static org.junit.Assert.assertArrayEquals;
+
+import org.apache.qpid.client.message.AMQMessageDelegateFactory;
+import org.apache.qpid.client.message.JMSTextMessage;
+import org.apache.qpid.test.utils.QpidTestCase;
+
+public class MessageTest extends QpidTestCase
+{
+    private JMSTextMessage _testTextMessage;
+
+    @Override
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        _testTextMessage = new JMSTextMessage(AMQMessageDelegateFactory.FACTORY_0_8);
+        _testTextMessage.setText("testTextMessage text");
+    }
+
+    public void testJMSCorrelationIdAdBytesWithNonUtf8Bytes() throws Exception
+    {
+        // QPID-7897 and QPID-7899
+        byte[] correlationId = new byte[]{(byte) 0xc3, 0x28};
+        _testTextMessage.setJMSCorrelationIDAsBytes(correlationId);
+        assertArrayEquals("", correlationId, _testTextMessage.getJMSCorrelationIDAsBytes());
+    }
+}