[ http://jira.codehaus.org/browse/XFIRE-393?page=all ]
Dan Diephouse updated XFIRE-393:
--------------------------------
Fix Version: 1.1
Thanks Ted. Going to try and sneak this in 1.1
> 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
> Fix For: 1.1
>
>
> 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