You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2016/03/10 23:53:42 UTC

svn commit: r1734476 - in /qpid/trunk/qpid/cpp/src: qpid/messaging/Message.cpp tests/MessagingSessionTests.cpp

Author: gsim
Date: Thu Mar 10 22:53:42 2016
New Revision: 1734476

URL: http://svn.apache.org/viewvc?rev=1734476&view=rev
Log:
QPID-7134: ensure content object is reset when bytes are set

Modified:
    qpid/trunk/qpid/cpp/src/qpid/messaging/Message.cpp
    qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/Message.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/Message.cpp?rev=1734476&r1=1734475&r2=1734476&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/Message.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/Message.cpp Thu Mar 10 22:53:42 2016
@@ -76,12 +76,18 @@ Variant::Map& Message::getProperties() {
 void Message::setProperties(const Variant::Map& p) { getProperties() = p; }
 void Message::setProperty(const std::string& k, const qpid::types::Variant& v) { impl->setHeader(k,v); }
 
-void Message::setContent(const std::string& c) { impl->setBytes(c); }
-void Message::setContent(const char* chars, size_t count) { impl->setBytes(chars, count); }
+void Message::setContent(const std::string& c) { this->setContentBytes(c); }
+void Message::setContent(const char* chars, size_t count) {
+    if (count == 0) impl->getContent().reset();
+    impl->setBytes(chars, count);
+}
 std::string Message::getContent() const { return impl->getBytes(); }
 
-void Message::setContentBytes(const std::string& c) { impl->setBytes(c); }
-std::string Message::getContentBytes() const { return impl->getBytes(); }
+void Message::setContentBytes(const std::string& c) {
+    if (c.empty()) impl->getContent().reset();
+    impl->setBytes(c);
+}
+std::string Message::getContentBytes() const {return impl->getBytes(); }
 
 qpid::types::Variant& Message::getContentObject() { return impl->getContent(); }
 void Message::setContentObject(const qpid::types::Variant& c) { impl->getContent() = c; }

Modified: qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp?rev=1734476&r1=1734475&r2=1734476&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp Thu Mar 10 22:53:42 2016
@@ -1490,6 +1490,24 @@ QPID_AUTO_TEST_CASE(testImmediateNextRec
     }
 }
 
+QPID_AUTO_TEST_CASE(testResendEmpty)
+{
+    QueueFixture fix;
+    Sender sender = fix.session.createSender(fix.queue);
+    Message out("test-message");
+    sender.send(out);
+    Receiver receiver = fix.session.createReceiver(fix.queue);
+    Message in = receiver.fetch(Duration::SECOND * 5);
+    fix.session.acknowledge();
+    BOOST_CHECK_EQUAL(in.getContent(), out.getContent());
+    //set content on received message to empty string and resend
+    in.setContent("");
+    sender.send(in);
+    in = receiver.fetch(Duration::SECOND * 5);
+    fix.session.acknowledge();
+    BOOST_CHECK_EQUAL(in.getContent(), std::string());
+}
+
 QPID_AUTO_TEST_SUITE_END()
 
 }} // namespace qpid::tests



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