You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "DELZANT Bruno (BMB)" <Br...@proximus.net> on 2009/01/13 12:48:34 UTC
Does axis2 not respect the order in generation of the stub client ?
Hi,
I have a WSDL containing the following part:
<message name="loginResponse">
<part name="lstlogdt" type="xsd:dateTime" />
<part name="lstlogtm" type="xsd:dateTime" />
<part name="menu" type="xsd:string" />
<part name="operprop" type="xsd:string" />
<part name="profile" type="xsd:string" />
<part name="profprop" type="xsd:string" />
<part name="rejlogin" type="xsd:string" />
<part name="retvalue" type="xsd:string" />
<part name="sessid" type="xsd:string" />
<part name="srvref00" type="osp:ArrayOfstring" />
</message>
I expect Axis2 to respect the order, but in the client stub generated I
get another order. See part of the code:
________________________________
public static LoginResponse parse(javax.xml.stream.XMLStreamReader
reader) throws java.lang.Exception {
LoginResponse object = new LoginResponse();
int event;
java.lang.String nillableValue = null;
java.lang.String prefix = "";
java.lang.String namespaceuri = "";
try {
while (!reader.isStartElement() && !reader.isEndElement())
reader.next();
if
(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance> ", "type") != null) {
java.lang.String fullTypeName = reader.getAttributeValue(
"http://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance> ", "type");
if (fullTypeName != null) {
java.lang.String nsPrefix = null;
if (fullTypeName.indexOf(":") > -1) {
nsPrefix = fullTypeName.substring(0, fullTypeName.indexOf(":"));
}
nsPrefix = nsPrefix == null ? "" : nsPrefix;
java.lang.String type =
fullTypeName.substring(fullTypeName.indexOf(":") + 1);
if (!"loginResponse".equals(type)) {
// find namespace for the prefix
java.lang.String nsUri =
reader.getNamespaceContext().getNamespaceURI(nsPrefix);
return (LoginResponse) ExtensionMapper.getTypeObject(nsUri,
type, reader);
}
}
}
// Note all attributes that were handled. Used to differ normal
attributes
// from anyAttributes.
java.util.Vector handledAttributes = new java.util.Vector();
reader.next();
while (!reader.isStartElement() && !reader.isEndElement())
reader.next();
if (reader.isStartElement()
&& new javax.xml.namespace.QName("",
"srvref00").equals(reader.getName())) {
object.setSrvref00(ArrayOfstring.Factory.parse(reader));
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("",
"profprop").equals(reader.getName())) {
java.lang.String content = reader.getElementText();
object.setProfprop(org.apache.axis2.databinding.utils.ConverterUtil.conv
ertToString(content));
reader.next();
} // End of if for expected property start element
...
________________________________
As you can see, first element to be searched for is element srvref00,
then profprop and so on.
But in my SOAP definition, I was expecting to get first lstlogdt, then
lstlogtm ...
Can someone explain me why the ordering is not preserved and how to
ensure it ?
This lead to "unexpected element" error when I try to parse the response
message ...
Thanks a lot for any help.
Bruno Delzant
**** DISCLAIMER****
http://www.proximus.be/maildisclaimer