def __init__(self, addressing=False, do_extended=False, wsdl=None): self.typesModuleName = None self.messagesModuleName = None self.wsAddressing = addressing self.imports = ServiceHeaderContainer() self.messagesImports = ServiceHeaderContainer() self.locator = ServiceLocatorContainer() self.bindings = [] self.messages = [] self.do_extended=do_extended self._wsdl = wsdl # None unless do_extended == True
class ServiceDescription: """client interface - locator, port, etc classes""" separate_messages = False logger = _GetLogger("ServiceDescription") def __init__(self, addressing=False, do_extended=False, wsdl=None): self.typesModuleName = None self.messagesModuleName = None self.wsAddressing = addressing self.imports = ServiceHeaderContainer() self.messagesImports = ServiceHeaderContainer() self.locator = ServiceLocatorContainer() self.bindings = [] self.messages = [] self.do_extended=do_extended self._wsdl = wsdl # None unless do_extended == True def setTypesModuleName(self, name, modulePath=None): """The types module to be imported. Parameters name -- name of types module modulePath -- optional path where module is located. """ self.typesModuleName = '%s' %name if modulePath is not None: self.typesModuleName = '%s.%s' %(modulePath,name) # def setMessagesModuleName(self, name, modulePath=None): # '''The types module to be imported. # Parameters # name -- name of types module # modulePath -- optional path where module is located. # ''' # self.messagesModuleName = '%s' %name # if modulePath is not None: # self.messagesModuleName = '%s.%s' %(modulePath,name) def fromWsdl(self, service, **kw): self.imports.setTypesModuleName(self.typesModuleName) # if self.separate_messages: # self.messagesImports.setMessagesModuleName(self.messagesModuleName) self.imports.appendImport(kw.get('imports', [])) self.locator.setUp(service) try: bindings = [p.binding for p in service.ports] except: warnings.warn('not all ports have binding declared,') bindings = () for port in service.ports: if port.binding not in bindings: continue while port.binding in bindings: bindings.remove(port.binding) desc = BindingDescription(useWSA=self.wsAddressing, do_extended=self.do_extended, wsdl=self._wsdl) try: desc.setUp(port.getBinding()) except Wsdl2PythonError as ex: self.logger.warning('Skipping port(%s)' %port.name) if len(ex.args): self.logger.warning(ex.args[0]) continue desc.setReaderClass(kw.get('readerclass')) desc.setWriterClass(kw.get('writerclass')) for soc in desc.operations: if soc.hasInput() is True: mw = MessageWriter(do_extended=self.do_extended) mw.setUp(soc, port, input=True) self.messages.append(mw) if soc.hasOutput() is True: mw = MessageWriter(do_extended=self.do_extended) mw.setUp(soc, port, input=False) self.messages.append(mw) self.bindings.append(desc) def write(self, fd, msg_fd=None): """write out module to file descriptor. fd -- file descriptor to write out service description. msg_fd -- optional file descriptor for messages module. """ # if msg_fd != None: # print >>fd, self.messagesImports # print >>msg_fd, self.imports # else: print(self.imports, file=fd) print(self.locator, file=fd) for m in self.bindings: print(m, file=fd) # if msg_fd != None: # for m in self.messages: # print >>msg_fd, m # else: for m in self.messages: print(m, file=fd)
class ServiceDescription: """client interface - locator, port, etc classes""" separate_messages = False logger = _GetLogger("ServiceDescription") def __init__(self, addressing=False, do_extended=False, wsdl=None): self.typesModuleName = None self.messagesModuleName = None self.wsAddressing = addressing self.imports = ServiceHeaderContainer() self.messagesImports = ServiceHeaderContainer() self.locator = ServiceLocatorContainer() self.bindings = [] self.messages = [] self.do_extended=do_extended self._wsdl = wsdl # None unless do_extended == True def setTypesModuleName(self, name, modulePath=None): """The types module to be imported. Parameters name -- name of types module modulePath -- optional path where module is located. """ self.typesModuleName = '%s' %name if modulePath is not None: self.typesModuleName = '%s.%s' %(modulePath,name) # def setMessagesModuleName(self, name, modulePath=None): # '''The types module to be imported. # Parameters # name -- name of types module # modulePath -- optional path where module is located. # ''' # self.messagesModuleName = '%s' %name # if modulePath is not None: # self.messagesModuleName = '%s.%s' %(modulePath,name) def fromWsdl(self, service, **kw): self.imports.setTypesModuleName(self.typesModuleName) # if self.separate_messages: # self.messagesImports.setMessagesModuleName(self.messagesModuleName) self.imports.appendImport(kw.get('imports', [])) self.locator.setUp(service) try: bindings = [p.binding for p in service.ports] except: warnings.warn('not all ports have binding declared,') bindings = () for port in service.ports: if port.binding not in bindings: continue while port.binding in bindings: bindings.remove(port.binding) desc = BindingDescription(useWSA=self.wsAddressing, do_extended=self.do_extended, wsdl=self._wsdl) try: desc.setUp(port.getBinding()) except Wsdl2PythonError, ex: self.logger.warning('Skipping port(%s)' %port.name) if len(ex.args): self.logger.warning(ex.args[0]) continue desc.setReaderClass(kw.get('readerclass')) desc.setWriterClass(kw.get('writerclass')) for soc in desc.operations: if soc.hasInput() is True: mw = MessageWriter(do_extended=self.do_extended) mw.setUp(soc, port, input=True) self.messages.append(mw) if soc.hasOutput() is True: mw = MessageWriter(do_extended=self.do_extended) mw.setUp(soc, port, input=False) self.messages.append(mw) self.bindings.append(desc)