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/30 12:33:30 UTC

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

Author: gsim
Date: Wed Mar 30 10:33:29 2016
New Revision: 1737093

URL: http://svn.apache.org/viewvc?rev=1737093&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=1737093&r1=1737092&r2=1737093&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/Message.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/Message.cpp Wed Mar 30 10:33:29 2016
@@ -78,13 +78,13 @@ void Message::setProperty(const std::str
 
 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->getContent().reset();
     impl->setBytes(chars, count);
 }
 std::string Message::getContent() const { return impl->getBytes(); }
 
 void Message::setContentBytes(const std::string& c) {
-    if (c.empty()) impl->getContent().reset();
+    impl->getContent().reset();
     impl->setBytes(c);
 }
 std::string Message::getContentBytes() const {return impl->getBytes(); }

Modified: qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp?rev=1737093&r1=1737092&r2=1737093&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp Wed Mar 30 10:33:29 2016
@@ -1508,6 +1508,30 @@ QPID_AUTO_TEST_CASE(testResendEmpty)
     BOOST_CHECK_EQUAL(in.getContent(), std::string());
 }
 
+QPID_AUTO_TEST_CASE(testResendMapAsString)
+{
+    QueueFixture fix;
+    Sender sender = fix.session.createSender(fix.queue);
+    Message out;
+    qpid::types::Variant::Map content;
+    content["foo"] = "bar";
+    encode(content, out);
+    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());
+    //change content and resend
+    std::string newContent("something random");
+    in.setContent(newContent);
+    in.setContentType(std::string());//it is no longer a map
+    sender.send(in);
+    in = receiver.fetch(Duration::SECOND * 5);
+    fix.session.acknowledge();
+    BOOST_CHECK_EQUAL(in.getContent(), newContent);
+}
+
 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