The Juneau ATOM feed DTOs are simply beans with fluent-style setters.
The following code shows a feed being created programmatically using the
{@link oaj.dto.atom.AtomBuilder} class.
| import static org.apache.juneau.dto.atom.AtomBuilder.*;
|
| Feed feed =
| feed("tag:juneau.apache.org", "Juneau ATOM specification", "2016-01-02T03:04:05Z")
| .subtitle(text("html").text("Describes <em>stuff</em> about Juneau"))
| .links(
| link("alternate", "text/html", "http://juneau.apache.org").hreflang("en"),
| link("self", "application/atom+xml", "http://juneau.apache.org/feed.atom")
| )
| .rights("Copyright (c) ...")
| .generator(
| generator("Juneau").uri("http://juneau.apache.org/").version("1.0")
| )
| .entries(
| entry("tag:juneau.sample.com,2013:1.2345", "Juneau ATOM specification snapshot", "2016-01-02T03:04:05Z")
| .links(
| link"alternate", "text/html", "http://juneau.apache.org/juneau.atom"),
| link("enclosure", "audio/mpeg", "http://juneau.apache.org/audio/juneau_podcast.mp3").length(1337)
| )
| .published("2016-01-02T03:04:05Z")
| .authors(
| person("Jane Smith").uri("http://juneau.apache.org/").email("janesmith@apache.org")
| )
| .contributors(
| person("John Smith")
| )
| .content(
| content("xhtml")
| .lang("en")
| .base("http://www.apache.org/")
| .text("<div><p><i>[Update: Juneau supports ATOM.]</i></p></div>")
| )
| );
To serialize this to ATOM, use the {@link oaj.xml.XmlSerializer} class:
| // Create a serializer with readable output, no namespaces yet.
| XmlSerializer serializer = XmlSerializer.create().sq().ws().build();
|
| // Serialize to ATOM/XML
| String atomXml = serializer.serialize(feed);
| <feed>
| <id>
| tag:juneau.apache.org
| </id>
| <link href='http://juneau.apache.org/' rel='alternate'
| type='text/html' hreflang='en'/>
| <link href='http://juneau.apache.org/feed.atom' rel='self'
| type='application/atom+xml'/>
| <rights>
| Copyright (c) ...
| </rights>
| <title type='text'>
| Juneau ATOM specification
| </title>
| <updated>2016-01-02T03:04:05Z</updated>
| <generator uri='http://juneau.apache.org/' version='1.0'>
| Juneau
| </generator>
| <subtitle type='html'>
| Describes <em>stuff</em> about Juneau
| </subtitle>
| <entry>
| <author>
| <name>Jane Smith</name>
| <uri>http://juneau.apache.org/</uri>
| <email>janesmith@apache.org</email>
| </author>
| <contributor>
| <name>John Smith</name>
| </contributor>
| <id>
| tag:juneau.apache.org
| </id>
| <link href='http://juneau.apache.org/juneau.atom'
| rel='alternate' type='text/html'/>
| <link href='http://juneau.apache.org/audio/juneau_podcast.mp3'
| rel='enclosure' type='audio/mpeg' length='12345'/>
| <title>
| Juneau ATOM specification snapshot
| </title>
| <updated>2016-01-02T03:04:05Z</updated>
| <content base='http://www.apache.org/' lang='en'
| type='xhtml'>
| <div xmlns="http://www.w3.org/1999/xhtml"
| ><p><i>[Update: Juneau supports ATOM.]</i></p></div>
| </content>
| <published>2016-01-02T03:04:05Z</published>
| </entry>
| </feed>
The {@link oaj.xml.XmlParser} class can be used convert these Atom documents back into POJOs.
Other serializers and parsers (e.g. {@link oaj.json.JsonSerializer}) can be used to
represent these POJOs in languages other than XML.
Additional Information - org.apache.juneau.dto.atom
{@doc org.apache.juneau.dto.atom#Overview Overview}
{@doc org.apache.juneau.dto.atom#Serialize Serializing ATOM feeds}
{@doc org.apache.juneau.dto.atom#AtomJson ATOM/JSON}
{@doc org.apache.juneau.dto.atom#AtomRdfXml ATOM/RDF/XML}
{@doc org.apache.juneau.dto.atom#AtomHtml ATOM/HTML}
{@doc org.apache.juneau.dto.atom#Parse Parsing ATOM feeds}