You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Frédéric Mondy (JIRA)" <ji...@apache.org> on 2015/03/05 12:09:38 UTC
[jira] [Created] (CXF-6275) wadl2java repeating="true" not taken
into account in param inside representation request
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)