summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2013-10-16 11:05:06 +0000
committerGordon Sim <gsim@apache.org>2013-10-16 11:05:06 +0000
commit5758d1447cf5b8579d9494ab40d2840083161228 (patch)
tree55d7ad04700cf0fee0375c298ce02381ebf0f1a0 /qpid/cpp/src
parent609469d8575ba97ff79ebe8977c46e4efc27d660 (diff)
downloadqpid-python-5758d1447cf5b8579d9494ab40d2840083161228.tar.gz
QPID-5239: preserve type of 'annotations' i.e. application properties added by broker
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1532716 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/amqp_0_10/Codecs.cpp5
-rw-r--r--qpid/cpp/src/qpid/amqp_0_10/Codecs.h1
-rw-r--r--qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp4
3 files changed, 8 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/amqp_0_10/Codecs.cpp b/qpid/cpp/src/qpid/amqp_0_10/Codecs.cpp
index 930f402f85..49d152cc05 100644
--- a/qpid/cpp/src/qpid/amqp_0_10/Codecs.cpp
+++ b/qpid/cpp/src/qpid/amqp_0_10/Codecs.cpp
@@ -575,6 +575,11 @@ void translate(const boost::shared_ptr<FieldValue> from, Variant& to)
to = toVariant(from);
}
+boost::shared_ptr<framing::FieldValue> translate(const types::Variant& from)
+{
+ return toFieldValue(from);
+}
+
const std::string ListCodec::contentType("amqp/list");
const std::string MapCodec::contentType("amqp/map");
diff --git a/qpid/cpp/src/qpid/amqp_0_10/Codecs.h b/qpid/cpp/src/qpid/amqp_0_10/Codecs.h
index 408307eb7a..79d76bcc4b 100644
--- a/qpid/cpp/src/qpid/amqp_0_10/Codecs.h
+++ b/qpid/cpp/src/qpid/amqp_0_10/Codecs.h
@@ -80,6 +80,7 @@ QPID_COMMON_EXTERN void translate(const boost::shared_ptr<qpid::framing::FieldVa
qpid::types::Variant& to);
QPID_COMMON_EXTERN void translate(const types::Variant& from,
boost::shared_ptr<qpid::framing::FieldValue> to);
+QPID_COMMON_EXTERN boost::shared_ptr<qpid::framing::FieldValue> translate(const types::Variant& from);
}} // namespace qpid::amqp_0_10
diff --git a/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp b/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp
index 0c8434f381..8055b3fe1a 100644
--- a/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp
+++ b/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp
@@ -185,7 +185,7 @@ class SendHeader
copy.castBody<AMQHeaderBody>()->get<MessageProperties>(true);
for (qpid::types::Variant::Map::const_iterator i = annotations.begin();
i != annotations.end(); ++i) {
- props->getApplicationHeaders().setString(i->first, i->second.asString());
+ props->getApplicationHeaders().set(i->first, qpid::amqp_0_10::translate(i->second));
}
}
if (redelivered || ttl || timestamp) {
@@ -402,7 +402,7 @@ boost::intrusive_ptr<PersistableMessage> MessageTransfer::merge(const std::map<s
boost::intrusive_ptr<MessageTransfer> clone(new MessageTransfer(this->frames));
qpid::framing::MessageProperties* mp = clone->frames.getHeaders()->get<qpid::framing::MessageProperties>(true);
for (qpid::types::Variant::Map::const_iterator i = annotations.begin(); i != annotations.end(); ++i) {
- mp->getApplicationHeaders().setString(i->first, i->second);
+ mp->getApplicationHeaders().set(i->first, qpid::amqp_0_10::translate(i->second));
}
return clone;
}