[ 
https://issues.apache.org/jira/browse/CXF-9102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17921204#comment-17921204
 ] 

Andriy Redko commented on CXF-9102:
-----------------------------------

[~dsylaiev] your binding files does not seem right, your are generating JAX-WS 
services, not JAXB classes:
{noformat}
<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings
        xmlns:jaxws="https://jakarta.ee/xml/ns/jaxws"; 
        wsdlLocation="HelloWorld.wsdl"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
    <jaxws:bindings node="wsdl:definitions/wsdl:portType[@name='HelloWorld']">
        <jaxws:class name="CustomHelloWorld"/>
    </jaxws:bindings>
</jaxws:bindings>
{noformat}

> cxf-codegen-plugin fails to generate code from wsdl and binding file after 
> update to 4.x: XPath evaluation results in empty target node
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-9102
>                 URL: https://issues.apache.org/jira/browse/CXF-9102
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 4.1.0, 4.0.6
>            Reporter: Dmytro Sylaiev
>            Priority: Major
>
> I have created a small sample project with pom.xml including 
> cxf-codegen-plugin in it, bindings.xml file, and HelloWorld.wsdl
>  
> pom.xml:
>  
> {code:java}
> ...
> <build>
>     <plugins>
>         <plugin>
>             <groupId>org.apache.cxf</groupId>
>             <artifactId>cxf-codegen-plugin</artifactId>
>             <version>${cxf.version}</version>
>             <executions>
>                 <execution>
>                     <id>generate-sources</id>
>                     <phase>generate-sources</phase>
>                     <goals>
>                         <goal>wsdl2java</goal>
>                     </goals>
>                     <configuration>
>                         
> <sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
>                         <wsdlOptions>
>                             <wsdlOption>                               
> <bindingFiles>
>     <bindingFile>${basedir}/src/main/resources/bindings.xml</bindingFile>
> </bindingFiles>
> <wsdl>${basedir}/src/main/resources/HelloWorld.wsdl</wsdl>
>                             </wsdlOption>
>                         </wsdlOptions>
>                     </configuration>
>                 </execution>
>             </executions>
>         </plugin>
>     </plugins>
> </build>
> ...{code}
> HelloWorld.wsdl:
>  
> {noformat}
> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/";
>              xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
>              xmlns:tns="http://example.org/helloworld";
>              xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>              targetNamespace="http://example.org/helloworld";
>              name="HelloWorldService">
>     <types>
>         <xsd:schema targetNamespace="http://example.org/helloworld";>
>             <xsd:element name="sayHello">
>                 <xsd:complexType>
>                     <xsd:sequence>
>                         <xsd:element name="name" type="xsd:string"/>
>                     </xsd:sequence>
>                 </xsd:complexType>
>             </xsd:element>
>             <xsd:element name="sayHelloResponse">
>                 <xsd:complexType>
>                     <xsd:sequence>
>                         <xsd:element name="greeting" type="xsd:string"/>
>                     </xsd:sequence>
>                 </xsd:complexType>
>             </xsd:element>
>         </xsd:schema>
>     </types>
>     <message name="sayHelloRequest">
>         <part name="parameters" element="tns:sayHello"/>
>     </message>
>     <message name="sayHelloResponse">
>         <part name="parameters" element="tns:sayHelloResponse"/>
>     </message>
>     <portType name="HelloWorld">
>         <operation name="sayHello">
>             <input message="tns:sayHelloRequest"/>
>             <output message="tns:sayHelloResponse"/>
>         </operation>
>     </portType>
>     <binding name="HelloWorldSOAPBinding" type="tns:HelloWorld">
>         <soap:binding style="document" 
> transport="http://schemas.xmlsoap.org/soap/http"/>
>         <operation name="sayHello">
>             <soap:operation soapAction="sayHello"/>
>             <input>
>                 <soap:body use="literal"/>
>             </input>
>             <output>
>                 <soap:body use="literal"/>
>             </output>
>         </operation>
>     </binding>
>     <service name="HelloWorldService">
>         <port name="HelloWorldPort" binding="tns:HelloWorldSOAPBinding">
>             <soap:address location="http://localhost:8080/helloWorld"/>
>         </port>
>     </service>
> </definitions>
> {noformat}
> bindings.xml:
>  
> {noformat}
> <?xml version="1.0" encoding="UTF-8"?>
> <jaxb:bindings
>         xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb";
>         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
>         jaxb:version="3.0">
>     <jaxb:bindings node="wsdl:definitions/wsdl:portType[@name='HelloWorld']">
>         <jaxb:class name="CustomHelloWorld"/>
>     </jaxb:bindings>
> </jaxb:bindings>{noformat}
>  
> {{The execute mvn clean generate-code build succeeded when cxf.version is 
> 3.6.5 but when update to 4.x it fails with}}
>  
>  
> {noformat}
> [WARNING] Exception in thread "main" 
> org.apache.cxf.tools.common.ToolException: 
> file:/C:/projects/testProject/cxfGenTest/src/main/resources/bindings.xml 
> [6,78]: XPath evaluation of 
> "wsdl:definitions/wsdl:portType[@name='HelloWorld']" results in empty target 
> node
> [WARNING]
> [WARNING]       at 
> org.apache.cxf.tools.common.ToolErrorListener.throwToolException(ToolErrorListener.java:87)
> [WARNING]       at 
> org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:158)
> [WARNING]       at 
> org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:402)
> [WARNING]       at 
> org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:105)
> [WARNING]       at 
> org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
> [WARNING]       at 
> org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
> [WARNING]       at 
> org.apache.cxf.maven_plugin.wsdl2java.ForkOnceWSDL2Java.main(ForkOnceWSDL2Java.java:51)
> [WARNING] Caused by: com.sun.istack.SAXParseException2; systemId: 
> file:/C:/projects/testProject/cxfGenTest/src/main/resources/bindings.xml; 
> lineNumber: 6; columnNumber: 78; XPath evaluation of 
> "wsdl:definitions/wsdl:portType[@name='HelloWorld']" results in empty target 
> node
> [WARNING]       at 
> com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Internalizer.java:564)
> [WARNING]       at 
> com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Internalizer.java:557)
> [WARNING]       at 
> com.sun.tools.xjc.reader.internalizer.Internalizer.buildTargetNodeMap(Internalizer.java:235)
> [WARNING]       at 
> com.sun.tools.xjc.reader.internalizer.Internalizer.buildTargetNodeMap(Internalizer.java:329)
> [WARNING]       at 
> com.sun.tools.xjc.reader.internalizer.Internalizer.transform(Internalizer.java:115)
> [WARNING]       at 
> com.sun.tools.xjc.reader.internalizer.Internalizer.transform(Internalizer.java:76)
> [WARNING]       at 
> com.sun.tools.xjc.reader.internalizer.DOMForest.transform(DOMForest.java:414)
> [WARNING]       at 
> com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:214)
> [WARNING]       at 
> com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:65)
> [WARNING]       at 
> org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:445)
> [WARNING]       at 
> org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:711)
> [WARNING]       at 
> org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:259)
> [WARNING]       at 
> org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:156)
> [WARNING]       ... 5 more
> {noformat}
>  
>  
>  
> despite all configuration remains the same and corresponds the examples in 
> the docs: 
> [https://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html] 
> It also works with cxf 4.x when I comment the 
> {noformat}
> <bindingFiles>
>     <bindingFile>${basedir}/src/main/resources/bindings.xml</bindingFile>
> </bindingFiles>{noformat}
>  part in the plugin configuration.
>  
>  
> I've debugged a bit and it seems that the XPath lookup for node 
> `wsdl:definitions/wsdl:portType[@name='HelloWorld']` is evaluated not through 
> HelloWorld.wsdl file, but through the bindings.xml itself. 
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to