This is a really old bug that appeared in Axis 1.2 but did not exist in Axis 
1.1.The same bug still exists in Axis 1.3 and Axis 1.4.The same problem has 
been mentioned 
before:http://mail-archives.apache.org/mod_mbox/ws-axis-dev/200602.mbox/[EMAIL 
PROTECTED] URL gives a good description of the problem.I'll try to summarize 
this  brieflyIf you have a WSDL (rpc/enc) that has a primitive array like 
int[], double[], boolean[] that appears in your WSDL like this:  <complexType 
name="ArrayOf_xsd_double">       <complexContent>          <restriction 
base="soapenc:Array">             <attribute ref="soapenc:arrayType" 
wsdl:arrayType="xsd:double[]"/>          </restriction>       </complexContent> 
 </complexType>  <complexType name="MyClass">       <sequence>         <element 
name="name" type="xsd:string" nillable="true"/>         <element name="values" 
type="impl:ArrayOf_xsd_double" nillable="true"/>       </sequence>  
</complexType>When you generate the source files using wsdl2java, the primitive 
array is incorrectly converted into it's primitive type.So int[] gets converted 
to int, and double[] gets converted to double.This will obviously not generate 
correct code for the client - it won't work !!!!!Producing incorrect and 
inoperable code for a client in my mind is a SHOWSTOPPER !!Not sure what your 
definition of a showstopper is but it doesn't get worse than that.I fixed it in 
the class org.apache.axis.wsdl.toJava.JavaBeanHelperWriter (Axis 1.4 source) by 
commenting out a line.The code block begins at line 329:                        
            // Some special handling for arrays.                    TypeEntry 
elemType = elem.getType();                    QName xmlType = null;             
       if ((elemType.getDimensions().length() > 1)                            
&& (elemType.getClass() == DefinedType.class)) {                        // If 
we have a DefinedType with dimensions, it must                        // be a 
SOAP array derived type.  In this case, use                        // the 
refType's QName for the metadata.                                               
                        // THIS LINE BELOW CAUSES UNDESIRED BEHAVIOR. IT'S A 
BUG !!!!!                                               // elemType = 
elemType.getRefType();                            Even though this fix works in 
my case, I don't know what side effects it will have.The original author(s) had 
a reason to write it this way even though it created a bug.Please look into it 
and fix it one and for all.This is not a minor bug !!!!!!!!!!
_________________________________________________________________
Missed the show?  Watch videos of the Live Earth Concert on MSN.
http://liveearth.msn.com

Reply via email to