[ https://issues.apache.org/jira/browse/CXF-6071?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Keith Halligan updated CXF-6071: -------------------------------- Attachment: iacc_servants.wsdl Attaching wsdl that shows the issue with the "." in the generated impl class. > CXF's WSDL2Java tool can generate impl classes that jdk compiler will refuse > to compile > --------------------------------------------------------------------------------------- > > Key: CXF-6071 > URL: https://issues.apache.org/jira/browse/CXF-6071 > Project: CXF > Issue Type: Bug > Components: Tooling > Affects Versions: 3.0.1, 3.0.2 > Environment: All > Reporter: Keith Halligan > Fix For: 3.0.3 > > Attachments: iacc_servants.wsdl > > > When using Apache CXF 3.0.1 and above the following WSDL (attached) will > compile with the wsdl2java tool, however the code cannot be compiled as the > implementation class cannot be compiled with any JDK. > The issue is that the generated implementation class has a "." in the class > name. > eg: > D:\programming\artix\apache-cxf-3.0.1-bin\bin\test>dir /b > com\iona\schemas\idl\iacc_idl\*Impl.java > CORBAPortImpl.java > IACC.ServerCORBAPortImpl.java > Below is a patch that works around the issue, while still keeping the current > functionality in place, only switching back to the old functionality (changed > in: CXF-5456) when the port name contains non-valid characters as far as a > JVM compiler is concerned. > {noformat} > diff --git > a/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/ImplGenerator.java > > b/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/ImplGenerator.java > index 5fe090d..63dc84d 100644 > --- > a/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/ImplGenerator.java > +++ > b/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/ImplGenerator.java > @@ -21,6 +21,8 @@ package > org.apache.cxf.tools.wsdlto.frontend.jaxws.generators; > import java.util.HashMap; > import java.util.Map; > +import java.util.regex.Pattern; > +import java.util.regex.Matcher; > import javax.xml.namespace.QName; > @@ -126,12 +128,17 @@ public class ImplGenerator extends > AbstractJAXWSGenerator { > } > String name = nm.get(service + "/" + port); > if (name == null) { > - name = port + "Impl"; > + name = (isPortNameCompliant(port)) ? port : intf.getName() + > "Impl"; > name = mapClassName(intf.getPackageName(), name, penv); > nm.put(service + "/" + port, name); > } > return name; > } > + > + private boolean isPortNameCompliant(String port) { > + return Pattern.matches("[a-zA-Z]\\w*", port); > + } > + > private String mapClassName(String packageName, String name, ToolContext > context) { > ClassCollector collector = context.get(ClassCollector.class); > int count = 0; > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)