You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/05/16 21:54:14 UTC
svn commit: r1744157 - in /qpid/java/trunk/broker-plugins:
amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/
amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/
amqp-msg-conv-0-8-to-1-0/src/...
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: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org