WSDLServiceBuilder uses the name of the schema type rather than the part name
to create MessagePartInfo when using dynamic client
---------------------------------------------------------------------------------------------------------------------------------
Key: XFIRE-394
URL: http://jira.codehaus.org/browse/XFIRE-394
Project: XFire
Type: Bug
Components: Core
Versions: 1.0, 1.1-RC1
Reporter: Ted Sanne
Assigned to: Dan Diephouse
In createMessageParts(MessagePartContainer info, Message msg) in
org.codehaus.xfire.wsdl11.parser.WSDLServiceBuild there is the following code
snippets:
QName typeName = entry.getTypeName();
if (typeName != null)
{
QName partName = new QName(getTargetNamespace(),
entry.getName());
MessagePartInfo part = info.addMessagePart(typeName, null);
part.setSchemaElement(false);
part.setSchemaType(getBindingProvider().getSchemaType(typeName,
service));
}
// We've got a concrete schema type
QName elementName = entry.getElementName();
if (elementName != null)
{
MessagePartInfo part = info.addMessagePart(elementName, null);
part.setSchemaType(getBindingProvider().getSchemaType(typeName,
service));
}
Inside of both of the if tests, info.addMessage is called with the name of the
schema type rather than the name of the part itself. When using the dynamic
client calling an operation that lookes 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>
I get an error saying that there is no part named "string".
The code in WSDLServiceBuilder should should probably look like this:
// We're extending an abstract schema type
QName typeName = entry.getTypeName();
if (typeName != null)
{
QName partName = new QName(getTargetNamespace(),
entry.getName());
MessagePartInfo part = info.addMessagePart(partName, null);
part.setSchemaElement(false);
part.setSchemaType(getBindingProvider().getSchemaType(typeName,
service));
}
// We've got a concrete schema type
QName elementName = entry.getElementName();
if (elementName != null)
{
QName partName = new QName(getTargetNamespace(),
entry.getName());
MessagePartInfo part = info.addMessagePart(partName, null);
part.setSchemaType(getBindingProvider().getSchemaType(elementName, service));
}
--
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