Frédéric Mondy created CXF-6275:
-----------------------------------

             Summary: wadl2java repeating="true" not taken into account in 
param inside representation request
                 Key: CXF-6275
                 URL: https://issues.apache.org/jira/browse/CXF-6275
             Project: CXF
          Issue Type: Bug
          Components: JAX-RS
    Affects Versions: 2.7.15, 3.0.4
         Environment: windows 8.1, maven 3.2.2, java 1.6
            Reporter: Frédéric Mondy


Hi,

I need to generate JAX-RS interfaces from a WADL file.
I'm using your wadl2java plugin and I'm facing an issue with the following case:

...
<resource path="/{auditNumber}">
        <param name="auditNumber" style="template" type="xsd:long" 
required="true" repeating="false" />
        ...
        <resource path="/persons-in-charge">
                <method id="getAuditPersonInCharge" name="GET">
                        <response>
                                <representation mediaType="application/json">
                                        <param type="pic:PersonInChargeType" 
required="false" repeating="true" />
                                </representation>
                        </response>
                </method>
                <method id="setAuditPersonInCharge" name="PUT">
                        <request>                                               
                
                                <representation mediaType="application/json">
                                        <param name="personsInCharge" 
type="pic:PersonInChargeType" required="false" repeating="true" />
                                </representation>
                        </request>
                </method>                                       
        </resource>
        ...
</resource>
...

The "GET" method is well defined and return a List<PersonInChargeType>.
But the "PUT" method is defined with a single PersonInChargeType instead of a 
List<PersonInChargeType> which was expected using the attribute repeating="true"

    @GET
    @Produces("application/json")
    @Path("/audits/v0/{auditNumber}/persons-in-charge")
    List<PersonInChargeType> getAuditPersonInCharge(@PathParam("auditNumber") 
long auditNumber);

    @PUT
    @Consumes("application/json")
    @Path("/audits/v0/{auditNumber}/persons-in-charge")
    void setAuditPersonInCharge(@PathParam("auditNumber") long auditNumber, 
PersonInChargeType personsInCharge);

After having read the W3C WADL description and tried some tricks to have my 
expected definition of the method, 
I took a look in the source code of ../wadlto/jaxrs/SourceGenerator.java 
(2.7.15, line 1077-1078)
    elementParamType = getPrimitiveType(param, info, imports);
    elementParamName = param.getAttribute("name");

As there is nothing about the "repeating" attribute, I just insert the 
following line between these lines: 
        elementParamType = addListIfRepeating(elementParamType, 
isRepeatingParam(param), imports);

and with this line, the "PUT" method is well defined:

    @PUT
    @Consumes("application/json")
    @Path("/audits/v0/{auditNumber}/persons-in-charge")
    void setAuditPersonInCharge(@PathParam("auditNumber") long auditNumber, 
List<PersonInChargeType> personsInCharge);

If you agree on the issue, is it possible to have a quick fix release?

Thank you in advance

Frédéric Mondy



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to