1.1 --- a/libxml2dom/xmlrpc.py Sat Oct 06 19:33:47 2007 +0000
1.2 +++ b/libxml2dom/xmlrpc.py Sat Oct 06 20:46:13 2007 +0000
1.3 @@ -32,7 +32,7 @@
1.4 from libxml2dom.macrolib import *
1.5 from libxml2dom.macrolib import \
1.6 createDocument as Node_createDocument
1.7 -from libxml2dom.rpc import ParameterName
1.8 +from libxml2dom.rpc import ParameterName, ParameterValue
1.9
1.10 class XMLRPCImplementation(libxml2dom.Implementation):
1.11
1.12 @@ -172,7 +172,7 @@
1.13 def _parameters(self):
1.14 return self.xpath("./params/param")
1.15
1.16 - def _rawParameterValues(self):
1.17 + def _parameterValues(self):
1.18 values = self.xpath("./params/param/value")
1.19 if values:
1.20 items = []
1.21 @@ -182,7 +182,7 @@
1.22 else:
1.23 return []
1.24
1.25 - def _setRawParameterValues(self, parameters):
1.26 + def _setParameterValues(self, parameters):
1.27 param_list = self.parameters
1.28 params = (self.xpath("./params") or [None])[0]
1.29
1.30 @@ -205,22 +205,17 @@
1.31 param.appendChild(value)
1.32 self._add_value(value, parameter)
1.33
1.34 - def _parameterValues(self):
1.35 - return libxml2dom.rpc.convert(self.rawParameterValues)
1.36 -
1.37 # Internal methods.
1.38
1.39 def _add_value(self, value, parameter):
1.40
1.41 "Add to the 'value' element the given 'parameter'."
1.42
1.43 - (typename, parameter_name), parameter_value = parameter
1.44 -
1.45 - if typename == "struct":
1.46 - if isinstance(parameter_value, dict):
1.47 - items = parameter_value.items()
1.48 + if parameter.name.ns == "struct":
1.49 + if isinstance(parameter.value, dict):
1.50 + items = parameter.value.items()
1.51 else:
1.52 - items = parameter_value
1.53 + items = parameter.value
1.54
1.55 # Create a struct element and add the members.
1.56
1.57 @@ -228,13 +223,12 @@
1.58 value.appendChild(struct)
1.59
1.60 for item in items:
1.61 - (item_typename, item_name), item_value = item
1.62 member = struct.createMember()
1.63 struct.appendChild(member)
1.64
1.65 # Peek into the item to set up the name.
1.66
1.67 - member.memberName = item_name
1.68 + member.memberName = item.name
1.69
1.70 # Add the item inside a new value element.
1.71
1.72 @@ -242,7 +236,7 @@
1.73 member.appendChild(memberValue)
1.74 self._add_value(memberValue, item)
1.75
1.76 - elif typename == "array":
1.77 + elif parameter.name.ns == "array":
1.78
1.79 # Create an array element and add the members.
1.80
1.81 @@ -251,7 +245,7 @@
1.82 data = array.createData()
1.83 array.appendChild(data)
1.84
1.85 - for item in parameter_value:
1.86 + for item in parameter.value:
1.87
1.88 # Add the item inside a new value element.
1.89
1.90 @@ -260,9 +254,9 @@
1.91 self._add_value(data_value, item)
1.92
1.93 else:
1.94 - container = self.ownerDocument.createElement(typename)
1.95 + container = self.ownerDocument.createElement(parameter.name.ns)
1.96 value.appendChild(container)
1.97 - container.value = unicode(parameter_value)
1.98 + container.value = unicode(parameter.value)
1.99
1.100 def _get_value(self, value, name=None):
1.101
1.102 @@ -279,16 +273,16 @@
1.103
1.104 for member in value.container.members:
1.105 items.append(self._get_value(member.value, member.memberName))
1.106 - return (ParameterName(value.type, name), items)
1.107 + return ParameterValue(ParameterName(value.type, name), items)
1.108
1.109 elif value.type == "array":
1.110 items = []
1.111 for data_value in value.container.data.values:
1.112 items.append(self._get_value(data_value))
1.113 - return (ParameterName(value.type, name), items)
1.114 + return ParameterValue(ParameterName(value.type, name), items)
1.115
1.116 else:
1.117 - return (ParameterName(value.type, name), value.container.value)
1.118 + return ParameterValue(ParameterName(value.type, name), value.container.value)
1.119
1.120 # Node construction methods.
1.121
1.122 @@ -305,8 +299,7 @@
1.123 methodNameElement = property(_methodNameElement)
1.124 methodName = property(_methodName, _setMethodName)
1.125 parameters = property(_parameters)
1.126 - rawParameterValues = property(_rawParameterValues, _setRawParameterValues)
1.127 - parameterValues = property(_parameterValues)
1.128 + parameterValues = property(_parameterValues, _setParameterValues)
1.129
1.130 class XMLRPCArrayElement(XMLRPCNode):
1.131