This seems to be a serious regression bug... But maybe I'm doing something wrong...

I was using 1.2 RC2, and everything was working for me.  Now under 1.2 final, the handling of arrays appears broken.

Here is the error:
org.apache.axis.AxisFaultorg.xml.sax.SAXException: Found character data inside an array element while deserializing

Here is the message that it choked on:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
   <getSupportedMatchAlgorithmsResponse xmlns="urn://hl7.org/CTSVAPI">
     <getSupportedMatchAlgorithmsReturn xmlns:ns1="urn://hl7.org/CTSVAPI" xsi:type="ns1:ArrayOf_xsd_string">IdenticalIgnoreCase</getSupportedMatchAlgorithmsReturn>
     <getSupportedMatchAlgorithmsReturn>StartsWithIgnoreCase</getSupportedMatchAlgorithmsReturn>
     <getSupportedMatchAlgorithmsReturn>EndsWithIgnoreCase</getSupportedMatchAlgorithmsReturn>
     <getSupportedMatchAlgorithmsReturn>ContainsPhraseIgnoreCase</getSupportedMatchAlgorithmsReturn>
   </getSupportedMatchAlgorithmsResponse>
 </soapenv:Body>
</soapenv:Envelope>


What it is supposed to be returning is a simple String[].
A snippit  from the wsdl file:
  <element name="getSupportedMatchAlgorithms">
   <complexType/>
  </element>
  <element name="getSupportedMatchAlgorithmsResponse">
   <complexType>
    <sequence>
     <element maxOccurs="unbounded" name="getSupportedMatchAlgorithmsReturn" type="xsd:string"/>
    </sequence>
   </complexType>
  </element>


My build process is kind of complicated - my initial definition of the API is in IDL.  The idl is compiled into Java.  Then, my WSDL is generated by the java2wsdl tool, using the "-y WRAPPED"  option.

Then, I generate java using wsdl2java tool - and I implement my API using the resulting java classes.  One thing that I noted here, was that 1.2 beta generated  "ArrayOf_X" classes  for each array object, while 1.2 final does not generate any ArrayOf_X classes.

Finally I install the code into my Axis server, and try it out.  I can call most of the methods in my API - but anything that returns an Array throws an exception, as detailed above.

Thanks for any advice,

Dan








Reply via email to