É possível representar os documentos Atom usando objetos anotados JAXB porque o
formato Atom baseia-se em XML. Portanto, uma maneira de implementar um método de
recurso que consuma e produza os feeds Atom e entradas Atom é retornar
um objeto anotado JAXB que usa o modelo Atom. A biblioteca
JAX-RS fornece um modelo Atom baseado no JAXB.
Sobre Esta Tarefa
Um modelo Atom JAXB é incluído em um arquivo JAR da biblioteca IBM® JAX-RS baseado no Winki Apache. Como o modelo baseia-se no JAXB, os objetos automaticamente usam os provedores de
entidade JAXB integrados para ler e gravar feeds Atom e entradas Atom. Consulte as informações de API para obter detalhes dos métodos no modelo
Atom.
É possível usar as seguintes classes para representar as entidades de
pedido ou as entidades de resposta:
- org.apache.wink.common.model.atom.AtomEntry
- org.apache.wink.common.model.atom.AtomFeed
- org.apache.wink.common.model.synd.SyndEntry
- org.apache.wink.common.model.synd.SyndFeed
Também é possível usar as classes como um parâmetro de método de
recurso para representar um pedido Atom recebido. Da mesma forma, é possível retornar qualquer uma dessas
classes como uma resposta de recurso.
Configurações suportadas: Há algumas bibliotecas
de terceiro que suportam a funcionalidade JAXB para JSON.
Um modelo Atom JAXB usa os recursos do JAXB que podem não ser suportados pelas bibliotecas
JAXB para JSON de terceiro.
sptcfg
Procedimento
- Crie um novo objeto AtomFeed que retorne um feed Atom como o corpo da
mensagem de resposta no seu método de recurso.
@javax.ws.rs.GET
public org.apache.wink.common.model.atom.AtomFeed getFeed() {
org.apache.wink.common.model.atom.AtomFeed feed = new org.apache.wink.common.model.atom.AtomFeed();
}
- Para incluir informação no feed, chame métodos no objeto AtomFeed Java™ e inclua os objetos AtomEntry na lista
de feeds.
@javax.ws.rs.GET
public org.apache.wink.common.model.atom.AtomFeed getFeed() {
org.apache.wink.common.model.atom.AtomFeed feed = new org.apache.wink.common.model.atom.AtomFeed();
feed.setTitle(new org.apache.wink.common.model.atom.AtomText("Feed Title"));
org.apache.wink.common.model.atom.AtomEntry entry = new org.apache.wink.common.model.atom.AtomEntry();
entry.setTitle(new org.apache.wink.common.model.atom.AtomText("Entry Title"));
entry.setId("1");
org.apache.wink.common.model.atom.AtomLink link = new org.apache.wink.common.model.atom.AtomLink();
link.setHref("http://www.example.com/");
List< org.apache.wink.common.model.atom.AtomLink> entryLinks = entry.getLinks();
entryLinks.add(link);
List< org.apache.wink.common.model.atom.AtomEntry> entries = af.getEntries();
entries.add(entry);
}
- Retorne o feed no método Java.
@javax.ws.rs.GET
public org.apache.wink.common.model.atom.AtomFeed getFeed() {
org.apache.wink.common.model.atom.AtomFeed feed = new org.apache.wink.common.model.atom.AtomFeed();
feed.setTitle(new org.apache.wink.common.model.atom.AtomText("Feed Title"));
org.apache.wink.common.model.atom.AtomEntry entry = new org.apache.wink.common.model.atom.AtomEntry();
entry.setTitle(new org.apache.wink.common.model.atom.AtomText("Entry Title"));
entry.setId("1");
org.apache.wink.common.model.atom.AtomLink link = new org.apache.wink.common.model.atom.AtomLink();
link.setHref("http://www.example.com/");
List< org.apache.wink.common.model.atom.AtomLink> entryLinks = entry.getLinks();
entryLinks.add(link);
List<org.apache.wink.common.model.atom.AtomEntry> entries = af.getEntries();
entries.add(entry);
return entries;
}
- (opcional) Se um feed ou entrada Atom for enviado em um pedido, poderá incluir um dos
tipos de Atom como um parâmetro no método de recurso. Ao incluir um dos tipos Atom como um parâmetro no método de recurso,
quaisquer dados de feed Atom recebidos serão transmitidos como o parâmetro.
@javax.ws.rs.POST
public void postFeed(org.apache.wink.common.model.atom.AtomFeed incomingFeed) {
// use the incomingFeed object
}
Resultados
Você usou o modelo Atom JAXB para representar as entidades de
pedido e de resposta.