You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2010/02/26 21:07:36 UTC

svn commit: r916803 - in /qpid/trunk/qpid/cpp: include/qpid/messaging/ListContent.h include/qpid/messaging/MapContent.h src/qpid/messaging/ListContent.cpp src/qpid/messaging/MapContent.cpp src/tests/MessagingSessionTests.cpp

Author: tross
Date: Fri Feb 26 20:07:36 2010
New Revision: 916803

URL: http://svn.apache.org/viewvc?rev=916803&view=rev
Log:
QPID-2423 - Add Constructors to set initial value of content for MapContent and ListContent

Modified:
    qpid/trunk/qpid/cpp/include/qpid/messaging/ListContent.h
    qpid/trunk/qpid/cpp/include/qpid/messaging/MapContent.h
    qpid/trunk/qpid/cpp/src/qpid/messaging/ListContent.cpp
    qpid/trunk/qpid/cpp/src/qpid/messaging/MapContent.cpp
    qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp

Modified: qpid/trunk/qpid/cpp/include/qpid/messaging/ListContent.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/messaging/ListContent.h?rev=916803&r1=916802&r2=916803&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/messaging/ListContent.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/messaging/ListContent.h Fri Feb 26 20:07:36 2010
@@ -42,6 +42,7 @@
     typedef Variant::List::const_reverse_iterator const_reverse_iterator;
 
     QPID_CLIENT_EXTERN ListContent(Message&);
+    QPID_CLIENT_EXTERN ListContent(Message&, const Variant::List&);
     QPID_CLIENT_EXTERN ~ListContent();
 
     QPID_CLIENT_EXTERN const_iterator begin() const;

Modified: qpid/trunk/qpid/cpp/include/qpid/messaging/MapContent.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/messaging/MapContent.h?rev=916803&r1=916802&r2=916803&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/messaging/MapContent.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/messaging/MapContent.h Fri Feb 26 20:07:36 2010
@@ -47,6 +47,7 @@
     typedef std::map<key_type, Variant>::reverse_iterator reverse_iterator;
 
     QPID_CLIENT_EXTERN MapContent(Message&);
+    QPID_CLIENT_EXTERN MapContent(Message&, const Variant::Map&);
     QPID_CLIENT_EXTERN ~MapContent();
 
     QPID_CLIENT_EXTERN const_iterator begin() const;

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/ListContent.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/ListContent.cpp?rev=916803&r1=916802&r2=916803&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/ListContent.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/ListContent.cpp Fri Feb 26 20:07:36 2010
@@ -37,6 +37,11 @@
         }
     }
 
+    ListContentImpl(Message& m, const Variant::List& i) : Variant(i), msg(&m)
+    {
+        msg->getContent().clear();
+    }
+
     void encode()
     {
         qpid::client::amqp0_10::ListCodec codec;
@@ -45,6 +50,7 @@
 };
 
 ListContent::ListContent(Message& m) : impl(new ListContentImpl(m)) {}
+ListContent::ListContent(Message& m, const Variant::List& i) : impl(new ListContentImpl(m, i)) {}
 ListContent::~ListContent() { delete impl; }
 ListContent& ListContent::operator=(const ListContent& l) { *impl = *l.impl; return *this; }
 

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/MapContent.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/MapContent.cpp?rev=916803&r1=916802&r2=916803&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/MapContent.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/MapContent.cpp Fri Feb 26 20:07:36 2010
@@ -37,6 +37,11 @@
         }
     }
 
+    MapContentImpl(Message& m, const Variant::Map& i) : Variant(i), msg(&m)
+    {
+        msg->getContent().clear();
+    }
+
     void encode()
     {
         qpid::client::amqp0_10::MapCodec codec;
@@ -46,6 +51,7 @@
 };
 
 MapContent::MapContent(Message& m) : impl(new MapContentImpl(m)) {}
+MapContent::MapContent(Message& m, const Variant::Map& i) : impl(new MapContentImpl(m, i)) {}
 MapContent::~MapContent() { delete impl; }
 MapContent& MapContent::operator=(const MapContent& m) { *impl = *m.impl; return *this; }
 

Modified: qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp?rev=916803&r1=916802&r2=916803&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp Fri Feb 26 20:07:36 2010
@@ -346,6 +346,25 @@
     fix.session.acknowledge();
 }
 
+QPID_AUTO_TEST_CASE(testMapMessageWithInitial)
+{
+    QueueFixture fix;
+    Sender sender = fix.session.createSender(fix.queue);
+    Message out;
+    Variant::Map imap;
+    imap["abc"] = "def";
+    imap["pi"] = 3.14f;
+    MapContent content(out, imap);
+    content.encode();
+    sender.send(out);
+    Receiver receiver = fix.session.createReceiver(fix.queue);
+    Message in = receiver.fetch(5 * qpid::sys::TIME_SEC);
+    MapView view(in);
+    BOOST_CHECK_EQUAL(view["abc"].asString(), "def");
+    BOOST_CHECK_EQUAL(view["pi"].asFloat(), 3.14f);
+    fix.session.acknowledge();
+}
+
 QPID_AUTO_TEST_CASE(testListMessage)
 {
     QueueFixture fix;
@@ -379,6 +398,40 @@
     fix.session.acknowledge();
 }
 
+QPID_AUTO_TEST_CASE(testListMessageWithInitial)
+{
+    QueueFixture fix;
+    Sender sender = fix.session.createSender(fix.queue);
+    Message out;
+    Variant::List ilist;
+    ilist.push_back(Variant("abc"));
+    ilist.push_back(Variant(1234));
+    ilist.push_back(Variant("def"));
+    ilist.push_back(Variant(56.789));
+    ListContent content(out, ilist);
+    content.encode();
+    sender.send(out);
+    Receiver receiver = fix.session.createReceiver(fix.queue);
+    Message in = receiver.fetch(5 * qpid::sys::TIME_SEC);
+    ListView view(in);
+    BOOST_CHECK_EQUAL(view.size(), content.size());
+    BOOST_CHECK_EQUAL(view.front().asString(), "abc");
+    BOOST_CHECK_EQUAL(view.back().asDouble(), 56.789);
+
+    ListView::const_iterator i = view.begin();
+    BOOST_CHECK(i != view.end());
+    BOOST_CHECK_EQUAL(i->asString(), "abc");
+    BOOST_CHECK(++i != view.end());
+    BOOST_CHECK_EQUAL(i->asInt64(), 1234);
+    BOOST_CHECK(++i != view.end());
+    BOOST_CHECK_EQUAL(i->asString(), "def");
+    BOOST_CHECK(++i != view.end());
+    BOOST_CHECK_EQUAL(i->asDouble(), 56.789);
+    BOOST_CHECK(++i == view.end());
+
+    fix.session.acknowledge();
+}
+
 QPID_AUTO_TEST_CASE(testReject)
 {
     QueueFixture fix;



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org