import time
import pdb
import xml.dom.minidom
-import xml.dom.ext
import apistub
import inspect
from types import *
from optparse import OptionParser
-from sfa.util.parameter import Parameter,Mixed
+from sfa.storage.parameter import Parameter, Mixed
-import globals
+plc_ns="http://www.planet-lab.org/sfa"
class SoapError(Exception):
def __init__(self, value):
argname = inbrack
return argname
- def fold_complex_type_names(self,acc, arg):
- name = arg.doc
- if (type(acc)==list):
- acc.append(name)
- else:
- p_i_b = acc.doc
- acc = [p_i_b,name]
- return acc
-
- def fold_complex_type(self,acc, arg):
- name = self.name_complex_type(arg)
- self.complex_types[arg]=name
- if (type(acc)==list):
- acc.append(name)
- else:
- p_i_b = self.name_complex_type(acc)
- acc = [p_i_b,name]
- return acc
+# def fold_complex_type_names(self,acc, arg):
+# name = arg.doc
+# if (type(acc)==list):
+# acc.append(name)
+# else:
+# p_i_b = acc.doc
+# acc = [p_i_b,name]
+# return acc
+#
+# def fold_complex_type(self,acc, arg):
+# name = self.name_complex_type(arg)
+# self.complex_types[arg]=name
+# if (type(acc)==list):
+# acc.append(name)
+# else:
+# p_i_b = self.name_complex_type(acc)
+# acc = [p_i_b,name]
+# return acc
def name_complex_type(self,arg):
#pdb.set_trace()
if (isinstance(arg, Mixed)):
- inner_types = reduce(self.fold_complex_type, arg)
- inner_names = reduce(self.fold_complex_type_names, arg)
+# inner_types = reduce(self.fold_complex_type, arg)
+# inner_names = reduce(self.fold_complex_type_names, arg)
+ inner_types = [ self.name_complex_type(x) for x in arg ]
+ inner_names = [ x.doc for x in arg ]
if (inner_types[-1]=="none"):
inner_types=inner_types[:-1]
min_args = 0
else:
min_args = 1
- self.num_types=self.num_types+1
+ self.num_types += 1
type_name = "Type%d"%self.num_types
complex_type = types_section.appendChild(self.types.createElement("xsd:complexType"))
complex_type.setAttribute("name", type_name)
choice = complex_type.appendChild(self.types.createElement("xsd:choice"))
- for n,t in zip(inner_names,inner_types):
+ for (n,t) in zip(inner_names,inner_types):
element = choice.appendChild(self.types.createElement("element"))
n = self.filter_argname(n)
element.setAttribute("name", n)
return "xsdl:%s"%type_name
elif (isinstance(arg, Parameter)):
return (self.name_simple_type(arg.type))
- elif type(arg) == ListType or type(arg) == TupleType:
+ elif type(arg) in ( ListType , TupleType ):
inner_type = self.name_complex_type(arg[0])
self.num_types=self.num_types+1
type_name = "Type%d"%self.num_types
servport_el.setAttribute("binding", "tns:" + name + "_binding")
soapaddress = servport_el.appendChild(self.wsdl.createElement("soap:address"))
- soapaddress.setAttribute("location", "%s/%s" % (globals.plc_ns,service))
+ soapaddress.setAttribute("location", "%s/%s" % (plc_ns,service))
def compute_wsdl_definitions(self):
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
- """ % (self.interface_name(),globals.plc_ns,globals.plc_ns,globals.plc_ns)
+ """ % (self.interface_name(),plc_ns,plc_ns,plc_ns)
self.wsdl = xml.dom.minidom.parseString(wsdl_text_header)
<types>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="%s/schema"/>
</types>
- </wsdl:definitions> """ % (self.interface_name(),globals.plc_ns, globals.plc_ns, globals.plc_ns, globals.plc_ns)
+ </wsdl:definitions> """ % (self.interface_name(),plc_ns, plc_ns, plc_ns, plc_ns)
self.types = xml.dom.minidom.parseString(wsdl_text_header)
def pretty_print(self):
if (self.wsdl):
- xml.dom.ext.PrettyPrint(self.wsdl)
+ print xml.dom.minidom.Document.toprettyxml(self.wsdl)
else:
- raise Exception("Empty WSDL")
+ raise Exception("Empty WSDL")
def main():
parser = OptionParser()