Evaristo Wychoski Benfatti created CXF-7547:
-----------------------------------------------

             Summary: 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


The following code base

{code:java}
@Path("/baz")
public class Baz {

        @Path("/foo/{id}")
        @Produces("text/plain")
        public String get(@PathParam int id);

}
{code}

generates a wadl similar 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 {

        @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 this is not in order to get the even class used to generate the wadl 
file as result of {{Wadl2Java}} process.

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)

Reply via email to