summaryrefslogtreecommitdiff
path: root/qpid/python
diff options
context:
space:
mode:
authorPavel Moravec <pmoravec@apache.org>2014-07-07 06:53:25 +0000
committerPavel Moravec <pmoravec@apache.org>2014-07-07 06:53:25 +0000
commitbdfeb15856ee777284653e88bbfbb03c08e20021 (patch)
tree249a04f14701dcec23898a63086629834cd23710 /qpid/python
parent165ff2da8546db0024d3ffab77e96391c584ab2d (diff)
downloadqpid-python-bdfeb15856ee777284653e88bbfbb03c08e20021.tar.gz
[QPID-5823]: Python client should create a node with name starting '\#'
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1608350 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/python')
-rw-r--r--qpid/python/qpid/messaging/driver.py9
-rw-r--r--qpid/python/qpid/messaging/endpoints.py4
2 files changed, 12 insertions, 1 deletions
diff --git a/qpid/python/qpid/messaging/driver.py b/qpid/python/qpid/messaging/driver.py
index e8ab964f0e..6f1d0fba7d 100644
--- a/qpid/python/qpid/messaging/driver.py
+++ b/qpid/python/qpid/messaging/driver.py
@@ -29,6 +29,7 @@ from qpid.messaging import address, transports
from qpid.messaging.constants import UNLIMITED, REJECTED, RELEASED
from qpid.messaging.exceptions import *
from qpid.messaging.message import get_codec, Disposition, Message
+from qpid.messaging.endpoints import MangledString
from qpid.ops import *
from qpid.selector import Selector
from qpid.util import URL, default,get_client_properties_with_defaults
@@ -945,6 +946,14 @@ class Engine:
# XXX: subject
if lnk.options is None:
lnk.options = {}
+ if isinstance(addr, MangledString):
+ lnk.options['create'] = "always"
+ if 'node' not in lnk.options:
+ lnk.options['node'] = {}
+ if 'x-declare' not in lnk.options['node']:
+ lnk.options['node']['x-declare'] = {}
+ lnk.options['node']['x-declare']['auto-delete'] = "True"
+ lnk.options['node']['x-declare']['exclusive'] = "True"
except address.LexError, e:
return MalformedAddress(text=str(e))
except address.ParseError, e:
diff --git a/qpid/python/qpid/messaging/endpoints.py b/qpid/python/qpid/messaging/endpoints.py
index eb4c196ee8..5b10fbd9f1 100644
--- a/qpid/python/qpid/messaging/endpoints.py
+++ b/qpid/python/qpid/messaging/endpoints.py
@@ -778,9 +778,11 @@ class Session(Endpoint):
finally:
self.connection._remove_session(self)
+class MangledString(str): pass
+
def _mangle(addr):
if addr and addr.startswith("#"):
- return str(uuid4()) + addr
+ return MangledString(str(uuid4()) + addr)
else:
return addr