Modified Files: Namespaces.py -- added some new WSRF namespaces. WSDLTools.py -- look for resourceProperties in all relevant namespaces. XMLSchema.py -- added 1 convenience method. ----------------------------------------------------------------------main
@@ -70,15 +70,57 @@ except: | |||||
WRAP_AES256 = "http://www.w3.org/2001/04/xmlenc#kw-aes256" | WRAP_AES256 = "http://www.w3.org/2001/04/xmlenc#kw-aes256" | ||||
class WSRF_V1_2: | |||||
'''OASIS WSRF Specifications Version 1.2 | |||||
''' | |||||
class LIFETIME: | |||||
XSD_DRAFT1 = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" | |||||
XSD_DRAFT4 = "http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceLifetime-1.2-draft-04.xsd" | |||||
WSDL_DRAFT1 = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" | |||||
WSDL_DRAFT4 = "http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceLifetime-1.2-draft-04.wsdl" | |||||
#LATEST = DRAFT4 | |||||
WSDL_LIST = (WSDL_DRAFT1, WSDL_DRAFT4) | |||||
XSD_LIST = (XSD_DRAFT1, XSD_DRAFT4) | |||||
class PROPERTIES: | |||||
XSD_DRAFT1 = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" | |||||
XSD_DRAFT5 = "http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.xsd" | |||||
WSDL_DRAFT1 = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" | |||||
WSDL_DRAFT5 = "http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl" | |||||
#LATEST = DRAFT5 | |||||
WSDL_LIST = (WSDL_DRAFT1, WSDL_DRAFT5) | |||||
XSD_LIST = (XSD_DRAFT1, XSD_DRAFT5) | |||||
class BASENOTIFICATION: | |||||
XSD_DRAFT1 = "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" | |||||
#LATEST = DRAFT1 | |||||
#WSDL_LIST = (WSDL_DRAFT1,) | |||||
XSD_LIST = (XSD_DRAFT1,) | |||||
class BASEFAULTS: | |||||
XSD_DRAFT1 = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" | |||||
XSD_DRAFT3 = "http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-BaseFaults-1.2-draft-03.xsd" | |||||
#LATEST = DRAFT3 | |||||
#WSDL_LIST = (WSDL_DRAFT1, WSDL_DRAFT3) | |||||
XSD_LIST = (XSD_DRAFT1, XSD_DRAFT3) | |||||
WSRF = WSRF_V1_2 | |||||
WSRFLIST = (WSRF_V1_2,) | |||||
class OASIS: | class OASIS: | ||||
'''URLs for Oasis specifications | '''URLs for Oasis specifications | ||||
''' | ''' | ||||
WSSE = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" | WSSE = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" | ||||
UTILITY = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" | UTILITY = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" | ||||
LIFETIME = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" | |||||
PROPERTIES = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" | |||||
BASENOTIFICATION = "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" | |||||
BASEFAULTS = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" | |||||
LIFETIME = WSRF_V1_2.LIFETIME.XSD_DRAFT1 | |||||
PROPERTIES = WSRF_V1_2.PROPERTIES.XSD_DRAFT1 | |||||
BASENOTIFICATION = WSRF_V1_2.BASENOTIFICATION.XSD_DRAFT1 | |||||
BASEFAULTS = WSRF_V1_2.BASEFAULTS.XSD_DRAFT1 | |||||
class WSSE: | class WSSE: | ||||
BASE = "http://schemas.xmlsoap.org/ws/2002/04/secext" | BASE = "http://schemas.xmlsoap.org/ws/2002/04/secext" | ||||
@@ -99,7 +141,6 @@ class WSA200408: | |||||
ADDRESS = "http://schemas.xmlsoap.org/ws/2004/08/addressing" | ADDRESS = "http://schemas.xmlsoap.org/ws/2004/08/addressing" | ||||
ANONYMOUS = "%s/role/anonymous" %ADDRESS | ANONYMOUS = "%s/role/anonymous" %ADDRESS | ||||
FAULT = "%s/fault" %ADDRESS | FAULT = "%s/fault" %ADDRESS | ||||
WSA = WSA200408 | |||||
class WSA200403: | class WSA200403: | ||||
ADDRESS = "http://schemas.xmlsoap.org/ws/2004/03/addressing" | ADDRESS = "http://schemas.xmlsoap.org/ws/2004/03/addressing" | ||||
@@ -111,6 +152,9 @@ class WSA200303: | |||||
ANONYMOUS = "%s/role/anonymous" %ADDRESS | ANONYMOUS = "%s/role/anonymous" %ADDRESS | ||||
FAULT = None | FAULT = None | ||||
WSA = WSA200408 | |||||
WSA_LIST = (WSA200408, WSA200403, WSA200303) | |||||
class WSP: | class WSP: | ||||
POLICY = "http://schemas.xmlsoap.org/ws/2002/12/policy" | POLICY = "http://schemas.xmlsoap.org/ws/2002/12/policy" | ||||
@@ -11,7 +11,7 @@ ident = "$Id$" | |||||
import weakref | import weakref | ||||
from cStringIO import StringIO | from cStringIO import StringIO | ||||
from Namespaces import OASIS, XMLNS, WSA200408, WSA200403, WSA200303 | |||||
from Namespaces import OASIS, XMLNS, WSA, WSA_LIST, WSRF_V1_2 | |||||
from Utility import Collection, CollectionNS, DOM, ElementProxy, basejoin | from Utility import Collection, CollectionNS, DOM, ElementProxy, basejoin | ||||
from XMLSchema import XMLSchema, SchemaReader, WSDLToolsAdapter | from XMLSchema import XMLSchema, SchemaReader, WSDLToolsAdapter | ||||
@@ -556,11 +556,12 @@ class PortType(Element): | |||||
self.name = DOM.getAttr(element, 'name') | self.name = DOM.getAttr(element, 'name') | ||||
self.documentation = GetDocumentation(element) | self.documentation = GetDocumentation(element) | ||||
self.targetNamespace = DOM.getAttr(element, 'targetNamespace') | self.targetNamespace = DOM.getAttr(element, 'targetNamespace') | ||||
if DOM.hasAttr(element, 'ResourceProperties', OASIS.PROPERTIES): | |||||
rpref = DOM.getAttr(element, 'ResourceProperties', OASIS.PROPERTIES) | |||||
self.resourceProperties = ParseQName(rpref, element) | |||||
lookfor = (WSA200408, WSA200403, WSA200303,) | |||||
for nsuri in WSRF_V1_2.PROPERTIES.XSD_LIST: | |||||
if DOM.hasAttr(element, 'ResourceProperties', nsuri): | |||||
rpref = DOM.getAttr(element, 'ResourceProperties', nsuri) | |||||
self.resourceProperties = ParseQName(rpref, element) | |||||
NS_WSDL = DOM.GetWSDLUri(self.getWSDL().version) | NS_WSDL = DOM.GetWSDLUri(self.getWSDL().version) | ||||
elements = DOM.getElements(element, 'operation', NS_WSDL) | elements = DOM.getElements(element, 'operation', NS_WSDL) | ||||
for element in elements: | for element in elements: | ||||
@@ -577,7 +578,7 @@ class PortType(Element): | |||||
docs = GetDocumentation(item) | docs = GetDocumentation(item) | ||||
msgref = DOM.getAttr(item, 'message') | msgref = DOM.getAttr(item, 'message') | ||||
message = ParseQName(msgref, item) | message = ParseQName(msgref, item) | ||||
for WSA in lookfor: | |||||
for WSA in WSA_LIST: | |||||
action = DOM.getAttr(item, 'Action', WSA.ADDRESS, None) | action = DOM.getAttr(item, 'Action', WSA.ADDRESS, None) | ||||
if action: break | if action: break | ||||
operation.setInput(message, name, docs, action) | operation.setInput(message, name, docs, action) | ||||
@@ -588,7 +589,7 @@ class PortType(Element): | |||||
docs = GetDocumentation(item) | docs = GetDocumentation(item) | ||||
msgref = DOM.getAttr(item, 'message') | msgref = DOM.getAttr(item, 'message') | ||||
message = ParseQName(msgref, item) | message = ParseQName(msgref, item) | ||||
for WSA in lookfor: | |||||
for WSA in WSA_LIST: | |||||
action = DOM.getAttr(item, 'Action', WSA.ADDRESS, None) | action = DOM.getAttr(item, 'Action', WSA.ADDRESS, None) | ||||
if action: break | if action: break | ||||
operation.setOutput(message, name, docs, action) | operation.setOutput(message, name, docs, action) | ||||
@@ -598,7 +599,7 @@ class PortType(Element): | |||||
docs = GetDocumentation(item) | docs = GetDocumentation(item) | ||||
msgref = DOM.getAttr(item, 'message') | msgref = DOM.getAttr(item, 'message') | ||||
message = ParseQName(msgref, item) | message = ParseQName(msgref, item) | ||||
for WSA in lookfor: | |||||
for WSA in WSA_LIST: | |||||
action = DOM.getAttr(item, 'Action', WSA.ADDRESS, None) | action = DOM.getAttr(item, 'Action', WSA.ADDRESS, None) | ||||
if action: break | if action: break | ||||
operation.addFault(message, name, docs, action) | operation.addFault(message, name, docs, action) | ||||
@@ -612,7 +613,7 @@ class PortType(Element): | |||||
if self.resourceProperties: | if self.resourceProperties: | ||||
ns,name = self.resourceProperties | ns,name = self.resourceProperties | ||||
prefix = epc.getPrefix(ns) | prefix = epc.getPrefix(ns) | ||||
epc.setAttributeNS(OASIS.PROPERTIES, 'ResourceProperties', '%s:%s'%(prefix,name)) | |||||
epc.setAttributeNS(WSRF.PROPERTIES.LATEST, 'ResourceProperties', '%s:%s'%(prefix,name)) | |||||
for op in self.operations: | for op in self.operations: | ||||
op.toDom(epc._getNode()) | op.toDom(epc._getNode()) | ||||
@@ -724,7 +725,7 @@ class MessageRole(Element): | |||||
epc.setAttributeNS(None, 'message', self.message) | epc.setAttributeNS(None, 'message', self.message) | ||||
if self.action: | if self.action: | ||||
epc.setAttributeNS(WSA200408.ADDRESS, 'Action', self.action) | |||||
epc.setAttributeNS(WSA.ADDRESS, 'Action', self.action) | |||||
class Binding(Element): | class Binding(Element): | ||||
@@ -591,6 +591,11 @@ class XMLSchemaComponent(XMLBase, MarkerInterface): | |||||
"""return requested attribute or None | """return requested attribute or None | ||||
""" | """ | ||||
return self.attributes.get(attribute) | return self.attributes.get(attribute) | ||||
def getAttributeName(self): | |||||
"""return attribute name or None | |||||
""" | |||||
return self.getAttribute('name') | |||||
def setAttributes(self, node): | def setAttributes(self, node): | ||||
"""Sets up attribute dictionary, checks for required attributes and | """Sets up attribute dictionary, checks for required attributes and | ||||