Ручная сериализация ответа Джерси

У меня есть ресурс:

@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();
   }

}

Я хочу протестировать этот метод без использования клиента Джерси, но я не знаю, как получить тело объекта 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