diff options
author | Rafael H. Schloming <rhs@apache.org> | 2010-08-12 18:37:19 +0000 |
---|---|---|
committer | Rafael H. Schloming <rhs@apache.org> | 2010-08-12 18:37:19 +0000 |
commit | 0539fb89df2c2822f14bcc473911c6ad3aa0e9a5 (patch) | |
tree | 079c2bc5d9457ecdfe8b572b38b1b6d46d87130f /python | |
parent | bab125a6bb8adb04f0fc5d567158617248a5ad07 (diff) | |
download | qpid-python-0539fb89df2c2822f14bcc473911c6ad3aa0e9a5.tar.gz |
fixed reply-to conversion
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@984906 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python')
-rw-r--r-- | python/qpid/messaging/driver.py | 18 | ||||
-rw-r--r-- | python/qpid/tests/messaging/message.py | 24 |
2 files changed, 37 insertions, 5 deletions
diff --git a/python/qpid/messaging/driver.py b/python/qpid/messaging/driver.py index 30cc2eb34d..0c7c7e7c4d 100644 --- a/python/qpid/messaging/driver.py +++ b/python/qpid/messaging/driver.py @@ -41,15 +41,23 @@ opslog = getLogger("qpid.messaging.io.ops") def addr2reply_to(addr): name, subject, options = address.parse(addr) - return ReplyTo(name, subject) + if options: + type = options.get("node", {}).get("type") + else: + type = None + + if type == "topic": + return ReplyTo(name, subject) + else: + return ReplyTo(None, name) def reply_to2addr(reply_to): - if reply_to.routing_key is None: - return reply_to.exchange - elif reply_to.exchange in (None, ""): + if reply_to.exchange in (None, ""): return reply_to.routing_key + elif reply_to.routing_key is None: + return "%s; {node: {type: topic}}" % reply_to.exchange else: - return "%s/%s" % (reply_to.exchange, reply_to.routing_key) + return "%s/%s; {node: {type: topic}}" % (reply_to.exchange, reply_to.routing_key) class Attachment: diff --git a/python/qpid/tests/messaging/message.py b/python/qpid/tests/messaging/message.py index 526a5cfab6..eaa953e7d7 100644 --- a/python/qpid/tests/messaging/message.py +++ b/python/qpid/tests/messaging/message.py @@ -117,3 +117,27 @@ class MessageEchoTests(Base): def testTextPlainEmpty(self): self.check(Message(content_type="text/plain")) + + def check_rt(self, addr, expected=None): + if expected is None: + expected = addr + msg = Message(reply_to=addr) + self.snd.send(msg) + echo = self.rcv.fetch(0) + assert echo.reply_to == expected, echo.reply_to + self.ssn.acknowledge(echo) + + def testReplyTo(self): + self.check_rt("name") + + def testReplyToQueue(self): + self.check_rt("name; {node: {type: queue}}", "name") + + def testReplyToQueueSubject(self): + self.check_rt("name/subject; {node: {type: queue}}", "name") + + def testReplyToTopic(self): + self.check_rt("name; {node: {type: topic}}") + + def testReplyToTopicSubject(self): + self.check_rt("name/subject; {node: {type: topic}}") |