users@jersey.java.net

[Jersey] Re: Jersey can produce List<T> but cannot Response.ok(List<T>).build()?

From: Martin Matula <martin.matula_at_oracle.com>
Date: Tue, 24 May 2011 14:25:46 +0200

On 24.5.2011 12:07, Pavel Bucek wrote:
> Hello,
>
> this should work:
>
> return Response.ok(
> new GenericEntity<List<Stock>>(Lists.newArrayList(stock)){}
> ).build();

You need to use the "workaround" above due to the type erasure
(http://download.oracle.com/javase/tutorial/java/generics/erasure.html)
- otherwise Jersey is not able to see the type parameter during the runtime.
Martin
>
>
> Regards,
> Pavel
>
> On 5/21/11 1:59 PM, amsellem.yves wrote:
>> Jersey can produce:
>>
>> @Path("/stock")
>> public class StockResource {
>> @GET
>> @Produces(MediaType.APPLICATION_JSON)
>> public List<Stock> get() {
>> Stock stock = new Stock();
>> stock.setQuantity(3);
>> return Lists.newArrayList(stock);
>> }
>> }
>> But cannot do the same with:
>>
>> @Path("/stock")
>> public class StockResource {
>> @GET
>> @Produces(MediaType.APPLICATION_JSON)
>> public Response get() {
>> Stock stock = new Stock();
>> stock.setQuantity(3);
>> return Response.ok(Lists.newArrayList(stock)).build();
>> }
>> }
>> Giving the error: A message body writer for Java class
>> java.util.ArrayList,
>> and Java type class java.util.ArrayList, and MIME media type
>> application/json was not found
>>
>> This prevent the use of HTTP status code and headers.
>>
>> --
>> View this message in context:
>> http://jersey.576304.n2.nabble.com/Jersey-can-produce-List-T-but-cannot-Response-ok-List-T-build-tp6389283p6389283.html
>> Sent from the Jersey mailing list archive at Nabble.com.
>>
>