Migration from Apache Abdera to Apache Wink
TBD
1) Consuming Atom Documents:
Apache Abdera |
Apache Wink |
---|---|
Abdera abdera = new Abdera(); Parser parser = abdera.getParser(); URL url = new URL("http://alexharden.org/blog/atom.xml"); Document<Feed> doc = parser.parse(url.openStream()); Feed feed = doc.getRoot(); System.out.println(feed.getTitle()); for (Entry entry : feed.getEntries()) { System.out.println("\t" + entry.getTitle()); } |
RestClient client = new RestClient(); Resource resource = client.resource("http://alexharden.org/blog/atom.xml"); AtomFeed feed = resource.accept(MediaType.APPLICATION_ATOM_XML).get(AtomFeed.class); System.out.println(feed.getTitle().getValue()); for (AtomEntry entry : feed.getEntries()) { System.out.println("\t" + entry.getTitle().getValue()); } |
2) a) Producing Atom Documents:
Apache Abdera |
Apache Wink |
---|---|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Abdera abdera = new Abdera(); Feed feed = abdera.newFeed(); feed.setId("tag:example.org,2007:/foo"); feed.setTitle("Test Feed"); feed.setSubtitle("Feed subtitle"); feed.setUpdated(new Date()); feed.addAuthor("Shiva HR"); feed.addLink("http://example.com"); feed.addLink("http://example.com/foo", "self"); Entry entry = feed.addEntry(); entry.setId("tag:example.org,2007:/foo/entries/1"); entry.setTitle("Entry title"); entry.setSummaryAsHtml("<p>This is the entry title</p>"); entry.setUpdated(new Date()); entry.setPublished(new Date()); entry.addLink("http://example.com/foo/entries/1"); feed.getDocument().writeTo(response.getWriter()); } |
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { AtomFeed feed = new AtomFeed(); feed.setId("tag:example.org,2007:/foo"); feed.setTitle(new AtomText("Test Feed")); feed.setSubtitle(new AtomText("Feed subtitle")); feed.setUpdated(new Date()); AtomPerson person = new AtomPerson(); person.setName("Shiva HR"); feed.getAuthors().add(person); AtomLink link1 = new AtomLink(); link1.setHref("http://example.com"); feed.getLinks().add(link1); AtomLink link2 = new AtomLink(); link2.setHref("http://example.com/foo"); link2.setRel("self"); feed.getLinks().add(link2); AtomEntry entry = new AtomEntry(); entry.setId("tag:example.org,2007:/foo/entries/1"); entry.setTitle(new AtomText("Entry title")); AtomText summary = new AtomText(); summary.setType(AtomTextType.html); summary.setValue("<p>This is the entry title</p>"); entry.setSummary(summary); entry.setUpdated(new Date()); entry.setPublished(new Date()); AtomLink link3 = new AtomLink(); link3.setHref("http://example.com/foo/entries/1"); entry.getLinks().add(link3); feed.getEntries().add(entry); AtomFeed.marshal(feed, response.getOutputStream()); } |
2) b) A more elegant way of producing Atom documents using Apache Wink (the JAX-RS way):
- Inside Eclipse: Create a Dynamic Web Project.
- Add Wink & its dependent JARs into Java Build Path and Java EE Module Dependencies.
- Create a POJO class and a method that creates Atom feed document. Annotate the class & its methods with required JAX-RS annotations as below:
ProduceAtom.java - Add org.apache.wink.server.internal.servlet.RestServlet into web.xml and specify the path of above Resource class in it's init-param.
See ProduceAtomWinkElegant_web.xml and application - Deploy the web-application and access it using the url http://localhost:8080/ProduceAtom_Wink_Elegant/rest/getAtom
Final WAR -> ProduceAtom_Wink_Elegant.zip (add Wink & its dependent JARs under ProduceAtom_Wink_Elegant\WEB-INF\lib and re-zip it as WAR).
3) Consuming RSS documents:
Apache Abdera |
Apache Wink |
---|---|
public static void main(String[] args) throws ParseException, IOException { System.out.println("Consuming RSS Documents using Abdera...\n"); Abdera abdera = new Abdera(); Parser parser = abdera.getParser(); URL url = new URL("http://www.rssboard.org/files/sample-rss-2.xml"); Document<RssFeed> doc = parser.parse(url.openStream()); RssFeed rssFeed = doc.getRoot(); System.out.println("Title: " + rssFeed.getTitle()); System.out.println("Description: " + rssFeed.getSubtitle() + "\n"); int itemCount = 0; for (Entry entry : rssFeed.getEntries()) { System.out.println("Item " + ++itemCount + ":"); System.out.println("\tTitle: " + entry.getTitle()); System.out.println("\tPublish Date: " + entry.getPublished()); System.out.println("\tDescription: " + entry.getContent()); } } |
public static void main(String[] args) { System.out.println("Consuming RSS Documents using Apache Wink...\n"); RestClient client = new RestClient(); String url = "http://www.rssboard.org/files/sample-rss-2.xml"; Resource resource = client.resource(url); RssFeed rss = resource.accept(MediaType.APPLICATION_XML).get(RssFeed.class); RssChannel channel = rss.getChannel(); System.out.println("Title: " + channel.getTitle()); System.out.println("Description: " + channel.getDescription() + "\n"); int itemCount = 0; for (RssItem item : channel.getItems()) { System.out.println("Item " + ++itemCount + ":"); System.out.println("\tTitle: " + item.getTitle()); System.out.println("\tPublish Date: " + item.getPubDate()); System.out.println("\tDescription: " + item.getDescription()); } } |
4) Creating RSS documents:
Apache Abdera |
Apache Wink |
---|---|
As of v0.4 Abdera has no support for RSS write. |
Same as in 2)a) or 2)b). The resource method now returns an RssFeed object instead of AtomFeed object. @Path("/getRss") public class ProduceRss { @GET @Produces(MediaType.APPLICATION_XML) public Rss getRss() { RssFeed rss = new RssFeed(); RssChannel channel = new RssChannel(); channel.setTitle("Liftoff News"); channel.setLink("http://liftoff.msfc.nasa.gov"); channel.setDescription("Liftoff to Space Exploration."); channel.setPubDate(new Date().toString()); RssItem item = new RssItem(); item.setTitle("Star City"); item.setLink("http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp"); item.setDescription("How do Americans get ready to work with Russians aboard the International Space Station?"); channel.getItem().add(item); rss.setChannel(channel); return rss; } } |
|