|
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.
|