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