You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Dan Armbrust <da...@gmail.com> on 2005/05/26 23:58:08 UTC

1.2 can't handle a simple String[]???

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

I was using 1.2 beta, 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