diff options
author | Gordon Sim <gsim@apache.org> | 2016-03-30 10:33:29 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2016-03-30 10:33:29 +0000 |
commit | 87aa4db83f1a7c2ffbdf168a7c5b942cb5d56a4a (patch) | |
tree | 0ab32d9e81c98eee9c19f44047a3e537e61d6a6d | |
parent | 006496cf708639db842f37941c40f7d452789509 (diff) | |
download | qpid-python-87aa4db83f1a7c2ffbdf168a7c5b942cb5d56a4a.tar.gz |
QPID-7134: ensure content object is reset when bytes are set
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1737093 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/cpp/src/qpid/messaging/Message.cpp | 4 | ||||
-rw-r--r-- | qpid/cpp/src/tests/MessagingSessionTests.cpp | 24 |
2 files changed, 26 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/messaging/Message.cpp b/qpid/cpp/src/qpid/messaging/Message.cpp index 299ed1b9f3..376e1cc5f6 100644 --- a/qpid/cpp/src/qpid/messaging/Message.cpp +++ b/qpid/cpp/src/qpid/messaging/Message.cpp @@ -78,13 +78,13 @@ void Message::setProperty(const std::string& k, const qpid::types::Variant& v) { 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(); } diff --git a/qpid/cpp/src/tests/MessagingSessionTests.cpp b/qpid/cpp/src/tests/MessagingSessionTests.cpp index 6af988e1cc..3c882b6028 100644 --- a/qpid/cpp/src/tests/MessagingSessionTests.cpp +++ b/qpid/cpp/src/tests/MessagingSessionTests.cpp @@ -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 |