Джерси / JAXB: немаршалинг пустого json выстраивает результаты в списке с одним объектом, где все поля устанавливаются в NULL

У меня есть действительно простой веб-сервис отдыха, возвращая список вопросов. Этот код работает как ожидалось, когда количество возвращенных вопросов больше, чем нуль. Но если сервер возвращает пустой массив json как [], JAXB создает список с одним экземпляром вопроса, где все поля устанавливаются в NULL!

Я плохо знаком с Джерси и для JAXB, таким образом, я не знаю, не настроил ли я его правильно или является ли это известной проблемой. Какие-либо подсказки?

Клиентская конфигурация:

 DefaultApacheHttpClientConfig config = new DefaultApacheHttpClientConfig();
 config.getProperties().put(DefaultApacheHttpClientConfig.PROPERTY_HANDLE_COOKIES, true);
 config.getClasses().add(JAXBContextResolver.class);
 //config.getClasses().add(JacksonJsonProvider.class); // <- Jackson causes other problems

 client = ApacheHttpClient.create(config);

JAXBContextResolver:

@Provider
 public final class JAXBContextResolver implements ContextResolver<JAXBContext> {

  private final JAXBContext context;
  private final Set<Class> types;
  private final Class[] cTypes = { Question.class };

  public JAXBContextResolver() throws Exception {
   this.types = new HashSet(Arrays.asList(cTypes));
   this.context = new JSONJAXBContext(JSONConfiguration.natural().build(), cTypes);
  }

  @Override
  public JAXBContext getContext(Class<?> objectType) {
   return (types.contains(objectType)) ? context : null;
  }

 }

Клиентский код:

public List<Question> getQuestionsByGroupId(int id) {
    return digiRest.path("/questions/byGroupId/" + id).get(new GenericType<List<Question>>() {});
}

Класс Вопроса является просто простым pojo.

6
задан Kimble 17 June 2010 в 09:43
поделиться