users@jersey.java.net

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

From: Gary Moore <gary.moore_at_gmail.com>
Date: Tue, 24 May 2011 11:31:15 -0400

Also, type erasure doesn't occur with arrays, so you can cast to an
array before you serialize back over the wire.

Gary

On Tue, May 24, 2011 at 8:25 AM, Martin Matula <martin.matula_at_oracle.com> wrote:
> 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.
>>>
>>
>



-- 
Gary Moore
http://www.gmoore.net