All,

I seem to have come across an inconsistency in Axis when dealing with
inheritance (or I am doing something wrong - both valid possibilities).
The WSDL is alphabetically sorted and so is the SOAP return message,
however the SOAP return message does not take inheritance into effect -
this results in the order of the SOAP return message being incorrect.

I wrote two java classes: one is GenericResponse.java and the other
SpecificResponse.java.  SpecificResponse is a subclass of
GenericResponse.  For examples sake let's say that GenericResponse.java
has the following:

public long getA()
public long getB()
public long getD()

and SpecificResponse adds:
public long getC()

The relevant section of the wsdd for it looks like this:
        <service name="MyWebService" provider="java:RPC">
                <parameter name="allowedMethods" value="sendMail"/>
                <parameter name="isStatic" value="false"/>
                <parameter name="scope" value="request"/>
                <parameter name="className"
value="com.webservice.MyWebService"/>
                <parameter name="wsdlTargetNamespace"
value="http://postagestatementwizard.wws"/>
                <beanMapping
languageSpecificType="java:com.webservice.GenericResponse"
qname="ns33:GenericResponse" xmlns:ns33="http://data.webservice"/>
                <beanMapping
languageSpecificType="java:com.webservice.SpecificResponse"
qname="ns34:SpecificResponse" xmlns:ns34="data.webservice"/>
        </service>

The resulting WSDL file becomes (relevant section):
<complexType name="GenericResponse">
<sequence>
<element name="a" type="xsd:long"/>
<element name="b" type="xsd:long"/>
<element name="d" type="xsd:long"/>
</sequence>
</complexType>

<complexType name="SpecificResponse">
<complexContent>
<extension base="tns2:GenericResponse">
<sequence>
<element name="c" type="xsd:long"/>
</sequence>
</extension>
</complexContent>
</complexType>

I would expect the SOAP response message to be in the order of a, b, d,
c but it comes back a, b, c, d.


The relevant SOAP message is:
        <a xsi:type="xsd:long">0</a>
        <b xsi:type="xsd:long">0</b>
        <c xsi:type="xsd:long">0</c>
        <d xsi:type="xsd:long">0</d>

Is anyone else seeing this?  Is there a better way to accomplish this -
using inheritance.  I have had this problem in 1.1 and 1.2b2.  This does
not cause a problem with Axis clients but does with other toolkits
clients (Sun One for example).

TIA,
Tim

Reply via email to