Hi
On 17/04/14 16:38, Graham Leggett wrote:
Hi all,
When I run wadl2java on the following fragment of wadl, I get the API interface
defined below:
<response status="200">
<representation mediaType="application/json" element="user:users"/>
<representation mediaType="application/xml" element="user:users"/>
<param name="ETag" style="header" type="xsd:string">
<doc>The SHA1 hash of the sum of DN and modifiedTimestamp of the
matching users.</doc>
</param>
<param name="Cache-Control" style="header" type="xsd:string">
<doc>The Cache-Control header as specified through configuration in
context.xml.</doc>
</param>
<param name="Vary" style="header" type="xsd:string">
<doc>MUST have the value "Authorization", as we vary on the
Authorization header.</doc>
</param>
<doc>Return list of users. Must have admin role to receive the
response.
Note: no users = empty list with status:200</doc>
</response>
@GET
@Produces({"application/json", "application/xml" })
Users getUsers(@QueryParam("page") Long page, @QueryParam("pageSize") Long pageSize,
@QueryParam("sort") String sort, @QueryParam("fl") String fl,
@HeaderParam("If-None-Match") String If_None_Match,
@HeaderParam("Authorization") String Authorization);
The problem with the interface that is being produced above is that we return a
JAXB Users object, with no mechanism to return any of the ETag, Cache-Control
or Vary headers as required by the wadl.
How would I fix this?
Assuming I haven't made a mistake somewhere, ideally the method response should be
Response<Users> getUsers(…), but I am assuming this isn't possible in JAXRS (is
this correct?). Alternatively, if the response calls for headers being returned, the
generated interface should return a Response getUsers() instead of Users getUsers(),
which allows the implementation to return the data defined by the wadl.
Would it be possible to confirm?
It is not possible to return Response<User>.
If you only had
<representation mediaType="application/xml"/>
then you'd get Response, but I agree having a schema element reference
may be useful for the 3rd party consumers of WADL.
We will need to introduce an option to return Response even if a link to
the generated class like Users is available
Cheers, Sergey
Regards,
Graham
--