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 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)
def fromWSDL(self, wsdl): '''setup the service description from WSDL, should not need to override. ''' assert isinstance(wsdl, WSDLTools.WSDL), 'expecting WSDL instance' if len(wsdl.services) == 0: raise WsdlGeneratorError('No service defined') self.reset() self.wsdl = wsdl self.setUpHeader() self.setUpImports() for service in wsdl.services: sd = self._service_class(service.name) self._services[service.name] = sd for port in service.ports: desc = BindingDescription(wsdl=wsdl) try: desc.setUp(port.getBinding()) except Wsdl2PythonError: continue for soc in desc.operations: if not soc.hasInput(): continue self.messages.append(MessageWriter()) self.messages[-1].setUp(soc, port, input=True) if soc.hasOutput(): self.messages.append(MessageWriter()) self.messages[-1].setUp(soc, port, input=False) for e in port.extensions: if isinstance(e, WSDLTools.SoapAddressBinding): sd.location = e.location self.setUpMethods(port) self.setUpClassDef(service) self.setUpInitDef(service)