[ https://issues.apache.org/jira/browse/CXF-9102?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dmytro Sylaiev updated CXF-9102: -------------------------------- Description: 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. was: 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. > 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)