You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/09/02 14:10:40 UTC

[18/51] [partial] incubator-juneau git commit: Add project hierarchies, part 1

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Generator.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Generator.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Generator.java
new file mode 100644
index 0000000..2abcc0d
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Generator.java
@@ -0,0 +1,168 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.dto.atom;
+
+import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.xml.annotation.XmlFormat.*;
+
+import java.net.*;
+import java.net.URI;
+
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.xml.annotation.*;
+
+/**
+ * Represents an <code>atomGenerator</code> construct in the RFC4287 specification.
+ *
+ * <h6 class='figure'>Schema</h6>
+ * <p class='bcode'>
+ * 	atomGenerator = element atom:generator {
+ * 		atomCommonAttributes,
+ * 		attribute uri { atomUri }?,
+ * 		attribute version { text }?,
+ * 		text
+ * 	}
+ * </p>
+ *
+ * <h6 class='topic'>Additional Information</h6>
+ * <ul class='doctree'>
+ * 	<li class='link'>
+ * 		<a class='doclink' href='../../../../../overview-summary.html#DTOs'>Juneau Data Transfer Objects
+ * 		(org.apache.juneau.dto)</a>
+ * 		<ul>
+ * 			<li class='sublink'>
+ * 				<a class='doclink' href='../../../../../overview-summary.html#DTOs.Atom'>Atom</a>
+ * 		</ul>
+ * 	</li>
+ * 	<li class='jp'>
+ * 		<a class='doclink' href='package-summary.html#TOC'>org.apache.juneau.dto.atom</a>
+ * 	</li>
+ * </ul>
+ */
+@Bean(typeName="generator")
+@SuppressWarnings("hiding")
+public class Generator extends Common {
+
+	private URI uri;
+	private String version;
+	private String text;
+
+
+	/**
+	 * Normal constructor.
+	 *
+	 * @param text The generator statement content.
+	 */
+	public Generator(String text) {
+		this.text = text;
+	}
+
+	/** Bean constructor. */
+	public Generator() {}
+
+
+	//--------------------------------------------------------------------------------
+	// Bean properties
+	//--------------------------------------------------------------------------------
+
+	/**
+	 * Returns the URI of this generator statement.
+	 *
+	 * @return The URI of this generator statement.
+	 */
+	@Xml(format=ATTR)
+	public URI getUri() {
+		return uri;
+	}
+
+	/**
+	 * Sets the URI of this generator statement.
+	 *
+	 * <p>
+	 * The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
+	 * Strings must be valid URIs.
+	 *
+	 * <p>
+	 * URIs defined by {@link UriResolver} can be used for values.
+	 *
+	 * @param uri The URI of this generator statement.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("uri")
+	public Generator uri(Object uri) {
+		this.uri = toURI(uri);
+		return this;
+	}
+
+	/**
+	 * Returns the version of this generator statement.
+	 *
+	 * @return The version of this generator statement.
+	 */
+	@Xml(format=ATTR)
+	public String getVersion() {
+		return version;
+	}
+
+	/**
+	 * Sets the version of this generator statement.
+	 *
+	 * @param version The version of this generator statement.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("version")
+	public Generator version(String version) {
+		this.version = version;
+		return this;
+	}
+
+	/**
+	 * Returns the content of this generator statement.
+	 *
+	 * @return The content of this generator statement.
+	 */
+	@Xml(format=TEXT)
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * Sets the content of this generator statement.
+	 *
+	 * @param text The content of this generator statement.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("text")
+	public Generator text(String text) {
+		this.text = text;
+		return this;
+	}
+
+
+	//--------------------------------------------------------------------------------
+	// Overridden setters (to simplify method chaining)
+	//--------------------------------------------------------------------------------
+
+	@Override /* Common */
+	public Generator base(Object base) {
+		super.base(base);
+		return this;
+	}
+
+	@Override /* Common */
+	public Generator lang(String lang) {
+		super.lang(lang);
+		return this;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Icon.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Icon.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Icon.java
new file mode 100644
index 0000000..e16ae23
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Icon.java
@@ -0,0 +1,127 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.dto.atom;
+
+import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.xml.annotation.XmlFormat.*;
+
+import java.net.*;
+import java.net.URI;
+
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.xml.annotation.*;
+
+/**
+ * Represents an <code>atomIcon</code> construct in the RFC4287 specification.
+ *
+ * <h6 class='figure'>Schema</h6>
+ * <p class='bcode'>
+ * 	atomIcon = element atom:icon {
+ * 		atomCommonAttributes,
+ * 		(atomUri)
+ * 	}
+ * </p>
+ *
+ * <h6 class='topic'>Additional Information</h6>
+ * <ul class='doctree'>
+ * 	<li class='link'>
+ * 		<a class='doclink' href='../../../../../overview-summary.html#DTOs'>Juneau Data Transfer Objects
+ * 		(org.apache.juneau.dto)</a>
+ * 		<ul>
+ * 			<li class='sublink'>
+ * 				<a class='doclink' href='../../../../../overview-summary.html#DTOs.Atom'>Atom</a>
+ * 		</ul>
+ * 	</li>
+ * 	<li class='jp'>
+ * 		<a class='doclink' href='package-summary.html#TOC'>org.apache.juneau.dto.atom</a>
+ * 	</li>
+ * </ul>
+ */
+@Bean(typeName="icon")
+@SuppressWarnings("hiding")
+public class Icon extends Common {
+
+	private URI uri;
+
+
+	/**
+	 * Normal constructor.
+	 *
+	 * <p>
+	 * The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
+	 * Strings must be valid URIs.
+	 *
+	 * <p>
+	 * URIs defined by {@link UriResolver} can be used for values.
+	 *
+	 * @param uri The URI of the icon.
+	 */
+	public Icon(Object uri) {
+		uri(uri);
+	}
+
+	/** Bean constructor. */
+	public Icon() {}
+
+
+	//--------------------------------------------------------------------------------
+	// Bean properties
+	//--------------------------------------------------------------------------------
+
+	/**
+	 * Returns the URI of this icon.
+	 *
+	 * @return The URI of this icon.
+	 */
+	@Xml(format=ELEMENTS)
+	public URI getUri() {
+		return uri;
+	}
+
+	/**
+	 * Sets the URI of this icon.
+	 *
+	 * <p>
+	 * The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
+	 * Strings must be valid URIs.
+	 *
+	 * <p>
+	 * URIs defined by {@link UriResolver} can be used for values.
+	 *
+	 * @param uri The URI of this icon.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("uri")
+	public Icon uri(Object uri) {
+		this.uri = toURI(uri);
+		return this;
+	}
+
+
+	//--------------------------------------------------------------------------------
+	// Overridden setters (to simplify method chaining)
+	//--------------------------------------------------------------------------------
+
+	@Override /* Common */
+	public Icon base(Object base) {
+		super.base(base);
+		return this;
+	}
+
+	@Override /* Common */
+	public Icon lang(String lang) {
+		super.lang(lang);
+		return this;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Id.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Id.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Id.java
new file mode 100644
index 0000000..01b194e
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Id.java
@@ -0,0 +1,107 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.dto.atom;
+
+import static org.apache.juneau.xml.annotation.XmlFormat.*;
+
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.xml.annotation.*;
+
+/**
+ * Represents an <code>atomId</code> construct in the RFC4287 specification.
+ *
+ * <h6 class='figure'>Schema</h6>
+ * <p class='bcode'>
+ * 	atomId = element atom:id {
+ * 		atomCommonAttributes,
+ * 		(atomUri)
+ * 	}
+ * </p>
+ *
+ * <h6 class='topic'>Additional Information</h6>
+ * <ul class='doctree'>
+ * 	<li class='link'>
+ * 		<a class='doclink' href='../../../../../overview-summary.html#DTOs'>Juneau Data Transfer Objects
+ * 		(org.apache.juneau.dto)</a>
+ * 		<ul>
+ * 			<li class='sublink'>
+ * 				<a class='doclink' href='../../../../../overview-summary.html#DTOs.Atom'>Atom</a>
+ * 		</ul>
+ * 	</li>
+ * 	<li class='jp'>
+ * 		<a class='doclink' href='package-summary.html#TOC'>org.apache.juneau.dto.atom</a>
+ * 	</li>
+ * </ul>
+ */
+@Bean(typeName="id")
+@SuppressWarnings("hiding")
+public class Id extends Common {
+
+	private String text;
+
+	/**
+	 * Normal constructor.
+	 *
+	 * @param text The id element contents.
+	 */
+	public Id(String text) {
+		text(text);
+	}
+
+	/** Bean constructor. */
+	public Id() {}
+
+
+	//--------------------------------------------------------------------------------
+	// Bean properties
+	//--------------------------------------------------------------------------------
+
+	/**
+	 * Returns the content of this identifier.
+	 *
+	 * @return The content of this identifier.
+	 */
+	@Xml(format=TEXT)
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * Sets the content of this identifier.
+	 *
+	 * @param text The content of this identifier.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("text")
+	public Id text(String text) {
+		this.text = text;
+		return this;
+	}
+
+
+	//--------------------------------------------------------------------------------
+	// Overridden setters (to simplify method chaining)
+	//--------------------------------------------------------------------------------
+
+	@Override /* Common */
+	public Id base(Object base) {
+		super.base(base);
+		return this;
+	}
+
+	@Override /* Common */
+	public Id lang(String lang) {
+		super.lang(lang);
+		return this;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Link.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Link.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Link.java
new file mode 100644
index 0000000..695f1c5
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Link.java
@@ -0,0 +1,241 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.dto.atom;
+
+import static org.apache.juneau.xml.annotation.XmlFormat.*;
+
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.xml.annotation.*;
+
+/**
+ * Represents an <code>atomLink</code> construct in the RFC4287 specification.
+ *
+ * <h6 class='figure'>Schema</h6>
+ * <p class='bcode'>
+ * 	atomLink =
+ * 		element atom:link {
+ * 			atomCommonAttributes,
+ * 			attribute href { atomUri },
+ * 			attribute rel { atomNCName | atomUri }?,
+ * 			attribute type { atomMediaType }?,
+ * 			attribute hreflang { atomLanguageTag }?,
+ * 			attribute title { text }?,
+ * 			attribute length { text }?,
+ * 			undefinedContent
+ * 		}
+ * </p>
+ *
+ * <h6 class='topic'>Additional Information</h6>
+ * <ul class='doctree'>
+ * 	<li class='link'>
+ * 		<a class='doclink' href='../../../../../overview-summary.html#DTOs'>Juneau Data Transfer Objects
+ * 		(org.apache.juneau.dto)</a>
+ * 		<ul>
+ * 			<li class='sublink'>
+ * 				<a class='doclink' href='../../../../../overview-summary.html#DTOs.Atom'>Atom</a>
+ * 		</ul>
+ * 	</li>
+ * 	<li class='jp'>
+ * 		<a class='doclink' href='package-summary.html#TOC'>org.apache.juneau.dto.atom</a>
+ * 	</li>
+ * </ul>
+ */
+@Bean(typeName="link")
+@SuppressWarnings("hiding")
+public class Link extends Common {
+
+	private String href;
+	private String rel;
+	private String type;
+	private String hreflang;
+	private String title;
+	private Integer length;
+
+
+	/**
+	 * Normal constructor.
+	 *
+	 * @param rel The rel of the link.
+	 * @param type The type of the link.
+	 * @param href The URI of the link.
+	 */
+	public Link(String rel, String type, String href) {
+		rel(rel).type(type).href(href);
+	}
+
+	/** Bean constructor. */
+	public Link() {}
+
+
+	//--------------------------------------------------------------------------------
+	// Bean properties
+	//--------------------------------------------------------------------------------
+
+	/**
+	 * Returns the href of the target of this link.
+	 *
+	 * @return The href of the target of this link.
+	 */
+	@Xml(format=ATTR)
+	public String getHref() {
+		return href;
+	}
+
+	/**
+	 * Sets the href of the target of this link.
+	 *
+	 * @param href The href of the target of this link.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("href")
+	public Link href(String href) {
+		this.href = href;
+		return this;
+	}
+
+	/**
+	 * Returns the rel of this link.
+	 *
+	 * @return The rel of this link.
+	 */
+	@Xml(format=ATTR)
+	public String getRel() {
+		return rel;
+	}
+
+	/**
+	 * Sets the rel of this link.
+	 *
+	 * @param rel The rel of this link.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("rel")
+	public Link rel(String rel) {
+		this.rel = rel;
+		return this;
+	}
+
+	/**
+	 * Returns the content type of the target of this link.
+	 *
+	 * @return The content type of the target of this link.
+	 */
+	@Xml(format=ATTR)
+	public String getType() {
+		return type;
+	}
+
+	/**
+	 * Sets the content type of the target of this link.
+	 *
+	 * <p>
+	 * Must be one of the following:
+	 * <ul>
+	 * 	<li><js>"text"</js>
+	 * 	<li><js>"html"</js>
+	 * 	<li><js>"xhtml"</js>
+	 * 	<li><jk>null</jk> (defaults to <js>"text"</js>)
+	 * </ul>
+	 *
+	 * @param type The content type of the target of this link.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("type")
+	public Link type(String type) {
+		this.type = type;
+		return this;
+	}
+
+	/**
+	 * Returns the language of the target of this link.
+	 *
+	 * @return The language of the target of this link.
+	 */
+	@Xml(format=ATTR)
+	public String getHreflang() {
+		return hreflang;
+	}
+
+	/**
+	 * Sets the language of the target of this link.
+	 *
+	 * @param hreflang The language of the target of this link.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("hreflang")
+	public Link hreflang(String hreflang) {
+		this.hreflang = hreflang;
+		return this;
+	}
+
+	/**
+	 * Returns the title of the target of this link.
+	 *
+	 * @return The title of the target of this link.
+	 */
+	@Xml(format=ATTR)
+	public String getTitle() {
+		return title;
+	}
+
+	/**
+	 * Sets the title of the target of this link.
+	 *
+	 * @param title The title of the target of this link.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("title")
+	public Link title(String title) {
+		this.title = title;
+		return this;
+	}
+
+	/**
+	 * Returns the length of the contents of the target of this link.
+	 *
+	 * @return The length of the contents of the target of this link.
+	 */
+	@Xml(format=ATTR)
+	public Integer getLength() {
+		return length;
+	}
+
+	/**
+	 * Sets the length of the contents of the target of this link.
+	 *
+	 * @param length The length of the contents of the target of this link.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("length")
+	public Link length(Integer length) {
+		this.length = length;
+		return this;
+	}
+
+
+	//--------------------------------------------------------------------------------
+	// Overridden setters (to simplify method chaining)
+	//--------------------------------------------------------------------------------
+
+	@Override /* Common */
+	public Link base(Object base) {
+		super.base(base);
+		return this;
+	}
+
+	@Override /* Common */
+	public Link lang(String lang) {
+		super.lang(lang);
+		return this;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Logo.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Logo.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Logo.java
new file mode 100644
index 0000000..97e045e
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Logo.java
@@ -0,0 +1,127 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.dto.atom;
+
+import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.xml.annotation.XmlFormat.*;
+
+import java.net.*;
+import java.net.URI;
+
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.xml.annotation.*;
+
+/**
+ * Represents an <code>atomLogo</code> construct in the RFC4287 specification.
+ *
+ * <h6 class='figure'>Schema</h6>
+ * <p class='bcode'>
+ * 	atomLogo = element atom:logo {
+ * 		atomCommonAttributes,
+ * 		(atomUri)
+ * 	}
+ * </p>
+ *
+ * <h6 class='topic'>Additional Information</h6>
+ * <ul class='doctree'>
+ * 	<li class='link'>
+ * 		<a class='doclink' href='../../../../../overview-summary.html#DTOs'>Juneau Data Transfer Objects
+ * 		(org.apache.juneau.dto)</a>
+ * 		<ul>
+ * 			<li class='sublink'>
+ * 				<a class='doclink' href='../../../../../overview-summary.html#DTOs.Atom'>Atom</a>
+ * 		</ul>
+ * 	</li>
+ * 	<li class='jp'>
+ * 		<a class='doclink' href='package-summary.html#TOC'>org.apache.juneau.dto.atom</a>
+ * 	</li>
+ * </ul>
+ */
+@Bean(typeName="logo")
+@SuppressWarnings("hiding")
+public class Logo extends Common {
+
+	private URI uri;
+
+
+	/**
+	 * Normal constructor.
+	 *
+	 * <p>
+	 * The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
+	 * <br>Strings must be valid URIs.
+	 *
+	 * <p>
+	 * URIs defined by {@link UriResolver} can be used for values.
+	 *
+	 * @param uri The URI of the logo.
+	 */
+	public Logo(Object uri) {
+		uri(uri);
+	}
+
+	/** Bean constructor. */
+	public Logo() {}
+
+
+	//--------------------------------------------------------------------------------
+	// Bean properties
+	//--------------------------------------------------------------------------------
+
+	/**
+	 * Returns the URI of the logo.
+	 *
+	 * @return The URI of the logo.
+	 */
+	@Xml(format=ELEMENTS)
+	public URI getUri() {
+		return uri;
+	}
+
+	/**
+	 * Sets the URI of the logo.
+	 *
+	 * <p>
+	 * The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
+	 * <br>Strings must be valid URIs.
+	 *
+	 * <p>
+	 * URIs defined by {@link UriResolver} can be used for values.
+	 *
+	 * @param uri The URI of the logo.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("uri")
+	public Logo uri(Object uri) {
+		this.uri = toURI(uri);
+		return this;
+	}
+
+
+	//--------------------------------------------------------------------------------
+	// Overridden setters (to simplify method chaining)
+	//--------------------------------------------------------------------------------
+
+	@Override /* Common */
+	public Logo base(Object base) {
+		super.base(base);
+		return this;
+	}
+
+	@Override /* Common */
+	public Logo lang(String lang) {
+		super.lang(lang);
+		return this;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Person.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Person.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Person.java
new file mode 100644
index 0000000..f557a97
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Person.java
@@ -0,0 +1,163 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.dto.atom;
+
+import static org.apache.juneau.internal.StringUtils.*;
+
+import java.net.*;
+import java.net.URI;
+
+import org.apache.juneau.*;
+
+import org.apache.juneau.annotation.*;
+
+/**
+ * Represents an <code>atomPersonConstruct</code> construct in the RFC4287 specification.
+ *
+ * <h6 class='figure'>Schema</h6>
+ * <p class='bcode'>
+ * 	atomPersonConstruct =
+ * 		atomCommonAttributes,
+ * 		(element atom:name { text }
+ * 		&amp; element atom:uri { atomUri }?
+ * 		&amp; element atom:email { atomEmailAddress }?
+ * 		&amp; extensionElement*)
+ * </p>
+ *
+ * <h6 class='topic'>Additional Information</h6>
+ * <ul class='doctree'>
+ * 	<li class='link'>
+ * 		<a class='doclink' href='../../../../../overview-summary.html#DTOs'>Juneau Data Transfer Objects
+ * 		(org.apache.juneau.dto)</a>
+ * 		<ul>
+ * 			<li class='sublink'>
+ * 				<a class='doclink' href='../../../../../overview-summary.html#DTOs.Atom'>Atom</a>
+ * 		</ul>
+ * 	</li>
+ * 	<li class='jp'>
+ * 		<a class='doclink' href='package-summary.html#TOC'>org.apache.juneau.dto.atom</a>
+ * 	</li>
+ * </ul>
+ */
+@SuppressWarnings("hiding")
+public class Person extends Common {
+
+	private String name;
+	private URI uri;
+	private String email;
+
+
+	/**
+	 * Normal constructor.
+	 *
+	 * @param name The name of the person.
+	 */
+	public Person(String name) {
+		name(name);
+	}
+
+	/** Bean constructor. */
+	public Person() {}
+
+
+	//--------------------------------------------------------------------------------
+	// Bean properties
+	//--------------------------------------------------------------------------------
+
+	/**
+	 * Returns the name of the person.
+	 *
+	 * @return The name of the person.
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * Sets the name of the person.
+	 *
+	 * @param name The name of the person.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("name")
+	public Person name(String name) {
+		this.name = name;
+		return this;
+	}
+
+	/**
+	 * Returns the URI of the person.
+	 *
+	 * @return The URI of the person.
+	 */
+	public URI getUri() {
+		return uri;
+	}
+
+	/**
+	 * Sets the URI of the person.
+	 *
+	 * <p>
+	 * The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
+	 * Strings must be valid URIs.
+	 *
+	 * <p>
+	 * URIs defined by {@link UriResolver} can be used for values.
+	 *
+	 * @param uri The URI of the person.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("uri")
+	public Person uri(Object uri) {
+		this.uri = toURI(uri);
+		return this;
+	}
+
+	/**
+	 * Returns the email address of the person.
+	 *
+	 * @return The email address of the person.
+	 */
+	public String getEmail() {
+		return email;
+	}
+
+	/**
+	 * Sets the email address of the person.
+	 *
+	 * @param email The email address of the person.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("email")
+	public Person email(String email) {
+		this.email = email;
+		return this;
+	}
+
+
+	//--------------------------------------------------------------------------------
+	// Overridden setters (to simplify method chaining)
+	//--------------------------------------------------------------------------------
+
+	@Override /* Common */
+	public Person base(Object base) {
+		super.base(base);
+		return this;
+	}
+
+	@Override /* Common */
+	public Person lang(String lang) {
+		super.lang(lang);
+		return this;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Source.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Source.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Source.java
new file mode 100644
index 0000000..f86380b
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Source.java
@@ -0,0 +1,249 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.dto.atom;
+
+import java.util.*;
+
+import org.apache.juneau.annotation.*;
+
+/**
+ * Represents an <code>atomSource</code> construct in the RFC4287 specification.
+ *
+ * <h6 class='figure'>Schema</h6>
+ * <p class='bcode'>
+ * 	atomSource =
+ * 		element atom:source {
+ * 			atomCommonAttributes,
+ * 			(atomAuthor*
+ * 			&amp; atomCategory*
+ * 			&amp; atomContributor*
+ * 			&amp; atomGenerator?
+ * 			&amp; atomIcon?
+ * 			&amp; atomId?
+ * 			&amp; atomLink*
+ * 			&amp; atomLogo?
+ * 			&amp; atomRights?
+ * 			&amp; atomSubtitle?
+ * 			&amp; atomTitle?
+ * 			&amp; atomUpdated?
+ * 			&amp; extensionElement*)
+ * 		}
+ * </p>
+ *
+ * <h6 class='topic'>Additional Information</h6>
+ * <ul class='doctree'>
+ * 	<li class='link'>
+ * 		<a class='doclink' href='../../../../../overview-summary.html#DTOs'>Juneau Data Transfer Objects
+ * 		(org.apache.juneau.dto)</a>
+ * 		<ul>
+ * 			<li class='sublink'>
+ * 				<a class='doclink' href='../../../../../overview-summary.html#DTOs.Atom'>Atom</a>
+ * 		</ul>
+ * 	</li>
+ * 	<li class='jp'>
+ * 		<a class='doclink' href='package-summary.html#TOC'>org.apache.juneau.dto.atom</a>
+ * 	</li>
+ * </ul>
+ */
+@SuppressWarnings("hiding")
+public class Source extends CommonEntry {
+
+	private Generator generator;
+	private Icon icon;
+	private Logo logo;
+	private Text subtitle;
+
+
+	//--------------------------------------------------------------------------------
+	// Bean properties
+	//--------------------------------------------------------------------------------
+
+	/**
+	 * Returns the generator info of this source.
+	 *
+	 * @return The generator info of this source.
+	 */
+	public Generator getGenerator() {
+		return generator;
+	}
+
+	/**
+	 * Sets the generator info of this source.
+	 *
+	 * @param generator The generator info of this source.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("generator")
+	public Source generator(Generator generator) {
+		this.generator = generator;
+		return this;
+	}
+
+	/**
+	 * Returns the icon of this source.
+	 *
+	 * @return The icon of this source.
+	 */
+	public Icon getIcon() {
+		return icon;
+	}
+
+	/**
+	 * Sets the icon of this source.
+	 *
+	 * @param icon The icon of this source.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("icon")
+	public Source icon(Icon icon) {
+		this.icon = icon;
+		return this;
+	}
+
+	/**
+	 * Returns the logo of this source.
+	 *
+	 * @return The logo of this source.
+	 */
+	public Logo getLogo() {
+		return logo;
+	}
+
+	/**
+	 * Sets the logo of this source.
+	 *
+	 * @param logo The logo of this source.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("logo")
+	public Source logo(Logo logo) {
+		this.logo = logo;
+		return this;
+	}
+
+	/**
+	 * Returns the subtitle of this source.
+	 *
+	 * @return The subtitle of this source.
+	 */
+	public Text getSubtitle() {
+		return subtitle;
+	}
+
+	/**
+	 * Sets the subtitle of this source.
+	 *
+	 * @param subtitle The subtitle of this source.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("subtitle")
+	public Source subtitle(Text subtitle) {
+		this.subtitle = subtitle;
+		return this;
+	}
+
+	/**
+	 * Sets the subtitle of this source.
+	 *
+	 * @param subtitle The subtitle of this source.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("subtitle")
+	public Source subtitle(String subtitle) {
+		this.subtitle = new Text(subtitle);
+		return this;
+	}
+
+
+	//--------------------------------------------------------------------------------
+	// Overridden setters (to simplify method chaining)
+	//--------------------------------------------------------------------------------
+
+	@Override /* CommonEntry */
+	public Source authors(Person...authors) {
+		super.authors(authors);
+		return this;
+	}
+
+	@Override /* CommonEntry */
+	public Source categories(Category...categories) {
+		super.categories(categories);
+		return this;
+	}
+
+	@Override /* CommonEntry */
+	public Source contributors(Person...contributors) {
+		super.contributors(contributors);
+		return this;
+	}
+
+	@Override /* CommonEntry */
+	public Source id(Id id) {
+		super.id(id);
+		return this;
+	}
+
+	@Override /* CommonEntry */
+	public Source links(Link...links) {
+		super.links(links);
+		return this;
+	}
+
+	@Override /* CommonEntry */
+	public Source rights(Text rights) {
+		super.rights(rights);
+		return this;
+	}
+
+	@Override /* CommonEntry */
+	public Source rights(String rights) {
+		super.rights(rights);
+		return this;
+	}
+
+	@Override /* CommonEntry */
+	public Source title(Text title) {
+		super.title(title);
+		return this;
+	}
+
+	@Override /* CommonEntry */
+	public Source title(String title) {
+		super.title(title);
+		return this;
+	}
+
+	@Override /* CommonEntry */
+	public Source updated(Calendar updated) {
+		super.updated(updated);
+		return this;
+	}
+
+	@Override /* CommonEntry */
+	public Source updated(String updated) {
+		super.updated(updated);
+		return this;
+	}
+
+	@Override /* Common */
+	public Source base(Object base) {
+		super.base(base);
+		return this;
+	}
+
+	@Override /* Common */
+	public Source lang(String lang) {
+		super.lang(lang);
+		return this;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Text.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Text.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Text.java
new file mode 100644
index 0000000..572e08a
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Text.java
@@ -0,0 +1,151 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.dto.atom;
+
+import static org.apache.juneau.xml.annotation.XmlFormat.*;
+
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.xml.annotation.*;
+
+/**
+ * Represents an <code>atomTextConstruct</code> construct in the RFC4287 specification.
+ *
+ * <h6 class='figure'>Schema</h6>
+ * <p class='bcode'>
+ * 	atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct
+ *
+ * 	atomPlainTextConstruct =
+ * 		atomCommonAttributes,
+ * 		attribute type { "text" | "html" }?,
+ * 		text
+ *
+ * 	atomXHTMLTextConstruct =
+ * 		atomCommonAttributes,
+ * 		attribute type { "xhtml" },
+ * 		xhtmlDiv
+ *
+ * 	xhtmlDiv = element xhtml:div {
+ * 		(attribute * { text }
+ * 		| text
+ * 		| anyXHTML)*
+ * 	}
+ * </p>
+ *
+ * <h6 class='topic'>Additional Information</h6>
+ * <ul class='doctree'>
+ * 	<li class='link'>
+ * 		<a class='doclink' href='../../../../../overview-summary.html#DTOs'>Juneau Data Transfer Objects
+ * 		(org.apache.juneau.dto)</a>
+ * 		<ul>
+ * 			<li class='sublink'>
+ * 				<a class='doclink' href='../../../../../overview-summary.html#DTOs.Atom'>Atom</a>
+ * 		</ul>
+ * 	</li>
+ * 	<li class='jp'>
+ * 		<a class='doclink' href='package-summary.html#TOC'>org.apache.juneau.dto.atom</a>
+ * 	</li>
+ * </ul>
+ */
+@SuppressWarnings("hiding")
+public class Text extends Common {
+
+	private String type;
+	private String text;
+
+	/**
+	 * Normal content.
+	 *
+	 * @param type The content type of this content.
+	 */
+	public Text(String type) {
+		type(type);
+	}
+
+	/** Bean constructor. */
+	public Text() {}
+
+
+	//--------------------------------------------------------------------------------
+	// Bean properties
+	//--------------------------------------------------------------------------------
+
+	/**
+	 * Returns the content type of this content.
+	 *
+	 * @return The content type of this content.
+	 */
+	@Xml(format=ATTR)
+	public String getType() {
+		return type;
+	}
+
+	/**
+	 * Sets the content type of this content.
+	 *
+	 * <p>
+	 * Must be one of the following:
+	 * <ul>
+	 * 	<li><js>"text"</js>
+	 * 	<li><js>"html"</js>
+	 * 	<li><js>"xhtml"</js>
+	 * 	<li><jk>null</jk> (defaults to <js>"text"</js>)
+	 * </ul>
+	 *
+	 * @param type The content type of this content.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("type")
+	public Text type(String type) {
+		this.type = type;
+		return this;
+	}
+
+	/**
+	 * Returns the content of this content.
+	 *
+	 * @return The content of this content.
+	 */
+	@Xml(format=XMLTEXT)
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * Sets the content of this content.
+	 *
+	 * @param text The content of this content.
+	 * @return This object (for method chaining).
+	 */
+	@BeanProperty("text")
+	public Text text(String text) {
+		this.text = text;
+		return this;
+	}
+
+
+	//--------------------------------------------------------------------------------
+	// Overridden setters (to simplify method chaining)
+	//--------------------------------------------------------------------------------
+
+	@Override /* Common */
+	public Text base(Object base) {
+		super.base(base);
+		return this;
+	}
+
+	@Override /* Common */
+	public Text lang(String lang) {
+		super.lang(lang);
+		return this;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Utils.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Utils.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Utils.java
new file mode 100644
index 0000000..f42be90
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Utils.java
@@ -0,0 +1,49 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.dto.atom;
+
+import java.util.*;
+
+import javax.xml.bind.*;
+
+/**
+ * Static utility methods for ATOM marshalling code.
+ *
+ * <h6 class='topic'>Additional Information</h6>
+ * <ul class='doctree'>
+ * 	<li class='link'>
+ * 		<a class='doclink' href='../../../../../overview-summary.html#DTOs'>Juneau Data Transfer Objects
+ * 		(org.apache.juneau.dto)</a>
+ * 		<ul>
+ * 			<li class='sublink'>
+ * 				<a class='doclink' href='../../../../../overview-summary.html#DTOs.Atom'>Atom</a>
+ * 		</ul>
+ * 	</li>
+ * 	<li class='jp'>
+ * 		<a class='doclink' href='package-summary.html#TOC'>org.apache.juneau.dto.atom</a>
+ * 	</li>
+ * </ul>
+ */
+class Utils {
+
+	/**
+	 * Converts an ISO8601 date-time string to a {@link Calendar}.
+	 *
+	 * @param lexicalXSDDateTime The ISO8601 date-time string.
+	 * @return A new {@link Calendar} object.
+	 */
+	static final Calendar parseDateTime(String lexicalXSDDateTime) {
+		return DatatypeConverter.parseDateTime(lexicalXSDDateTime);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/doc-files/Example_HTML.png
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/doc-files/Example_HTML.png b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/doc-files/Example_HTML.png
new file mode 100644
index 0000000..18b3d52
Binary files /dev/null and b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/doc-files/Example_HTML.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/package-info.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/package-info.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/package-info.java
new file mode 100644
index 0000000..a0dad2a
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/package-info.java
@@ -0,0 +1,23 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+@XmlSchema(
+	prefix="atom",
+	xmlNs={
+		@XmlNs(prefix="atom", namespaceURI="http://www.w3.org/2005/Atom/"),
+		@XmlNs(prefix="xml", namespaceURI="http://www.w3.org/XML/1998/namespace")
+	}
+)
+package org.apache.juneau.dto.atom;
+
+import org.apache.juneau.xml.annotation.*;
+

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/package.html
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/package.html b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/package.html
new file mode 100644
index 0000000..5cd3f6a
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/package.html
@@ -0,0 +1,574 @@
+<!DOCTYPE HTML>
+<!--
+/***************************************************************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *  
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations under the License.
+ *
+ ***************************************************************************************************************************/
+ -->
+<html>
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<style type="text/css">
+		/* For viewing in Page Designer */
+		@IMPORT url("../../../../../../../javadoc.css");
+
+		/* For viewing in REST interface */
+		@IMPORT url("../htdocs/javadoc.css");
+		body { 
+			margin: 20px; 
+		}	
+	</style>
+	<script>
+		/* Replace all @code and @link tags. */	
+		window.onload = function() {
+			document.body.innerHTML = document.body.innerHTML.replace(/\{\@code ([^\}]+)\}/g, '<code>$1</code>');
+			document.body.innerHTML = document.body.innerHTML.replace(/\{\@link (([^\}]+)\.)?([^\.\}]+)\}/g, '<code>$3</code>');
+		}
+	</script>
+</head>
+<body>
+<p>ATOM Data Transfer Objects</p>
+<script>
+	function toggle(x) {
+		var div = x.nextSibling;
+		while (div != null && div.nodeType != 1)
+			div = div.nextSibling;
+		if (div != null) {
+			var d = div.style.display;
+			if (d == 'block' || d == '') {
+				div.style.display = 'none';
+				x.className += " closed";
+			} else {
+				div.style.display = 'block';
+				x.className = x.className.replace(/(?:^|\s)closed(?!\S)/g , '' );
+			}
+		}
+	}
+</script>
+<a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
+<ol class='toc'>
+	<li><p><a class='doclink' href='#Overview'>Overview</a></p>
+	<ol>
+		<li><p><a class='doclink' href='#Serialize'>Serializing ATOM feeds</a></p>
+		<ol>
+			<li><p><a class='doclink' href='#AtomJson'>ATOM/JSON</a></p>
+			<li><p><a class='doclink' href='#AtomRdfXml'>ATOM/RDF/XML</a></p>
+			<li><p><a class='doclink' href='#AtomHtml'>ATOM/HTML</a></p>
+		</ol>
+		<li><p><a class='doclink' href='#Parse'>Parsing ATOM feeds</a></p>
+	</ol>
+</ol>
+
+
+<!-- ======================================================================================================== -->
+<a id="Overview"></a>
+<h2 class='topic' onclick='toggle(this)'>1 - Overview</h2>
+<div class='topic'>
+	<p>
+		Juneau supports generation and consumption of ATOM feeds through the use of DTOs (Data Transfer Objects).
+		<br>It uses existing support for serializing and parsing POJOs to and from XML to define these ATOM objects. 
+	</p>
+	<p>
+		The examples shown here are pulled from the <code>AtomFeedResource</code> class in the 
+		<code>org.apache.juneau.sample.war</code> project.
+	</p>
+	
+	
+	<!-- ======================================================================================================== -->
+	<a id="Serialize"></a>
+	<h3 class='topic' onclick='toggle(this)'>1.1 - Serializing ATOM feeds</h3>
+	<div class='topic'>
+		<p>
+			The Juneau ATOM feed DTOs are simply beans with fluent-style setters.
+			<br>The following code shows a feed being created programmatically using the 
+			{@link org.apache.juneau.dto.atom.AtomBuilder} class.
+		</p>
+		<p class='bcode'>
+		
+	<jk>import static</jk> org.apache.juneau.dto.atom.AtomBuilder.*;
+	
+	Feed feed = 
+		<jsm>feed</jsm>(<js>"tag:juneau.apache.org"</js>, <js>"Juneau ATOM specification"</js>, <js>"2016-01-02T03:04:05Z"</js>)
+		.subtitle(<jsm>text</jsm>(<js>"html"</js>).text(<js>"Describes &lt;em&gt;stuff&lt;/em&gt; about Juneau"</js>))
+		.links(
+			<jsm>link</jsm>(<js>"alternate"</js>, <js>"text/html"</js>, <js>"http://juneau.apache.org"</js>).hreflang(<js>"en"</js>),
+			<jsm>link</jsm>(<js>"self"</js>, <js>"application/atom+xml"</js>, <js>"http://juneau.apache.org/feed.atom"</js>)
+		)
+		.generator(
+			<jsm>generator</jsm>(<js>"Juneau"</js>).uri(<js>"http://juneau.apache.org"</js>).version(<js>"1.0"</js>)
+		)
+		.entries(
+			<jsm>entry</jsm>(<js>"tag:juneau.sample.com,2013:1.2345"</js>, <js>"Juneau ATOM specification snapshot"</js>, <js>"2016-01-02T03:04:05Z"</js>)
+			.links(
+				<jsm>link</jsm>(<js>"alternate"</js>, <js>"text/html"</js>, <js>"http://juneau.apache.org/juneau.atom"</js>),
+				<jsm>link</jsm>(<js>"enclosure"</js>, <js>"audio/mpeg"</js>, <js>"http://juneau.apache.org/audio/juneau_podcast.mp3"</js>).length(1337)
+			)
+			.published(<js>"2016-01-02T03:04:05Z"</js>)
+			.authors(
+				<jsm>person</jsm>(<js>"Jane Smith"</js>).uri(<js>"http://juneau.apache.org"</js>).email(<js>"janesmith@apache.org"</js>)
+			)
+			.contributors(
+				<jsm>person</jsm>(<js>"John Smith"</js>)
+			)
+			.content(
+				<jsm>content</jsm>(<js>"xhtml"</js>)
+				.lang(<js>"en"</js>)
+				.base(<js>"http://www.apache.org/"</js>)
+				.text(<js>"&lt;div&gt;&lt;p&gt;&lt;i&gt;[Update: Juneau supports ATOM.]&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;"</js>)
+			)
+		);
+		</p>
+		<p>
+			To serialize this to ATOM, use the {@link org.apache.juneau.xml.XmlSerializer} class:
+		</p>
+		
+		<h6 class='figure'>Example with no namespaces</h6>
+		<p class='bcode'>
+	<jc>// Create a serializer with readable output, no namespaces yet.</jc>
+	XmlSerializer s = <jk>new</jk> XmlSerializerBuilder().sq().ws().build();
+
+	<jc>// Serialize to ATOM/XML</jc>
+	String atomXml = s.serialize(feed);
+		</p>
+		
+		<h6 class='figure'>Results</h6>
+		<p class='bcode'>
+	<xt>&lt;feed&gt;</xt>
+		<xt>&lt;id&gt;</xt>
+			tag:juneau.apache.org
+		<xt>&lt;/id&gt;</xt>
+		<xt>&lt;link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/'</xs> <xa>rel</xa>=<xs>'alternate'</xs> <xa>type</xa>=<xs>'text/html'</xs> <xa>hreflang</xa>=<xs>'en'</xs>/<xt>&gt;</xt>
+		<xt>&lt;link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/feed.atom'</xs> <xa>rel</xa>=<xs>'self'</xs> <xa>type</xa>=<xs>'application/atom+xml'</xs>/<xt>&gt;</xt>
+		<xt>&lt;title</xt> <xa>type</xa>=<xs>'text'</xs>&gt;</xt>
+			Juneau ATOM specification
+		<xt>&lt;/title&gt;</xt>
+		<xt>&lt;updated&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/updated&gt;</xt>
+		<xt>&lt;generator</xt> <xa>uri</xa>=<xs>'http://juneau.apache.org/'</xs> <xa>version</xa>=<xs>'1.0'</xs><xt>&gt;</xt>
+			Juneau
+		<xt>&lt;/generator&gt;</xt>
+		<xt>&lt;subtitle</xt> <xa>type</xa>=<xs>'html'</xs><xt>&gt;</xt>
+			Describes &lt;em&gt;stuff&lt;/em&gt; about Juneau
+		<xt>&lt;/subtitle&gt;</xt>
+		<xt>&lt;entry&gt;</xt>
+			<xt>&lt;author&gt;</xt>
+				<xt>&lt;name&gt;</xt>Jane Smith<xt>&lt;/name&gt;</xt>
+				<xt>&lt;uri&gt;</xt>http://juneau.apache.org/<xt>&lt;/uri&gt;</xt>
+				<xt>&lt;email&gt;</xt>janesmith@apache.org<xt>&lt;/email&gt;</xt>
+			<xt>&lt;/author&gt;</xt>
+			<xt>&lt;contributor&gt;</xt>
+				<xt>&lt;name&gt;</xt>John Smith<xt>&lt;/name&gt;</xt>
+			<xt>&lt;/contributor&gt;</xt>
+			<xt>&lt;id&gt;</xt>
+				tag:juneau.apache.org
+			<xt>&lt;/id&gt;</xt>
+			<xt>&lt;link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/juneau.atom'</xs> <xa>rel</xa>=<xs>'alternate'</xs> <xa>type</xa>=<xs>'text/html'</xs>/<xt>&gt;</xt>
+			<xt>&lt;link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/audio/juneau_podcast.mp3'</xs> <xa>rel</xa>=<xs>'enclosure'</xs> <xa>type</xa>=<xs>'audio/mpeg'</xs> <xa>length</xa>=<xs>'12345'</xs>/<xt>&gt;</xt>
+			<xt>&lt;title&gt;</xt>
+				Juneau ATOM specification snapshot
+			<xt>&lt;/title&gt;</xt>
+			<xt>&lt;updated&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/updated&gt;</xt>
+			<xt>&lt;content</xt> <xa>base</xa>=<xs>'http://www.apache.org/'</xs> <xa>lang</xa>=<xs>'en'</xs> <xa>type</xa>=<xs>'xhtml'</xs><xt>&gt;</xt>
+				<xt>&lt;div</xt> <xa>xmlns</xa>=<xs>"http://www.w3.org/1999/xhtml"</xs><xt>&gt;&lt;p&gt;&lt;i&gt;</xt>[Update: Juneau supports ATOM.]<xt>&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;</xt>
+			<xt>&lt;/content&gt;</xt>
+			<xt>&lt;published&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/published&gt;</xt>
+		<xt>&lt;/entry&gt;</xt>
+	<xt>&lt;/feed&gt;</xt>		
+		</p>
+		
+		<p>
+			The following is the same, except with XML namespaces enabled:
+		</p>
+	
+		<h6 class='figure'>Example with namespaces</h6>
+		<p class='bcode'>
+	<jc>// Create a serializer with readable output with namespaces.</jc>
+	XmlSerializer s = <jk>new</jk> XmlSerializerBuilder().sq().ws().build();
+
+	<jc>// Serialize to ATOM/XML</jc>
+	String atomXml = s.serialize(feed);
+		</p>
+		
+		<h6 class='figure'>Results</h6>
+		<p class='bcode'>
+	<xt>&lt;atom:feed</xt> 
+			<xa>xmlns</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
+			<xa>xmlns:atom</xa>=<xs>'http://www.w3.org/2005/Atom/'</xs> 
+			<xa>xmlns:xml</xa>=<xs>'http://www.w3.org/XML/1998/namespace'</xs> 
+			<xa>xmlns:xsi</xa>=<xs>'http://www.w3.org/2001/XMLSchema-instance'</xs><xt>&gt;</xt>
+		<xt>&lt;atom:id&gt;</xt>
+			tag:juneau.apache.org
+		<xt>&lt;/atom:id&gt;</xt>
+		<xt>&lt;atom:link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/'</xs> <xa>rel</xa>=<xs>'alternate'</xs> <xa>type</xa>=<xs>'text/html'</xs> <xa>hreflang</xa>=<xs>'en'</xs><xt>/&gt;</xt>
+		<xt>&lt;atom:link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/feed.atom'</xs> <xa>rel</xa>=<xs>'self'</xs> <xa>type</xa>=<xs>'application/atom+xml'</xs><xt>/&gt;</xt>
+		<xt>&lt;atom:title</xt> <xa>type</xa>=<xs>'text'</xs><xt>&gt;</xt>
+			Juneau ATOM specification
+		<xt>&lt;/atom:title&gt;</xt>
+		<xt>&lt;atom:updated&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/atom:updated&gt;</xt>
+		<xt>&lt;atom:generator</xt> <xa>uri</xa>=<xs>'http://juneau.apache.org/'</xs> <xa>version</xa>=<xs>'1.0'</xs><xt>&gt;</xt>
+			Juneau
+		<xt>&lt;/atom:generator&gt;</xt>
+		<xt>&lt;atom:subtitle</xt> <xa>type</xa>=<xs>'html'</xs><xt>&gt;</xt>
+			Describes &lt;em&gt;stuff&lt;/em&gt; about Juneau
+		<xt>&lt;/atom:subtitle&gt;</xt>
+		<xt>&lt;atom:entry&gt;</xt>
+			<xt>&lt;atom:author&gt;</xt>
+				<xt>&lt;atom:name&gt;</xt>Jane Smith<xt>&lt;/atom:name&gt;</xt>
+				<xt>&lt;atom:uri&gt;</xt>http://juneau.apache.org/<xt>&lt;/atom:uri&gt;</xt>
+				<xt>&lt;atom:email&gt;</xt>janesmith@apache.org<xt>&lt;/atom:email&gt;</xt>
+			<xt>&lt;/atom:author&gt;</xt>
+			<xt>&lt;atom:contributor&gt;</xt>
+				<xt>&lt;atom:name&gt;</xt>John Smith<xt>&lt;/atom:name&gt;</xt>
+			<xt>&lt;/atom:contributor&gt;</xt>
+			<xt>&lt;atom:id&gt;</xt>
+				tag:juneau.apache.org
+			<xt>&lt;/atom:id&gt;</xt>
+			<xt>&lt;atom:link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/juneau.atom'</xs> <xa>rel</xa>=<xs>'alternate'</xs> <xa>type</xa>=<xs>'text/html'</xs><xt>/&gt;</xt>
+			<xt>&lt;atom:link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/audio/juneau_podcast.mp3'</xs> <xa>rel</xa>=<xs>'enclosure'</xs> <xa>type</xa>=<xs>'audio/mpeg'</xs> <xa>length</xa>=<xs>'12345'</xs><xt>/&gt;</xt>
+			<xt>&lt;atom:title&gt;</xt>
+				Juneau ATOM specification snapshot
+			<xt>&lt;/atom:title&gt;</xt>
+			<xt>&lt;atom:updated&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/atom:updated&gt;</xt>
+			<xt>&lt;atom:content</xt> <xa>xml:base</xa>=<xs>'http://www.apache.org/'</xs> <xa>xml:lang</xa>=<xs>'en'</xs> <xa>type</xa>=<xs>'xhtml'</xs><xt>&gt;</xt>
+				<xt>&lt;div</xt> <xa>xmlns</xa>=<xs>"http://www.w3.org/1999/xhtml"</xs><xt>&gt;</xt><xt>&lt;p&gt;</xt><xt>&lt;i&gt;</xt>[Update: Juneau supports ATOM.]<xt>&lt;/i&gt;</xt><xt>&lt;/p&gt;</xt><xt>&lt;/div&gt;</xt>
+			<xt>&lt;/atom:content&gt;</xt>
+			<xt>&lt;atom:published&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/atom:published&gt;</xt>
+		<xt>&lt;/atom:entry&gt;</xt>
+	<xt>&lt;/atom:feed&gt;</xt>
+		</p>
+	
+		<p>
+			The following is the same, except with XML namespaces enabled and the ATOM namespace as the default namespace:
+		</p>
+
+		<h6 class='figure'>Example with namespaces with ATOM as the default namespace</h6>
+		<p class='bcode'>
+	<jc>// Create a serializer with readable output with namespaces.</jc>
+	XmlSerializer s = <jk>new</jk> XmlSerializerBuilder().sq().ws().defaultNamespaceUri(<js>"atom"</js>).build();
+
+	<jc>// Serialize to ATOM/XML</jc>
+	String atomXml = s.serialize(feed);
+		</p>
+		
+		<h6 class='figure'>Results</h6>
+		<p class='bcode'>
+	<xt>&lt;feed</xt> 
+			<xa>xmlns</xa>=<xs>'http://www.w3.org/2005/Atom/'</xs> 
+			<xa>xmlns:xml</xa>=<xs>'http://www.w3.org/XML/1998/namespace'</xs> 
+			<xa>xmlns:xsi</xa>=<xs>'http://www.w3.org/2001/XMLSchema-instance'</xs><xt>&gt;</xt>
+		<xt>&lt;id&gt;</xt>
+			tag:juneau.apache.org
+		<xt>&lt;/id&gt;</xt>
+		<xt>&lt;link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/'</xs> <xa>rel</xa>=<xs>'alternate'</xs> <xa>type</xa>=<xs>'text/html'</xs> <xa>hreflang</xa>=<xs>'en'</xs><xt>/&gt;</xt>
+		<xt>&lt;link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/feed.atom'</xs> <xa>rel</xa>=<xs>'self'</xs> <xa>type</xa>=<xs>'application/atom+xml'</xs><xt>/&gt;</xt>
+		<xt>&lt;title</xt> <xa>type</xa>=<xs>'text'</xs><xt>&gt;</xt>
+			Juneau ATOM specification
+		<xt>&lt;/title&gt;</xt>
+		<xt>&lt;updated&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/updated&gt;</xt>
+		<xt>&lt;generator</xt> <xa>uri</xa>=<xs>'http://juneau.apache.org/'</xs> <xa>version</xa>=<xs>'1.0'</xs><xt>&gt;</xt>
+			Juneau
+		<xt>&lt;/generator&gt;</xt>
+		<xt>&lt;subtitle</xt> <xa>type</xa>=<xs>'html'</xs><xt>&gt;</xt>
+			Describes &amp;lt;em&amp;stuff&amp;lt;/em&amp;gt; about Juneau
+		<xt>&lt;/subtitle&gt;</xt>
+		<xt>&lt;entry&gt;</xt>
+			<xt>&lt;author&gt;</xt>
+				<xt>&lt;name&gt;</xt>Jane Smith<xt>&lt;/name&gt;</xt>
+				<xt>&lt;uri&gt;</xt>http://juneau.apache.org/<xt>&lt;/uri&gt;</xt>
+				<xt>&lt;email&gt;</xt>janesmith@apache.org<xt>&lt;/email&gt;</xt>
+			<xt>&lt;/author&gt;</xt>
+			<xt>&lt;contributor&gt;</xt>
+				<xt>&lt;name&gt;</xt>John Smith<xt>&lt;/name&gt;</xt>
+			<xt>&lt;/contributor&gt;</xt>
+			<xt>&lt;id&gt;</xt>
+				tag:juneau.apache.org
+			<xt>&lt;/id&gt;</xt>
+			<xt>&lt;link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/juneau.atom'</xs> <xa>rel</xa>=<xs>'alternate'</xs> <xa>type</xa>=<xs>'text/html'</xs><xt>/&gt;</xt>
+			<xt>&lt;link</xt> <xa>href</xa>=<xs>'http://juneau.apache.org/audio/juneau_podcast.mp3'</xs> <xa>rel</xa>=<xs>'enclosure'</xs> <xa>type</xa>=<xs>'audio/mpeg'</xs> <xa>length</xa>=<xs>'12345'</xs><xt>/&gt;</xt>
+			<xt>&lt;title&gt;</xt>
+				Juneau ATOM specification snapshot
+			<xt>&lt;/title&gt;</xt>
+			<xt>&lt;updated&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/updated&gt;</xt>
+			<xt>&lt;content</xt> <xa>xml:base</xa>=<xs>'http://www.apache.org/'</xs> <xa>xml:lang</xa>=<xs>'en'</xs> <xa>type</xa>=<xs>'xhtml'</xs><xt>&gt;</xt>
+				<xt>&lt;div</xt> <xa>xmlns</xa>=<xs>"http://www.w3.org/1999/xhtml"</xs><xt>&gt;</xt><xt>&lt;p&gt;</xt><xt>&lt;i&gt;</xt>[Update: Juneau supports ATOM.]<xt>&lt;/i&gt;</xt><xt>&lt;/p&gt;</xt><xt>&lt;/div&gt;</xt>
+			<xt>&lt;/content&gt;</xt>
+			<xt>&lt;published&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/published&gt;</xt>
+		<xt>&lt;/entry&gt;</xt>
+	<xt>&lt;/feed&gt;</xt>
+		</p>		
+	
+	
+		<!-- ======================================================================================================== -->
+		<a id="AtomJson"></a>
+		<h4 class='topic' onclick='toggle(this)'>1.1.1 - ATOM/JSON</h4>
+		<div class='topic'>
+			<p>
+				The {@link org.apache.juneau.json.JsonSerializer} class can also be used to produce ATOM in JSON format.
+			</p>
+
+			<h6 class='figure'>ATOM/JSON example</h6>
+			<p class='bcode'>
+	<jc>// Get JSON serializer with readable output.</jc>
+	JsonSerializer s = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>;
+
+	<jc>// Serialize to ATOM/JSON</jc>
+	String atomJson = s.serialize(feed);
+			</p>
+		
+			<h6 class='figure'>Results</h6>
+			<p class='bcode'>
+	{
+		id: {
+			text: <js>'tag:juneau.apache.org'</js>
+		}, 
+		links: [
+			{
+				href: <js>'http://juneau.apache.org/'</js>, 
+				rel: <js>'alternate'</js>, 
+				type: <js>'text/html'</js>, 
+				hreflang: <js>'en'</js>
+			}, 
+			{
+				href: <js>'http://juneau.apache.org/juneau.atom'</js>, 
+				rel: <js>'self'</js>, 
+				type: <js>'application/atom+xml'</js>
+			}
+		], 
+		title: {
+			type: <js>'text'</js>, 
+			text: <js>'Juneau ATOM specification'</js>
+		}, 
+		updated: <js>'2016-01-02T03:04:05Z'</js>, 
+		generator: {
+			uri: <js>'http://juneau.apache.org/'</js>, 
+			version: <js>'1.0'</js>, 
+			text: <js>'Juneau'</js>
+		}, 
+		subtitle: {
+			type: <js>'html'</js>, 
+			text: <js>'Describes &lt;em&gt;stuff&lt;/em&gt; about Juneau'</js>
+		}, 
+		entries: [
+			{
+				authors: [
+					{
+						name: <js>'James Bognar'</js>, 
+						uri: <js>'http://juneau.apache.org/'</js>, 
+						email: <js>'jamesbognar@apache.org'</js>
+					}
+				], 
+				contributors: [
+					{
+						name: <js>'Barry M. Caceres'</js>
+					}
+				], 
+				id: {
+					text: <js>'tag:juneau.apache.org'</js>
+				}, 
+				links: [
+					{
+						href: <js>'http://juneau.apache.org/juneau.atom'</js>, 
+						rel: <js>'alternate'</js>, 
+						type: <js>'text/html'</js>
+					}, 
+					{
+						href: <js>'http://juneau.apache.org/audio/juneau_podcast.mp3'</js>, 
+						rel: <js>'enclosure'</js>, 
+						type: <js>'audio/mpeg'</js>, 
+						length: <jk>12345</jk>
+					}
+				], 
+				title: {
+					text: <js>'Juneau ATOM specification snapshot'</js>
+				}, 
+				updated: <js>'2016-01-02T03:04:05Z'</js>, 
+				content: {
+					base: <js>'http://www.apache.org/'</js>, 
+					lang: <js>'en'</js>, 
+					type: <js>'xhtml'</js>, 
+					text: <js>'&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;i&gt;[Update: Juneau supports ATOM.]&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;'</js>
+				}, 
+				published: <js>'2016-01-02T03:04:05Z'</js>
+			}
+		]
+	}
+			</p>
+		</div>	
+		
+
+		<!-- ======================================================================================================== -->
+		<a id="AtomRdfXml"></a>
+		<h4 class='topic' onclick='toggle(this)'>1.1.2 - ATOM/RDF/XML</h4>
+		<div class='topic'>
+			<p>
+				The {@link org.apache.juneau.jena.RdfSerializer} class and subclasses can also be used to produce ATOM 
+				in various RDF formats.
+			</p>
+
+			<h6 class='figure'>ATOM/RDF/XML example</h6>
+			<p class='bcode'>
+	<jc>// Get RDF/XML serializer with readable output.</jc>
+	RdfSerializer s = <jk>new</jk> RdfSerializerBuilder()
+		.xmlabbrev()
+		.ws()
+		.sq()
+		.property(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3)
+		.build();
+
+	<jc>// Serialize to ATOM/RDF/XML</jc>
+	String atomRdfXml = s.serialize(feed);
+			</p>
+			
+			<h6 class='figure'>Results</h6>
+			<p class='bcode'>
+	<xt>&lt;rdf:RDF</xt>
+	    <xa>xmlns:rdf</xa>=<xs>'http://www.w3.org/1999/02/22-rdf-syntax-ns#'</xs>
+	    <xa>xmlns:j</xa>=<xs>'http://www.apache.org/juneau/'</xs>
+	    <xa>xmlns:jp</xa>=<xs>'http://www.apache.org/juneaubp/'</xs>
+	    <xa>xmlns:atom</xa>=<xs>'http://www.w3.org/2005/Atom/'</xs>
+	    <xa>xmlns:j.0</xa>=<xs>'http://www.w3.org/XML/1998/'</xs><xt>&gt;</xt>
+	   <xt>&lt;rdf:Description&gt;</xt>
+	      <xt>&lt;atom:id</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	         <xt>&lt;atom:text&gt;</xt>tag:juneau.apache.org<xt>&lt;/atom:text&gt;</xt>
+	      <xt>&lt;/atom:id&gt;</xt>
+	      <xt>&lt;atom:links&gt;</xt>
+	         <xt>&lt;rdf:Seq&gt;</xt>
+	            <xt>&lt;rdf:li</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	               <xt>&lt;atom:href&gt;</xt>http://juneau.apache.org/<xt>&lt;/atom:href&gt;</xt>
+	               <xt>&lt;atom:rel&gt;</xt>alternate<xt>&lt;/atom:rel&gt;</xt>
+	               <xt>&lt;atom:type&gt;</xt>text/html<xt>&lt;/atom:type&gt;</xt>
+	               <xt>&lt;atom:hreflang&gt;</xt>en<xt>&lt;/atom:hreflang&gt;</xt>
+	            <xt>&lt;/rdf:li&gt;</xt>
+	            <xt>&lt;rdf:li</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	               <xt>&lt;atom:href&gt;</xt>http://juneau.apache.org/feed.atom<xt>&lt;/atom:href&gt;</xt>
+	               <xt>&lt;atom:rel&gt;</xt>self<xt>&lt;/atom:rel&gt;</xt>
+	               <xt>&lt;atom:type&gt;</xt>application/atom+xml<xt>&lt;/atom:type&gt;</xt>
+	            <xt>&lt;/rdf:li&gt;</xt>
+	         <xt>&lt;/rdf:Seq&gt;</xt>
+	      <xt>&lt;/atom:links&gt;</xt>
+	      <xt>&lt;atom:title</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	         <xt>&lt;atom:type&gt;</xt>text<xt>&lt;/atom:type&gt;</xt>
+	         <xt>&lt;atom:text&gt;</xt>Juneau ATOM specification<xt>&lt;/atom:text&gt;</xt>
+	      <xt>&lt;/atom:title&gt;</xt>
+	      <xt>&lt;atom:updated&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/atom:updated&gt;</xt>
+	      <xt>&lt;atom:generator</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	         <xt>&lt;atom:uri</xt> <xa>rdf:resource</xa>=<xs>'http://juneau.apache.org/'</xs><xt>/&gt;</xt>
+	         <xt>&lt;atom:version&gt;</xt>1.0<xt>&lt;/atom:version&gt;</xt>
+	         <xt>&lt;atom:text&gt;</xt>Juneau<xt>&lt;/atom:text&gt;</xt>
+	      <xt>&lt;/atom:generator&gt;</xt>
+	      <xt>&lt;atom:subtitle</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	         <xt>&lt;atom:type&gt;</xt>html<xt>&lt;/atom:type&gt;</xt>
+	         <xt>&lt;atom:text&gt;</xt>A &amp;lt;em&amp;gt;lot&amp;lt;/em&amp;gt; of effort went into making this effortless<xt>&lt;/atom:text&gt;</xt>
+	      <xt>&lt;/atom:subtitle&gt;</xt>
+	      <xt>&lt;atom:entries&gt;</xt>
+	         <xt>&lt;rdf:Seq&gt;</xt>
+	            <xt>&lt;rdf:li</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	               <xt>&lt;atom:authors&gt;</xt>
+	                  <xt>&lt;rdf:Seq&gt;</xt>
+	                     <xt>&lt;rdf:li</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	                        <xt>&lt;atom:name&gt;</xt>James Bognar<xt>&lt;/atom:name&gt;</xt>
+	                        <xt>&lt;atom:uri</xt> <xa>rdf:resource</xa>=<xs>'http://juneau.apache.org/'</xs><xt>/&gt;</xt>
+	                        <xt>&lt;atom:email&gt;</xt>james.bognar@salesforce.com<xt>&lt;/atom:email&gt;</xt>
+	                     <xt>&lt;/rdf:li&gt;</xt>
+	                  <xt>&lt;/rdf:Seq&gt;</xt>
+	               <xt>&lt;/atom:authors&gt;</xt>
+	               <xt>&lt;atom:contributors&gt;</xt>
+	                  <xt>&lt;rdf:Seq&gt;</xt>
+	                     <xt>&lt;rdf:li</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	                        <xt>&lt;atom:name&gt;</xt>Barry M. Caceres<xt>&lt;/atom:name&gt;</xt>
+	                     <xt>&lt;/rdf:li&gt;</xt>
+	                  <xt>&lt;/rdf:Seq&gt;</xt>
+	               <xt>&lt;/atom:contributors&gt;</xt>
+	               <xt>&lt;atom:id</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	                  <xt>&lt;atom:text&gt;</xt>tag:juneau.apache.org<xt>&lt;/atom:text&gt;</xt>
+	               <xt>&lt;/atom:id&gt;</xt>
+	               <xt>&lt;atom:links&gt;</xt>
+	                  <xt>&lt;rdf:Seq&gt;</xt>
+	                     <xt>&lt;rdf:li</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	                        <xt>&lt;atom:href&gt;</xt>http://juneau.apache.org/juneau.atom<xt>&lt;/atom:href&gt;</xt>
+	                        <xt>&lt;atom:rel&gt;</xt>alternate<xt>&lt;/atom:rel&gt;</xt>
+	                        <xt>&lt;atom:type&gt;</xt>text/html<xt>&lt;/atom:type&gt;</xt>
+	                     <xt>&lt;/rdf:li&gt;</xt>
+	                     <xt>&lt;rdf:li</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	                        <xt>&lt;atom:href&gt;</xt>http://juneau.apache.org/audio/juneau_podcast.mp3<xt>&lt;/atom:href&gt;</xt>
+	                        <xt>&lt;atom:rel&gt;</xt>enclosure<xt>&lt;/atom:rel&gt;</xt>
+	                        <xt>&lt;atom:type&gt;</xt>audio/mpeg<xt>&lt;/atom:type&gt;</xt>
+	                        <xt>&lt;atom:length&gt;</xt>12345<xt>&lt;/atom:length&gt;</xt>
+	                     <xt>&lt;/rdf:li&gt;</xt>
+	                  <xt>&lt;/rdf:Seq&gt;</xt>
+	               <xt>&lt;/atom:links&gt;</xt>
+	               <xt>&lt;atom:title</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	                  <xt>&lt;atom:text&gt;</xt>Juneau ATOM specification snapshot<xt>&lt;/atom:text&gt;</xt>
+	               <xt>&lt;/atom:title&gt;</xt>
+	               <xt>&lt;atom:updated&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/atom:updated&gt;</xt>
+	               <xt>&lt;atom:content</xt> <xa>rdf:parseType</xa>=<xs>'Resource'</xs><xt>&gt;</xt>
+	                  <xt>&lt;j.0:namespacebase</xt> <xa>rdf:resource</xa>=<xs>'http://www.apache.org/'</xs><xt>/&gt;</xt>
+	                  <xt>&lt;j.0:namespacelang&gt;</xt>en<xt>&lt;/j.0:namespacelang&gt;</xt>
+	                  <xt>&lt;atom:type&gt;</xt>xhtml<xt>&lt;/atom:type&gt;</xt>
+	                  <xt>&lt;atom:text&gt;</xt>&amp;lt;div xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&amp;lt;p&amp;gt;&amp;lt;i&amp;gt;[Update: Juneau supports ATOM.]&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;<xt>&lt;/atom:text&gt;</xt>
+	               <xt>&lt;/atom:content&gt;</xt>
+	               <xt>&lt;atom:published&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/atom:published&gt;</xt>
+	            <xt>&lt;/rdf:li&gt;</xt>
+	         <xt>&lt;/rdf:Seq&gt;</xt>
+	      <xt>&lt;/atom:entries&gt;</xt>
+	   <xt>&lt;/rdf:Description&gt;</xt>
+	<xt>&lt;/rdf:RDF&gt;</xt>
+			</p>
+		</div>
+		
+		
+		<!-- ======================================================================================================== -->
+		<a id="AtomHtml"></a>
+		<h4 class='topic' onclick='toggle(this)'>1.1.3 - ATOM/HTML</h4>
+		<div class='topic'>
+			<p>
+				The {@link org.apache.juneau.html.HtmlSerializer} class can be used to produce ATOM in HTML format.
+			</p>
+			<p>
+				The following is the output produced by the <code>AtomFeedResource</code> in the <code>org.apache.juneau.sample.war</code> project:
+			</p>
+			
+			<h6 class='figure'>Example ATOM/HTML results</h6>
+			<img class='bordered' src='doc-files/Example_HTML.png'>	
+		</div>
+	</div>
+	
+
+	<!-- ======================================================================================================== -->
+	<a id="Parse"></a>
+	<h3 class='topic' onclick='toggle(this)'>1.2 - Parsing ATOM feeds</h3>
+	<div class='topic'>
+		<p>
+			Use the {@link org.apache.juneau.xml.XmlParser} to convert ATOM/XML feeds back into their original POJOs:
+		</p>
+		<p class='bcode'>
+			<jc>// Create a serializer with readable output with namespaces</jc>
+			XmlSerializer s = XmlSerializer.<jsf>DEFAULT_SQ_READABLE</jsf>;
+
+			<jc>// Serialize to ATOM/XML</jc>
+			String atomXml = s.serialize(feed);
+
+			<jc>// Get an XML parser to convert it back into a POJO</jc>
+			XmlParser p = XmlParser.<jsf>DEFAULT</jsf>;
+			
+			<jc>// Convert the XML back into a POJO</jc>
+			Feed feed2 = p.parse(atomXml, Feed.<jk>class</jk>);
+		</p>
+		<p>
+			ATOM Feed objects can also be constructed from the other media types using the appropriate parsers.
+		</p>
+	</div>
+
+</div>
+<p align="center"><i><b>*** fín ***</b></i></p>
+
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/Column.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/Column.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/Column.java
new file mode 100644
index 0000000..a86ba4d
--- /dev/null
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/Column.java
@@ -0,0 +1,161 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.dto.cognos;
+
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.transform.*;
+import org.apache.juneau.xml.annotation.*;
+
+/**
+ * Represents a meta-data column in a Cognos dataset.
+ *
+ * <p>
+ * When serialized to XML, creates the following construct:
+ * <p class='bcode'>
+ * 	<xt>&lt;item</xt> <xa>name</xa>=<xs>'name'</xs> <xa>type</xa>=<xs>'xs:String'</xs> <xa>length</xa>=<xs>'255'</xs>/&gt;
+ * </p>
+ */
+@SuppressWarnings({"rawtypes","hiding"})
+@Bean(typeName="item", properties="name,type,length")
+public class Column {
+
+	private String name, type;
+	private Integer length;
+	PojoSwap pojoSwap;
+
+	/** Bean constructor. */
+	public Column() {}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param name The column name.
+	 * @param type The column type (e.g. <js>"xs:String"</js>).
+	 */
+	public Column(String name, String type) {
+		this(name, type, null);
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param name The column name.
+	 * @param type The column type (e.g. <js>"xs:String"</js>).
+	 * @param length The column length (e.g. <code>255</code>).
+	 */
+	public Column(String name, String type, Integer length) {
+		this.name = name;
+		this.type = type;
+		this.length = length;
+	}
+
+	/**
+	 * Associates a POJO swap with this column.
+	 *
+	 * <p>
+	 * Typically used to define columns that don't exist on the underlying beans being serialized.
+	 *
+	 * <p>
+	 * For example, the <code>AddressBookResource</code> sample defined the following POJO swap to define an additional
+	 * <js>"numAddresses"</js> column even though no such property exists on the serialized beans.
+	 * <p class='bcode'>
+	 * 	Column c = <jk>new</jk> Column(<js>"numAddresses"</js>, <js>"xs:int"</js>)
+	 * 		.addPojoSwaps(
+	 * 			<jk>new</jk> PojoSwap&lt;Person,Integer&gt;() {
+	 * 				<ja>@Override</ja>
+	 * 				<jk>public</jk> Integer swap(Person p) {
+	 * 					<jk>return</jk> p.<jf>addresses</jf>.size();
+	 * 				}
+	 * 			}
+	 * 		);
+	 * </p>
+	 *
+	 * @param pojoSwap The POJO swap to associate with the column.
+	 * @return This object (for method chaining).
+	 */
+	public Column addPojoSwap(PojoSwap pojoSwap) {
+		this.pojoSwap = pojoSwap;
+		return this;
+	}
+
+
+	//--------------------------------------------------------------------------------
+	// Bean properties
+	//--------------------------------------------------------------------------------
+
+	/**
+	 * Bean property getter:  <property>name</property>.
+	 *
+	 * @return The value of the <property>name</property> property on this bean, or <jk>null</jk> if it is not set.
+	 */
+	@Xml(format=XmlFormat.ATTR)
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * Bean property setter:  <property>name</property>.
+	 *
+	 * @param name The new value for the <property>name</property> property on this bean.
+	 * @return This object (for method chaining).
+	 */
+	public Column setName(String name) {
+		this.name = name;
+		return this;
+	}
+
+	/**
+	 * Bean property getter:  <property>type</property>.
+	 *
+	 * @return The value of the <property>type</property> property on this bean, or <jk>null</jk> if it is not set.
+	 */
+	@Xml(format=XmlFormat.ATTR)
+	public String getType() {
+		return type;
+	}
+
+	/**
+	 * Bean property setter:  <property>type</property>.
+	 *
+	 * @param type The new value for the <property>type</property> property on this bean.
+	 * @return This object (for method chaining).
+	 */
+	public Column setType(String type) {
+		this.type = type;
+		return this;
+	}
+
+	/**
+	 * Bean property getter:  <property>length</property>.
+	 *
+	 * @return The value of the <property>length</property> property on this bean, or <jk>null</jk> if length is not
+	 * applicable for the specified type.
+	 */
+	@Xml(format=XmlFormat.ATTR)
+	public Integer getLength() {
+		return length;
+	}
+
+	/**
+	 * Bean property setter:  <property>length</property>.
+	 *
+	 * @param length The new value for the <property>length</property> property on this bean.
+	 * Can be <jk>null</jk> if length is not applicable for the specified type.
+	 * @return This object (for method chaining).
+	 */
+	public Column setLength(Integer length) {
+		this.length = length;
+		return this;
+	}
+}
+