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

Java2WSDL generates invalid WSDL for arrays specified as public members

           Summary: Java2WSDL generates invalid WSDL for arrays specified as
                    public members
           Product: Axis
           Version: 1.0
          Platform: Other
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Major
          Priority: Other
         Component: WSDL processing
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


If a class contains an array defined using a public member, eg:

public class MyClass {
  public String[] Values;
}

the generated WSDL looks like this:

<complexType name="MyClass">
 <sequence>
  <element maxOccurs="unbounded" name="Values" nillable="true" 
type="xsd:string"/>
 </sequence>
</complexType>

This is not a valid representation of an array, as an array must be given its 
own accessor which derives from the SOAP-ENC:Array type.

If the array is defined using bean setter/getter methods as follows:

public class MyClass {
        private String[] Values;
        public String[] getValues() {
                return Values;
        }
        public void setValues(String[] values) {
                Values=values;
        }
}

The generated WSDL looks like this:

   <complexType name="MyClass">
    <sequence>
     <element name="values" nillable="true" type="impl:ArrayOf_xsd_string"/>
    </sequence>
   </complexType>
   <complexType name="ArrayOf_xsd_string">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
     </restriction>
    </complexContent>
   </complexType>

This is the correct representation of an array.

The WSDL generated by public members and bean methods should be the same (and 
correct!)

The workaround is to always use getter/setter methods for array properties, but 
this results in the accessor names always having a lower-case first character, 
which will break existing applications.

Reply via email to