From: <bov...@us...> - 2008-01-11 01:26:39
|
Revision: 1440 http://pywebsvcs.svn.sourceforge.net/pywebsvcs/?rev=1440&view=rev Author: boverhof Date: 2008-01-10 17:26:39 -0800 (Thu, 10 Jan 2008) Log Message: ----------- M test/wsdl2py/config.txt M test/wsdl2py/wsdl/test_Unqualified.xsd M test/wsdl2py/test_Unqualified.py M ZSI/generate/containers.py -- [ 1853368 ] "elementFormDefault='unqualified'" mishandled This bug caused local element declarations to be incorrectly namespaced. Appears to belimited to local element declarations with local type definitions (both simpleType and complexType), both these scenarios are fixed now with unittests. Modified Paths: -------------- trunk/zsi/ZSI/generate/containers.py trunk/zsi/test/wsdl2py/config.txt trunk/zsi/test/wsdl2py/test_Unqualified.py trunk/zsi/test/wsdl2py/wsdl/test_Unqualified.xsd Modified: trunk/zsi/ZSI/generate/containers.py =================================================================== --- trunk/zsi/ZSI/generate/containers.py 2008-01-11 00:47:15 UTC (rev 1439) +++ trunk/zsi/ZSI/generate/containers.py 2008-01-11 01:26:39 UTC (rev 1440) @@ -1984,20 +1984,27 @@ if pyclass == 'bool': pyclass = 'int' kw = KW.copy() kw.update(dict(aname=aname, ns=self.ns, name=self.name, + pname=(self.ns,self.name), substitutionGroup=self._substitutionGroupTag(), subclass=self.sKlass,literal=self.literalTag(), schema=self.schemaTag(), init=self.simpleConstructor(), klass=self.getClassName(), element="ElementDeclaration")) + # + # TODO: What does this local check do???? relevant for + # [ 1853368 ] "elementFormDefault='unqualified'" mishandled + # + if self.local: kw['element'] = 'LocalElementDeclaration' + kw['pname'] = '"%s"' %self.name element = map(lambda i: i %kw, [ '%(ID1)sclass %(klass)s(%(subclass)s, %(element)s):', '%(ID2)s%(literal)s', '%(ID2)s%(schema)s', '%(ID2)s%(init)s', - '%(ID3)skw["pname"] = ("%(ns)s","%(name)s")', + '%(ID3)skw["pname"] = %(pname)s', '%(ID3)skw["aname"] = "%(aname)s"', ] ) @@ -2053,20 +2060,27 @@ def _setContent(self): kw = KW.copy() kw.update(dict(aname=self.getAttributeName(self.name), ns=self.ns, name=self.name, + pname=(self.ns,self.name), subclass=self.sKlass,literal=self.literalTag(), schema=self.schemaTag(), init=self.simpleConstructor(), klass=self.getClassName(), element="ElementDeclaration", baseinit=self.simpleConstructor(self.sKlass))) + # + # TODO: What does this local check do???? relevant for + # [ 1853368 ] "elementFormDefault='unqualified'" mishandled + # + if self.local: kw['element'] = 'LocalElementDeclaration' + kw['pname'] = '"%s"' %self.name element = map(lambda i: i %kw, [ '%(ID1)sclass %(klass)s(%(subclass)s, %(element)s):', '%(ID2)s%(literal)s', '%(ID2)s%(schema)s', '%(ID2)s%(init)s', - '%(ID3)skw["pname"] = ("%(ns)s","%(name)s")', + '%(ID3)skw["pname"] = %(pname)s', '%(ID3)skw["aname"] = "%(aname)s"', '%(ID3)s%(baseinit)s', ] @@ -2154,6 +2168,7 @@ schema=self.schemaTag(), init=self.simpleConstructor(), ns=self.ns, name=self.name, + pname=(self.ns,self.name), aname=self.getAttributeName(self.name), nsurilogic=self.nsuriLogic(), ofwhat=self.getTypecodeList(), @@ -2167,8 +2182,14 @@ ex.args = tuple(args) raise + # + # TODO: What does this local check do???? relevant for + # [ 1853368 ] "elementFormDefault='unqualified'" mishandled + # + if self.local: kw['element'] = 'LocalElementDeclaration' + kw['pname'] = '"%s"' %self.name element = [ '%(ID1)sclass %(klass)s(%(subclass)s, %(element)s):', @@ -2177,7 +2198,7 @@ '%(ID2)s%(init)s', '%(ID3)s%(nsurilogic)s', '%(ID3)sTClist = [%(ofwhat)s]', - '%(ID3)skw["pname"] = ("%(ns)s","%(name)s")', + '%(ID3)skw["pname"] = %(pname)s', '%(ID3)skw["aname"] = "%(aname)s"', '%(ID3)s%(atypecode)s = {}', '%(ID3)sZSI.TCcompound.ComplexType.__init__(self,None,TClist,inorder=0,**kw)', @@ -2303,6 +2324,7 @@ schema=self.schemaTag(), init=self.simpleConstructor(), ns=self.ns, name=self.name, + pname=(self.ns,self.name), aname=self.getAttributeName(self.name), baseslogic=self.getBasesLogic(ID3), #ofwhat=self.getTypecodeList(), @@ -2317,9 +2339,15 @@ args += ex.args ex.args = tuple(args) raise - + + # + # TODO: What does this local check do???? relevant for + # [ 1853368 ] "elementFormDefault='unqualified'" mishandled + # + if self.local: kw['element'] = 'LocalElementDeclaration' + kw['pname'] = '"%s"' %self.name element = [ '%(ID1)sclass %(klass)s(%(element)s):', @@ -2327,7 +2355,7 @@ '%(ID2)s%(schema)s', '%(ID2)s%(substitutionGroup)s', '%(ID2)s%(init)s', - '%(ID3)skw["pname"] = ("%(ns)s","%(name)s")', + '%(ID3)skw["pname"] = %(pname)s', '%(ID3)skw["aname"] = "%(aname)s"', '%(baseslogic)s', '%(ID3)s%(alias)s.%(subclass)s.__init__(self, **kw)', Modified: trunk/zsi/test/wsdl2py/config.txt =================================================================== --- trunk/zsi/test/wsdl2py/config.txt 2008-01-11 00:47:15 UTC (rev 1439) +++ trunk/zsi/test/wsdl2py/config.txt 2008-01-11 01:26:39 UTC (rev 1440) @@ -119,7 +119,7 @@ document = True literal = True broke = False -tests = test_MapPoint test_Echo test_AWSECommerceService test_FinancialService test_BasicComm test_Manufacturer test_Racing test_Attributes test_Choice test_DerivedTypes test_EchoWSAddr200403 test_SubstitutionGroup test_VIM +tests = test_MapPoint test_Echo test_AWSECommerceService test_FinancialService test_BasicComm test_Manufacturer test_Racing test_Attributes test_Choice test_DerivedTypes test_EchoWSAddr200403 test_SubstitutionGroup test_VIM test_Unqualified [doc_literal_broke] document = True Modified: trunk/zsi/test/wsdl2py/test_Unqualified.py =================================================================== --- trunk/zsi/test/wsdl2py/test_Unqualified.py 2008-01-11 00:47:15 UTC (rev 1439) +++ trunk/zsi/test/wsdl2py/test_Unqualified.py 2008-01-11 01:26:39 UTC (rev 1440) @@ -66,6 +66,13 @@ </element> <element name="Unqualified2" type="xsd:int"/> <element name="Unqualified3" type="tns:GlobalType"/> + + <element name="Unqualified4"> + <simpleType> + <restriction base="xsd:string"/> + </simpleType> + </element> + </sequence> </complexType> </element> @@ -79,6 +86,8 @@ pyobj.Unqualified3.Unqualified1 = pyobj.Unqualified3.new_Unqualified1() pyobj.Unqualified3.Unqualified2 = 32 + pyobj.Unqualified4 = "whatever" + sw = SoapWriter(envelope=False) sw.serialize(pyobj) xml = str(sw) @@ -89,7 +98,7 @@ # GlobalElementLocalType assert(et.tag == '{urn:test}GlobalElementLocalType'), "root GED" - for i,j in zip([ 'Unqualified1', 'Unqualified2', 'Unqualified3',], + for i,j in zip([ 'Unqualified1', 'Unqualified2', 'Unqualified3', 'Unqualified4'], map(lambda c: c.tag, et.getchildren())): assert(i == j), 'Match Failed: expected "%s" not "%s"' %(i,j) Modified: trunk/zsi/test/wsdl2py/wsdl/test_Unqualified.xsd =================================================================== --- trunk/zsi/test/wsdl2py/wsdl/test_Unqualified.xsd 2008-01-11 00:47:15 UTC (rev 1439) +++ trunk/zsi/test/wsdl2py/wsdl/test_Unqualified.xsd 2008-01-11 01:26:39 UTC (rev 1440) @@ -12,6 +12,13 @@ </element> <element name="Unqualified2" type="xsd:int"/> <element name="Unqualified3" type="tns:GlobalType"/> + + <element name="Unqualified4"> + <simpleType> + <restriction base="xsd:string"/> + </simpleType> + </element> + </sequence> </complexType> </element> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |