implement cmislib browser binding queries
git-svn-id: https://svn.apache.org/repos/asf/chemistry/cmislib/trunk@1595244 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/cmislib/browser/binding.py b/src/cmislib/browser/binding.py
index 44461a7..8d85b93 100644
--- a/src/cmislib/browser/binding.py
+++ b/src/cmislib/browser/binding.py
@@ -1096,7 +1096,7 @@
"""
# build the CMIS query XML that we're going to POST
- queryUrl = self.getRepositoryUrl() + "?cmisaction=query&q=" + statement
+ queryUrl = self.getRepositoryUrl() + "?cmisaction=query&q=" + quote(statement)
# do the POST
result = self._cmisClient.binding.post(queryUrl.encode('utf-8'),
@@ -1107,7 +1107,7 @@
**kwargs)
# return the result set
- return BrowserResultSet(self._cmisClient, self, result)
+ return BrowserResultSet(self._cmisClient, self, result, serializer=ResultsSerializer())
def getContentChanges(self, **kwargs):
@@ -2995,6 +2995,18 @@
return content_type, body
+class ResultsSerializer(object):
+ def fromJSON(self, client, repo, jsonObj):
+ entries = []
+ for obj in jsonObj['results']:
+ cmisObject = getSpecializedObject(BrowserCmisObject(client,
+ repo,
+ data=obj))
+ entries.append(cmisObject)
+
+ return entries
+
+
class ChildrenSerializer(object):
def fromJSON(self, client, repo, jsonObj):
entries = []
diff --git a/src/cmislib/util.py b/src/cmislib/util.py
index afcac47..d1bbc59 100644
--- a/src/cmislib/util.py
+++ b/src/cmislib/util.py
@@ -101,7 +101,12 @@
return 0
elif typeName == 'decimal':
if value:
- return float(value)
+ # search result relevance is returning as an arrary of decimals
+ # in the browser binding for some reason
+ if isinstance(value, list):
+ return float(value[0])
+ else:
+ return float(value)
else:
return 0.0
elif typeName == 'datetime':