Repository: qpid-proton
Updated Branches:
  refs/heads/master c6bfeff2a -> ae3eaaa2e


PROTON-1758: Change message application properties that are binary to unicode 
string; raise error for other key types.


Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/ae3eaaa2
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/ae3eaaa2
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/ae3eaaa2

Branch: refs/heads/master
Commit: ae3eaaa2e2351b29c23825d141ac9b5ba17cbdf6
Parents: c6bfeff
Author: Kim van der Riet <kvdr@localhost.localdomain>
Authored: Fri Feb 2 16:53:33 2018 -0500
Committer: Kim van der Riet <kvdr@localhost.localdomain>
Committed: Fri Feb 2 16:53:33 2018 -0500

----------------------------------------------------------------------
 proton-c/bindings/python/proton/__init__.py | 8 ++++++++
 proton-c/bindings/python/proton/_compat.py  | 6 ++++++
 2 files changed, 14 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ae3eaaa2/proton-c/bindings/python/proton/__init__.py
----------------------------------------------------------------------
diff --git a/proton-c/bindings/python/proton/__init__.py 
b/proton-c/bindings/python/proton/__init__.py
index 5c4dea7..1878d57 100644
--- a/proton-c/bindings/python/proton/__init__.py
+++ b/proton-c/bindings/python/proton/__init__.py
@@ -841,6 +841,13 @@ class Message(object):
     else:
       return err
 
+  def _check_property_keys(self):
+      for k in self.properties.keys():
+        if not isinstance(k, (bytes, str, unicode)):
+          raise MessageException('Application property key is not unicode 
string: key=%s %s' % (str(k), type(k)))
+        if isinstance(k, bytes):
+          self.properties[_compat.bin2str(k)] = self.properties.pop(k)
+
   def _pre_encode(self):
     inst = Data(pn_message_instructions(self._msg))
     ann = Data(pn_message_annotations(self._msg))
@@ -855,6 +862,7 @@ class Message(object):
       ann.put_object(self.annotations)
     props.clear()
     if self.properties is not None:
+      self._check_property_keys()
       props.put_object(self.properties)
     body.clear()
     if self.body is not None:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ae3eaaa2/proton-c/bindings/python/proton/_compat.py
----------------------------------------------------------------------
diff --git a/proton-c/bindings/python/proton/_compat.py 
b/proton-c/bindings/python/proton/_compat.py
index 4585dfc..c8815f4 100644
--- a/proton-c/bindings/python/proton/_compat.py
+++ b/proton-c/bindings/python/proton/_compat.py
@@ -44,6 +44,9 @@ if IS_PY3:
         else:
             raise v.with_traceback(tb)
 
+    def bin2str(s, encoding='utf-8'):
+        return s
+
     def iteritems(d):
         return iter(d.items())
 
@@ -71,6 +74,9 @@ else:
     raise t, v, tb
 """)
 
+    def bin2str(s, encoding='utf-8'):
+        return s.decode(encoding)
+
     def iteritems(d, **kw):
         return d.iteritems()
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to