hi everyone, I have another question about the wsdl2java tool of axis2
(1.3).
I have this message for a request :
<wsdl:message name="GetUserByContactInfoIdRequest">
<wsdl:part name="ContactInfoId" type="xsd:string">
</wsdl:part>
<wsdl:part name="ActiveUserOnly" type="xsd:boolean">
<wsdl:documentation>
If true, returns only Object that are active objects !
If False, returns all objects, even if they are
desactivated
</wsdl:documentation>
</wsdl:part>
</wsdl:message>
as you can see, there are 2 parameters :
ContactInfoId : string
ActiveUserOnly : boolean
after using wsdl2java, implementing all the web service, I had an error when
I tried to send a request for these service : Error unespected subelement
ContactInfoId.
In fact, I understood after some time the problem, it was because the
GetUserByContactInfoIdRequest is defined in the wsdl by : ContactInfoId in
first, and ActiveUserOnly in second parameter.
But, in the java files generated by axis2 ( GetUserByContactInfoId.java,
which is used to send the request)
I have the public static GetUserByContactInfoId parse(....) function,
which is not well defined according to the wsdl :
while (!reader.isStartElement() && !reader.isEndElement())
reader.next();
if (reader.isStartElement() &&
new javax.xml.namespace.QName("", "*ActiveUserOnly*
").equals(
reader.getName())) {
java.lang.String content = reader.getElementText();
object.setActiveUserOnly(org.apache.axis2.databinding.utils.ConverterUtil.convertToBoolean(
content));
reader.next();
} // End of if for expected property start element
else {
// A start element we are not expecting indicates an
invalid parameter was passed
throw new org.apache.axis2.databinding.ADBException(
"Unexpected subelement " + reader.getLocalName());
}
while (!reader.isStartElement() && !reader.isEndElement())
reader.next();
if (reader.isStartElement() &&
new javax.xml.namespace.QName("", "*ContactInfoId*
").equals(
reader.getName())) {
java.lang.String content = reader.getElementText();
object.setContactInfoId(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(
content));
reader.next();
} // End of if for expected property start element
_____________________________________
I did not modify this file, and as you can see, the ContactInfoId and the
ActiveUserId fields are in the opposite order. so, my request defined by the
wsdl can't work until I inverse the fields.
As I work for a very big web service, I just can't generate the files and
modify all of them, it take to much time.. and it's the same for the wsdl, I
must not modify it.
Does someone have any idea why axis2, when generate the java files, inverse
the fields of the request in the parse function ? it's very annoying for me
and I have to find a solution.
thanks a lot in advance,
Pierre BETZ