[
http://jira.codehaus.org/browse/XFIRE-885?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dan Diephouse closed XFIRE-885.
-------------------------------
Resolution: Fixed
Thanks, fixed in SVN. Release coming very soon.
> Invalid WSDL create for abstract class
> --------------------------------------
>
> Key: XFIRE-885
> URL: http://jira.codehaus.org/browse/XFIRE-885
> Project: XFire
> Issue Type: Bug
> Components: Aegis Module
> Affects Versions: 1.2.4
> Environment: JDK 1.4 and 5
> Reporter: Joost den Boer
> Assigned To: Dan Diephouse
> Fix For: 1.2.5
>
> Attachments: BeanType.java
>
>
> On XFire 1.2.4. when an abstract class extends another (abstract) class, the
> WSDL generated for this class is not confirm WSDL standards.
> The 'abstract' attribute is added to the 'complexContent' element in stead to
> the 'complexType' element.
> Validator like XmlSpy and IBM Rad detect this WSDL error.
> Cause:
> The error is caused by BeanType.writeSchema(Element) method. If the type is
> an extention, a 'complextContent' element is created which then become the
> 'root' element for the rest of this method.
> The 'abstract' attribute is added to this root element after it has been
> replaced by the 'complexContent' element. Therefore this error only occurs if
> the abstract class extends another (abstract) class itself.
> Fix:
> The fix is easy. The small codeblock to add the 'abstract' attribute is put
> before the codeblock which creates the 'complexContent' element.
> I attached the complete code of the BeanType class including this fix.
> Code snippit :
> /*
> * WSDL error fix. Adding abstract attribute before creating
> complexContent element
> * See Java Virtual Machine specification:
> *
> http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75734
> */
> if (((info.getTypeClass().getModifiers() & Modifier.ABSTRACT) != 0) &&
> !info.getTypeClass().isInterface())
> {
> complex.setAttribute(new Attribute("abstract", "true"));
> }
>
> /**
> * WSDL error fix : create complexContent after abstract attribute is
> added to complexType element
> */
> if (info.isExtension() && sooperType != null)
> {
> Element complexContent = new Element("complexContent",
> SoapConstants.XSD_PREFIX,
> SoapConstants.XSD);
> complex.addContent(complexContent);
> complex = complexContent;
> }
> I attached the BeanType source including this fix.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email