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=15219>.
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=15219

sendXsiTypes=false generates invalid multiRef encoding

           Summary: sendXsiTypes=false generates invalid multiRef encoding
           Product: Axis
           Version: current (nightly)
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Serialization/Deserialization
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Turning off sendXsiTypes generates invalid SOAP output for RPC encoded multiRefs
(at least as I understand the spec) because no type information is supplied for
the multiRef and the type information is not otherwise available. Axis itself
fails on processing the resulting message, so turning off sendXsiTypes on both
client and server breaks if you're sending anything other than simple types.

Here's normal SOAP sample with sendXsiTypes=true:

  <multiRef id="id15" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xsi:type="ns27:FlightBean" xmlns:ns27="http://flightsraw";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
   <arrivalTime xsi:type="xsd:string">3:54a</arrivalTime>
   <departureTime xsi:type="xsd:string">2:29a</departureTime>
   <number xsi:type="xsd:int">675</number>
   <carrier href="#id5"/>
  </multiRef>

Here's what it looks like with sendXsiTypes=false (no type on multiRef, so
cannot be deserialized):

  <multiRef id="id15" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
   <arrivalTime>3:54a</arrivalTime>
   <departureTime>2:29a</departureTime>
   <number>675</number>
   <carrier href="#id7"/>
  </multiRef>

Here's the result after the attached patch (type only on multiRef, complying
with SOAP spec while eliminating unnecessary types):

  <multiRef id="id15" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xsi:type="ns27:FlightBean" xmlns:ns27="http://flightsraw";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
   <arrivalTime>3:54a</arrivalTime>
   <departureTime>2:29a</departureTime>
   <number>675</number>
   <carrier href="#id5"/>
  </multiRef>

Reply via email to