C2WSDL 1.2 NO IDEA Avatar
  1. OMG Issue

C2WSDL12 — Section: Multi-dimensional arrays in IDL

  • Key: C2WSDL12-5
  • Legacy Issue Number: 8995
  • Status: closed  
  • Source: Borland ( Naveed Shaikh)
  • Summary:

    Multi-dimensional arrays in IDL are required to be mapped to intermediate types for each of the sub-arrays. The naming scheme used by the specification can lead to name collision. Referring to section page 1-14, an IDL with the following declaration typedef long matrix [5][3]; maps to complex types as below: <xsd:complexType name="_SE_ArrayOfint"> ... </xsd:complexType> <xsd:complexType name="_SE_matrix"> ... </xsd:complexType> <xsd:complexType name="ArrayOfint"> ... </xsd:complexType> <xsd:complexType name="matrix"> ... </xsd:complexType> However, if you have another type in the above IDL typedef long anotherMatrix[5][3]; This will also map to complex types with names _SE_ArrayOfint, _SE_anotherMatrix, ArrayOfint, anotherMatrix leading to name collision between XML schema types. Same goes for more than two-dimensional arrays. Proposed resolution: To have name collision-free types, an approach can be to include the name and size of that particular array. For example, the above IDL will produce the following schema types. <xsd:complexType name="_SE_ArrayOfint_matrix_3"> <xsd:complexContent> <xsd:restriction base="SOAP-ENC:Array"> <xsd:sequence> <xsd:element name="item" type="xsd:int" minOccurs="3" maxOccurs="3"/> </xsd:sequence> <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:int[]"/> </xsd:restriction> </xsd:complexContents> </xsd:complexType> <xsd:complexType name="_SE_matrix"> <xsd:complexContent> <xsd:restriction base="SOAP-ENC:Array"> <xsd:sequence> <xsd:element name="item" type="_SE_matrix_3" minOccurs="5" maxOccurs="5"/> </xsd:sequence> <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="_SE_matrix_3[]"/> </xsd:restriction> </xsd:complexContents> </xsd:complexType> <xsd:complexType name="ArrayOfint_matrix_3"> <xsd:sequence> <xsd:element name="item" type="xsd:int" minOccurs="3" maxOccurs="3"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="matrix"> <xsd:sequence> <xsd:element name="item" type="matrix_3" minOccurs="5" maxOccurs="5"/> </xsd:sequence> </xsd:complexType>

  • Reported: C2WSDL 1.1 — Thu, 22 Sep 2005 04:00 GMT
  • Disposition: Resolved — C2WSDL 1.2
  • Disposition Summary:

    append "_<n>" suffix to the nth arising collision with the collided ArrayOf<type> identifier

  • Updated: Fri, 6 Mar 2015 20:58 GMT