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