Author: rgodfrey
Date: Mon May 16 21:54:14 2016
New Revision: 1744157

URL: http://svn.apache.org/viewvc?rev=1744157&view=rev
Log:
QPID-7268 : Messages converted to AMQP 1.0 lose their body

Modified:
    
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_Internal_to_v1_0.java
    
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_to_1_0.java
    
qpid/java/trunk/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_0_10_to_1_0.java
    
qpid/java/trunk/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java

Modified: 
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_Internal_to_v1_0.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_Internal_to_v1_0.java?rev=1744157&r1=1744156&r2=1744157&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_Internal_to_v1_0.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_Internal_to_v1_0.java
 Mon May 16 21:54:14 2016
@@ -57,7 +57,7 @@ public class MessageConverter_Internal_t
 
     @Override
     protected MessageMetaData_1_0 convertMetaData(final InternalMessage 
serverMessage,
-                                                  final SectionEncoder 
sectionEncoder)
+                                                  final Section bodySection, 
final SectionEncoder sectionEncoder)
     {
         List<Section> sections = new ArrayList<Section>(3);
         Header header = new Header();
@@ -89,6 +89,10 @@ public class MessageConverter_Internal_t
             ApplicationProperties applicationProperties = new 
ApplicationProperties(serverMessage.getMessageHeader().getHeaderMap() );
             sections.add(applicationProperties);
         }
+        if(bodySection != null)
+        {
+            sections.add(bodySection);
+        }
         return new MessageMetaData_1_0(sections, sectionEncoder);
 
     }

Modified: 
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_to_1_0.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_to_1_0.java?rev=1744157&r1=1744156&r2=1744157&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_to_1_0.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_to_1_0.java
 Mon May 16 21:54:14 2016
@@ -74,11 +74,15 @@ public abstract class MessageConverter_t
 
     private StoredMessage<MessageMetaData_1_0> convertToStoredMessage(final M 
serverMessage, SectionEncoder sectionEncoder)
     {
-        final MessageMetaData_1_0 metaData = convertMetaData(serverMessage, 
sectionEncoder);
-        return convertServerMessage(metaData, serverMessage, sectionEncoder);
+        Section bodySection = getBodySection(serverMessage);
+
+        final MessageMetaData_1_0 metaData = convertMetaData(serverMessage, 
bodySection, sectionEncoder);
+        return convertServerMessage(metaData, serverMessage);
     }
 
-    abstract protected MessageMetaData_1_0 convertMetaData(final M 
serverMessage, SectionEncoder sectionEncoder);
+    abstract protected MessageMetaData_1_0 convertMetaData(final M 
serverMessage,
+                                                           final Section 
bodySection,
+                                                           SectionEncoder 
sectionEncoder);
 
 
     private static Section convertMessageBody(String mimeType, byte[] data)
@@ -203,33 +207,18 @@ public abstract class MessageConverter_t
     }
 
     private StoredMessage<MessageMetaData_1_0> convertServerMessage(final 
MessageMetaData_1_0 metaData,
-                                                                      final M 
serverMessage,
-                                                                      
SectionEncoder sectionEncoder)
+                                                                    final M 
serverMessage)
     {
-        final String mimeType = serverMessage.getMessageHeader().getMimeType();
-        byte[] data = new byte[(int) serverMessage.getSize()];
-        int total = 0;
-        for(QpidByteBuffer b : serverMessage.getContent(0, (int) 
serverMessage.getSize()))
-        {
-            int len = b.remaining();
-            b.get(data, total, len);
-            b.dispose();
-            total += len;
-        }
-        byte[] uncompressed;
+        final QpidByteBuffer allData = 
QpidByteBuffer.allocateDirect(metaData.getStorableSize());
+        metaData.writeToBuffer(allData);
+        allData.rewind();
 
-        
if(Symbol.valueOf(GZIPUtils.GZIP_CONTENT_ENCODING).equals(metaData.getPropertiesSection().getContentEncoding())
-                && (uncompressed = 
GZIPUtils.uncompressBufferToArray(ByteBuffer.wrap(data)))!=null)
+        if(metaData.getPropertiesSection() != null)
         {
-            data = uncompressed;
             metaData.getPropertiesSection().setContentEncoding(null);
         }
 
 
-        Section bodySection = convertMessageBody(mimeType, data);
-
-        final QpidByteBuffer allData = encodeConvertedMessage(metaData, 
bodySection, sectionEncoder);
-
         return new StoredMessage<MessageMetaData_1_0>()
                     {
                         @Override
@@ -270,17 +259,27 @@ public abstract class MessageConverter_t
         };
     }
 
-    private QpidByteBuffer encodeConvertedMessage(MessageMetaData_1_0 
metaData, Section bodySection, SectionEncoder sectionEncoder)
+    private Section getBodySection(final M serverMessage)
     {
-        int headerSize = (int) metaData.getStorableSize();
+        final String mimeType = serverMessage.getMessageHeader().getMimeType();
+        byte[] data = new byte[(int) serverMessage.getSize()];
+        int total = 0;
+        for(QpidByteBuffer b : serverMessage.getContent(0, (int) 
serverMessage.getSize()))
+        {
+            int len = b.remaining();
+            b.get(data, total, len);
+            b.dispose();
+            total += len;
+        }
+        byte[] uncompressed;
 
-        sectionEncoder.reset();
-        sectionEncoder.encodeObject(bodySection);
-        Binary dataEncoding = sectionEncoder.getEncoding();
+        
if(Symbol.valueOf(GZIPUtils.GZIP_CONTENT_ENCODING).equals(serverMessage.getMessageHeader().getEncoding())
+           && (uncompressed = 
GZIPUtils.uncompressBufferToArray(ByteBuffer.wrap(data))) != null)
+        {
+            data = uncompressed;
+        }
 
-        final QpidByteBuffer allData = 
QpidByteBuffer.allocateDirect(headerSize + dataEncoding.getLength());
-        metaData.writeToBuffer(allData);
-        
allData.put(dataEncoding.getArray(),dataEncoding.getArrayOffset(),dataEncoding.getLength());
-        return allData;
+        return convertMessageBody(mimeType, data);
     }
+
 }

Modified: 
qpid/java/trunk/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_0_10_to_1_0.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_0_10_to_1_0.java?rev=1744157&r1=1744156&r2=1744157&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_0_10_to_1_0.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_0_10_to_1_0.java
 Mon May 16 21:54:14 2016
@@ -55,7 +55,7 @@ public class MessageConverter_0_10_to_1_
 
     @Override
     protected MessageMetaData_1_0 convertMetaData(MessageTransferMessage 
serverMessage,
-                                                  SectionEncoder 
sectionEncoder)
+                                                  final Section bodySection, 
SectionEncoder sectionEncoder)
     {
         List<Section> sections = new ArrayList<Section>(3);
         final MessageProperties msgProps = 
serverMessage.getHeader().getMessageProperties();
@@ -143,6 +143,10 @@ public class MessageConverter_0_10_to_1_
 
             }
         }
+        if(bodySection != null)
+        {
+            sections.add(bodySection);
+        }
         return new MessageMetaData_1_0(sections, sectionEncoder);
     }
 

Modified: 
qpid/java/trunk/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java?rev=1744157&r1=1744156&r2=1744157&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java
 Mon May 16 21:54:14 2016
@@ -53,7 +53,9 @@ public class MessageConverter_0_8_to_1_0
         return AMQMessage.class;
     }
 
-    protected MessageMetaData_1_0 convertMetaData(final AMQMessage 
serverMessage, SectionEncoder sectionEncoder)
+    protected MessageMetaData_1_0 convertMetaData(final AMQMessage 
serverMessage,
+                                                  final Section bodySection,
+                                                  SectionEncoder 
sectionEncoder)
     {
 
         List<Section> sections = new ArrayList<>(3);
@@ -164,7 +166,10 @@ public class MessageConverter_0_8_to_1_0
             applicationProperties.remove("qpid.subject");
         }
         sections.add(new ApplicationProperties(applicationProperties));
-
+        if(bodySection != null)
+        {
+            sections.add(bodySection);
+        }
         return new MessageMetaData_1_0(sections, sectionEncoder);
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to