[ 
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

Reply via email to