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=17177>. 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=17177 Should never produce a null "holder" value (for IN/OUT args) Summary: Should never produce a null "holder" value (for IN/OUT args) Product: Axis Version: 1.0 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Major Priority: Other Component: Serialization/Deserialization AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Should never produce a null "holder" value (for IN/OUT args) Suppose an application has an IN/OUT attachment argument (DataHandler). It has defined a DataHandlerHolder class (implements javax.xml.rpc.holders.Holder) to accomodate this parameter. The WSDL names this parameter as "body". This works fine normally but at least one major SOAP client (MS SOAP Toolkit 3.0) causes the following problem... When using their "high-level" API, if the client does not want to send an attachment to AXIS but it *does* want to receive one (via my IN/OUT argument), one would declare the variable something like (VB6 syntax)... Dim Attachment As MSSOAPLib30.IAttachment but don't assign it any value (since there is no attachment to send). When the call is made (there are other arguments too)... soapClient.callE3Encoded encodedParameters, encodedHeaders, Attachment The resulting request contains a SOAP Envelope that does *not* contain any markup cooresponding to the "body" IN/OUT argument. This is a bug in MS SOAP Toolkit 3.0 since they *should* output a construct like <body SOAPSDK2:nil="true"/>. They seem to do this correctly for nil String values. The result of this missing markup is that the DataHandlerHolder argument in the server-side method comes in as null! This makes it impossible to fulfill the OUT aspect of this argument (can't send an attachment in my response). To accomodate any such clients, makes sense (I think) to behave as if a <body SOAPSDK2:nil="true"/> was seen (allocate a DataHandlerHolder object with a "null" value). This would allow you to send an OUT value for your argument. My test concerns DataHandler but I think it makes sense to do the same for any argument that implements javax.xml.rpc.holders.Holder. Thanks -Sam