Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
I have the problem of having to work with a wsdl interface the makes use of type extensions and xsi:type. For example:
<complexType name="VirtualHardware">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="numCPU" type="xsd:int" />
<element name="memoryMB" type="xsd:int" />
<element name="device" type="vim25:VirtualDevice" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
where the VirtualDevice type is extended in various ways to reflect different kind of device types:
<complexType name="VirtualController">
<complexContent>
<extension base="vim25:VirtualDevice">
<sequence>
<element name="busNumber" type="xsd:int" />
<element name="device" type="xsd:int" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
The issue I am running into is that WSDL2C does not seem to support this kind of xsi:type based type serialization/deserialization (which admittedly fits really poorly with a non-object oriented language like C). You could probably make it work by storing type information in the generated structs, combined with a type registry.
Any suggestions on workarounds other than using the XML model?