Ръчно сериализиране на Jersey Response

Имам ресурс:

@Path("/")
public class Resource {

   @GET
   public Response getResponse() {
       //..
       final GenericEntity<List<BusinessObject>> entity = new GenericEntity<List<BusinessObject>>(businessobjects) { };
       return Response.status(httpResultCode).entity(entity).build();
   }

}

Искам да тествам единично този метод, без да използвам клиент на Jersey, но не знам как да получа тялото на обекта Response. Не виждам метод, който да работи. Ето метода на теста:

@Test
public void testMethod() {
    Resource resourceUnderTest = new Resource();
    Response response = resourceUnderTest.getResponse();
    List<BusinessObject> result = ???;
}

Мога да получа резултата, който искам, ако премина през клиент от Джърси, но бих предпочел просто да извикам метода директно, без да правя никакви HTTP заявки.


person Oleksi    schedule 01.06.2012    source източник


Отговори (1)


List<BusinessObject> result = (List<BusinessObject>)response.getEntity();

Това ще върне обекта, който предавате в метода на обекта на създателя на отговор. Обектът Response не сериализира резултата. Разглеждайки предишния метод, getEntity вероятно ще върне GenericEntity>, така че бихте искали код като този.

GenericEntity<List<BusinessObject>> result = (GenericEntity<List<BusinessObject>>)response.getEntity();
person Michael Krussel    schedule 01.06.2012
comment
Страхотен! Това работи добре. :) Съжалявам за забавянето, не можах да го пробвам до днес. - person Oleksi; 04.06.2012