Как поймать хэш-карту в POST дескриптора REST, используя Apache Jersey - PullRequest
0 голосов
/ 06 ноября 2011

Я хочу поймать XML (HashMap) этого формата в моем обработчике POST

<entries>
  <entry>
    <id>1</id>
    <labels>
      <label>label1</label>
      <label>label2</label>
      ...
    </labels>
  <entry>
  ...
<entries>

Я хочу, чтобы мой обработчик POST, использующий Apache Jersey, выглядел следующим образом

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void createEntries(@MagicAnnotation HashMap<id, List<label>> entryMap){
    }

Что мне ближе всего к этому?

Я открыт для лучшего представления HashMap в XML. Я просто не хочу анализировать xml вручную и также хочу поймать эквивалентный JSON. Я не уверен, можно ли использовать какой-нибудь JAXBElement вместо аннотации на джерси.

1 Ответ

0 голосов
/ 18 ноября 2011

Вы не должны получать доступ к телу POST таким образом. Вы должны определить несколько классов, чтобы позволить Джерси анализировать XML-ответ.

Ваш код будет выглядеть так:

@POST
public Response post(Entries entries) {
  Storage.put(entries);
  return Response.ok().build();
}

Для этой работы записи должны быть совместимы с JAXB:

@XmlRootElement
public class Entries {
  @XmlElement List<Entry> entries;
}

@XmlType
public class Entry {
  @XmlAttribute String id;
  @XmlElement Labels labels;
}

@XmlType
public class Labels {
  @XmlElement List<String> label;
}

Ах, а Джерси не от Apache, а от Sun.

...