[ 
https://issues.apache.org/jira/browse/CXF-8025?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

James Poje updated CXF-8025:
----------------------------
    Description: 
While converting a project from Metro to CXF 3.3.1, I ran into an issue where 
wsdl2java (using wrapper style) was generating the port type interface without 
errors but some method parameters were totally missing.

Debugging found that some of our schema types use multiple levels of 
xsd:extension and CXF seems to stop looking after one level (in 
org.apache.cxf.tools.wsdlto.frontend.jaxws.processor.internal.ProcessorUtil::getWrappedElement).

Example element similar to our original issue: the port type interface would 
generate with the "id" parameter and without the "parentId" parameter (more 
complex example in the PR test):
{code:java}
<element name="someParameter" type="x1:someParameterType"/>
<complexType name="someParameterType">
    <complexContent>
        <extension base="x1:ParentType">
            <sequence>
                <element name="id" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>
            </sequence>
        </extension>
    </complexContent>
</complexType>
<complexType name="ParentType">
    <complexContent>
        <extension base="x1:EmptyGrandParentType">
            <sequence>
                <element name="parentId" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>
            </sequence>
        </extension>
    </complexContent>
</complexType>
<complexType name="EmptyGrandParentType"/>{code}
 

This schema structure appears valid (please correct me if this is wrong) and 
has been in use with Metro for some time, so I think this just needs a small 
fix.  There is a proposed patch+test PR available - it simply adds multilevel 
traversal to the original work supporting xsd:extension elements in CXF-2193.

Please let me know if I can clarify or add any other info.

  was:
While converting a project from Metro to CXF 3.3.1, I ran into an issue where 
wsdl2java (using wrapper style) was generating the port type interface without 
errors but some method parameters were totally missing.

Debugging found that some of our schema types use multiple levels of 
xsd:extension and CXF seems to stop looking after one level (in 
org.apache.cxf.tools.wsdlto.frontend.jaxws.processor.internal.ProcessorUtil::getWrappedElement).

Example element similar to our original issue: the port type interface would 
generate with the "id" parameter and without the "parentId" parameter (more 
complex example will be in the PR):
{code:java}
<element name="someParameter" type="x1:someParameterType"/>
<complexType name="someParameterType">
    <complexContent>
        <extension base="x1:ParentType">
            <sequence>
                <element name="id" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>
            </sequence>
        </extension>
    </complexContent>
</complexType>
<complexType name="ParentType">
    <complexContent>
        <extension base="x1:EmptyGrandParentType">
            <sequence>
                <element name="parentId" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>
            </sequence>
        </extension>
    </complexContent>
</complexType>
<complexType name="EmptyGrandParentType"/>{code}
 

This schema structure appears valid (please correct me if this is wrong) and 
has been in use with Metro for some time, so I think this just needs a small 
fix.  I have a proposed patch+test PR to submit shortly.  It simply adds 
multilevel traversal to the original work supporting xsd:extension elements in 
[CXF-2193|https://issues.apache.org/jira/browse/CXF-2193].

Please let me know if I can clarify or add any other info.


> wsdl2java using wrapper style cannot handle multiple levels of xsd:extension 
> elements
> -------------------------------------------------------------------------------------
>
>                 Key: CXF-8025
>                 URL: https://issues.apache.org/jira/browse/CXF-8025
>             Project: CXF
>          Issue Type: Bug
>          Components: Tooling
>    Affects Versions: 3.3.1
>            Reporter: James Poje
>            Priority: Minor
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> While converting a project from Metro to CXF 3.3.1, I ran into an issue where 
> wsdl2java (using wrapper style) was generating the port type interface 
> without errors but some method parameters were totally missing.
> Debugging found that some of our schema types use multiple levels of 
> xsd:extension and CXF seems to stop looking after one level (in 
> org.apache.cxf.tools.wsdlto.frontend.jaxws.processor.internal.ProcessorUtil::getWrappedElement).
> Example element similar to our original issue: the port type interface would 
> generate with the "id" parameter and without the "parentId" parameter (more 
> complex example in the PR test):
> {code:java}
> <element name="someParameter" type="x1:someParameterType"/>
> <complexType name="someParameterType">
>     <complexContent>
>         <extension base="x1:ParentType">
>             <sequence>
>                 <element name="id" type="xsd:string" minOccurs="1" 
> maxOccurs="1"/>
>             </sequence>
>         </extension>
>     </complexContent>
> </complexType>
> <complexType name="ParentType">
>     <complexContent>
>         <extension base="x1:EmptyGrandParentType">
>             <sequence>
>                 <element name="parentId" type="xsd:string" minOccurs="1" 
> maxOccurs="1"/>
>             </sequence>
>         </extension>
>     </complexContent>
> </complexType>
> <complexType name="EmptyGrandParentType"/>{code}
>  
> This schema structure appears valid (please correct me if this is wrong) and 
> has been in use with Metro for some time, so I think this just needs a small 
> fix.  There is a proposed patch+test PR available - it simply adds multilevel 
> traversal to the original work supporting xsd:extension elements in CXF-2193.
> Please let me know if I can clarify or add any other info.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to