Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
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)
Esempio n. 4
0
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)