Atom
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}