This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new c661849  Atom feed DTO refactoring.
c661849 is described below

commit c6618499d849c80914ec38baa1210752bc6614b8
Author: JamesBognar <[email protected]>
AuthorDate: Sat Jan 30 11:55:51 2021 -0500

    Atom feed DTO refactoring.
---
 TODO.txt                                           |  15 +-
 .../java/org/apache/juneau/dto/atom/Category.java  | 143 +++++--
 .../java/org/apache/juneau/dto/atom/Common.java    |  96 ++++-
 .../org/apache/juneau/dto/atom/CommonEntry.java    | 431 +++++++++++++++++----
 .../java/org/apache/juneau/dto/atom/Content.java   |  49 ++-
 .../java/org/apache/juneau/dto/atom/Entry.java     | 216 +++++++++--
 .../main/java/org/apache/juneau/dto/atom/Feed.java | 251 ++++++++++--
 .../java/org/apache/juneau/dto/atom/Generator.java | 142 +++++--
 .../main/java/org/apache/juneau/dto/atom/Icon.java |  47 ++-
 .../main/java/org/apache/juneau/dto/atom/Id.java   |  49 ++-
 .../main/java/org/apache/juneau/dto/atom/Link.java | 284 ++++++++++++--
 .../main/java/org/apache/juneau/dto/atom/Logo.java |  48 ++-
 .../java/org/apache/juneau/dto/atom/Person.java    | 144 +++++--
 .../java/org/apache/juneau/dto/atom/Source.java    | 204 ++++++++--
 .../main/java/org/apache/juneau/dto/atom/Text.java | 100 ++++-
 15 files changed, 1852 insertions(+), 367 deletions(-)

diff --git a/TODO.txt b/TODO.txt
index 48941cd..54136aa 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,8 +1,15 @@
 RestCall.exception(...) should accumulate exceptions, not just one.
 Replace RestInfoProvider with Swagger.
-Rework RestCallLogger.
-x @Rest(path) should allow you to match against file name (e.g. "favicon.ico")
+xxx Rework RestCallLogger.
+xxx @Rest(path) should allow you to match against file name (e.g. 
"favicon.ico")
 Replace @Rest(paths) with just @Rest(path)
-Auto-injection into REST interfaces.
+Auto-injection into REST interfaces (via providers?)
 ClassInfo improvements to getMethod (e.g. getMethodExact vs getMethod).
-Re-add @PathRemainder annotation.
\ No newline at end of file
+Re-add @PathRemainder annotation.
+xxx Replace RestResourceResolver with ObjectFactory (or something already 
predefined?).
+xxx Remove @Rest(properties) and all that stuff.
+Add a createConfig() method on RestContext.
+Thrown NotFound causes - javax.servlet.ServletException: Invalid method 
response: 200
+
+Instead of PropertyStores, builders should produce settings which are passed 
to contexts.
+
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Category.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Category.java
index 880620f..2141a66 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Category.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Category.java
@@ -17,8 +17,8 @@ import static org.apache.juneau.xml.annotation.XmlFormat.*;
 
 import java.net.*;
 import java.net.URI;
+import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.xml.annotation.*;
 
@@ -67,7 +67,12 @@ public class Category extends Common {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * @return The category term.
+        * Bean property getter:  <property>term</property>.
+        *
+        * <p>
+        * The category term.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public String getTerm() {
@@ -75,21 +80,55 @@ public class Category extends Common {
        }
 
        /**
-        * Sets the category term.
+        * Bean property setter:  <property>term</property>.
         *
-        * @param term The category term.
+        * <p>
+        * The category term.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       @Xml(format=ATTR)
+       public void setTerm(String value) {
+               this.term = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>term</property>.
+        *
+        * <p>
+        * The category term.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> term() {
+               return Optional.ofNullable(term);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>term</property>.
+        *
+        * <p>
+        * The category term.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("term")
-       public Category term(String term) {
-               this.term = term;
+       public Category term(String value) {
+               setTerm(value);
                return this;
        }
 
        /**
-        * Returns the category scheme.
+        * Bean property getter:  <property>scheme</property>.
         *
-        * @return The category scheme.
+        * <p>
+        * The category scheme.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public URI getScheme() {
@@ -97,28 +136,58 @@ public class Category extends Common {
        }
 
        /**
-        * Sets the category scheme.
+        * Bean property setter:  <property>scheme</property>.
+        *
+        * <p>
+        * The category scheme.
         *
         * <p>
         * The value can be of any of the following types: {@link URI}, {@link 
URL}, {@link String}.
         * Strings must be valid URIs.
         *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setScheme(Object value) {
+               this.scheme = toURI(value);
+       }
+
+       /**
+        * Bean property fluent getter:  <property>scheme</property>.
+        *
+        * <p>
+        * The category scheme.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<URI> scheme() {
+               return Optional.ofNullable(scheme);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>scheme</property>.
+        *
         * <p>
-        * URIs defined by {@link UriResolver} can be used for values.
+        * The category scheme.
         *
-        * @param scheme The category scheme.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("scheme")
-       public Category scheme(Object scheme) {
-               this.scheme = toURI(scheme);
+       public Category scheme(Object value) {
+               setScheme(value);
                return this;
        }
 
        /**
-        * Returns the category label.
+        * Bean property getter:  <property>label</property>.
+        *
+        * <p>
+        * The category label.
         *
-        * @return The category label.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public String getLabel() {
@@ -126,14 +195,44 @@ public class Category extends Common {
        }
 
        /**
-        * Sets the category label.
+        * Bean property setter:  <property>scheme</property>.
+        *
+        * <p>
+        * The category label.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setLabel(String value) {
+               this.label = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>label</property>.
+        *
+        * <p>
+        * The category label.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> label() {
+               return Optional.ofNullable(label);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>label</property>.
+        *
+        * <p>
+        * The category label.
         *
-        * @param label The category label.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("label")
-       public Category label(String label) {
-               this.label = label;
+       public Category label(String value) {
+               setLabel(value);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Common.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Common.java
index 9bc9d4b..526eb3e 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Common.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Common.java
@@ -17,9 +17,8 @@ import static org.apache.juneau.xml.annotation.XmlFormat.*;
 
 import java.net.*;
 import java.net.URI;
+import java.util.*;
 
-import org.apache.juneau.*;
-import org.apache.juneau.annotation.*;
 import org.apache.juneau.xml.*;
 import org.apache.juneau.xml.annotation.*;
 
@@ -50,9 +49,12 @@ public abstract class Common {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the uri base of this object.
+        * Bean property getter:  <property>base</property>.
         *
-        * @return The URI base of this object.
+        * <p>
+        * The URI base of this object.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(prefix="xml", format=ATTR)
        public URI getBase() {
@@ -60,28 +62,58 @@ public abstract class Common {
        }
 
        /**
-        * Sets the URI base of this object.
+        * Bean property setter:  <property>term</property>.
+        *
+        * <p>
+        * The URI base of this object.
         *
         * <p>
         * The value can be of any of the following types: {@link URI}, {@link 
URL}, {@link String}.
         * Strings must be valid URIs.
         *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setBase(Object value) {
+               this.base = toURI(value);
+       }
+
+       /**
+        * Bean property fluent getter:  <property>base</property>.
+        *
         * <p>
-        * URIs defined by {@link UriResolver} can be used for values.
+        * The URI base of this object.
         *
-        * @param base The URI base of this object.
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<URI> base() {
+               return Optional.ofNullable(base);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>base</property>.
+        *
+        * <p>
+        * The URI base of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("base")
-       public Common base(Object base) {
-               this.base = toURI(base);
+       public Common base(Object value) {
+               setBase(value);
                return this;
        }
 
        /**
-        * Returns the language of this object.
+        * Bean property getter:  <property>lang</property>.
+        *
+        * <p>
+        * The language of this object.
         *
-        * @return The language of this object.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(prefix="xml", format=ATTR)
        public String getLang() {
@@ -89,14 +121,44 @@ public abstract class Common {
        }
 
        /**
-        * Sets the language of this object.
+        * Bean property setter:  <property>lang</property>.
+        *
+        * <p>
+        * The language of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setLang(String value) {
+               this.lang = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>lang</property>.
+        *
+        * <p>
+        * The language of this object.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> lang() {
+               return Optional.ofNullable(lang);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>lang</property>.
+        *
+        * <p>
+        * The language of this object.
         *
-        * @param lang The language of this object.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("lang")
-       public Common lang(String lang) {
-               this.lang = lang;
+       public Common lang(String value) {
+               setLang(value);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/CommonEntry.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/CommonEntry.java
index 0c6179d..9ff0d3a 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/CommonEntry.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/CommonEntry.java
@@ -17,7 +17,6 @@ import static org.apache.juneau.xml.annotation.XmlFormat.*;
 
 import java.util.*;
 
-import org.apache.juneau.annotation.*;
 import org.apache.juneau.xml.annotation.*;
 
 /**
@@ -71,9 +70,12 @@ public class CommonEntry extends Common {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the list of authors for this object.
+        * Bean property getter:  <property>authors</property>.
         *
-        * @return The list of authors for this object.
+        * <p>
+        * The list of authors for this object.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=COLLAPSED, childName="author")
        public Person[] getAuthors() {
@@ -81,21 +83,54 @@ public class CommonEntry extends Common {
        }
 
        /**
-        * Sets the list of authors for this object.
+        * Bean property setter:  <property>authors</property>.
+        *
+        * <p>
+        * The list of authors for this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setAuthors(Person[] value) {
+               this.authors = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>authors</property>.
+        *
+        * <p>
+        * The list of authors for this object.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Person[]> authors() {
+               return Optional.ofNullable(authors);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>authors</property>.
+        *
+        * <p>
+        * The list of authors for this object.
         *
-        * @param authors The list of authors for this object.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("authors")
-       public CommonEntry authors(Person...authors) {
-               this.authors = authors;
+       public CommonEntry authors(Person...value) {
+               setAuthors(value);
                return this;
        }
 
        /**
-        * Returns the list of categories of this object.
+        * Bean property getter:  <property>categories</property>.
         *
-        * @return The list of categories of this object.
+        * <p>
+        * The list of categories of this object.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=COLLAPSED, childName="category")
        public Category[] getCategories() {
@@ -103,21 +138,54 @@ public class CommonEntry extends Common {
        }
 
        /**
-        * Sets the list of categories of this object.
+        * Bean property setter:  <property>categories</property>.
+        *
+        * <p>
+        * The list of categories of this object.
         *
-        * @param categories The list of categories of this object.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setCategories(Category[] value) {
+               this.categories = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>categories</property>.
+        *
+        * <p>
+        * The list of categories of this object.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Category[]> categories() {
+               return Optional.ofNullable(categories);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>categories</property>.
+        *
+        * <p>
+        * The list of categories of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("categories")
-       public CommonEntry categories(Category...categories) {
-               this.categories = categories;
+       public CommonEntry categories(Category...value) {
+               setCategories(value);
                return this;
        }
 
        /**
-        * Returns the list of contributors of this object.
+        * Bean property getter:  <property>contributors</property>.
         *
-        * @return The list of contributors of this object.
+        * <p>
+        * The list of contributors of this object.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=COLLAPSED, childName="contributor")
        public Person[] getContributors() {
@@ -125,53 +193,124 @@ public class CommonEntry extends Common {
        }
 
        /**
-        * Sets the list of contributors of this object.
+        * Bean property setter:  <property>contributors</property>.
+        *
+        * <p>
+        * The list of contributors of this object.
         *
-        * @param contributors The list of contributors of this object.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setContributors(Person[] value) {
+               this.contributors = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>contributors</property>.
+        *
+        * <p>
+        * The list of contributors of this object.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Person[]> contributors() {
+               return Optional.ofNullable(contributors);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>contributors</property>.
+        *
+        * <p>
+        * The list of contributors of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("contributors")
-       public CommonEntry contributors(Person...contributors) {
-               this.contributors = contributors;
+       public CommonEntry contributors(Person...value) {
+               setContributors(value);
                return this;
        }
 
        /**
-        * Returns the ID of this object.
+        * Bean property getter:  <property>id</property>.
+        *
+        * <p>
+        * The ID of this object.
         *
-        * @return The ID of this object.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Id getId() {
                return id;
        }
 
        /**
-        * Sets the ID of this object.
+        * Bean property setter:  <property>id</property>.
         *
-        * @param id The ID of this object.
+        * <p>
+        * The ID of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setId(Id value) {
+               this.id = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>id</property>.
+        *
+        * <p>
+        * The ID of this object.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Id> id() {
+               return Optional.ofNullable(id);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>id</property>.
+        *
+        * <p>
+        * The ID of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("id")
-       public CommonEntry id(Id id) {
-               this.id = id;
+       public CommonEntry id(Id value) {
+               setId(value);
                return this;
        }
 
        /**
-        * Sets the ID of this object.
+        * Bean property fluent setter:  <property>id</property>.
         *
-        * @param id The ID of this object.
+        * <p>
+        * The ID of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       public CommonEntry id(String id) {
-               this.id = new Id(id);
+       public CommonEntry id(String value) {
+               setId(new Id(value));
                return this;
        }
 
        /**
-        * Returns the list of links of this object.
+        * Bean property getter:  <property>links</property>.
+        *
+        * <p>
+        * The list of links of this object.
         *
-        * @return The list of links of this object.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=COLLAPSED)
        public Link[] getLinks() {
@@ -179,111 +318,253 @@ public class CommonEntry extends Common {
        }
 
        /**
-        * Sets the list of links of this object.
+        * Bean property setter:  <property>links</property>.
+        *
+        * <p>
+        * The list of links of this object.
         *
-        * @param links The list of links of this object.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setLinks(Link[] value) {
+               this.links = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>links</property>.
+        *
+        * <p>
+        * The list of links of this object.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Link[]> links() {
+               return Optional.ofNullable(links);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>links</property>.
+        *
+        * <p>
+        * The list of links of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("links")
-       public CommonEntry links(Link...links) {
-               this.links = links;
+       public CommonEntry links(Link...value) {
+               setLinks(value);
                return this;
        }
 
        /**
-        * Returns the rights statement of this object.
+        * Bean property getter:  <property>rights</property>.
         *
-        * @return The rights statement of this object.
+        * <p>
+        * The rights statement of this object.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Text getRights() {
                return rights;
        }
 
        /**
-        * Sets the rights statement of this object.
+        * Bean property setter:  <property>rights</property>.
+        *
+        * <p>
+        * The rights statement of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setRights(Text value) {
+               this.rights = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>rights</property>.
         *
-        * @param rights The rights statement of this object.
+        * <p>
+        * The rights statement of this object.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Text> rights() {
+               return Optional.ofNullable(rights);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>rights</property>.
+        *
+        * <p>
+        * The rights statement of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("rights")
-       public CommonEntry rights(Text rights) {
-               this.rights = rights;
+       public CommonEntry rights(Text value) {
+               setRights(value);
                return this;
        }
 
        /**
-        * Sets the rights statement of this object.
+        * Bean property fluent setter:  <property>rights</property>.
+        *
+        * <p>
+        * The rights statement of this object.
         *
-        * @param rights The rights statement of this object.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       public CommonEntry rights(String rights) {
-               this.rights = new Text().text(rights);
+       public CommonEntry rights(String value) {
+               setRights(new Text().text(value));
                return this;
        }
 
        /**
-        * Returns the title of this object.
+        * Bean property getter:  <property>title</property>.
         *
-        * @return The title of this object.
+        * <p>
+        * The title of this object.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Text getTitle() {
                return title;
        }
 
        /**
-        * Sets the title of this object.
+        * Bean property setter:  <property>title</property>.
         *
-        * @param title The title of this object.
+        * <p>
+        * The title of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setTitle(Text value) {
+               this.title = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>title</property>.
+        *
+        * <p>
+        * The title of this object.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Text> title() {
+               return Optional.ofNullable(title);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>title</property>.
+        *
+        * <p>
+        * The title of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("title")
-       public CommonEntry title(Text title) {
-               this.title = title;
+       public CommonEntry title(Text value) {
+               setTitle(value);
                return this;
        }
 
        /**
-        * Sets the title of this object.
+        * Bean property fluent setter:  <property>title</property>.
         *
-        * @param title The title of this object.
+        * <p>
+        * The title of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       public CommonEntry title(String title) {
-               this.title = new Text().text(title);
+       public CommonEntry title(String value) {
+               setTitle(new Text().text(value));
                return this;
        }
 
        /**
-        * Returns the update timestamp of this object.
+        * Bean property getter:  <property>updated</property>.
+        *
+        * <p>
+        * The update timestamp of this object.
         *
-        * @return The update timestamp of this object.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Calendar getUpdated() {
                return updated;
        }
 
        /**
-        * Sets the update timestamp of this object.
+        * Bean property setter:  <property>updated</property>.
         *
-        * @param updated The update timestamp of this object.
+        * <p>
+        * The update timestamp of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setUpdated(Calendar value) {
+               this.updated = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>updated</property>.
+        *
+        * <p>
+        * The update timestamp of this object.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Calendar> updated() {
+               return Optional.ofNullable(updated);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>updated</property>.
+        *
+        * <p>
+        * The update timestamp of this object.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("updated")
-       public CommonEntry updated(Calendar updated) {
-               this.updated = updated;
+       public CommonEntry updated(Calendar value) {
+               setUpdated(value);
                return this;
        }
-
        /**
-        * Sets the update timestamp of this object.
+        * Bean property fluent setter:  <property>updated</property>.
+        *
+        * <p>
+        * The update timestamp of this object.
         *
-        * @param updated The update timestamp of this object in ISO8601 format.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("updated")
-       public CommonEntry updated(String updated) {
-               this.updated = parseDateTime(updated);
+       public CommonEntry updated(String value) {
+               setUpdated(parseDateTime(value));
                return this;
        }
 }
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Content.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Content.java
index b5f569b..3706afe 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Content.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Content.java
@@ -17,9 +17,8 @@ import static org.apache.juneau.xml.annotation.XmlFormat.*;
 
 import java.net.*;
 import java.net.URI;
+import java.util.*;
 
-import org.apache.juneau.*;
-import org.apache.juneau.annotation.*;
 import org.apache.juneau.xml.annotation.*;
 
 /**
@@ -94,9 +93,12 @@ public class Content extends Text {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the source URI.
+        * Bean property getter:  <property>src</property>.
         *
-        * @return the source URI.
+        * <p>
+        * The source URI.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public URI getSrc() {
@@ -104,21 +106,48 @@ public class Content extends Text {
        }
 
        /**
-        * Sets the source URI.
+        * Bean property setter:  <property>src</property>.
+        *
+        * <p>
+        * The source URI.
         *
         * <p>
         * The value can be of any of the following types: {@link URI}, {@link 
URL}, {@link String}.
         * Strings must be valid URIs.
         *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setSrc(Object value) {
+               this.src = toURI(value);
+       }
+
+       /**
+        * Bean property fluent getter:  <property>src</property>.
+        *
+        * <p>
+        * The source URI.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<URI> src() {
+               return Optional.ofNullable(src);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>src</property>.
+        *
         * <p>
-        * URIs defined by {@link UriResolver} can be used for values.
+        * The source URI.
         *
-        * @param src The source URI.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("src")
-       public Content src(Object src) {
-               this.src = toURI(src);
+       public Content src(Object value) {
+               setSrc(value);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Entry.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Entry.java
index 8f6ea84..f91a0d1 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Entry.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Entry.java
@@ -86,110 +86,250 @@ public class Entry extends CommonEntry {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the content of this entry.
+        * Bean property getter:  <property>content</property>.
         *
-        * @return The content of this entry.
+        * <p>
+        * The content of this entry.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Content getContent() {
                return content;
        }
 
        /**
-        * Sets the content of this entry.
+        * Bean property setter:  <property>content</property>.
+        *
+        * <p>
+        * The content of this entry.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setContent(Content value) {
+               this.content = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>content</property>.
+        *
+        * <p>
+        * The content of this entry.
         *
-        * @param content The content of this entry.
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Content> content() {
+               return Optional.ofNullable(content);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>content</property>.
+        *
+        * <p>
+        * The content of this entry.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("content")
-       public Entry content(Content content) {
-               this.content = content;
+       public Entry content(Content value) {
+               setContent(value);
                return this;
        }
 
        /**
-        * Returns the publish timestamp of this entry.
+        * Bean property getter:  <property>published</property>.
+        *
+        * <p>
+        * The publish timestamp of this entry.
         *
-        * @return The publish timestamp of this entry.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Calendar getPublished() {
                return published;
        }
 
        /**
-        * Sets the publish timestamp of this entry.
+        * Bean property setter:  <property>published</property>.
         *
-        * @param published The publish timestamp of this entry.
+        * <p>
+        * The publish timestamp of this entry.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setPublished(Calendar value) {
+               this.published = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>published</property>.
+        *
+        * <p>
+        * The publish timestamp of this entry.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Calendar> published() {
+               return Optional.ofNullable(published);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>published</property>.
+        *
+        * <p>
+        * The publish timestamp of this entry.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("published")
-       public Entry published(Calendar published) {
-               this.published = published;
+       public Entry published(Calendar value) {
+               setPublished(value);
                return this;
        }
 
        /**
-        * Sets the publish timestamp of this entry.
+        * Bean property fluent setter:  <property>published</property>.
+        *
+        * <p>
+        * The publish timestamp of this entry.
         *
-        * @param published The publish timestamp of this entry in ISO8601 
format.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("published")
-       public Entry published(String published) {
-               this.published = parseDateTime(published);
+       public Entry published(String value) {
+               setPublished(parseDateTime(value));
                return this;
        }
 
        /**
-        * Returns the source of this entry.
+        * Bean property getter:  <property>source</property>.
         *
-        * @return The source of this entry.
+        * <p>
+        * The source of this entry.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Source getSource() {
                return source;
        }
 
        /**
-        * Sets the source of this entry.
+        * Bean property setter:  <property>source</property>.
+        *
+        * <p>
+        * The source of this entry.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setSource(Source value) {
+               this.source = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>source</property>.
+        *
+        * <p>
+        * The source of this entry.
         *
-        * @param source The source of this entry.
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Source> source() {
+               return Optional.ofNullable(source);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>source</property>.
+        *
+        * <p>
+        * The source of this entry.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("source")
-       public Entry source(Source source) {
-               this.source = source;
+       public Entry source(Source value) {
+               setSource(value);
                return this;
        }
 
        /**
-        * Returns the summary of this entry.
+        * Bean property getter:  <property>summary</property>.
+        *
+        * <p>
+        * The summary of this entry.
         *
-        * @return The summary of this entry.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Text getSummary() {
                return summary;
        }
 
        /**
-        * Sets the summary of this entry.
+        * Bean property setter:  <property>summary</property>.
         *
-        * @param summary The summary of this entry.
+        * <p>
+        * The summary of this entry.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setSummary(Text value) {
+               this.summary = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>summary</property>.
+        *
+        * <p>
+        * The summary of this entry.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Text> summary() {
+               return Optional.ofNullable(summary);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>summary</property>.
+        *
+        * <p>
+        * The summary of this entry.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("summary")
-       public Entry summary(Text summary) {
-               this.summary = summary;
+       public Entry summary(Text value) {
+               setSummary(value);
                return this;
        }
 
        /**
-        * Sets the summary of this entry.
+        * Bean property fluent setter:  <property>summary</property>.
+        *
+        * <p>
+        * The summary of this entry.
         *
-        * @param summary The summary of this entry.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("summary")
-       public Entry summary(String summary) {
-               this.summary = new Text(summary);
+       public Entry summary(String value) {
+               setSummary(new Text(value));
                return this;
        }
 
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Feed.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Feed.java
index c71c847..9ec9a6e 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Feed.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/atom/Feed.java
@@ -92,105 +92,244 @@ public class Feed extends CommonEntry {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns generator information on this feed.
+        * Bean property getter:  <property>generator</property>.
         *
-        * @return The generator information on this feed.
+        * <p>
+        * The generator information on this feed.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Generator getGenerator() {
                return generator;
        }
 
        /**
-        * Sets the generator information on this feed.
+        * Bean property setter:  <property>generator</property>.
+        *
+        * <p>
+        * The generator information on this feed.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setGenerator(Generator value) {
+               this.generator = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>generator</property>.
+        *
+        * <p>
+        * The generator information on this feed.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Generator> generator() {
+               return Optional.ofNullable(generator);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>generator</property>.
+        *
+        * <p>
+        * The generator information on this feed.
         *
-        * @param generator The generator information on this feed.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("generator")
-       public Feed generator(Generator generator) {
-               this.generator = generator;
+       public Feed generator(Generator value) {
+               setGenerator(value);
                return this;
        }
 
        /**
-        * Returns the feed icon.
+        * Bean property getter:  <property>icon</property>.
         *
-        * @return The feed icon.
+        * <p>
+        * The feed icon.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Icon getIcon() {
                return icon;
        }
 
        /**
-        * Sets the feed icon.
+        * Bean property setter:  <property>icon</property>.
+        *
+        * <p>
+        * The feed icon.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setIcon(Icon value) {
+               this.icon = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>icon</property>.
+        *
+        * <p>
+        * The feed icon.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Icon> icon() {
+               return Optional.ofNullable(icon);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>icon</property>.
         *
-        * @param icon The feed icon.
+        * <p>
+        * The feed icon.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("icon")
-       public Feed icon(Icon icon) {
-               this.icon = icon;
+       public Feed icon(Icon value) {
+               setIcon(value);
                return this;
        }
 
        /**
-        * Returns the feed logo.
+        * Bean property getter:  <property>logo</property>.
+        *
+        * <p>
+        * The feed logo.
         *
-        * @return The feed logo.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Logo getLogo() {
                return logo;
        }
 
        /**
-        * Sets the feed logo.
+        * Bean property setter:  <property>logo</property>.
+        *
+        * <p>
+        * The feed logo.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setLogo(Logo value) {
+               this.logo = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>logo</property>.
+        *
+        * <p>
+        * The feed logo.
         *
-        * @param logo The feed logo.
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Logo> logo() {
+               return Optional.ofNullable(logo);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>logo</property>.
+        *
+        * <p>
+        * The feed logo.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("logo")
-       public Feed logo(Logo logo) {
-               this.logo = logo;
+       public Feed logo(Logo value) {
+               setLogo(value);
                return this;
        }
 
        /**
-        * Returns the feed subtitle.
+        * Bean property getter:  <property>subtitle</property>.
+        *
+        * <p>
+        * The feed subtitle.
         *
-        * @return The feed subtitle.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
-       @Beanp("subtitle")
-       public Text getSubTitle() {
+       public Text getSubtitle() {
                return subtitle;
        }
 
        /**
-        * Sets the feed subtitle.
+        * Bean property setter:  <property>subtitle</property>.
+        *
+        * <p>
+        * The feed subtitle.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setSubtitle(Text value) {
+               this.subtitle = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>subtitle</property>.
+        *
+        * <p>
+        * The feed subtitle.
         *
-        * @param subtitle The feed subtitle.
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Text> subtitle() {
+               return Optional.ofNullable(subtitle);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>subtitle</property>.
+        *
+        * <p>
+        * The feed subtitle.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("subtitle")
-       public Feed subtitle(Text subtitle) {
-               this.subtitle = subtitle;
+       public Feed subtitle(Text value) {
+               setSubtitle(value);
                return this;
        }
 
        /**
-        * Sets the feed subtitle.
+        * Bean property fluent setter:  <property>subtitle</property>.
+        *
+        * <p>
+        * The feed subtitle.
         *
-        * @param subtitle The feed subtitle.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       public Feed subtitle(String subtitle) {
-               this.subtitle = new Text(subtitle);
+       public Feed subtitle(String value) {
+               setSubtitle(new Text(value));
                return this;
        }
 
        /**
-        * Returns the entries in the feed.
+        * Bean property getter:  <property>entries</property>.
         *
-        * @return The entries in the feed.
+        * <p>
+        * The entries in the feed.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=COLLAPSED)
        public Entry[] getEntries() {
@@ -198,14 +337,44 @@ public class Feed extends CommonEntry {
        }
 
        /**
-        * Sets the entries in the feed.
+        * Bean property setter:  <property>entries</property>.
+        *
+        * <p>
+        * The entries in the feed.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setEntries(Entry[] value) {
+               this.entries = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>entries</property>.
+        *
+        * <p>
+        * The entries in the feed.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Entry[]> entries() {
+               return Optional.ofNullable(entries);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>entries</property>.
+        *
+        * <p>
+        * The entries in the feed.
         *
-        * @param entries The entries in the feed.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("entries")
-       public Feed entries(Entry...entries) {
-               this.entries = entries;
+       public Feed entries(Entry...value) {
+               setEntries(value);
                return this;
        }
 
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
index 6e2baa4..853197d 100644
--- 
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
@@ -17,8 +17,8 @@ import static org.apache.juneau.xml.annotation.XmlFormat.*;
 
 import java.net.*;
 import java.net.URI;
+import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.xml.annotation.*;
 
@@ -66,9 +66,12 @@ public class Generator extends Common {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the URI of this generator statement.
+        * Bean property getter:  <property>uri</property>.
         *
-        * @return The URI of this generator statement.
+        * <p>
+        * The URI of this generator statement.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public URI getUri() {
@@ -76,28 +79,58 @@ public class Generator extends Common {
        }
 
        /**
-        * Sets the URI of this generator statement.
+        * Bean property setter:  <property>uri</property>.
+        *
+        * <p>
+        * 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.
         *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setUri(Object value) {
+               this.uri = toURI(value);
+       }
+
+       /**
+        * Bean property fluent getter:  <property>uri</property>.
+        *
         * <p>
-        * URIs defined by {@link UriResolver} can be used for values.
+        * The URI of this generator statement.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<URI> uri() {
+               return Optional.ofNullable(uri);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>uri</property>.
         *
-        * @param uri The URI of this generator statement.
+        * <p>
+        * The URI of this generator statement.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("uri")
-       public Generator uri(Object uri) {
-               this.uri = toURI(uri);
+       public Generator uri(Object value) {
+               setUri(value);
                return this;
        }
 
        /**
-        * Returns the version of this generator statement.
+        * Bean property getter:  <property>version</property>.
+        *
+        * <p>
+        * The version of this generator statement.
         *
-        * @return The version of this generator statement.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public String getVersion() {
@@ -105,21 +138,54 @@ public class Generator extends Common {
        }
 
        /**
-        * Sets the version of this generator statement.
+        * Bean property setter:  <property>version</property>.
+        *
+        * <p>
+        * The version of this generator statement.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setVersion(String value) {
+               this.version = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>version</property>.
+        *
+        * <p>
+        * The version of this generator statement.
         *
-        * @param version The version of this generator statement.
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> version() {
+               return Optional.ofNullable(version);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>version</property>.
+        *
+        * <p>
+        * The version of this generator statement.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("version")
-       public Generator version(String version) {
-               this.version = version;
+       public Generator version(String value) {
+               setVersion(value);
                return this;
        }
 
        /**
-        * Returns the content of this generator statement.
+        * Bean property getter:  <property>text</property>.
         *
-        * @return The content of this generator statement.
+        * <p>
+        * The content of this generator statement.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=TEXT)
        public String getText() {
@@ -127,14 +193,44 @@ public class Generator extends Common {
        }
 
        /**
-        * Sets the content of this generator statement.
+        * Bean property setter:  <property>text</property>.
+        *
+        * <p>
+        * The content of this generator statement.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setText(String value) {
+               this.text = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>text</property>.
         *
-        * @param text The content of this generator statement.
+        * <p>
+        * The content of this generator statement.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> text() {
+               return Optional.ofNullable(text);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>text</property>.
+        *
+        * <p>
+        * The content of this generator statement.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("text")
-       public Generator text(String text) {
-               this.text = text;
+       public Generator text(String value) {
+               setText(value);
                return this;
        }
 
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
index c86e3f0..df81301 100644
--- 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
@@ -17,6 +17,7 @@ import static org.apache.juneau.xml.annotation.XmlFormat.*;
 
 import java.net.*;
 import java.net.URI;
+import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
@@ -69,9 +70,12 @@ public class Icon extends Common {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the URI of this icon.
+        * Bean property getter:  <property>uri</property>.
         *
-        * @return The URI of this icon.
+        * <p>
+        * The URI of this icon.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ELEMENTS)
        public URI getUri() {
@@ -79,21 +83,48 @@ public class Icon extends Common {
        }
 
        /**
-        * Sets the URI of this icon.
+        * Bean property setter:  <property>uri</property>.
+        *
+        * <p>
+        * 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.
         *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setUri(Object value) {
+               this.uri = toURI(value);
+       }
+
+       /**
+        * Bean property fluent getter:  <property>uri</property>.
+        *
         * <p>
-        * URIs defined by {@link UriResolver} can be used for values.
+        * The URI of this icon.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<URI> uri() {
+               return Optional.ofNullable(uri);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>uri</property>.
+        *
+        * <p>
+        * XXThe URI of this icon.X
         *
-        * @param uri The URI of this icon.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("uri")
-       public Icon uri(Object uri) {
-               this.uri = toURI(uri);
+       public Icon uri(Object value) {
+               setUri(value);
                return this;
        }
 
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
index 8ac5884..0faefe3 100644
--- 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
@@ -14,6 +14,8 @@ package org.apache.juneau.dto.atom;
 
 import static org.apache.juneau.xml.annotation.XmlFormat.*;
 
+import java.util.*;
+
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.xml.annotation.*;
 
@@ -56,9 +58,12 @@ public class Id extends Common {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the content of this identifier.
+        * Bean property getter:  <property>text</property>.
+        *
+        * <p>
+        * The content of this identifier.
         *
-        * @return The content of this identifier.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=TEXT)
        public String getText() {
@@ -66,14 +71,44 @@ public class Id extends Common {
        }
 
        /**
-        * Sets the content of this identifier.
+        * Bean property setter:  <property>text</property>.
+        *
+        * <p>
+        * The content of this identifier.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setText(String value) {
+               this.text = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>text</property>.
+        *
+        * <p>
+        * The content of this identifier.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> text() {
+               return Optional.ofNullable(text);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>text</property>.
+        *
+        * <p>
+        * The content of this identifier.
         *
-        * @param text The content of this identifier.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("text")
-       public Id text(String text) {
-               this.text = text;
+       public Id text(String value) {
+               setText(value);
                return this;
        }
 
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
index 951667a..48eac81 100644
--- 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
@@ -14,6 +14,8 @@ package org.apache.juneau.dto.atom;
 
 import static org.apache.juneau.xml.annotation.XmlFormat.*;
 
+import java.util.*;
+
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.xml.annotation.*;
 
@@ -71,9 +73,12 @@ public class Link extends Common {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the href of the target of this link.
+        * Bean property getter:  <property>href</property>.
+        *
+        * <p>
+        * The href of the target of this link.
         *
-        * @return The href of the target of this link.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public String getHref() {
@@ -81,21 +86,54 @@ public class Link extends Common {
        }
 
        /**
-        * Sets the href of the target of this link.
+        * Bean property setter:  <property>href</property>.
+        *
+        * <p>
+        * The href of the target of this link.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setHref(String value) {
+               this.href = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>href</property>.
+        *
+        * <p>
+        * The href of the target of this link.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> href() {
+               return Optional.ofNullable(href);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>href</property>.
         *
-        * @param href The href of the target of this link.
+        * <p>
+        * The href of the target of this link.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("href")
-       public Link href(String href) {
-               this.href = href;
+       public Link href(String value) {
+               setHref(value);
                return this;
        }
 
        /**
-        * Returns the rel of this link.
+        * Bean property getter:  <property>rel</property>.
+        *
+        * <p>
+        * The rel of this link.
         *
-        * @return The rel of this link.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public String getRel() {
@@ -103,21 +141,54 @@ public class Link extends Common {
        }
 
        /**
-        * Sets the rel of this link.
+        * Bean property setter:  <property>rel</property>.
+        *
+        * <p>
+        * The rel of this link.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setRel(String value) {
+               this.rel = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>rel</property>.
         *
-        * @param rel The rel of this link.
+        * <p>
+        * The rel of this link.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> rel() {
+               return Optional.ofNullable(rel);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>rel</property>.
+        *
+        * <p>
+        * The rel of this link.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("rel")
-       public Link rel(String rel) {
-               this.rel = rel;
+       public Link rel(String value) {
+               setRel(value);
                return this;
        }
 
        /**
-        * Returns the content type of the target of this link.
+        * Bean property getter:  <property>type</property>.
+        *
+        * <p>
+        * The content type of the target of this link.
         *
-        * @return The content type of the target of this link.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public String getType() {
@@ -125,7 +196,10 @@ public class Link extends Common {
        }
 
        /**
-        * Sets the content type of the target of this link.
+        * Bean property setter:  <property>type</property>.
+        *
+        * <p>
+        * The content type of the target of this link.
         *
         * <p>
         * Must be one of the following:
@@ -136,19 +210,49 @@ public class Link extends Common {
         *      <li><jk>null</jk> (defaults to <js>"text"</js>)
         * </ul>
         *
-        * @param type The content type of the target of this link.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setType(String value) {
+               this.type = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>type</property>.
+        *
+        * <p>
+        * The content type of the target of this link.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> type() {
+               return Optional.ofNullable(type);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>type</property>.
+        *
+        * <p>
+        * The content type of the target of this link.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("type")
-       public Link type(String type) {
-               this.type = type;
+       public Link type(String value) {
+               setType(value);
                return this;
        }
 
        /**
-        * Returns the language of the target of this link.
+        * Bean property getter:  <property>hreflang</property>.
         *
-        * @return The language of the target of this link.
+        * <p>
+        * The language of the target of this link.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public String getHreflang() {
@@ -156,21 +260,54 @@ public class Link extends Common {
        }
 
        /**
-        * Sets the language of the target of this link.
+        * Bean property setter:  <property>hreflang</property>.
+        *
+        * <p>
+        * The language of the target of this link.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setHreflang(String value) {
+               this.hreflang = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>hreflang</property>.
+        *
+        * <p>
+        * The language of the target of this link.
         *
-        * @param hreflang The language of the target of this link.
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> hreflang() {
+               return Optional.ofNullable(hreflang);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>hreflang</property>.
+        *
+        * <p>
+        * The language of the target of this link.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("hreflang")
-       public Link hreflang(String hreflang) {
-               this.hreflang = hreflang;
+       public Link hreflang(String value) {
+               setHreflang(value);
                return this;
        }
 
        /**
-        * Returns the title of the target of this link.
+        * Bean property getter:  <property>title</property>.
         *
-        * @return The title of the target of this link.
+        * <p>
+        * The title of the target of this link.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public String getTitle() {
@@ -178,21 +315,54 @@ public class Link extends Common {
        }
 
        /**
-        * Sets the title of the target of this link.
+        * Bean property setter:  <property>title</property>.
+        *
+        * <p>
+        * The title of the target of this link.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setTitle(String value) {
+               this.title = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>title</property>.
         *
-        * @param title The title of the target of this link.
+        * <p>
+        * The title of the target of this link.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> title() {
+               return Optional.ofNullable(title);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>title</property>.
+        *
+        * <p>
+        * The title of the target of this link.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("title")
-       public Link title(String title) {
-               this.title = title;
+       public Link title(String value) {
+               setTitle(value);
                return this;
        }
 
        /**
-        * Returns the length of the contents of the target of this link.
+        * Bean property getter:  <property>length</property>.
+        *
+        * <p>
+        * The length of the contents of the target of this link.
         *
-        * @return The length of the contents of the target of this link.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public Integer getLength() {
@@ -200,14 +370,44 @@ public class Link extends Common {
        }
 
        /**
-        * Sets the length of the contents of the target of this link.
+        * Bean property setter:  <property>length</property>.
+        *
+        * <p>
+        * The length of the contents of the target of this link.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setLength(Integer value) {
+               this.length = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>length</property>.
+        *
+        * <p>
+        * The length of the contents of the target of this link.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Integer> length() {
+               return Optional.ofNullable(length);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>length</property>.
+        *
+        * <p>
+        * The length of the contents of the target of this link.
         *
-        * @param length The length of the contents of the target of this link.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("length")
-       public Link length(Integer length) {
-               this.length = length;
+       public Link length(Integer value) {
+               setLength(value);
                return this;
        }
 
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
index de69fff..ccfbf49 100644
--- 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
@@ -17,6 +17,7 @@ import static org.apache.juneau.xml.annotation.XmlFormat.*;
 
 import java.net.*;
 import java.net.URI;
+import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
@@ -69,9 +70,12 @@ public class Logo extends Common {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the URI of the logo.
+        * Bean property getter:  <property>uri</property>.
         *
-        * @return The URI of the logo.
+        * <p>
+        * The URI of the logo.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ELEMENTS)
        public URI getUri() {
@@ -79,7 +83,10 @@ public class Logo extends Common {
        }
 
        /**
-        * Sets the URI of the logo.
+        * Bean property setter:  <property>uri</property>.
+        *
+        * <p>
+        * The URI of the logo.
         *
         * <p>
         * The value can be of any of the following types: {@link URI}, {@link 
URL}, {@link String}.
@@ -88,12 +95,39 @@ public class Logo extends Common {
         * <p>
         * URIs defined by {@link UriResolver} can be used for values.
         *
-        * @param uri The URI of the logo.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setUri(Object value) {
+               this.uri = toURI(value);
+       }
+
+       /**
+        * Bean property fluent getter:  <property>uri</property>.
+        *
+        * <p>
+        * The URI of the logo.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<URI> uri() {
+               return Optional.ofNullable(uri);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>uri</property>.
+        *
+        * <p>
+        * The URI of the logo.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("uri")
-       public Logo uri(Object uri) {
-               this.uri = toURI(uri);
+       public Logo uri(Object value) {
+               setUri(value);
                return this;
        }
 
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
index 7275b40..e54009a 100644
--- 
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
@@ -16,11 +16,10 @@ import static org.apache.juneau.internal.StringUtils.*;
 
 import java.net.*;
 import java.net.URI;
+import java.util.*;
 
 import org.apache.juneau.*;
 
-import org.apache.juneau.annotation.*;
-
 /**
  * Represents an <c>atomPersonConstruct</c> construct in the RFC4287 
specification.
  *
@@ -64,37 +63,76 @@ public class Person extends Common {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the name of the person.
+        * Bean property getter:  <property>name</property>.
+        *
+        * <p>
+        * The name of the person.
         *
-        * @return The name of the person.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public String getName() {
                return name;
        }
 
        /**
-        * Sets the name of the person.
+        * Bean property setter:  <property>name</property>.
         *
-        * @param name The name of the person.
+        * <p>
+        * The name of the person.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setName(String value) {
+               this.name = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>name</property>.
+        *
+        * <p>
+        * The name of the person.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> name() {
+               return Optional.ofNullable(name);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>name</property>.
+        *
+        * <p>
+        * The name of the person.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("name")
-       public Person name(String name) {
-               this.name = name;
+       public Person name(String value) {
+               setName(value);
                return this;
        }
 
        /**
-        * Returns the URI of the person.
+        * Bean property getter:  <property>uri</property>.
+        *
+        * <p>
+        * The URI of the person.
         *
-        * @return The URI of the person.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public URI getUri() {
                return uri;
        }
 
        /**
-        * Sets the URI of the person.
+        * Bean property setter:  <property>uri</property>.
+        *
+        * <p>
+        * The URI of the person.
         *
         * <p>
         * The value can be of any of the following types: {@link URI}, {@link 
URL}, {@link String}.
@@ -103,33 +141,93 @@ public class Person extends Common {
         * <p>
         * URIs defined by {@link UriResolver} can be used for values.
         *
-        * @param uri The URI of the person.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setUri(Object value) {
+               this.uri = toURI(value);
+       }
+
+       /**
+        * Bean property fluent getter:  <property>uri</property>.
+        *
+        * <p>
+        * The URI of the person.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<URI> uri() {
+               return Optional.ofNullable(uri);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>v</property>.
+        *
+        * <p>
+        * The URI of the person.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("uri")
-       public Person uri(Object uri) {
-               this.uri = toURI(uri);
+       public Person uri(Object value) {
+               setUri(value);
                return this;
        }
 
        /**
-        * Returns the email address of the person.
+        * Bean property getter:  <property>email</property>.
         *
-        * @return The email address of the person.
+        * <p>
+        * The email address of the person.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public String getEmail() {
                return email;
        }
 
        /**
-        * Sets the email address of the person.
+        * Bean property setter:  <property>email</property>.
+        *
+        * <p>
+        * The email address of the person.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setEmail(String value) {
+               this.email = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>email</property>.
+        *
+        * <p>
+        * The email address of the person.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> email() {
+               return Optional.ofNullable(email);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>email</property>.
+        *
+        * <p>
+        * The email address of the person.
         *
-        * @param email The email address of the person.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("email")
-       public Person email(String email) {
-               this.email = email;
+       public Person email(String value) {
+               setEmail(value);
                return this;
        }
 
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
index 30144e9..440066f 100644
--- 
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
@@ -14,8 +14,6 @@ package org.apache.juneau.dto.atom;
 
 import java.util.*;
 
-import org.apache.juneau.annotation.*;
-
 /**
  * Represents an <c>atomSource</c> construct in the RFC4287 specification.
  *
@@ -58,98 +56,234 @@ public class Source extends CommonEntry {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the generator info of this source.
+        * Bean property getter:  <property>generator</property>.
+        *
+        * <p>
+        * The generator info of this source.
         *
-        * @return The generator info of this source.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Generator getGenerator() {
                return generator;
        }
 
        /**
-        * Sets the generator info of this source.
+        * Bean property setter:  <property>generator</property>.
+        *
+        * <p>
+        * The generator info of this source.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setGenerator(Generator value) {
+               this.generator = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>generator</property>.
+        *
+        * <p>
+        * The generator info of this source.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Generator> generator() {
+               return Optional.ofNullable(generator);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>generator</property>.
+        *
+        * <p>
+        * The generator info of this source.
         *
-        * @param generator The generator info of this source.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("generator")
-       public Source generator(Generator generator) {
-               this.generator = generator;
+       public Source generator(Generator value) {
+               setGenerator(value);
                return this;
        }
 
        /**
-        * Returns the icon of this source.
+        * Bean property getter:  <property>icon</property>.
         *
-        * @return The icon of this source.
+        * <p>
+        * The icon of this source.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Icon getIcon() {
                return icon;
        }
 
        /**
-        * Sets the icon of this source.
+        * Bean property setter:  <property>icon</property>.
+        *
+        * <p>
+        * The icon of this source.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setIcon(Icon value) {
+               this.icon = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>icon</property>.
+        *
+        * <p>
+        * The icon of this source.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Icon> icon() {
+               return Optional.ofNullable(icon);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>icon</property>.
+        *
+        * <p>
+        * The icon of this source.
         *
-        * @param icon The icon of this source.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("icon")
-       public Source icon(Icon icon) {
-               this.icon = icon;
+       public Source icon(Icon value) {
+               setIcon(value);
                return this;
        }
 
        /**
-        * Returns the logo of this source.
+        * Bean property getter:  <property>logo</property>.
         *
-        * @return The logo of this source.
+        * <p>
+        * The logo of this source.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Logo getLogo() {
                return logo;
        }
 
        /**
-        * Sets the logo of this source.
+        * Bean property setter:  <property>logo</property>.
+        *
+        * <p>
+        * The logo of this source.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setLogo(Logo value) {
+               this.logo = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>logo</property>.
+        *
+        * <p>
+        * The logo of this source.
         *
-        * @param logo The logo of this source.
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Logo> logo() {
+               return Optional.ofNullable(logo);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>logo</property>.
+        *
+        * <p>
+        * The logo of this source.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("logo")
-       public Source logo(Logo logo) {
-               this.logo = logo;
+       public Source logo(Logo value) {
+               setLogo(value);
                return this;
        }
 
        /**
-        * Returns the subtitle of this source.
+        * Bean property getter:  <property>subtitle</property>.
+        *
+        * <p>
+        * The subtitle of this source.
         *
-        * @return The subtitle of this source.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        public Text getSubtitle() {
                return subtitle;
        }
 
        /**
-        * Sets the subtitle of this source.
+        * Bean property setter:  <property>subtitle</property>.
         *
-        * @param subtitle The subtitle of this source.
+        * <p>
+        * The subtitle of this source.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setSubtitle(Text value) {
+               this.subtitle = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>subtitle</property>.
+        *
+        * <p>
+        * The subtitle of this source.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<Text> subtitle() {
+               return Optional.ofNullable(subtitle);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>subtitle</property>.
+        *
+        * <p>
+        * The subtitle of this source.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("subtitle")
-       public Source subtitle(Text subtitle) {
-               this.subtitle = subtitle;
+       public Source subtitle(Text value) {
+               setSubtitle(value);
                return this;
        }
 
        /**
-        * Sets the subtitle of this source.
+        * Bean property fluent setter:  <property>subtitle</property>.
+        *
+        * <p>
+        * The subtitle of this source.
         *
-        * @param subtitle The subtitle of this source.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("subtitle")
-       public Source subtitle(String subtitle) {
-               this.subtitle = new Text(subtitle);
+       public Source subtitle(String value) {
+               setSubtitle(new Text(value));
                return this;
        }
 
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
index 44bf5ce..b2c5950 100644
--- 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
@@ -14,7 +14,8 @@ package org.apache.juneau.dto.atom;
 
 import static org.apache.juneau.xml.annotation.XmlFormat.*;
 
-import org.apache.juneau.annotation.*;
+import java.util.*;
+
 import org.apache.juneau.xml.annotation.*;
 
 /**
@@ -69,9 +70,12 @@ public class Text extends Common {
        
//-----------------------------------------------------------------------------------------------------------------
 
        /**
-        * Returns the content type of this content.
+        * Bean property getter:  <property>type</property>.
+        *
+        * <p>
+        * The content type of this content.
         *
-        * @return The content type of this content.
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=ATTR)
        public String getType() {
@@ -79,7 +83,10 @@ public class Text extends Common {
        }
 
        /**
-        * Sets the content type of this content.
+        * Bean property setter:  <property>type</property>.
+        *
+        * <p>
+        * The content type of this content.
         *
         * <p>
         * Must be one of the following:
@@ -90,19 +97,52 @@ public class Text extends Common {
         *      <li><jk>null</jk> (defaults to <js>"text"</js>)
         * </ul>
         *
-        * @param type The content type of this content.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       /**
+        * @param value The content type of this content.
+        */
+       public void setType(String value) {
+               this.type = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>type</property>.
+        *
+        * <p>
+        * The content type of this content.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> type() {
+               return Optional.ofNullable(type);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>type</property>.
+        *
+        * <p>
+        * The content type of this content.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("type")
-       public Text type(String type) {
-               this.type = type;
+       public Text type(String value) {
+               setType(value);
                return this;
        }
 
        /**
-        * Returns the content of this content.
+        * Bean property getter:  <property>text</property>.
         *
-        * @return The content of this content.
+        * <p>
+        * The content of this content.
+        *
+        * @return The property value, or <jk>null</jk> if it is not set.
         */
        @Xml(format=XMLTEXT)
        public String getText() {
@@ -110,14 +150,44 @@ public class Text extends Common {
        }
 
        /**
-        * Sets the content of this content.
+        * Bean property setter:  <property>text</property>.
+        *
+        * <p>
+        * The content of this content.
+        *
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
+        */
+       public void setText(String value) {
+               this.text = value;
+       }
+
+       /**
+        * Bean property fluent getter:  <property>text</property>.
+        *
+        * <p>
+        * The content of this content.
+        *
+        * @return The property value as an {@link Optional}.  Never 
<jk>null</jk>.
+        */
+       public Optional<String> text() {
+               return Optional.ofNullable(text);
+       }
+
+       /**
+        * Bean property fluent setter:  <property>text</property>.
+        *
+        * <p>
+        * The content of this content.
         *
-        * @param text The content of this content.
+        * @param value
+        *      The new value for this property.
+        *      <br>Can be <jk>null</jk> to unset the property.
         * @return This object (for method chaining).
         */
-       @Beanp("text")
-       public Text text(String text) {
-               this.text = text;
+       public Text text(String value) {
+               setText(value);
                return this;
        }
 

Reply via email to