Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-4093

Elements of subtypes returned in wrong order in webservice response

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 1.3
    • nightly
    • adb
    • None

    Description

      When axis service returns elements of subtypes it returns in reverse order,
      1. subclass
      2. super class.

      Snippet from WSDL definition:

      • <xs:complexType name="RuleDTO">
      • <xs:sequence>
        <xs:element minOccurs="0" name="annotation" nillable="true" type="xs:string" />
        <xs:element maxOccurs="unbounded" minOccurs="0" name="applicableTrails" nillable="true" type="xs:int" />
        <xs:element minOccurs="0" name="deviceTypeId" nillable="true" type="xs:int" />
        ...
        <xs:element minOccurs="0" name="subject" nillable="true" type="ax21:SubjectDTO" />
        </xs:sequence>
        </xs:complexType>

      Definition of SubjectDTO (which has following sub types).

      <xs:complexType name="SubjectDTO">

      • <xs:sequence>
        <xs:element minOccurs="0" name="caseSensitive" type="xs:boolean" />
        <xs:element minOccurs="0" name="frequency" nillable="true" type="xs:int" />
        <xs:element minOccurs="0" name="ignoreWhitespace" type="xs:boolean" />
        <xs:element minOccurs="0" name="key" nillable="true" type="ax21:KeyDTO" />
        <xs:element minOccurs="0" name="COMPONENT_CLASSNAME" nillable="true" type="xs:string" />
        </xs:sequence>
        </xs:complexType>
      • <xs:complexType name="SubjectCollectionDTO">
      • <xs:complexContent>
      • <xs:extension base="ax21:SubjectDTO">
      • <xs:sequence>
        <xs:element maxOccurs="unbounded" minOccurs="0" name="collection" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="contiguous" type="xs:boolean" />
        <xs:element minOccurs="0" name="ordered" type="xs:boolean" />
        </xs:sequence>
        </xs:extension>
        </xs:complexContent>
        </xs:complexType>
      • <xs:complexType name="SubjectLinesDTO">
      • <xs:complexContent>
      • <xs:extension base="ax21:SubjectCollectionDTO">
        <xs:sequence />
        </xs:extension>
        </xs:complexContent>
        </xs:complexType>

      Server Response :

      <return type="com.bmc.bcan.dto.RuleDTO">
      <ns1:annotation></ns1:annotation>
      <ns1:applicableTrails
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
      <ns1:deviceTypeId>0</ns1:deviceTypeId>
      <!-- SubType Element -->
      <ns1:subject type="com.bmc.bcan.dto.SubjectLinesDTO">
      <ns1:collection>set mls flow full</ns1:collection>
      <ns1:collection>
      set mls nde ${global.netflowDestination}
      ${global.netflowPort}
      </ns1:collection>
      <ns1:collection>
      set mls nde version 5
      </ns1:collection>
      <ns1:collection>set mls nde enable</ns1:collection>
      <ns1:collection>
      set mls agingtime long 64
      </ns1:collection>
      <ns1:collection>
      set mls agingtime fast 16 0
      </ns1:collection>
      <ns1:contiguous>false</ns1:contiguous>
      <ns1:ordered>false</ns1:ordered>
      <ns1:caseSensitive>false</ns1:caseSensitive>
      <ns1:frequency>2</ns1:frequency>
      <ns1:ignoreWhitespace>true</ns1:ignoreWhitespace>
      <ns1:key type="com.bmc.bcan.dto.KeyDTO">
      <ns1:keyString>458169663-121</ns1:keyString>
      </ns1:key>
      </ns1:subject>
      <ns1:substitutionValidation>
      true
      </ns1:substitutionValidation>
      <ns1:trigger
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:nil="true" />
      <ns1:violationSeverity>5</ns1:violationSeverity>
      </return>

      For SubjectLinesDTO the subelement collection from SubjectCollectionDTO is returned first instead of
      elements from SubjectDTO (<ns1:caseSensitive>false</ns1:caseSensitive>
      <ns1:frequency>2</ns1:frequency>
      <ns1:ignoreWhitespace>true</ns1:ignoreWhitespace>
      <ns1:key type="com.bmc.bcan.dto.KeyDTO">
      <ns1:keyString>458169663-121</ns1:keyString>
      </ns1:key>)

      SubjectLinesDTO.Factory.parse in the client generated stub tries to parse the elements in SubjectDTO first and then SubjectLinesDTO

      This issue is second part of

      https://issues.apache.org/jira/browse/AXIS2-4092

      which happens when type="fully qualified class name" is changed to xsi:type="ns:SchemaType" (test run)

      We need a fix for this as this has been a blocker.

      Balaji

      Attachments

        Activity

          People

            Unassigned Unassigned
            to.haribalaji@gmail.com Balaji Hari
            Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: