DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16141>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16141

Wrong return ParameterDesc returned during deserialization when using a split WSDL 
description

[EMAIL PROTECTED] changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From [EMAIL PROTECTED]  2003-01-15 22:12 -------
Ok, figured it out... there were two issues.. one in the Axis code and the 
other in my WSDL.  The Axis code issue was covering up the WSDL issue.

First, the Axis code... in OperationDesc, the method getOutputParamByQName
(QName) was returning the wrong information when searching for a parameter that 
did not exist.  It would loop through the array of parameters looking for a 
matching QName.. if it did not find a match, it would return the last parameter 
it checked.  I changed the method so that if a matching QName wasn't found, the 
method returns a null which is what the calling code in RPCHandler expects.

Once I solved that issue, I had to go back and figure out why the parameter I 
was looking for wasn't being found.  The reason is that the parameter name in 
the WSDL definition did not match the serialized parameter name in the SOAP 
Envelope. (WSDL Spec Section 3.5: "Each message part (parameter) appears under 
the wrapper, represented by an accessor named identically to the corresponding 
parameter of the call").  I renamed the message part in the WSDL definition and 
all worked perfectly.

Why was this showing up only in split WSDL documents? Because only the split 
WSDL documents had the wrong description.  The single WSDL documents I was 
using were created by appending ?WSDL to the end of the service URL which, of 
course, generated the appropriate WSDL.

It's always the little things you overlook that cause the biggest hassles isn't 
it :-)

Anyway, the fix to OperationDesc has been committed and the code works.

Reply via email to