[
https://issues.apache.org/jira/browse/CXF-6071?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14188560#comment-14188560
]
Daniel Kulp commented on CXF-6071:
----------------------------------
Can you try running the wsimport -keep on the wsdl using Java7 or newer and see
what it generates? There are certain cases that, per JAX-WS spec, we HAVE to
generate uncompilable/invalid code unless the user specifies a customization
file that would remap the names. It's strange, but the spec and TCK actually
requires that.
> 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
>
>
> 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)