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]