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)