Browse Source

----------------------------------------------------------------------

Modified Files:
 	Namespaces.py
        -- Added a SOAP-1.2 binding
        WSDLTools.py
        -- Added some methods from grabbing ElementDeclaration and
        TypeDefintion from Message instances.
        XMLSchema.py
        -- fixed a bug in SchemaReader.
        logging.py
        -- added a couple more functions, and a level to basic logger.
 ----------------------------------------------------------------------
main
Joshua Boverhof 20 years ago
parent
commit
2701ddca92
4 changed files with 49 additions and 10 deletions
  1. +1
    -0
      Namespaces.py
  2. +28
    -8
      WSDLTools.py
  3. +2
    -2
      XMLSchema.py
  4. +18
    -0
      logging.py

+ 1
- 0
Namespaces.py View File

@@ -28,6 +28,7 @@ except:
BIND_HTTP = "http://schemas.xmlsoap.org/wsdl/http/" BIND_HTTP = "http://schemas.xmlsoap.org/wsdl/http/"
BIND_MIME = "http://schemas.xmlsoap.org/wsdl/mime/" BIND_MIME = "http://schemas.xmlsoap.org/wsdl/mime/"
BIND_SOAP = "http://schemas.xmlsoap.org/wsdl/soap/" BIND_SOAP = "http://schemas.xmlsoap.org/wsdl/soap/"
BIND_SOAP12 = "http://schemas.xmlsoap.org/wsdl/soap12/"


class XMLNS: class XMLNS:
BASE = "http://www.w3.org/2000/xmlns/" BASE = "http://www.w3.org/2000/xmlns/"


+ 28
- 8
WSDLTools.py View File

@@ -438,6 +438,26 @@ class Message(Element):
if elemref is not None: if elemref is not None:
part.element = ParseTypeRef(elemref, element) part.element = ParseTypeRef(elemref, element)


def getElementDeclaration(self):
"""Return the XMLSchema.ElementDeclaration instance or None"""
element = None
if self.element:
nsuri,name = self.element
wsdl = self.getWSDL()
if wsdl.types.has_key(nsuri) and wsdl.types[nsuri].elements.has_key(name):
element = wsdl.types[nsuri].elements[name]
return element

def getTypeDefinition(self):
"""Return the XMLSchema.TypeDefinition instance or None"""
type = None
if self.type:
nsuri,name = self.type
wsdl = self.getWSDL()
if wsdl.types.has_key(nsuri) and wsdl.types[nsuri].types.has_key(name):
type = wsdl.types[nsuri].types[name]
return type

def getWSDL(self): def getWSDL(self):
"""Return the WSDL object that contains this Message Part.""" """Return the WSDL object that contains this Message Part."""
return self.parent().parent() return self.parent().parent()
@@ -681,6 +701,13 @@ class MessageRole(Element):
return self.parent().parent().getWSDL() return self.parent().parent().getWSDL()
return self.parent().getWSDL() return self.parent().getWSDL()


def getMessage(self):
"""Return the WSDL object that represents the attribute message
(namespaceURI, name) tuple
"""
wsdl = self.getWSDL()
return wsdl.messages[self.message]

def toDom(self, node): def toDom(self, node):
wsdl = self.getWSDL() wsdl = self.getWSDL()


@@ -1040,7 +1067,7 @@ class Port(Element):


def getAddressBinding(self): def getAddressBinding(self):
"""A convenience method to obtain the extension element used """A convenience method to obtain the extension element used
as the address binding for the port, or None if undefined."""
as the address binding for the port."""
for item in self.extensions: for item in self.extensions:
if isinstance(item, SoapAddressBinding) or \ if isinstance(item, SoapAddressBinding) or \
isinstance(item, HttpAddressBinding): isinstance(item, HttpAddressBinding):
@@ -1577,13 +1604,6 @@ def callInfoFromWSDL(port, name):
parts = message.parts.values() parts = message.parts.values()


if parts: if parts:
# XXX no idea what this is for, but it breaks everything. jrb
#callinfo.setReturnParameter(
# parts[0].name,
# parts[0].element or parts[0].type,
# element_type = parts[0].element and 1 or 0
# )
#for part in parts[1:]:
for part in parts: for part in parts:
callinfo.addOutParameter( callinfo.addOutParameter(
part.name, part.name,


+ 2
- 2
XMLSchema.py View File

@@ -88,8 +88,8 @@ class SchemaReader:
reader = self.__readerClass() reader = self.__readerClass()
reader.loadDocument(file) reader.loadDocument(file)
schema = XMLSchema() schema = XMLSchema()
if base is not None:
schema.setBaseUrl(base)
if url is not None:
schema.setBaseUrl(url)
schema.load(reader) schema.load(reader)
self.__setIncludes(schema) self.__setIncludes(schema)
self.__setImports(schema) self.__setImports(schema)


+ 18
- 0
logging.py View File

@@ -16,6 +16,9 @@ class ILogger:
return return
def error(self, *args): def error(self, *args):
return return
def setLevel(cls, level):
cls.level = level
setLevel = classmethod(setLevel)
_LoggerClass = ILogger _LoggerClass = ILogger




@@ -24,10 +27,12 @@ class BasicLogger(ILogger):
self.msg, self.out = msg, out self.msg, self.out = msg, out


def warning(self, msg, *args): def warning(self, msg, *args):
if self.level < 1: return
print >>self, self.WARN, self.msg, print >>self, self.WARN, self.msg,
print >>self, msg %args print >>self, msg %args
WARN = 'WARN' WARN = 'WARN'
def debug(self, msg, *args): def debug(self, msg, *args):
if self.level < 2: return
print >>self, self.DEBUG, self.msg, print >>self, self.DEBUG, self.msg,
print >>self, msg %args print >>self, msg %args
DEBUG = 'DEBUG' DEBUG = 'DEBUG'
@@ -43,9 +48,22 @@ class BasicLogger(ILogger):




def setBasicLogger(): def setBasicLogger():
'''Use Basic Logger.
'''
setLoggerClass(BasicLogger)
BasicLogger.setLevel(0)

def setBasicLoggerWARN():
'''Use Basic Logger.
'''
setLoggerClass(BasicLogger)
BasicLogger.setLevel(1)

def setBasicLoggerDEBUG():
'''Use Basic Logger. '''Use Basic Logger.
''' '''
setLoggerClass(BasicLogger) setLoggerClass(BasicLogger)
BasicLogger.setLevel(2)


def setLoggerClass(loggingClass): def setLoggerClass(loggingClass):
'''Set Logging Class. '''Set Logging Class.


Loading…
Cancel
Save