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

SOAP Array deserialization bug

           Summary: SOAP Array deserialization bug
           Product: Axis
           Version: 1.0-rc2
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: Critical
          Priority: Other
         Component: Serialization/Deserialization
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


We encounter a serious problem when we try to use the dynamic invocation on the 
searchByCounry operation of the http://www.capeclear.com/GlobalWeather.wsdl 
server.

This operation uses a SOAP Array structure, the ArrayOfStataion type, as a 
return parameter. When called, the server adds a "xsi:type=ArrayOfStation" 
information to the XML document. However, this type information is modified 
to "Array", the base type of ArrayOfStation during the Xis deserialization.

Hence, the compatibility checking leads to an exception raising in 
org.apache.axis.message.RPCHandler.onStartchild at line 285. In our case, the 
JavaUtils.isConvertable method returns false due to the fact that we use 
dynamical types instead of Java types. But, the actual reason is that the 
setting of the type variable at line 185, that should be determined from the 
xsi:type of the ArrayOfStation XML structure, is not correct (set to Array as 
mentionned before). 
A way to confirm what have been said is to observe the "typeFromAttr00" display 
at line 193 when the soap array is deserialized.


Here is the XSD definition of our SOAP array.

   <xsd:complexType name="ArrayOfStation">
    <xsd:complexContent>
     <xsd:restriction base="SOAP-ENC:Array">
      <xsd:sequence>
       <xsd:element maxOccurs="unbounded" minOccurs="0" name="item" 
type="xsd1:Station"/>
      </xsd:sequence>
      <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd1:Station[]"/>
     </xsd:restriction>
    </xsd:complexContent>
   </xsd:complexType>

Reply via email to