You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2018/09/18 07:31:13 UTC

[41/51] [partial] isis-site git commit: ISIS-1899: republishes 1.16.2 docs

http://git-wip-us.apache.org/repos/asf/isis-site/blob/dd05aaf7/content/guides/rgant/rgant.html
----------------------------------------------------------------------
diff --git a/content/guides/rgant/rgant.html b/content/guides/rgant/rgant.html
index 2526129..42be192 100644
--- a/content/guides/rgant/rgant.html
+++ b/content/guides/rgant/rgant.html
@@ -221,16 +221,17 @@ table.CodeRay td.code>pre{padding:0}
         <li role="separator" class="divider"></li> 
         <li class="dropdown-header">Other Resources</li> 
         <li><a href="https://issues.apache.org/jira/browse/ISIS">ASF JIRA</a></li> 
-        <li><a href="http://stackoverflow.com/questions/tagged/isis">Stack Overflow</a></li> 
+        <li><a href="https://stackoverflow.com/questions/tagged/isis">Stack Overflow</a></li> 
         <li><a href="../../help.html">Wiki, Fisheye etc.</a></li> 
        </ul> </li> 
       <li class="dropdown hidden-sm hidden-md"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">@ASF<span class="caret"></span></a> 
        <ul class="dropdown-menu"> 
-        <li><a href="http://www.apache.org/">Apache Homepage</a></li> 
-        <li><a href="http://www.apache.org/licenses/">Licenses</a></li> 
-        <li><a href="http://www.apache.org/security/">Security</a></li> 
-        <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> 
-        <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> 
+        <li><a href="https://www.apache.org/">Apache Homepage</a></li> 
+        <li><a href="https://www.apache.org/events/current-event">Events</a></li> 
+        <li><a href="https://www.apache.org/licenses/">Licenses</a></li> 
+        <li><a href="https://www.apache.org/security/">Security</a></li> 
+        <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> 
+        <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li> 
         <li role="separator" class="divider"></li> 
         <li><a href="https://whimsy.apache.org/board/minutes/Isis.html">PMC board minutes</a></li> 
        </ul> </li> 
@@ -339,7 +340,7 @@ table.CodeRay td.code>pre{padding:0}
          </div> 
          <div class="ulist"> 
           <ul> 
-           <li> <p>if a collection should be rendered "open" rather than collapsed, it can be annotated using <code>@CollectionLayout(render=RenderType.EAGERLY)</code></p> </li> 
+           <li> <p>if a collection should be rendered "open" rather than collapsed, it can be annotated using <code>@CollectionLayout(defaultView="table")</code></p> </li> 
            <li> <p>if an action has a tooltip, it can be annotated using <code>@ActionLayout(describedAs=…​)</code></p> </li> 
            <li> <p>if a domain object is bookmarkable, it can be annotated using <code>@DomainObjectLayout(bookmarking=BookmarkPolicy.AS_ROOT</code>).</p> </li> 
           </ul> 
@@ -762,14 +763,14 @@ table.CodeRay td.code>pre{padding:0}
                <p>Used to build Apache Isis' own internal identifier for objects.<br></p> 
               </div> 
               <div class="paragraph"> 
-               <p>If the <code>schema()</code> attribute is specified (and if <a href="../rgant/rgant.html#<em>rgant-Discriminator"><code>@Discriminator</code></a> _hasn’t been specified), is also used to derive the object type, as used in `Bookmark`s, URLs for <a href="../ugvro/ugvro.html">RestfulObjects viewer</a> and elsewhere.</p> 
+               <p>If the <code>schema()</code> attribute is specified (and if <a href="../rgant/rgant.html#\_rgant-Discriminator"><code>@Discriminator</code></a> <em>hasn’t</em> been specified), is also used to derive the object type, as used in `Bookmark`s, URLs for <a href="../ugvro/ugvro.html">RestfulObjects viewer</a> and elsewhere.</p> 
               </div>
              </div></td> 
             <td class="tableblock halign-left valign-top"><p class="tableblock">Domain / persistence</p></td> 
             <td class="tableblock halign-left valign-top"><p class="tableblock">Class</p></td> 
            </tr> 
            <tr> 
-            <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="../rgant/rgant.html#_rgant-PrimaryKey"><code>@javax.jdo.annotations.</code><br> <code>PrimaryKey</code></a></p></td> 
+            <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="../rgant/rgant.html#\_rgant-PrimaryKey"><code>@javax.jdo.annotations.</code><br> <code>PrimaryKey</code></a></p></td> 
             <td class="tableblock halign-left valign-top">
              <div>
               <div class="paragraph"> 
@@ -5600,7 +5601,7 @@ WrapperFactory wrapperFactory;</code></pre>
            <li> <p>whether the domain object has been configured as immutable through the <a href="../rgant/rgant.html#_rgant-DomainObject_editing"><code>@DomainObject#editing()</code></a> attribute</p> </li> 
            <li> <p>else (that is, if the domain object’s editability is specified as being <code>AS_CONFIGURED</code>), then the value of the <a href="../rgcfg/rgcfg.html#_rgcfg_configuring-core">configuration property</a> <code>isis.objects.editing</code>. If set to <code>false</code>, then the object’s collections (and properties) are <strong>not</strong> editable</p> </li> 
            <li> <p>else, then the value of the <code>@Collection(editing=…​)</code> attribute itself.</p> </li> 
-           <li> <p>else, the result of invoking any supporting <a href="../rgcms/rgcms.html#_rgcms_methods_prefixes_disable"><code>disable…​()</code></a> supporting methods</p> </li> 
+           <li> <p>else, the result of invoking any supporting <a href="../rgcms/rgcms.html#\_rgcms_methods_prefixes_disable"><code>disable…​()</code></a> supporting methods</p> </li> 
           </ul> 
          </div> 
          <div class="paragraph"> 
@@ -5818,7 +5819,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="listingblock"> 
           <div class="content"> 
            <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">void</span> Customer {
-    <span class="annotation">@TypeOf</span>(Order.class)
+    <span class="annotation">@Collection</span>(typeOf=Order.class)
     <span class="directive">public</span> <span class="predefined-type">SortedSet</span> getOutstandingOrders() { ... }
     ...
 }</code></pre> 
@@ -6646,7 +6647,17 @@ WrapperFactory wrapperFactory;</code></pre>
          <p>This section identifies which attributes of <code>@Column</code> are recognized and used by Apache Isis.</p> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_nullability">7.1. Nullability</h3> 
+         <h3 id="_rgant-Column_allowsNull">7.1. Nullability</h3>
+         <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_allowsNull.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_allowsNull.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_allowsNull.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+           <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_allowsNull.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_allowsNull.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
          <div class="paragraph"> 
           <p>The <code>allowsNull()</code> attribute is used to specify if a property is mandatory or is optional.</p> 
          </div> 
@@ -6672,7 +6683,17 @@ WrapperFactory wrapperFactory;</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_length_for_code_string_code_s">7.2. Length for <code>String</code>s</h3> 
+         <h3 id="_rgant-Column_length">7.2. Length for <code>String</code>s</h3>
+         <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_length.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_length.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_length.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+           <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_length.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_length.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
          <div class="paragraph"> 
           <p>The <code>length()</code> attribute is used to specify the length of <code>java.lang.String</code> property types as they map to <code>varchar(n)</code> columns.</p> 
          </div> 
@@ -6698,7 +6719,17 @@ WrapperFactory wrapperFactory;</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_length_scale_for_code_bigdecimal_code_s">7.3. Length/scale for <code>BigDecimal</code>s</h3> 
+         <h3 id="_rgant-Column_length-scale">7.3. Length/scale for <code>BigDecimal</code>s</h3>
+         <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_length-scale.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_length-scale.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_length-scale.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+           <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_length-scale.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_length-scale.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
          <div class="paragraph"> 
           <p>The <code>length()</code> and <code>scale()</code> attributes are used to infer the precision/scale of <code>java.math.BigDecimal</code> property types as they map to <code>decimal(n,p)</code> columns.</p> 
          </div> 
@@ -6714,19 +6745,39 @@ WrapperFactory wrapperFactory;</code></pre>
           </div> 
          </div> 
          <div class="paragraph"> 
-          <p>For <code>BigDecimal</code>s it is also possible to specify the <a href="../rgant/rgant.html#<em>rgant-Digits"><code>@Digits</code></a> annotation, whose form is <code>@Digits(integer, fraction)</code>. There is a subtle difference here: while <code>@Column#scale()</code> corresponds to <code>@Digits#fraction()</code>, the value of <code>@Column#length()</code> (ie the precision) is actually the _sum of the <code>@Digits’ `integer()</code> and <code>fraction()</code> parts.</p> 
+          <p>For <code>BigDecimal</code>s it is also possible to specify the <a href="../rgant/rgant.html#\_rgant-Digits"><code>@Digits</code></a> annotation, whose form is <code>@Digits(integer, fraction)</code>. There is a subtle difference here: while <code>@Column#scale()</code> corresponds to <code>@Digits#fraction()</code>, the value of <code>@Column#length()</code> (ie the precision) is actually the <em>sum</em> of the <code>@Digits’ `integer()</code> and <code>fraction()</code> parts.</p> 
          </div> 
          <div class="paragraph"> 
           <p>If both are specified, Apache Isis will check when it initializes for any contradictions, and will fail-fast with an appropriate error message in the log if there are.</p> 
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_hints_and_tips">7.4. Hints and Tips</h3> 
+         <h3 id="_rgant-Column_hints-and-tips">7.4. Hints and Tips</h3>
+         <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+           <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
          <div class="paragraph"> 
           <p>This seems to be a good place to describe some additional common mappings that use <code>@Column</code>. Unlike the sections above, the attributes specified in these hints and tips aren’t actually part of Apache Isis metamodel.</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_mapping_foreign_keys">7.4.1. Mapping foreign keys</h4> 
+          <h4 id="_rgant-Column_hints-and-tips_mapping-foreign-keys">7.4.1. Mapping foreign keys</h4>
+          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
+           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips_mapping-foreign-keys.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+           <ul class="dropdown-menu">
+            <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips_mapping-foreign-keys.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+            <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips_mapping-foreign-keys.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+            <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips_mapping-foreign-keys.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+            <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips_mapping-foreign-keys.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+           </ul>
+          </div> 
           <div class="paragraph"> 
            <p>The <code>name()</code> attribute can be used to override the name of the column. References to other objects are generally mapped as foreign key columns. If there are multiple references to a given type, then you will want to override the name that JDO/DataNucleus would otherwise default.</p> 
           </div> 
@@ -6747,18 +6798,27 @@ WrapperFactory wrapperFactory;</code></pre>
            </div> 
           </div> 
          </div> 
-        </div> 
-        <div class="sect2"> 
-         <h3 id="_mapping_code_blob_code_s_and_code_clob_code_s">7.5. Mapping <code>Blob</code>s and <code>Clob</code>s</h3> 
-         <div class="paragraph"> 
-          <p>Isis provides custom value types for <a href="../rgcms/rgcms.html#_rgcms_classes_value-types_Blob"><code>Blob</code></a>s and <a href="../rgcms/rgcms.html#_rgcms_classes_value-types_Clob"><code>Clob</code></a>s. These value types have multiple internal fields, meaning that they corresponding to multiple columns in the database. Mapping this correctly requires using <code>@Column</code> within JDO’s <code>@Persistent</code> annotation.</p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>For example, here’s how to map a <code>Blob</code> (taken from (non-ASF) <a href="http://github.com/isisaddons/isis-app-todoapp">Isis addons' todoapp</a>):</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">private</span> <span class="predefined-type">Blob</span> attachment;
+         <div class="sect3"> 
+          <h4 id="_rgant-Column_hints-and-tips_mapping-blobs-and-clobs">7.4.2. Mapping <code>Blob</code>s and <code>Clob</code>s</h4>
+          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
+           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips_mapping-blobs-and-clobs.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+           <ul class="dropdown-menu">
+            <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips_mapping-blobs-and-clobs.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+            <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips_mapping-blobs-and-clobs.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+            <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips_mapping-blobs-and-clobs.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+            <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column_hints-and-tips_mapping-blobs-and-clobs.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+           </ul>
+          </div> 
+          <div class="paragraph"> 
+           <p>Isis provides custom value types for <a href="../rgcms/rgcms.html#_rgcms_classes_value-types_Blob"><code>Blob</code></a>s and <a href="../rgcms/rgcms.html#_rgcms_classes_value-types_Clob"><code>Clob</code></a>s. These value types have multiple internal fields, meaning that they corresponding to multiple columns in the database. Mapping this correctly requires using <code>@Column</code> within JDO’s <code>@Persistent</code> annotation.</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>For example, here’s how to map a <code>Blob</code> (taken from (non-ASF) <a href="http://github.com/isisaddons/isis-app-todoapp">Isis addons' todoapp</a>):</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">private</span> <span class="predefined-type">Blob</span> attachment;
 <span class="annotation">@javax</span>.jdo.annotations.Persistent(defaultFetchGroup=<span class="string"><span class="delimiter">"</span><span class="content">false</span><span class="delimiter">"</span></span>, columns = {
         <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">"</span><span class="content">attachment_name</span><span class="delimiter">"</span></span>),
         <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">"</span><span class="content">attachment_mimetype</span><span class="delimiter">"</span></span>),
@@ -6770,14 +6830,14 @@ WrapperFactory wrapperFactory;</code></pre>
 )
 <span class="directive">public</span> <span class="predefined-type">Blob</span> getAttachment() { ... }
 <span class="directive">public</span> <span class="type">void</span> setAttachment(<span class="predefined-type">Blob</span> attachment) { ... }</code></pre> 
+           </div> 
           </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>And here’s how to map a <code>Clob</code> (also taken from the todoapp):</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">private</span> <span class="predefined-type">Clob</span> doc;
+          <div class="paragraph"> 
+           <p>And here’s how to map a <code>Clob</code> (also taken from the todoapp):</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">private</span> <span class="predefined-type">Clob</span> doc;
 <span class="annotation">@javax</span>.jdo.annotations.Persistent(defaultFetchGroup=<span class="string"><span class="delimiter">"</span><span class="content">false</span><span class="delimiter">"</span></span>, columns = {
         <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">"</span><span class="content">doc_name</span><span class="delimiter">"</span></span>),
         <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">"</span><span class="content">doc_mimetype</span><span class="delimiter">"</span></span>),
@@ -6788,6 +6848,7 @@ WrapperFactory wrapperFactory;</code></pre>
 )
 <span class="directive">public</span> <span class="predefined-type">Clob</span> getDoc() { ... }
 <span class="directive">public</span> <span class="type">void</span> setDoc(<span class="directive">final</span> <span class="predefined-type">Clob</span> doc) { ... }</code></pre> 
+           </div> 
           </div> 
          </div> 
         </div> 
@@ -7207,7 +7268,7 @@ WrapperFactory wrapperFactory;</code></pre>
           </ul>
          </div> 
          <div class="paragraph"> 
-          <p>The <code>auditing()</code> attribute indicates that if the object is modified, then each of its changed properties should be submitted to the <a href="../rgsvc/rgsvc.html#_rgsvc_persistence-layer-spi_AuditingService"><code>AuditingService</code></a> (if one has been configured), or to any</p> 
+          <p>The <code>auditing()</code> attribute indicates that if the object is modified, then each of its changed properties should be submitted to the <a href="../rgsvc/rgsvc.html#_rgsvc_persistence-layer-spi_AuditingService"><code>AuditingService</code></a> (if one has been configured).</p> 
          </div> 
          <div class="paragraph"> 
           <p>The default value for the attribute is <code>AS_CONFIGURED</code>, meaning that the <a href="../rgcfg/rgcfg.html#_rgcfg_configuring-core">configuration property</a> <code>isis.services.audit.objects</code> is used to determine the whether the action is audited:</p> 
@@ -7348,7 +7409,7 @@ WrapperFactory wrapperFactory;</code></pre>
 <span class="directive">public</span> <span class="type">class</span> <span class="class">Customers</span> {
     <span class="annotation">@Action</span>(semantics=SemanticsOf.SAFE)
     <span class="directive">public</span> <span class="predefined-type">List</span>&lt;Customer&gt; findByName(
-        <span class="annotation">@Parameter</span>(minLength=<span class="integer">3</span>)             <i class="conum" data-value="1"></i><b>(1)</b>
+        <span class="annotation">@MinLength</span>(<span class="integer">3</span>)                       <i class="conum" data-value="1"></i><b>(1)</b>
         <span class="annotation">@ParameterLayout</span>(named=<span class="string"><span class="delimiter">"</span><span class="content">name</span><span class="delimiter">"</span></span>)
         <span class="predefined-type">String</span> name);
     ...
@@ -7374,7 +7435,7 @@ WrapperFactory wrapperFactory;</code></pre>
 <span class="directive">public</span> <span class="type">class</span> <span class="class">Customers</span> {
     <span class="annotation">@Programmatic</span>
     <span class="directive">public</span> <span class="predefined-type">List</span>&lt;Customer&gt; findByName(
-        <span class="annotation">@Parameter</span>(minLength=<span class="integer">3</span>)
+        <span class="annotation">@MinLength</span>(<span class="integer">3</span>)
         <span class="predefined-type">String</span> name);
     ...
 }</code></pre> 
@@ -7464,11 +7525,24 @@ WrapperFactory wrapperFactory;</code></pre>
           </ul>
          </div> 
          <div class="paragraph"> 
-          <p>Whenever a domain object is instantiated or otherwise becomes known to the framework, a "created" lifecycle event is fired. This is typically when the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_DomainObjectContainer"><code>DomainObjectContainer</code></a>'s <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_DomainObjectContainer_object-creation-api"><code>newTransientInstance()</code></a> is called; it will also happen if the object is simply instantiated with <code>new(…​)</code>, and then the container’s <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_DomainObjectContainer_services-api"><code>injectServicesInto(…​)</code></a> method is called.</p> 
+          <p>Whenever a domain object is instantiated or otherwise becomes known to the framework, a "created" lifecycle event is fired. This is typically when the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_FactoryService"><code>FactoryService</code></a>'s <code>instantiate()</code> method is called.</p> 
          </div> 
          <div class="paragraph"> 
           <p>Subscribers subscribe through the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> and can use the event to obtain a reference to the object just created. The subscriber could then, for example, update the object, eg looking up state from some external datastore.</p> 
          </div> 
+         <div class="admonitionblock tip"> 
+          <table> 
+           <tbody>
+            <tr> 
+             <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
+             <td class="content"> 
+              <div class="paragraph"> 
+               <p>It’s possible to instantiate objects without firing this lifecycle; just instantiate using its regular constructor, and then use the <code>ServiceRegistry</code>'s <a href="../rgsvc/rgsvc.html#_rgsvc_metadata-api_ServiceRegistry"><code>injectServicesInto(…​)</code></a> to manually inject any required domain services.</p> 
+              </div> </td> 
+            </tr> 
+           </tbody>
+          </table> 
+         </div> 
          <div class="paragraph"> 
           <p>By default the event raised is <code>ObjectCreatedEvent.Default</code>. For example:</p> 
          </div> 
@@ -7504,7 +7578,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="sect3"> 
           <h4 id="_subscribers_3">10.4.1. Subscribers</h4> 
           <div class="paragraph"> 
-           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below use the Guava API.</p> 
+           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below are compatible with both.</p> 
           </div> 
           <div class="paragraph"> 
            <p>Subscribers can be either coarse-grained (if they subscribe to the top-level event type):</p> 
@@ -7513,7 +7587,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ObjectCreatedEvent ev) {
         <span class="keyword">if</span>(ev.getSource() <span class="keyword">instanceof</span> ToDoItem) { ... }
     }
@@ -7527,26 +7602,14 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ToDoItem.ObjectCreatedEvent ev) {
         ...
     }
 }</code></pre> 
            </div> 
           </div> 
-          <div class="admonitionblock tip"> 
-           <table> 
-            <tbody>
-             <tr> 
-              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-              <td class="content"> 
-               <div class="paragraph"> 
-                <p>If the AxonFramework is being used, replace <code>@com.google.common.eventbus.Subscribe</code> with <code>@org.axonframework.eventhandling.annotation.EventHandler</code>.</p> 
-               </div> </td> 
-             </tr> 
-            </tbody>
-           </table> 
-          </div> 
          </div> 
          <div class="sect3"> 
           <h4 id="_default_doop_and_noop_events_3">10.4.2. Default, Doop and Noop events</h4> 
@@ -7705,7 +7768,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="sect3"> 
           <h4 id="_subscribers_4">10.6.1. Subscribers</h4> 
           <div class="paragraph"> 
-           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below use the Guava API.</p> 
+           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below support both.</p> 
           </div> 
           <div class="paragraph"> 
            <p>Subscribers can be either coarse-grained (if they subscribe to the top-level event type):</p> 
@@ -7714,7 +7777,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ObjectLoadedEvent ev) {
         <span class="keyword">if</span>(ev.getSource() <span class="keyword">instanceof</span> ToDoItem) { ... }
     }
@@ -7728,26 +7792,14 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ToDoItem.ObjectLoadedEvent ev) {
         ...
     }
 }</code></pre> 
            </div> 
           </div> 
-          <div class="admonitionblock tip"> 
-           <table> 
-            <tbody>
-             <tr> 
-              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-              <td class="content"> 
-               <div class="paragraph"> 
-                <p>If the AxonFramework is being used, replace <code>@com.google.common.eventbus.Subscribe</code> with <code>@org.axonframework.eventhandling.annotation.EventHandler</code>.</p> 
-               </div> </td> 
-             </tr> 
-            </tbody>
-           </table> 
-          </div> 
          </div> 
          <div class="sect3"> 
           <h4 id="_default_doop_and_noop_events_4">10.6.2. Default, Doop and Noop events</h4> 
@@ -7985,7 +8037,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="sect3"> 
           <h4 id="_subscribers_5">10.9.1. Subscribers</h4> 
           <div class="paragraph"> 
-           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below use the Guava API.</p> 
+           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below are compatible with both.</p> 
           </div> 
           <div class="paragraph"> 
            <p>Subscribers can be either coarse-grained (if they subscribe to the top-level event type):</p> 
@@ -7994,7 +8046,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ObjectPersistedEvent ev) {
         <span class="keyword">if</span>(ev.getSource() <span class="keyword">instanceof</span> ToDoItem) { ... }
     }
@@ -8008,26 +8061,14 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ToDoItem.ObjectPersistedEvent ev) {
         ...
     }
 }</code></pre> 
            </div> 
           </div> 
-          <div class="admonitionblock tip"> 
-           <table> 
-            <tbody>
-             <tr> 
-              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-              <td class="content"> 
-               <div class="paragraph"> 
-                <p>If the AxonFramework is being used, replace <code>@com.google.common.eventbus.Subscribe</code> with <code>@org.axonframework.eventhandling.annotation.EventHandler</code>.</p> 
-               </div> </td> 
-             </tr> 
-            </tbody>
-           </table> 
-          </div> 
          </div> 
          <div class="sect3"> 
           <h4 id="_default_doop_and_noop_events_5">10.9.2. Default, Doop and Noop events</h4> 
@@ -8111,7 +8152,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="sect3"> 
           <h4 id="_subscribers_6">10.10.1. Subscribers</h4> 
           <div class="paragraph"> 
-           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below use the Guava API.</p> 
+           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below are compatible with both.</p> 
           </div> 
           <div class="paragraph"> 
            <p>Subscribers can be either coarse-grained (if they subscribe to the top-level event type):</p> 
@@ -8134,26 +8175,14 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ToDoItem.ObjectPersistingEvent ev) {
         ...
     }
 }</code></pre> 
            </div> 
           </div> 
-          <div class="admonitionblock tip"> 
-           <table> 
-            <tbody>
-             <tr> 
-              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-              <td class="content"> 
-               <div class="paragraph"> 
-                <p>If the AxonFramework is being used, replace <code>@com.google.common.eventbus.Subscribe</code> with <code>@org.axonframework.eventhandling.annotation.EventHandler</code>.</p> 
-               </div> </td> 
-             </tr> 
-            </tbody>
-           </table> 
-          </div> 
          </div> 
          <div class="sect3"> 
           <h4 id="_default_doop_and_noop_events_6">10.10.2. Default, Doop and Noop events</h4> 
@@ -8226,9 +8255,9 @@ WrapperFactory wrapperFactory;</code></pre>
           </div> 
           <div class="olist arabic"> 
            <ol class="arabic"> 
-            <li> <p><a href="../rgant/rgant.html#_rgant-Discriminator"><code>@Discriminator</code></a></p> </li> 
+            <li> <p><a href="../rgant/rgant.html#_rgant_Discriminator"><code>@Discriminator</code></a></p> </li> 
             <li> <p><code>@DomainObject#objectType</code>, or <a href="../rgant/rgant.html#_rgant_aaa_deprecated"><code>@ObjectType</code></a> (deprecated)</p> </li> 
-            <li> <p><a href="../rgant/rgant.html#_rgant-PersistenceCapable"><code>@PersistenceCapable</code></a>, if at least the <code>schema</code> attribute is defined. <br></p> 
+            <li> <p><a href="../rgant/rgant.html#_rgant_PersistenceCapable"><code>@PersistenceCapable</code></a>, if at least the <code>schema</code> attribute is defined.</p> 
              <div class="paragraph"> 
               <p>If both <code>schema</code> and <code>table</code> are defined, then the value is “schema.table�?. If only <code>schema</code> is defined, then the value is “schema.className�?.</p> 
              </div> </li> 
@@ -8417,7 +8446,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="sect3"> 
           <h4 id="_subscribers_7">10.13.1. Subscribers</h4> 
           <div class="paragraph"> 
-           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below use the Guava API.</p> 
+           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below are compatible with both.</p> 
           </div> 
           <div class="paragraph"> 
            <p>Subscribers can be either coarse-grained (if they subscribe to the top-level event type):</p> 
@@ -8426,7 +8455,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ObjectRemovingEvent ev) {
         <span class="keyword">if</span>(ev.getSource() <span class="keyword">instanceof</span> ToDoItem) { ... }
     }
@@ -8440,26 +8470,14 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ToDoItem.ObjectRemovingEvent ev) {
         ...
     }
 }</code></pre> 
            </div> 
           </div> 
-          <div class="admonitionblock tip"> 
-           <table> 
-            <tbody>
-             <tr> 
-              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-              <td class="content"> 
-               <div class="paragraph"> 
-                <p>If the AxonFramework is being used, replace <code>@com.google.common.eventbus.Subscribe</code> with <code>@org.axonframework.eventhandling.annotation.EventHandler</code>.</p> 
-               </div> </td> 
-             </tr> 
-            </tbody>
-           </table> 
-          </div> 
          </div> 
          <div class="sect3"> 
           <h4 id="_default_doop_and_noop_events_7">10.13.2. Default, Doop and Noop events</h4> 
@@ -8543,7 +8561,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="sect3"> 
           <h4 id="_subscribers_8">10.14.1. Subscribers</h4> 
           <div class="paragraph"> 
-           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below use the Guava API.</p> 
+           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below are compatible with both.</p> 
           </div> 
           <div class="paragraph"> 
            <p>Subscribers can be either coarse-grained (if they subscribe to the top-level event type):</p> 
@@ -8552,7 +8570,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ObjectUpdatingEvent ev) {
         <span class="keyword">if</span>(ev.getSource() <span class="keyword">instanceof</span> ToDoItem) { ... }
     }
@@ -8566,26 +8585,14 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ToDoItem.ObjectUpdatingEvent ev) {
         ...
     }
 }</code></pre> 
            </div> 
           </div> 
-          <div class="admonitionblock tip"> 
-           <table> 
-            <tbody>
-             <tr> 
-              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-              <td class="content"> 
-               <div class="paragraph"> 
-                <p>If the AxonFramework is being used, replace <code>@com.google.common.eventbus.Subscribe</code> with <code>@org.axonframework.eventhandling.annotation.EventHandler</code>.</p> 
-               </div> </td> 
-             </tr> 
-            </tbody>
-           </table> 
-          </div> 
          </div> 
          <div class="sect3"> 
           <h4 id="_default_doop_and_noop_events_8">10.14.2. Default, Doop and Noop events</h4> 
@@ -8669,7 +8676,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="sect3"> 
           <h4 id="_subscribers_9">10.15.1. Subscribers</h4> 
           <div class="paragraph"> 
-           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below use the Guava API.</p> 
+           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below are compatible with both.</p> 
           </div> 
           <div class="paragraph"> 
            <p>Subscribers can be either coarse-grained (if they subscribe to the top-level event type):</p> 
@@ -8678,7 +8685,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ObjectUpdatedEvent ev) {
         <span class="keyword">if</span>(ev.getSource() <span class="keyword">instanceof</span> ToDoItem) { ... }
     }
@@ -8692,26 +8700,14 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ToDoItem.ObjectUpdatedEvent ev) {
         ...
     }
 }</code></pre> 
            </div> 
           </div> 
-          <div class="admonitionblock tip"> 
-           <table> 
-            <tbody>
-             <tr> 
-              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-              <td class="content"> 
-               <div class="paragraph"> 
-                <p>If the AxonFramework is being used, replace <code>@com.google.common.eventbus.Subscribe</code> with <code>@org.axonframework.eventhandling.annotation.EventHandler</code>.</p> 
-               </div> </td> 
-             </tr> 
-            </tbody>
-           </table> 
-          </div> 
          </div> 
          <div class="sect3"> 
           <h4 id="_default_doop_and_noop_events_9">10.15.2. Default, Doop and Noop events</h4> 
@@ -9184,7 +9180,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="sect3"> 
           <h4 id="_subscribers_10">11.4.1. Subscribers</h4> 
           <div class="paragraph"> 
-           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below use the Guava API.</p> 
+           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below are compatible with both.</p> 
           </div> 
           <div class="paragraph"> 
            <p>Subscribers can be either coarse-grained (if they subscribe to the top-level event type):</p> 
@@ -9193,7 +9189,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(CssClassUiEvent ev) {
         <span class="keyword">if</span>(ev.getSource() <span class="keyword">instanceof</span> ToDoItemDto) { ... }
     }
@@ -9207,7 +9204,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ToDoItemDto.CssClassUiEvent ev) {
         ...
     }
@@ -9217,19 +9215,6 @@ WrapperFactory wrapperFactory;</code></pre>
           <div class="paragraph"> 
            <p>The subscriber should then use <code>CssClassUiEvent#setCssClass(…​)</code> to actually specify the CSS class to be used.</p> 
           </div> 
-          <div class="admonitionblock tip"> 
-           <table> 
-            <tbody>
-             <tr> 
-              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-              <td class="content"> 
-               <div class="paragraph"> 
-                <p>If the AxonFramework is being used, replace <code>@com.google.common.eventbus.Subscribe</code> with <code>@org.axonframework.eventhandling.annotation.EventHandler</code>.</p> 
-               </div> </td> 
-             </tr> 
-            </tbody>
-           </table> 
-          </div> 
          </div> 
          <div class="sect3"> 
           <h4 id="_default_doop_and_noop_events_10">11.4.2. Default, Doop and Noop events</h4> 
@@ -9273,7 +9258,7 @@ WrapperFactory wrapperFactory;</code></pre>
          </div> 
          <div class="listingblock"> 
           <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DescribedAs</span>(<span class="string"><span class="delimiter">"</span><span class="content">A customer who may have originally become known to us via </span><span class="delimiter">"</span></span> +
+           <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainObjectLayout</span>(describedAs=<span class="string"><span class="delimiter">"</span><span class="content">A customer who may have originally become known to us via </span><span class="delimiter">"</span></span> +
              <span class="string"><span class="delimiter">"</span><span class="content">the marketing system or who may have contacted us directly.</span><span class="delimiter">"</span></span>)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">ProspectiveSale</span> {
    ...
@@ -9347,7 +9332,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="sect3"> 
           <h4 id="_subscribers_11">11.6.1. Subscribers</h4> 
           <div class="paragraph"> 
-           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below use the Guava API.</p> 
+           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below are compatible with both.</p> 
           </div> 
           <div class="paragraph"> 
            <p>Subscribers can be either coarse-grained (if they subscribe to the top-level event type):</p> 
@@ -9356,7 +9341,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(IconUiEvent ev) {
         <span class="keyword">if</span>(ev.getSource() <span class="keyword">instanceof</span> ToDoItemDto) { ... }
     }
@@ -9370,7 +9356,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ToDoItemDto.IconUiEvent ev) {
         ...
     }
@@ -9380,19 +9367,6 @@ WrapperFactory wrapperFactory;</code></pre>
           <div class="paragraph"> 
            <p>The subscriber should then use <code>IconUiEvent#setIconName(…​)</code> to actually specify the icon name to be used.</p> 
           </div> 
-          <div class="admonitionblock tip"> 
-           <table> 
-            <tbody>
-             <tr> 
-              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-              <td class="content"> 
-               <div class="paragraph"> 
-                <p>If the AxonFramework is being used, replace <code>@com.google.common.eventbus.Subscribe</code> with <code>@org.axonframework.eventhandling.annotation.EventHandler</code>.</p> 
-               </div> </td> 
-             </tr> 
-            </tbody>
-           </table> 
-          </div> 
          </div> 
          <div class="sect3"> 
           <h4 id="_default_doop_and_noop_events_11">11.6.2. Default, Doop and Noop events</h4> 
@@ -9619,7 +9593,7 @@ WrapperFactory wrapperFactory;</code></pre>
          <div class="sect3"> 
           <h4 id="_subscribers_12">11.10.1. Subscribers</h4> 
           <div class="paragraph"> 
-           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below use the Guava API.</p> 
+           <p>Subscribers (which must be domain services) subscribe using either the <a href="https://github.com/google/guava">Guava</a> API or (if the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> has been appropriately configured) using the <a href="http://www.axonframework.org/">Axon Framework</a> API. The examples below are compatible with both.</p> 
           </div> 
           <div class="paragraph"> 
            <p>Subscribers can be either coarse-grained (if they subscribe to the top-level event type):</p> 
@@ -9628,7 +9602,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(TitleUiEvent ev) {
         <span class="keyword">if</span>(ev.getSource() <span class="keyword">instanceof</span> ToDoItemDto) { ... }
     }
@@ -9642,7 +9617,8 @@ WrapperFactory wrapperFactory;</code></pre>
            <div class="content"> 
             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubscriber</span> <span class="directive">extends</span> AbstractSubscriber {
-    <span class="annotation">@com</span>.google.common.eventbus.Subscribe
+    <span class="annotation">@org</span>.axonframework.eventhandling.annotation.EventHandler <span class="comment">// if using axon</span>
+    <span class="annotation">@com</span>.google.common.eventbus.Subscribe                    <span class="comment">// if using guava</span>
     <span class="directive">public</span> <span class="type">void</span> on(ToDoItemDto.TitleUiEvent ev) {
         ...
     }
@@ -9652,19 +9628,6 @@ WrapperFactory wrapperFactory;</code></pre>
           <div class="paragraph"> 
            <p>The subscriber should then use either <code>TitleUiEvent#setTranslatableTitle(…​)</code> or <code>TitleUiEvent#setTitle(…​)</code> to actually specify the title to be used.</p> 
           </div> 
-          <div class="admonitionblock tip"> 
-           <table> 
-            <tbody>
-             <tr> 
-              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-              <td class="content"> 
-               <div class="paragraph"> 
-                <p>If the AxonFramework is being used, replace <code>@com.google.common.eventbus.Subscribe</code> with <code>@org.axonframework.eventhandling.annotation.EventHandler</code>.</p> 
-               </div> </td> 
-             </tr> 
-            </tbody>
-           </table> 
-          </div> 
          </div> 
          <div class="sect3"> 
           <h4 id="_default_doop_and_noop_events_12">11.10.2. Default, Doop and Noop events</h4> 
@@ -10449,10 +10412,10 @@ WrapperFactory wrapperFactory;</code></pre>
     )
     <span class="annotation">@HomePage</span>
     <span class="directive">public</span> ToDoAppDashboard lookup() {
-        <span class="keyword">return</span> container.injectServicesInto(<span class="keyword">new</span> ToDoAppDashboard());
+        <span class="keyword">return</span> serviceRegistry.injectServicesInto(<span class="keyword">new</span> ToDoAppDashboard());
     }
     <span class="annotation">@Inject</span>
-    <span class="directive">private</span> DomainObjectContainer container;
+    <span class="predefined-type">ServiceRegistry</span> serviceRegistry;
 }</code></pre> 
          </div> 
         </div> 
@@ -10517,7 +10480,7 @@ WrapperFactory wrapperFactory;</code></pre>
          </table> 
         </div> 
         <div class="paragraph"> 
-         <p>Isis supports several syntaxes for injecting domain services. The simplest uses the <code>@javax.inject.Inject</code> annotation on the field, as defined in <a href="https://jcp.org/en/jsr/detail?id=330">JSR-330</a>.</p> 
+         <p>Apache Isis supports several syntaxes for injecting domain services. The simplest uses the <code>@javax.inject.Inject</code> annotation on the field, as defined in <a href="https://jcp.org/en/jsr/detail?id=330">JSR-330</a>.</p> 
         </div> 
         <div class="paragraph"> 
          <p>For example:</p> 
@@ -10550,7 +10513,7 @@ WrapperFactory wrapperFactory;</code></pre>
         <div class="sect2"> 
          <h3 id="_alternative_syntaxes">16.1. Alternative syntaxes</h3> 
          <div class="paragraph"> 
-          <p>Isis also supports setter-based injection:</p> 
+          <p>Apache Isis also supports setter-based injection:</p> 
          </div> 
          <div class="listingblock"> 
           <div class="content"> 
@@ -10636,55 +10599,35 @@ WrapperFactory wrapperFactory;</code></pre>
         <div class="sect2"> 
          <h3 id="_manually_injecting_services">16.3. Manually injecting services</h3> 
          <div class="paragraph"> 
-          <p>Isis performs dependency injection when domain entities are recreated. It will also perform dependency injection if an object is created through the <code>DomainObjectContainer</code>.</p> 
+          <p>Apache Isis performs dependency injection when domain entities are recreated. It will also perform dependency injection if an object is created through the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_FactoryService"><code>FactoryService</code></a> or <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_RepositoryService"><code>RepositoryService</code></a>.</p> 
          </div> 
          <div class="paragraph"> 
           <p>For example, to create a new (transient) domain object, the idiom is:</p> 
          </div> 
          <div class="listingblock"> 
           <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java">Customer cust = container.newTransientInstance(Customer.class);  <i class="conum" data-value="1"></i><b>(1)</b>
+           <pre class="CodeRay highlight"><code data-lang="java">Customer cust = repositoryService.instantiate(Customer.class);  <i class="conum" data-value="1"></i><b>(1)</b>
 <span class="comment">// initialize state of "cust"</span>
-container.persist(cust);</code></pre> 
+repositoryService.persist(cust);</code></pre> 
           </div> 
          </div> 
-         <div class="colist arabic"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td><i class="conum" data-value="1"></i><b>1</b></td> 
-             <td>where <code>container</code> is an instance of <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_DomainObjectContainer"><code>DomainObjectContainer</code></a>.</td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
          <div class="paragraph"> 
-          <p>View models are created similarly:</p> 
+          <p>View models are created identically:</p> 
          </div> 
          <div class="listingblock"> 
           <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java">ToDoAppDashboard dashboard = container.newViewModelInstance(ToDoAppDashboard.class);</code></pre> 
+           <pre class="CodeRay highlight"><code data-lang="java">ToDoAppDashboard dashboard = repositoryService.instantiate(ToDoAppDashboard.class);</code></pre> 
           </div> 
          </div> 
          <div class="paragraph"> 
-          <p>If you prefer, though, you can simply instantiate domain objects using "new" and then inject domain services manually:</p> 
+          <p>If you prefer, though, you can simply instantiate domain objects using "new" and then inject domain services manually using <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_ServiceRegistry"><code>ServiceRegistry</code></a>:</p> 
          </div> 
          <div class="listingblock"> 
           <div class="content"> 
            <pre class="CodeRay highlight"><code data-lang="java">Customer cust = <span class="keyword">new</span> Customer();
-container.injectServicesInto(cust);
-<span class="comment">// initialize state of "cust"</span>
-container.persist(cust);</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>or if you prefer:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java">Customer cust = container.injectServicesInto(<span class="keyword">new</span> Customer());
+serviceRegistry.injectServicesInto(cust);
 <span class="comment">// initialize state of "cust"</span>
-container.persist(cust);</code></pre> 
+repositoryService.persist(cust);</code></pre> 
           </div> 
          </div> 
          <div class="admonitionblock note"> 
@@ -10694,10 +10637,10 @@ container.persist(cust);</code></pre>
              <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
              <td class="content"> 
               <div class="paragraph"> 
-               <p>There is one subtle difference between using <code>DomainObjectContainer#newTransientInstance(…​)</code> and <code>DomainObjectContainer#injectServicesInto(…​)</code>, in that with the former Apache Isis will automatically initialize all fields to their default values.</p> 
+               <p>Note that using either <code>FactoryService#instantiate(…​)</code> or <code>RepositoryService#instantiate(…​)</code> will also automatically initialize all fields to their default values, and will also fire a "created" lifecycle event.</p> 
               </div> 
               <div class="paragraph"> 
-               <p>This isn’t a particular useful feature (and indeed can sometimes be rather confusing) so you may well wish to standardize on using <code>injectServicesInto(…​)</code> throughout.</p> 
+               <p>Neither of these are particularly useful (and indeed can sometimes be rather confusing) so you may well wish to standardize on using <code>injectServicesInto(…​)</code> throughout.</p> 
               </div> </td> 
             </tr> 
            </tbody>
@@ -10911,7 +10854,44 @@ container.persist(cust);</code></pre>
        </div> 
       </div> 
       <div class="sect1"> 
-       <h2 id="_rgant-Nullable">20. <code>@Nullable</code> (<code>javax</code>)</h2>
+       <h2 id="_rgant-NotPersistent">20. <code>@NotPersistent</code> (<code>javax.jdo</code>)</h2>
+       <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
+        <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-NotPersistent.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+        <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+        <ul class="dropdown-menu">
+         <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-NotPersistent.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+         <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-NotPersistent.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+         <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-NotPersistent.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+         <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-NotPersistent.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+        </ul>
+       </div> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>The <code>@javax.jdo.annotation.NotPersistent</code> annotation is used by JDO/DataNucleus to indicate that a property should not be persisted to the database.</p> 
+        </div> 
+        <div class="paragraph"> 
+         <p>Apache Isis also uses this annotation, though (currently) only in the very minimal way to suppress checking of inconsistent metadata between JDO and Isis annotations (eg <code>@Column#allowsNull()</code> vs <code>@Property#optionality()</code>, or <code>@Column#length()</code> and <code>@Property#maxLength()</code>).</p> 
+        </div> 
+        <div class="admonitionblock note"> 
+         <table> 
+          <tbody>
+           <tr> 
+            <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
+            <td class="content"> 
+             <div class="paragraph"> 
+              <p>Isis parses the <code>@NotPersistent</code> annotation from the Java source code; it does not query the JDO metamodel. This means that it the <code>@NotPersistent</code> annotation must be used rather than the equivalent <code>&lt;field&gt;</code> <a href="http://www.datanucleus.org/products/accessplatform_4_0/jdo/fields_properties.html">XML metadata</a>.</p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>Moreover, while JDO/DataNucleus will recognize annotations on either the field or the getter method, Apache Isis (currently) only inspects the getter method. Therefore ensure that the annotation is placed there.</p> 
+             </div> </td> 
+           </tr> 
+          </tbody>
+         </table> 
+        </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_rgant-Nullable">21. <code>@Nullable</code> (<code>javax</code>)</h2>
        <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
         <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Nullable.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
         <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -10973,43 +10953,6 @@ container.persist(cust);</code></pre>
        </div> 
       </div> 
       <div class="sect1"> 
-       <h2 id="_rgant-NotPersistent">21. <code>@NotPersistent</code> (<code>javax.jdo</code>)</h2>
-       <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
-        <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-NotPersistent.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
-        <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
-        <ul class="dropdown-menu">
-         <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-NotPersistent.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
-         <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-NotPersistent.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
-         <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-NotPersistent.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
-         <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-NotPersistent.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
-        </ul>
-       </div> 
-       <div class="sectionbody"> 
-        <div class="paragraph"> 
-         <p>The <code>@javax.jdo.annotation.NotPersistent</code> annotation is used by JDO/DataNucleus to indicate that a property should not be persisted to the database.</p> 
-        </div> 
-        <div class="paragraph"> 
-         <p>Apache Isis also uses this annotation, though (currently) only in the very minimal way to suppress checking of inconsistent metadata between JDO and Isis annotations (eg <code>@Column#allowsNull()</code> vs <code>@Property#optionality()</code>, or <code>@Column#length()</code> and <code>@Property#maxLength()</code>).</p> 
-        </div> 
-        <div class="admonitionblock note"> 
-         <table> 
-          <tbody>
-           <tr> 
-            <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
-            <td class="content"> 
-             <div class="paragraph"> 
-              <p>Isis parses the <code>@NotPersistent</code> annotation from the Java source code; it does not query the JDO metamodel. This means that it the <code>@NotPersistent</code> annotation must be used rather than the equivalent <code>&lt;field&gt;</code> <a href="http://www.datanucleus.org/products/accessplatform_4_0/jdo/fields_properties.html">XML metadata</a>.</p> 
-             </div> 
-             <div class="paragraph"> 
-              <p>Moreover, while JDO/DataNucleus will recognize annotations on either the field or the getter method, Apache Isis (currently) only inspects the getter method. Therefore ensure that the annotation is placed there.</p> 
-             </div> </td> 
-           </tr> 
-          </tbody>
-         </table> 
-        </div> 
-       </div> 
-      </div> 
-      <div class="sect1"> 
        <h2 id="_rgant-MinLength">22. <code>@MinLength</code></h2>
        <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
         <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-MinLength.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
@@ -11031,8 +10974,7 @@ container.persist(cust);</code></pre>
         <div class="listingblock"> 
          <div class="content"> 
           <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> ToDoItem add(
-        <span class="annotation">@TypicalLength</span>(<span class="integer">20</span>)
-        <span class="directive">final</span> ToDoItem toDoItem) {
+    <span class="directive">final</span> ToDoItem toDoItem) {
     getDependencies().add(toDoItem);
     <span class="keyword">return</span> <span class="local-variable">this</span>;
 }
@@ -11046,9 +10988,6 @@ container.persist(cust);</code></pre>
 }</code></pre> 
          </div> 
         </div> 
-        <div class="paragraph"> 
-         <p>The `@Parameter(minLength=…​)`e can also be used (even though strictly speaking the search argument is not a parameter of the action).</p> 
-        </div> 
        </div> 
       </div> 
       <div class="sect1"> 
@@ -11730,10 +11669,10 @@ container.persist(cust);</code></pre>
           <p>The <code>describedAs()</code> attribute is used to provide a short description of the action parameter to the user. In the <a href="../ugvw/ugvw.html">Wicket viewer</a> it is displayed as a 'tool tip'. The <code>describedAs()</code> attribute can also be specified for <a href="../rgant/rgant.html#_rgant-CollectionLayout_describedAs">collections</a>, <a href="../rgant/rgant.html#_rgant-PropertyLayout_describedAs">properties</a>, <a href="../rgant/rgant.html#_rgant-ActionLayout_describedAs">actions</a>, <a href="../rgant/rgant.html#_rgant-DomainObjectLayout_describedAs">domain objects</a> and <a href="../rgant/rgant.html#_rgant-ViewModelLayout_describedAs">view models</a>.</p> 
          </div> 
          <div class="paragraph"> 
-          <p>Descriptions may be provided for objects, members (properties, collections and actions), and for individual parameters within an action method. <code>@DescribedAs<

<TRUNCATED>