[ https://issues.apache.org/jira/browse/CXF-7547?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16243290#comment-16243290 ]
Evaristo Wychoski Benfatti commented on CXF-7547: ------------------------------------------------- I made the tests that you mentioned, it is possible to see the incident that I mentioned before. The code treats when id is equals 'post', 'get', or any other http method that is also name attribute of method tag putting the url as part of java method name, and when it is not equals, this behavior does not happen, no url is put on java method name. I believe that the same behavior to the both is intended, the patch does this, the same behavior is realized to the both of cases. However, yes it may affect others, if someone use this "feature" that treats differently the id depending on its content as you said. I made a test also to check if the patch takes to the problem related with href to more than one method, the patch doesn't affect the generation. As soon I push the test I will post here to you check it. > 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)