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 "Peter Canning (JIRA)" <ax...@ws.apache.org> on 2005/03/05 08:05:47 UTC

[jira] Updated: (AXIS-1843) Non-default constructor generated for complex type should take parameters to initialize base class properties

     [ http://issues.apache.org/jira/browse/AXIS-1843?page=history ]

Peter Canning updated AXIS-1843:
--------------------------------

    Attachment: test.wsdl

> Non-default constructor generated for complex type should take parameters to initialize base class properties
> -------------------------------------------------------------------------------------------------------------
>
>          Key: AXIS-1843
>          URL: http://issues.apache.org/jira/browse/AXIS-1843
>      Project: Axis
>         Type: Bug
>   Components: WSDL processing
>     Versions: 1.2RC2, 1.2RC3
>  Environment: Linux (debian testing distribution)
> JDK 1.5.0_01
> Axis 1.2RC3 
>     Reporter: Peter Canning
>  Attachments: test.wsdl
>
> WSDL2Java creates a JavaBean class corresponding to a complexType in the WSDL. The JavaBean class contains properties for each element in the complexType. The JavaBean class also contains a default constructor as well as a constructor taking a parameter for each property.  However when the complexType is an extension of another complexType the non-default constructor does not take parameters for the properties of the corresponding base class.  This forces clients to use property set methods to initialize the base class properties.  This is both inconvenient and error prone.  The problem is even more serious when the complexType extension hierarchy (and the corresponding class hierarchy) is multiple levels deep.
> For example, when processing the attached WSDL file with
> java -cp $AXISRC3_JARS org.apache.axis.wsdl.WSDL2Java -O -1 -p org.imaginary.test -o axis_stubs test.wsdl
> it produces constructors
>     public Base(
>            java.lang.String x,
>            int y) {
>            this.x = x;
>            this.y = y;
>     }
> and
>     public Derived(
>            java.lang.String a,
>            java.lang.String b,
>            java.lang.Boolean c) {
>            this.a = a;
>            this.b = b;
>            this.c = c;
>     }
> The second constructor should be
>     public Derived(
>            java.lang.String x,
>            int y,
>            java.lang.String a,
>            java.lang.String b,
>            java.lang.Boolean c) {
>            super(x, y);
>            this.a = a;
>            this.b = b;
>            this.c = c;
>     }
> This would (1) allow use of the constructor to guarantee that all the properties are initialized, and (2) allow creating instances of class Derived in a declarative manner.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira