Jersey 1.6 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.
my solution for methods that use AsyncResponse
For some reason the GenericType fix wasn't working from me. However, since type erasure is done for Collections but not for Arrays, this worked.
It is possible to embed a
List<T>
in a Response the following way:The client have to use the following lines to get the
List<T>
: