[ https://issues.apache.org/jira/browse/CXF-7547?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16241922#comment-16241922 ]
Sergey Beryozkin commented on CXF-7547: --------------------------------------- I have linked to a test file - and if you add another resource there with a different path but referring to the same method id then you'll get a compilation failure with your patch, or may be not the compilation failure but something like get1(), get2(). Copy this https://github.com/apache/cxf/blob/master/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImportResultType.xml, and update the result set with a new resource but a diff path and refer to the same method, may be change "addBook" to just "post" and see what happens > Problem to generate Java from WADL file when method id defined > --------------------------------------------------------------- > > Key: CXF-7547 > URL: https://issues.apache.org/jira/browse/CXF-7547 > Project: CXF > Issue Type: Bug > Components: JAX-RS > Affects Versions: 3.1.14, 3.2.1 > Environment: All Plataforms > Reporter: Evaristo Wychoski Benfatti > Priority: Minor > Labels: patch > > The following code base > {code:java} > @Path("/baz") > public class Baz { > @GET > @Path("/foo/{id}") > @Produces("text/plain") > public String get(@PathParam int id); > } > {code} > generates a similar wadl as follow as result of {{Java2Wadl}} process: > {code:xml} > <application xmlns="http://wadl.dev.java.net/2009/02" > xmlns:xs="http://www.w3.org/2001/XMLSchema"> > <resources base="/baz" id="Baz"> > <resource path="/foo/{id}" id="get"> > <param name="id" style="template" type="xs:int"/> > <method name="GET" id="get"> > <response> > <representation mediaType="text/plain"> > <param name="result" style="plain" type="xs:string"/> > </representation> > </response> > </method> > </resource> > </resources> > </application> > {code} > When we run after the {{Wadl2Java}} process against previous wadl as input, > the process takes to the following java definition class as output: > {code:java} > @Path("/baz") > public class Baz { > @GET > @Path("/foo/{id}") > @Produces("text/plain") > public String getId(@PathParam int id); > } > {code} > According to > {{tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java}} > a wadl method element generates the path as complement to the java method > name when it does not have an id atribute or when it is the even value of > name atribute. > When id is not defined this behavior is right, but when both of atributes are > defined in order to get the even class used to generate the wadl file as > result of {{Wadl2Java}} process this is not. > The solution to enable creating the even code is check if the id is present > or not at wadl file as follow: > {code:java} > // Line 796 instead of this > if (methodNameLowerCase.equals(genMethodName)) { > // this code > if (methodNameLowerCase.equals(genMethodName) && methodNameLowerCase > == id) { > {code} > The above code check if methodNameLowerCase is the even reference of id, only > in this case, the normal behavior is applied. -- This message was sent by Atlassian JIRA (v6.4.14#64029)