Puede representar documentos Atom utilizando objetos anotados JAXB porque el formato Atom se basa en XML. En consecuencia, una forma de implementar un método de recurso que consume y produce canales de información Atom y entradas Atom es devolver un objeto anotado JAXB que utiliza el modelo Atom. La biblioteca JAX-RS proporciona un modelo Atom basado en JAXB.
Acerca de esta tarea
Un modelo Atom JAXB se incluye en el archivo JAR de la biblioteca JAX-RS de IBM® basada en Wink de Apache. Dado que el modelo está basado en JAXB, los objetos utilizan automáticamente los proveedores de entidades JAXB incorporados para leer y escribir canales de información Atom y entradas Atom. Consulte la información de la API para obtener más detalles sobre los métodos del modelo Atom.
Puede utilizar las siguientes clases para representar entidades de solicitud o entidades de respuesta:
- 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
También puede utilizar estas clases como un parámetro de método de recurso para representar una solicitud de entrada Atom. Del mismo modo, puede devolver cualquiera de estas clases como recurso de respuesta.
Supported configurations: Existen algunas bibliotecas de terceros que dan soporte a la funcionalidad JAXB para JSON.
El modelo Atom JAXB utiliza características de JAXB que tal vez no estén soportadas por las bibliotecas de terceros JAXB para JSON.
sptcfg
Procedimiento
- Cree un nuevo objeto AtomFeed que devuelva un canal de información Atom como cuerpo del mensaje de respuesta en el método de recursos.
@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 añadir información al canal de información, invoque métodos del objeto Java™ AtomFeed y agregue objetos AtomEntry a la lista de canales de información.
@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);
}
- Devuelva el canal de información en el 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) Si un canal de información o entrada Atom se envía en una solicitud, puede añadir uno de los tipos Atom como parámetro en el método de recursos. Mediante la adición de uno de los tipos Atom como parámetro para el método de recursos, cualquier dato de canal de información de entrada Atom se pasará como parámetro.
@javax.ws.rs.POST
public void postFeed(org.apache.wink.common.model.atom.AtomFeed incomingFeed) {
// use the incomingFeed object
}
Resultados
Ha utilizado el modelo JAXB de Atom para representar entidades de solicitud y respuesta.