Sure. Please  submit a patch

thanks,
dims

On 5/10/06, Remy Bertrand <[EMAIL PROTECTED]> wrote:


When WSDL contains <xsd:extension> in type definitions, wsdl2java can
generate non compilable code.

I have identified 2 cases of non compilable code :

- Generated class don't extends anything, but a constructor calling
super(...) is generated (in this case super refer to java.lang.Object).
- Generated class don't extends anything, a constructor initializing each
attribute is generated, but attribute name is replaced by "paramx".

I wrote the attached wsdl that reproduce the two cases. Please focus on the
schema part only, rest of the file is a poor cut and paste.


After looking in the code
(wsdl/toJava/JavaBeanWriter.java), my understanding is that
tests to decide if a class extends another or not (and thus what
constructor(s) must be outputted) are not coherent.

- In method writeFullConstructor(), a test type.isSimpleType() is done to
check if constructor must be written.
- In method writeSimpleConstructors(), a test extendType != null is done to
check if constructor must be written.
- In method getExtendsText() (which is called to generate the "extends"
statement at the beginning of the class), a more complex test is used:
(extendType != null) && !isUnion() && (!type.isSimpleType() ||
!extendType.isBaseType()) && (extendType.getDimensions().length() == 0)

Thats why sometimes writeFullConstructor emits a constructor calling
super(...) even if the class don't really inherits from anything.
Or why writeSimpleConstructors emits a constructor to initialize every
attributes even if the informations to write this constructor are not
available.


If you agree with my analyze, i can open a JIRA reports and submit a patch
that i wrote trying to resolve the problem on my (multiple) wsdl.

Thanks
Rémy Bertrand





--
Davanum Srinivas : http://wso2.com/blogs/

Reply via email to