[ http://jira.codehaus.org/browse/XFIRE-393?page=comments#action_65187 ]
Ted Sanne commented on XFIRE-393: --------------------------------- I have tested with 1.1-RC and the problem exists there too and can be resolved the same way > WSDLServiceBuilder and MessagePartContainer do not respect correct ordering > of parts when using dynamic client > -------------------------------------------------------------------------------------------------------------- > > Key: XFIRE-393 > URL: http://jira.codehaus.org/browse/XFIRE-393 > Project: XFire > Type: Bug > Components: Core > Versions: 1.0 > Reporter: Ted Sanne > Assignee: Dan Diephouse > > > When using the dynamic client, the correct ordering of the parts in a message: > The fragment of the wsdl looks like this: > <wsdl:message name="getBatchDetailsRequest"> > <wsdl:part name="localId" type="xsd:string" /> > <wsdl:part name="trdProperties" type="xsd:boolean" /> > <wsdl:part name="propertyLog" type="xsd:boolean" /> > <wsdl:part name="stationList" type="xsd:boolean" /> > <wsdl:part name="transList" type="xsd:boolean" /> > </wsdl:message> > But when I print out the message parts on the client, i get the following: > Operation: getBatchDetails > 0 {http://www.w3.org/2001/XMLSchema}boolean [EMAIL PROTECTED] boolean > 0 {http://www.w3.org/2001/XMLSchema}string [EMAIL PROTECTED] string > 0 {http://www.w3.org/2001/XMLSchema}boolean [EMAIL PROTECTED] boolean > 0 {http://www.w3.org/2001/XMLSchema}boolean [EMAIL PROTECTED] boolean > 0 {http://www.w3.org/2001/XMLSchema}boolean [EMAIL PROTECTED] boolean > As you can see, the first and second argument has switched places. > Also, all message parts have an index of 0! > To fix the ordering problem, the createMessageParts(MessagePartContainer > info, Message msg) in org.codehaus.xfire.wsdl11.parser.WSDLServiceBuilder > should be changed from: > Map parts = msg.getParts(); > for (Iterator itr = parts.values().iterator(); itr.hasNext();) > ... > to > List parts = msg.getOrderedParts(null); > for (Iterator itr = parts.iterator(); itr.hasNext();) > .... > In addition, addMessagePart(MessagePartInfo part) in > org.codehaus.xfire.service.MessagePartContainer should look like this: > public void addMessagePart(MessagePartInfo part) > { > messageParts.put(part.getName(), part); > part.setIndex(messagePartList.size()); > messagePartList.add(part); > } > Without these changes, I get a ClassCastException since the BoolType is > trying to write a string. > After testing these changes I get the following when printing the parts: > Operation: getBatchDetails > 0 {http://www.w3.org/2001/XMLSchema}string [EMAIL PROTECTED] string > 1 {http://www.w3.org/2001/XMLSchema}boolean [EMAIL PROTECTED] boolean > 2 {http://www.w3.org/2001/XMLSchema}boolean [EMAIL PROTECTED] boolean > 3 {http://www.w3.org/2001/XMLSchema}boolean [EMAIL PROTECTED] boolean > 4 {http://www.w3.org/2001/XMLSchema}boolean [EMAIL PROTECTED] boolean > I tested this on the 1.0 code, but after a quick compare, the problem seems > to be on the 1.1-RC1 code too. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
