From 1ed5e671332e9f98b671f19b62d32c0cf1b834d7 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Wed, 11 Sep 2013 16:05:46 +0000 Subject: QPID-5130: map type to exchange-type when translating old x-declare clause into node properties git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1521919 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'qpid/cpp/src') diff --git a/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp b/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp index 9b0fd18ed1..603ead7074 100644 --- a/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp +++ b/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp @@ -96,6 +96,7 @@ const std::string X_DECLARE("x-declare"); const std::string X_BINDINGS("x-bindings"); const std::string X_SUBSCRIBE("x-subscribe"); const std::string ARGUMENTS("arguments"); +const std::string EXCHANGE_TYPE("exchange-type"); const std::vector RECEIVER_MODES = boost::assign::list_of(ALWAYS) (RECEIVER); const std::vector SENDER_MODES = boost::assign::list_of(ALWAYS) (SENDER); @@ -225,6 +226,18 @@ void flatten(Variant::Map& base, const std::string& nested) base.erase(i); } } +bool replace(Variant::Map& map, const std::string& original, const std::string& desired) +{ + Variant::Map::iterator i = map.find(original); + if (i != map.end()) { + map[desired] = i->second; + map.erase(original); + return true; + } else { + return false; + } +} + void write(pn_data_t* data, const Variant& value); void write(pn_data_t* data, const Variant::Map& map) @@ -331,6 +344,7 @@ AddressHelper::AddressHelper(const Address& address) : Variant::Map::iterator i = node.find(X_DECLARE); if (i != node.end()) { Variant::Map x_declare = i->second.asMap(); + replace(x_declare, TYPE, EXCHANGE_TYPE); flatten(x_declare, ARGUMENTS); add(properties, x_declare); node.erase(i); -- cgit v1.2.1