Saturday, 13 May 2017

Atom Documents

rfc4287 specifies two kinds of documents.
         a. Atom Feed Documents
         b. Atom Entry Documents
        
Atom Feed Documents
An Atom feed documents is a representation of atom feed. It specifies the Meta data about the feed and all the entries that this feed contains.

Example
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>tag:blogger.com,1999:blog-3062500619105519975</id>
  <updated>2016-12-16T10:30:12.494Z</updated>
  <title type="text">java tutorial : Blog to learn java programming</title>
  <subtitle type="text">Learners Blog</subtitle>
  <link href="https://self-learning-java-tutorial.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" title="" hreflang="" length="0"/>
  <link href="http://www.blogger.com/feeds/3062500619105519975/posts/default?alt=atom" rel="self" type="application/atom+xml" title="" hreflang="" length="0"/>
  <author>
    <name>hari krishna</name>
    <email>noreply@blogger.com</email>
    <uri></uri>
  </author>
  <entry>
    <id>tag:blogger.com,1999:blog-3062500619105519975.post-918659526208416960</id>
    <published>2016-12-16T10:30:12.518Z</published>
    <title type="text">SWT: Slider</title>
    <content type="html">Slider class is used to define Slider widget</content>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-3062500619105519975.post-8736482404064859734</id>
    <published>2016-12-16T10:30:12.519Z</published>
    <title type="text">C#: zeroMQ: Publish-subscribe model sockets</title>
    <content type="html">Socket class is used to define a socket</content>
  </entry>
</feed>

Notify above atom feed, it has meta data like title, id, last updated date etc., and has two entries associated with it.

Atom Entry Documents
Atom Entry Document represents exactly one Atom entry. Typicla atom entry contains id, published date, updated date, title and content.

Example
 <entry>
    <id>tag:blogger.com,1999:blog-3062500619105519975.post-918659526208416960</id>
    <published>2016-12-16T10:30:12.518Z</published>
    <title type="text">SWT: Slider</title>
    <content type="html">Slider class is used to define Slider widget</content>
  </entry>

Following Java application generates above atom document.


HelloWorld.java
import java.io.IOException;
import java.util.Date;

import org.apache.abdera.Abdera;
import org.apache.abdera.model.Content.Type;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Feed;
import org.apache.abdera.model.Text;
import org.apache.abdera.writer.Writer;

public class HelloWorld {

 private static void addMetaData(Feed feed) {
  feed.setId("tag:blogger.com,1999:blog-3062500619105519975");
  feed.setUpdated(new Date());
  feed.setTitle("java tutorial : Blog to learn java programming");
  feed.setSubtitle("Learners Blog");
 }

 private static void addLinksToFeed(Feed feed) {
  /* Adding Links */
  String rel = "http://schemas.google.com/g/2005#feed";
  String type = "application/atom+xml";
  String href = "https://self-learning-java-tutorial.blogspot.com/feeds/posts/default";
  String title = "";
  String hreflang = "";
  long length = 0;

  feed.addLink(href, rel, type, title, hreflang, length);

  rel = "self";
  type = "application/atom+xml";
  href = "http://www.blogger.com/feeds/3062500619105519975/posts/default?alt=atom";

  feed.addLink(href, rel, type, title, hreflang, length);
 }

 private static void addAuthorToFeed(Feed feed) {
  String name = "hari krishna";
  String email = "noreply@blogger.com";

  feed.addAuthor(name, email, "");
 }

 private static void addEntry(Feed feed) {

  Entry entry1 = feed.addEntry();
  entry1.setId("tag:blogger.com,1999:blog-3062500619105519975.post-918659526208416960");
  entry1.setPublished(new Date());
  entry1.setTitle("SWT: Slider", Text.Type.TEXT);
  entry1.setContent("Slider class is used to define Slider widget", Type.HTML);

  Entry entry2 = feed.addEntry();
  entry2.setId("tag:blogger.com,1999:blog-3062500619105519975.post-8736482404064859734");
  entry2.setPublished(new Date());
  entry2.setTitle("C#: zeroMQ: Publish-subscribe model sockets", Text.Type.TEXT);
  entry2.setContent("Socket class is used to define a socket", Type.HTML);

  feed.addEntry(entry1);
  feed.addEntry(entry2);
 }

 public static void main(String args[]) throws IOException {
  Abdera abdera = new Abdera();

  /* Create a new Feed instance. */
  Feed feed = abdera.newFeed();

  /* Populate feed */
  addMetaData(feed);
  addLinksToFeed(feed);
  addAuthorToFeed(feed);
  addEntry(feed);

  /* Print the feed to console */
  Writer writer = abdera.getWriterFactory().getWriter("prettyxml");
  feed.writeTo(writer, System.out);
 }
}




Previous                                                 Next                                                 Home

No comments:

Post a Comment