diff options
Diffstat (limited to 'qpid/cpp')
-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 |