James Poje created CXF-8025:
-------------------------------
Summary: 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
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.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)