You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2003/02/12 19:38:12 UTC

DO NOT REPLY [Bug 17017] New: - The WSDL2Java generates incorrect type metadata for sequences containing arrays of sequences, thus preventing correct deserialization

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

The WSDL2Java generates incorrect type metadata for sequences containing arrays of sequences, thus preventing correct deserialization

           Summary: The WSDL2Java generates incorrect type metadata for
                    sequences containing arrays of sequences, thus
                    preventing correct deserialization
           Product: Axis
           Version: 1.1beta
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: WSDL processing
        AssignedTo: axis-dev@ws.apache.org
        ReportedBy: njoneja@interwoven.com


When a WSDL describes an element as a sequence of array of sequence, (ie a bean 
with a member property which is an array of beans), the type metadata that is 
generated incorrectly identifies the property.
E.g. if we had
class Moo {
    public Cow[] getBovines()
}
the type metadata give the XML type as Cow instead of ArrayOfCow.

The bug can be fixed by changing line 279 in JavaBeanHelperWriter.
Reproduced in context below: (lines 274-283)

// Some special handling for arrays
TypeEntry elemType = elem.getType();
while (elemType.getRefType() != null) {
    elemType = elemType.getRefType();
}
QName xmlType = elemType.getQName(); // <======= changeme
if (xmlType != null && xmlType.getLocalPart().indexOf("[") > 0) {
    // Skip array types, because they are special
    xmlType = null;
}

the line flagged with the // <======= changeme

QName xmlType = elemType.getQName(); // <======= changeme

should be changed to:

QName xmlType=elem.getType().getQName();

- Navneet