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:46 UTC
[jira] Created: (AXIS-1843) Non-default constructor generated for complex type should take parameters to initialize base class properties
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
[jira] Updated: (AXIS-1843) Non-default constructor generated for complex type should take parameters to initialize base class properties
Posted by "Peter Canning (JIRA)" <ax...@ws.apache.org>.
[ 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