ISIS-1503 and ISIS-1548: further documentation updates for these tickets 
(@Mixin, @DomainObject, UserService, AuthenticationSessionProvider, SudoService)


Project: http://git-wip-us.apache.org/repos/asf/isis-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis-site/commit/ec8b5981
Tree: http://git-wip-us.apache.org/repos/asf/isis-site/tree/ec8b5981
Diff: http://git-wip-us.apache.org/repos/asf/isis-site/diff/ec8b5981

Branch: refs/heads/asf-site
Commit: ec8b59810b337684a2202027f19fc4be2e9bb718
Parents: c6476ff
Author: Dan Haywood <d...@haywood-associates.co.uk>
Authored: Thu Dec 1 11:01:41 2016 +0000
Committer: Dan Haywood <d...@haywood-associates.co.uk>
Committed: Thu Dec 1 11:01:41 2016 +0000

----------------------------------------------------------------------
 content/guides/rgant.html |   473 +-
 content/guides/rgant.pdf  | 70853 +++++++++++++++++++++------------------
 content/guides/rgfis.html |     3 +
 content/guides/rgfis.pdf  |  1420 +-
 content/guides/rgsvc.html |   179 +-
 content/guides/rgsvc.pdf  | 12065 ++++---
 content/guides/ugbtb.html |   340 +-
 content/guides/ugbtb.pdf  | 14905 +++++---
 8 files changed, 56475 insertions(+), 43763 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis-site/blob/ec8b5981/content/guides/rgant.html
----------------------------------------------------------------------
diff --git a/content/guides/rgant.html b/content/guides/rgant.html
index 7e6cba1..93dd720 100644
--- a/content/guides/rgant.html
+++ b/content/guides/rgant.html
@@ -5134,6 +5134,14 @@ can be used instead, eg:</p>
 </div></div></td>
 </tr>
 <tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#_rgant-DomainObject_mixinMethod"><code>mixinMethod()</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Method 
name within the mixin</p></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>(As of <code>1.13.2-SNAPSHOT</code>) How to recognize the "reserved" method 
name, meaning that the mixin&#8217;s own name will be inferred from the mixin 
type.
+Typical examples are "exec", "execute", "invoke", "apply" and so on.</p>
+</div></div></td>
+</tr>
+<tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#_rgant-DomainObject_nature"><code>nature()</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>NOT_SPECIFIED</code>, <code>JDO_ENTITY</code>, 
<code>EXTERNAL_ENTITY</code>, <code>INMEMORY_ENTITY</code>, <code>MIXIN</code>, 
<code>VIEW_MODEL</code> (<code>NOT_SPECIFIED</code>)</p></td>
 <td class="tableblock halign-left valign-top"><div><div class="paragraph">
@@ -5783,7 +5791,46 @@ then no event will be posted.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-DomainObject_nature">10.7. <code>nature()</code></h3>
+<h3 id="_rgant-DomainObject_mixinMethod">10.7. <code>mixinMethod()</code> 
(<code>1.13.2-SNAPSHOT</code>)</h3>
+<div class="paragraph">
+<p>The <code>mixinMethod()</code> attribute specifies the name of the method 
to be treated as a "reserved" method name, meaning that the mixin&#8217;s name 
should instead be inferred from the mixin&#8217;s type.</p>
+</div>
+<div class="paragraph">
+<p>For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span 
class="annotation">@DomainObject</span>
+<span class="directive">public</span> <span class="type">class</span> <span 
class="class">Customer</span> {
+
+    <span class="annotation">@DomainObject</span>(nature=Nature.MIXIN, 
mixinMethod=<span class="string"><span class="delimiter">&quot;</span><span 
class="content">execute</span><span class="delimiter">&quot;</span></span>)
+    <span class="directive">public</span> <span 
class="directive">static</span> <span class="type">class</span> <span 
class="class">placeOrder</span> {
+
+        Customer customer;
+        <span class="directive">public</span> placeOrder(Customer customer) { 
<span class="local-variable">this</span>.customer = customer; }
+
+        <span class="directive">public</span> Customer execute(Product p, 
<span class="type">int</span> quantity) { ... }
+        <span class="directive">public</span> <span 
class="predefined-type">String</span> disableExecute() { ... }
+        <span class="directive">public</span> <span 
class="predefined-type">String</span> validate0Execute() { ... }
+    }
+    ...
+)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This allows all mixins to follow a similar convention, with the name of the 
mixin inferred entirely from its type ("placeOrder").</p>
+</div>
+<div class="paragraph">
+<p>When invoked programmatically, the code reads:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code 
data-lang="java">mixin(Customer.placeOrder.class, 
someCustomer).execute(someProduct, <span class="integer">3</span>);</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_rgant-DomainObject_nature">10.8. <code>nature()</code></h3>
 <div class="paragraph">
 <p>The <code>nature()</code> attribute is used to characterize the domain 
object as either an entity (part of the domain layer) or as a view model (part 
of the application layer).  If the domain object should be thought of as an 
entity, it also captures how the persistence of that entity is managed.</p>
 </div>
@@ -5882,7 +5929,7 @@ then no event will be posted.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-DomainObject_persistedLifecycleEvent">10.8. 
persistedLifecycleEvent()</h3>
+<h3 id="_rgant-DomainObject_persistedLifecycleEvent">10.9. 
persistedLifecycleEvent()</h3>
 <div class="paragraph">
 <p>Whenever a (just created, still transient) domain object has been saved 
(INSERTed in)to the database, a "persisted" lifecycle
 event is fired.</p>
@@ -5940,7 +5987,7 @@ attribute is available for other lifecycle events.</p>
 <p>The benefit is that subscribers can be more targeted as to the events that 
they subscribe to.</p>
 </div>
 <div class="sect3">
-<h4 id="_subscribers_5">10.8.1. Subscribers</h4>
+<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.html#_rgsvc_api_EventBusService"><code>EventBusService</code></a> 
has been appropriately configured)
@@ -5990,7 +6037,7 @@ using the <a href="http://www.axonframework.org/";>Axon 
Framework</a> API.  The e
 </div>
 </div>
 <div class="sect3">
-<h4 id="_default_doop_and_noop_events_5">10.8.2. Default, Doop and Noop 
events</h4>
+<h4 id="_default_doop_and_noop_events_5">10.9.2. Default, Doop and Noop 
events</h4>
 <div class="paragraph">
 <p>If the <code>persistedLifecycleEvent</code> attribute is not explicitly 
specified (is left as its default value, 
<code>ObjectPersistedEvent.Default</code>),
 then the framework will, by default, post an event.</p>
@@ -6011,7 +6058,7 @@ then no event will be posted.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-DomainObject_persistingLifecycleEvent">10.9. 
persistingLifecycleEvent()</h3>
+<h3 id="_rgant-DomainObject_persistingLifecycleEvent">10.10. 
persistingLifecycleEvent()</h3>
 <div class="paragraph">
 <p>Whenever a (just created, still transient) domain object is about to be 
saved (INSERTed in)to the database, a "persisting" lifecycle
 event is fired.</p>
@@ -6072,7 +6119,7 @@ attribute is available for other lifecycle events.</p>
 <p>The benefit is that subscribers can be more targeted as to the events that 
they subscribe to.</p>
 </div>
 <div class="sect3">
-<h4 id="_subscribers_6">10.9.1. Subscribers</h4>
+<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.html#_rgsvc_api_EventBusService"><code>EventBusService</code></a> 
has been appropriately configured)
@@ -6122,7 +6169,7 @@ using the <a href="http://www.axonframework.org/";>Axon 
Framework</a> API.  The e
 </div>
 </div>
 <div class="sect3">
-<h4 id="_default_doop_and_noop_events_6">10.9.2. Default, Doop and Noop 
events</h4>
+<h4 id="_default_doop_and_noop_events_6">10.10.2. Default, Doop and Noop 
events</h4>
 <div class="paragraph">
 <p>If the <code>persistingLifecycleEvent</code> attribute is not explicitly 
specified (is left as its default value, 
<code>ObjectPersistingEvent.Default</code>),
 then the framework will, by default, post an event.</p>
@@ -6143,7 +6190,7 @@ then no event will be posted.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-DomainObject_objectType">10.10. <code>objectType()</code></h3>
+<h3 id="_rgant-DomainObject_objectType">10.11. <code>objectType()</code></h3>
 <div class="paragraph">
 <p>The <code>objectType()</code> attribute is used to provide a unique alias 
for the object&#8217;s class name.</p>
 </div>
@@ -6221,7 +6268,7 @@ then no event will be posted.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-DomainObject_publishing">10.11. <code>publishing()</code></h3>
+<h3 id="_rgant-DomainObject_publishing">10.12. <code>publishing()</code></h3>
 <div class="paragraph">
 <p>The <code>publishing()</code> attribute determines whether and how a 
modified object instance is published via the registered
 implementation of a <a 
href="rgsvc.html#_rgsvc_spi_PublishingService"><code>PublishingService</code></a>)
 or
@@ -6280,7 +6327,7 @@ property edits are published as events.</p>
 </table>
 </div>
 <div class="sect3">
-<h4 id="__code_publishingpayloadfactory_code_2">10.11.1. 
<code>publishingPayloadFactory()</code></h4>
+<h4 id="__code_publishingpayloadfactory_code_2">10.12.1. 
<code>publishingPayloadFactory()</code></h4>
 <div class="paragraph">
 <p>The (optional) related <code>publishingPayloadFactory()</code> specifies 
the class to use to create the (payload of the) event to
 be published by the publishing factory.</p>
@@ -6309,7 +6356,7 @@ is ignored by the replacement <a 
href="rgsvc.html#_rgsvc_spi_PublisherService"><
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-DomainObject_removingLifecycleEvent">10.12. 
removingLifecycleEvent()</h3>
+<h3 id="_rgant-DomainObject_removingLifecycleEvent">10.13. 
removingLifecycleEvent()</h3>
 <div class="paragraph">
 <p>Whenever a (persistent) domain object is about to be removed (DELETEd) from 
the database, a "removing"
 lifecycle event is fired.</p>
@@ -6370,7 +6417,7 @@ attribute is available for other lifecycle events.</p>
 <p>The benefit is that subscribers can be more targeted as to the events that 
they subscribe to.</p>
 </div>
 <div class="sect3">
-<h4 id="_subscribers_7">10.12.1. Subscribers</h4>
+<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.html#_rgsvc_api_EventBusService"><code>EventBusService</code></a> 
has been appropriately configured)
@@ -6420,7 +6467,7 @@ using the <a href="http://www.axonframework.org/";>Axon 
Framework</a> API.  The e
 </div>
 </div>
 <div class="sect3">
-<h4 id="_default_doop_and_noop_events_7">10.12.2. Default, Doop and Noop 
events</h4>
+<h4 id="_default_doop_and_noop_events_7">10.13.2. Default, Doop and Noop 
events</h4>
 <div class="paragraph">
 <p>If the <code>removingLifecycleEvent</code> attribute is not explicitly 
specified (is left as its default value, 
<code>ObjectRemovingEvent.Default</code>),
 then the framework will, by default, post an event.</p>
@@ -6441,7 +6488,7 @@ then no event will be posted.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-DomainObject_updatingLifecycleEvent">10.13. 
updatingLifecycleEvent()</h3>
+<h3 id="_rgant-DomainObject_updatingLifecycleEvent">10.14. 
updatingLifecycleEvent()</h3>
 <div class="paragraph">
 <p>Whenever a (persistent) domain object has been modified and is about to be 
updated to the database, an "updating"
 lifecycle event is fired.</p>
@@ -6502,7 +6549,7 @@ attribute is available for other lifecycle events.</p>
 <p>The benefit is that subscribers can be more targeted as to the events that 
they subscribe to.</p>
 </div>
 <div class="sect3">
-<h4 id="_subscribers_8">10.13.1. Subscribers</h4>
+<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.html#_rgsvc_api_EventBusService"><code>EventBusService</code></a> 
has been appropriately configured)
@@ -6552,7 +6599,7 @@ using the <a href="http://www.axonframework.org/";>Axon 
Framework</a> API.  The e
 </div>
 </div>
 <div class="sect3">
-<h4 id="_default_doop_and_noop_events_8">10.13.2. Default, Doop and Noop 
events</h4>
+<h4 id="_default_doop_and_noop_events_8">10.14.2. Default, Doop and Noop 
events</h4>
 <div class="paragraph">
 <p>If the <code>updatingLifecycleEvent</code> attribute is not explicitly 
specified (is left as its default value, 
<code>ObjectUpdatingEvent.Default</code>),
 then the framework will, by default, post an event.</p>
@@ -6573,7 +6620,7 @@ then no event will be posted.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-DomainObject_updatedLifecycleEvent">10.14. 
updatedLifecycleEvent()</h3>
+<h3 id="_rgant-DomainObject_updatedLifecycleEvent">10.15. 
updatedLifecycleEvent()</h3>
 <div class="paragraph">
 <p>Whenever a (persistent) domain object has been modified and has been 
updated in the database, an "updated" lifecycle
 event is fired.</p>
@@ -6630,7 +6677,7 @@ attribute is available for other lifecycle events.</p>
 <p>The benefit is that subscribers can be more targeted as to the events that 
they subscribe to.</p>
 </div>
 <div class="sect3">
-<h4 id="_subscribers_9">10.14.1. Subscribers</h4>
+<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.html#_rgsvc_api_EventBusService"><code>EventBusService</code></a> 
has been appropriately configured)
@@ -6680,7 +6727,7 @@ using the <a href="http://www.axonframework.org/";>Axon 
Framework</a> API.  The e
 </div>
 </div>
 <div class="sect3">
-<h4 id="_default_doop_and_noop_events_9">10.14.2. Default, Doop and Noop 
events</h4>
+<h4 id="_default_doop_and_noop_events_9">10.15.2. Default, Doop and Noop 
events</h4>
 <div class="paragraph">
 <p>If the <code>updatedLifecycleEvent</code> attribute is not explicitly 
specified (is left as its default value, 
<code>ObjectUpdatedEvent.Default</code>),
 then the framework will, by default, post an event.</p>
@@ -8491,7 +8538,93 @@ so that boilerplate-busting tools such as <a 
href="https://projectlombok.org/";>P
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-Nullable">19. <code>@Nullable</code> (<code>javax</code>)</h2>
+<h2 id="_rgant-Mixin">19. <code>@Mixin</code></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The <code>@Mixin</code> annotation indicates that the class acts as a 
mixin, contributing behaviour - actions, (derived) properties and (derived) 
collections - to another domain object.</p>
+</div>
+<div class="paragraph">
+<p>Mixins were originally introduced as a means of allowing contributions from 
one module to the types of another module; in such cases the mixin type is 
often an interface type (eg <code>DocumentHolder</code>) that might be 
implemented by numerous different concrete types.
+However, mixins are also a convenient mechanism for grouping functionality 
even for a concrete type.</p>
+</div>
+<div class="paragraph">
+<p>For further discussion on using mixins, see <a 
href="ugbtb.html#_ugbtb_decoupling_mixins">mixins</a> in the user guide.</p>
+</div>
+<div class="paragraph">
+<p>The table below summarizes the annotation&#8217;s attributes.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<caption class="title">Table 16. <code>@Mixin</code> attributes</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 25%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Attribute</th>
+<th class="tableblock halign-left valign-top">Values (default)</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#_rgant-Mixin_method"><code>method()</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Method 
name within the mixin</p></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>(As of <code>1.13.2-SNAPSHOT</code>) How to recognize the "reserved" method 
name, meaning that the mixin&#8217;s own name will be inferred from the mixin 
type.
+Typical examples are "exec", "execute", "invoke", "apply" and so on.</p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>An alternative and equivalent approach is to use the
+<a href="#_rgant-DomainObject_nature"><code>@DomainObject#nature()</code></a> 
annotation with a nature of <code>MIXIN</code>.</p>
+</div>
+<div class="sect2">
+<h3 id="_rgant-Mixin_method">19.1. <code>method()</code> 
(<code>1.13.2-SNAPSHOT</code>)</h3>
+<div class="paragraph">
+<p>The <code>method()</code> attribute specifies the name of the method to be 
treated as a "reserved" method name, meaning that the mixin&#8217;s name should 
instead be inferred from the mixin&#8217;s type.</p>
+</div>
+<div class="paragraph">
+<p>For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span 
class="annotation">@DomainObject</span>
+<span class="directive">public</span> <span class="type">class</span> <span 
class="class">Customer</span> {
+
+    <span class="annotation">@Mixin</span>(method=<span class="string"><span 
class="delimiter">&quot;</span><span class="content">execute</span><span 
class="delimiter">&quot;</span></span>)
+    <span class="directive">public</span> <span 
class="directive">static</span> <span class="type">class</span> <span 
class="class">placeOrder</span> {
+
+        Customer customer;
+        <span class="directive">public</span> placeOrder(Customer customer) { 
<span class="local-variable">this</span>.customer = customer; }
+
+        <span class="directive">public</span> Customer execute(Product p, 
<span class="type">int</span> quantity) { ... }
+        <span class="directive">public</span> <span 
class="predefined-type">String</span> disableExecute() { ... }
+        <span class="directive">public</span> <span 
class="predefined-type">String</span> validate0Execute() { ... }
+    }
+    ...
+)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This allows all mixins to follow a similar convention, with the name of the 
mixin inferred entirely from its type ("placeOrder").</p>
+</div>
+<div class="paragraph">
+<p>When invoked programmatically, the code reads:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code 
data-lang="java">mixin(Customer.placeOrder.class, 
someCustomer).execute(someProduct, <span class="integer">3</span>);</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_rgant-Nullable">20. <code>@Nullable</code> (<code>javax</code>)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Apache Isis' defaults for properties and parameters is that they are 
mandatory unless otherwise stated.  The
@@ -8554,7 +8687,7 @@ Isis Maven plugin.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-NotPersistent">20. <code>@NotPersistent</code> 
(<code>javax.jdo</code>)</h2>
+<h2 id="_rgant-NotPersistent">21. <code>@NotPersistent</code> 
(<code>javax.jdo</code>)</h2>
 <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>
@@ -8582,7 +8715,7 @@ Isis Maven plugin.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-MinLength">21. <code>@MinLength</code></h2>
+<h2 id="_rgant-MinLength">22. <code>@MinLength</code></h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@MinLength</code> annotation is used to specify the minimum 
number of characters in a search of an <a 
href="rgcms.html#_rgcms_methods_prefixes_autoComplete"><code>autoComplete&#8230;&#8203;()</code></a>
 supporting method.</p>
@@ -8614,7 +8747,7 @@ Isis Maven plugin.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-Parameter">22. <code>@Parameter</code></h2>
+<h2 id="_rgant-Parameter">23. <code>@Parameter</code></h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@Parameter</code> annotation applies to action parameters 
collecting together all domain semantics within a single annotation.</p>
@@ -8623,7 +8756,7 @@ Isis Maven plugin.</p>
 <p>The table below summarizes the annotation&#8217;s attributes.</p>
 </div>
 <table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 16. <code>@Paramter</code> attributes</caption>
+<caption class="title">Table 17. <code>@Paramter</code> attributes</caption>
 <colgroup>
 <col style="width: 25%;">
 <col style="width: 25%;">
@@ -8738,7 +8871,7 @@ Isis Maven plugin.</p>
 </table>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Parameter_fileAccept">22.1. <code>fileAccept()</code></h3>
+<h3 id="_rgant-Parameter_fileAccept">23.1. <code>fileAccept()</code></h3>
 <div class="paragraph">
 <p>The <code>fileAccept()</code> attribute applies only to <a 
href="rgcms.html#_rgcms_classes_value-types_Blob"><code>Blob</code></a>
 or <a href="rgcms.html#_rgcms_classes_value-types_Clob"><code>Clob</code></a> 
parameters, indicating the type of file to accept when
@@ -8775,7 +8908,7 @@ uploading a new value.   The attribute is also supported 
on <a href="#_rgant-Pro
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Parameter_maxLength">22.2. <code>maxLength()</code></h3>
+<h3 id="_rgant-Parameter_maxLength">23.2. <code>maxLength()</code></h3>
 <div class="paragraph">
 <p>The <code>maxLength()</code> attribute applies only to <code>String</code> 
parameters, indicating the maximum number of characters that the user may enter 
(for example in a text field in the UI).  It is ignored if applied to 
parameters of any other type.  This attribute can also be applied to <a 
href="#_rgant-Property_maxLength">properties</a>.</p>
 </div>
@@ -8807,7 +8940,7 @@ uploading a new value.   The attribute is also supported 
on <a href="#_rgant-Pro
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Parameter_mustSatisfy">22.3. <code>mustSatisfy()</code></h3>
+<h3 id="_rgant-Parameter_mustSatisfy">23.3. <code>mustSatisfy()</code></h3>
 <div class="paragraph">
 <p>The <code>mustSatisfy()</code> attribute allows arbitrary validation to be 
applied to parameters using an (implementation of a) 
<code>org.apache.isis.applib.spec.Specification</code> object.  The attribute 
is also supported on <a href="#_rgant-Property_mustSatisfy">properties</a>.</p>
 </div>
@@ -8892,7 +9025,7 @@ uploading a new value.   The attribute is also supported 
on <a href="#_rgant-Pro
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Parameter_optionality">22.4. <code>optionality()</code></h3>
+<h3 id="_rgant-Parameter_optionality">23.4. <code>optionality()</code></h3>
 <div class="paragraph">
 <p>By default, Apache Isis assumes that all parameters of an action are 
required (mandatory).  The <code>optionality()</code> attribute allows this to 
be relaxed.  The attribute is also supported for <a 
href="#_rgant-Property_optionality">properties</a>.</p>
 </div>
@@ -8948,7 +9081,7 @@ uploading a new value.   The attribute is also supported 
on <a href="#_rgant-Pro
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Parameter_regexPattern">22.5. <code>regexPattern()</code></h3>
+<h3 id="_rgant-Parameter_regexPattern">23.5. <code>regexPattern()</code></h3>
 <div class="paragraph">
 <p>There are three attributes related to enforcing regular expressions:</p>
 </div>
@@ -8998,7 +9131,7 @@ the provided argument does not match the regex 
pattern.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-ParameterLayout">23. <code>@ParameterLayout</code></h2>
+<h2 id="_rgant-ParameterLayout">24. <code>@ParameterLayout</code></h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@ParameterLayout</code> annotation applies to action parameters, 
collecting together all UI hints within a single annotation.</p>
@@ -9007,7 +9140,7 @@ the provided argument does not match the regex 
pattern.</p>
 <p>The table below summarizes the annotation&#8217;s attributes.</p>
 </div>
 <table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 17. <code>@ParameterLayout</code> 
attributes</caption>
+<caption class="title">Table 18. <code>@ParameterLayout</code> 
attributes</caption>
 <colgroup>
 <col style="width: 25%;">
 <col style="width: 25%;">
@@ -9126,7 +9259,7 @@ the provided argument does not match the regex 
pattern.</p>
 </table>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ParameterLayout_cssClass">23.1. <code>cssClass()</code></h3>
+<h3 id="_rgant-ParameterLayout_cssClass">24.1. <code>cssClass()</code></h3>
 <div class="paragraph">
 <p>The <code>cssClass()</code> attribute can be used to render additional CSS 
classes in the HTML (a wrapping <code>&lt;div&gt;</code>) that represents the 
action parameter.   <a 
href="rgcfg.html#_rgcfg_application-specific_application-css">Application-specific
 CSS</a> can then be used to target and adjust the UI representation of that 
particular element.</p>
 </div>
@@ -9152,7 +9285,7 @@ the provided argument does not match the regex 
pattern.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ParameterLayout_describedAs">23.2. 
<code>describedAs()</code></h3>
+<h3 id="_rgant-ParameterLayout_describedAs">24.2. 
<code>describedAs()</code></h3>
 <div class="paragraph">
 <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.html">Wicket viewer</a> it is displayed as a 'tool tip'.  The 
<code>describedAs()</code> attribute can also be specified for <a 
href="#_rgant-CollectionLayout_describedAs">collections</a>,  <a 
href="#_rgant-PropertyLayout_describedAs">properties</a>, <a 
href="#_rgant-ActionLayout_describedAs">actions</a>, <a 
href="#_rgant-DomainObjectLayout_describedAs">domain objects</a> and <a 
href="#_rgant-ViewModelLayout_describedAs">view models</a>.</p>
 </div>
@@ -9188,7 +9321,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ParameterLayout_labelPosition">23.3. 
<code>labelPosition()</code></h3>
+<h3 id="_rgant-ParameterLayout_labelPosition">24.3. 
<code>labelPosition()</code></h3>
 <div class="paragraph">
 <p>The <code>labelPosition()</code> attribute determines the positioning of 
labels for parameters.  This attribute can also be specified for <a 
href="#_rgant-PropertyLayout_labelPosition">properties</a>.</p>
 </div>
@@ -9228,7 +9361,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ParameterLayout_multiLine">23.4. <code>multiLine()</code></h3>
+<h3 id="_rgant-ParameterLayout_multiLine">24.4. <code>multiLine()</code></h3>
 <div class="paragraph">
 <p>The <code>multiLine()</code> attribute specifies that the text field for a 
string parameter should span multiple lines.  It is ignored for other parameter 
types.  The attribute is also supported for <a 
href="#_rgant-PropertyLayout_multiLine">properties</a>.</p>
 </div>
@@ -9266,7 +9399,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ParameterLayout_named">23.5. <code>named()</code></h3>
+<h3 id="_rgant-ParameterLayout_named">24.5. <code>named()</code></h3>
 <div class="paragraph">
 <p>The <code>named()</code> attribute explicitly specifies the action 
parameter&#8217;s name. This attribute can also be specified for <a 
href="#_rgant-ActionLayout_named">actions</a>, <a 
href="#_rgant-CollectionLayout_named">collections</a>, <a 
href="#_rgant-PropertyLayout_named">properties</a>, <a 
href="#_rgant-DomainObjectLayout_named">domain objects</a>, <a 
href="#_rgant-ViewModelLayout_named">view models</a> and <a 
href="#_rgant-DomainServiceLayout_named">domain services</a>.</p>
 </div>
@@ -9318,7 +9451,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ParameterLayout_renderedAsDayBefore">23.6. 
<code>renderedAsDayBefore()</code></h3>
+<h3 id="_rgant-ParameterLayout_renderedAsDayBefore">24.6. 
<code>renderedAsDayBefore()</code></h3>
 <div class="paragraph">
 <p>The <code>renderedAsDayBefore()</code> attribute applies only to date 
parameters whereby the date will be rendered as the day before the value 
actually held in the domain object.  It is ignored for parameters of other 
types.  This attribute is also supported for <a 
href="#_rgant-PropertyLayout_renderedAsDayBefore">properties</a>.</p>
 </div>
@@ -9352,7 +9485,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ParameterLayout_typicalLength">23.7. 
<code>typicalLength()</code></h3>
+<h3 id="_rgant-ParameterLayout_typicalLength">24.7. 
<code>typicalLength()</code></h3>
 <div class="paragraph">
 <p>The <code>typicalLength()</code> attribute indicates the typical length of 
a string parameter.  It is ignored for parameters of other types.  The 
attribute is also supported for <a 
href="#_rgant-PropertyLayout_typicalLength">properties</a>.</p>
 </div>
@@ -9388,7 +9521,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-PersistenceCapable">24. <code>@PersistenceCapable</code> 
(<code>javax.jdo</code>)</h2>
+<h2 id="_rgant-PersistenceCapable">25. <code>@PersistenceCapable</code> 
(<code>javax.jdo</code>)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@javax.jdo.annotation.PersistenceCapable</code> is used by 
JDO/DataNucleus to indicate that a class is a domain entity to be persisted to 
the database.</p>
@@ -9523,7 +9656,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-PostConstruct">25. <code>@PostConstruct</code> 
(<code>javax</code>)</h2>
+<h2 id="_rgant-PostConstruct">26. <code>@PostConstruct</code> 
(<code>javax</code>)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@javax.annotation.PostConstruct</code> annotation, as defined in 
<a href="https://jcp.org/en/jsr/detail?id=250";>JSR-250</a>,  is recognized by 
Apache Isis as a callback method on domain services to be called just after 
they have been constructed, in order that they initialize themselves.</p>
@@ -9626,7 +9759,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-PreDestroy">26. <code>@PreDestroy</code> 
(<code>javax</code>)</h2>
+<h2 id="_rgant-PreDestroy">27. <code>@PreDestroy</code> 
(<code>javax</code>)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@javax.annotation.PreDestroy</code> annotation, as defined in <a 
href="https://jcp.org/en/jsr/detail?id=250";>JSR-250</a>, recognized by Apache 
Isis as a callback method on domain services to be called just as they go out 
of scope.</p>
@@ -9699,7 +9832,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-PrimaryKey">27. <code>@PrimaryKey</code> 
(<code>javax.jdo</code>)</h2>
+<h2 id="_rgant-PrimaryKey">28. <code>@PrimaryKey</code> 
(<code>javax.jdo</code>)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@javax.jdo.annotation.PrimaryKey</code> annotation is used by 
JDO/DataNucleus to indicate that a property is used as the primary key for an 
entity with application-managed identity.</p>
@@ -9727,7 +9860,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-Programmatic">28. <code>@Programmatic</code></h2>
+<h2 id="_rgant-Programmatic">29. <code>@Programmatic</code></h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@Programmatic</code> annotation causes the method to be excluded 
completely from the Apache Isis metamodel. This means it won&#8217;t appear in 
any UI, and it won&#8217;t appear in any <a 
href="rgsvc.html#_rgsvc_api_MementoService">memento</a>s or <a 
href="rgsvc.html#_rgsvc_api_XmlSnapshotService">snapshot</a>s.</p>
@@ -9753,7 +9886,7 @@ declaration.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-Property">29. <code>@Property</code></h2>
+<h2 id="_rgant-Property">30. <code>@Property</code></h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@Property</code> annotation applies to properties collecting 
together all domain semantics within a single annotation.</p>
@@ -9762,7 +9895,7 @@ declaration.</p>
 <p>It is also possible to apply the annotation to actions of domain services 
that are acting as <a 
href="../../more-advanced-topics/how-to-01-062-How-to-decouple-dependencies-using-contributions.html">contributed
 properties</a>.</p>
 </div>
 <table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 18. <code>@Property</code> attributes</caption>
+<caption class="title">Table 19. <code>@Property</code> attributes</caption>
 <colgroup>
 <col style="width: 25%;">
 <col style="width: 25%;">
@@ -9930,7 +10063,7 @@ so that boilerplate-busting tools such as <a 
href="https://projectlombok.org/";>P
 </table>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Property_domainEvent">29.1. <code>domainEvent()</code></h3>
+<h3 id="_rgant-Property_domainEvent">30.1. <code>domainEvent()</code></h3>
 <div class="paragraph">
 <p>Whenever a domain object (or list of domain objects) is to be rendered, the 
framework fires off multiple domain events for every property, collection and 
action of the domain object.  In the cases of the domain object&#8217;s 
properties, the events that are fired are:</p>
 </div>
@@ -10014,7 +10147,7 @@ rather than through the constructor.  This 
substantially reduces the boilerplate
 </table>
 </div>
 <div class="sect3">
-<h4 id="_subscribers_13">29.1.1. Subscribers</h4>
+<h4 id="_subscribers_13">30.1.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.html#_rgsvc_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>
 </div>
@@ -10114,7 +10247,7 @@ rather than through the constructor.  This 
substantially reduces the boilerplate
 </div>
 </div>
 <div class="sect3">
-<h4 id="_default_doop_and_noop_events_13">29.1.2. Default, Doop and Noop 
events</h4>
+<h4 id="_default_doop_and_noop_events_13">30.1.2. Default, Doop and Noop 
events</h4>
 <div class="paragraph">
 <p>If the <code>domainEvent</code> attribute is not explicitly specified (is 
left as its default value, <code>PropertyDomainEvent.Default</code>),
 then the framework will, by default, post an event.</p>
@@ -10134,7 +10267,7 @@ then no event will be posted.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_raising_events_programmatically_6">29.1.3. Raising events 
programmatically</h4>
+<h4 id="_raising_events_programmatically_6">30.1.3. Raising events 
programmatically</h4>
 <div class="paragraph">
 <p>Normally events are only raised for interactions through the UI. However, 
events can be raised programmatically by
 wrapping the target object using the <a 
href="rgsvc.html#_rgsvc_api_WrapperFactory"><code>WrapperFactory</code></a> 
service.</p>
@@ -10142,7 +10275,7 @@ wrapping the target object using the <a 
href="rgsvc.html#_rgsvc_api_WrapperFacto
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Property_editing">29.2. <code>editing()</code></h3>
+<h3 id="_rgant-Property_editing">30.2. <code>editing()</code></h3>
 <div class="paragraph">
 <p>The <code>editing()</code> attribute can be used to prevent a property from 
being modified or cleared, ie to make it read-only. This attribute can also be 
specified for <a href="#_rgant-Collection_editing">collections</a>, and can 
also be specified for the <a href="#_rgant-DomainObject_editing">domain 
object</a>.</p>
 </div>
@@ -10199,7 +10332,7 @@ wrapping the target object using the <a 
href="rgsvc.html#_rgsvc_api_WrapperFacto
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Property_fileAccept">29.3. <code>fileAccept()</code></h3>
+<h3 id="_rgant-Property_fileAccept">30.3. <code>fileAccept()</code></h3>
 <div class="paragraph">
 <p>The <code>fileAccept()</code> attribute applies only to <a 
href="rgcms.html#_rgcms_classes_value-types_Blob"><code>Blob</code></a>
 or <a href="rgcms.html#_rgcms_classes_value-types_Clob"><code>Clob</code></a> 
parameters, indicating the type of file to accept when
@@ -10230,7 +10363,7 @@ uploading a new value.   The attribute is also 
supported on <a href="#_rgant-Par
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Property_hidden">29.4. <code>hidden()</code></h3>
+<h3 id="_rgant-Property_hidden">30.4. <code>hidden()</code></h3>
 <div class="paragraph">
 <p>Properties can be hidden at the domain-level, indicating that they are not 
visible to the end-user.  This attribute can also be applied to <a 
href="#_rgant-ActionLayout_hidden">actions</a> and <a 
href="#_rgant-CollectionLayout_hidden">collections</a>.</p>
 </div>
@@ -10331,7 +10464,7 @@ tables. Annotating with 
<code>@Property(where=Where.NOWHERE)</code> overrides th
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Property_maxLength">29.5. <code>maxLength()</code></h3>
+<h3 id="_rgant-Property_maxLength">30.5. <code>maxLength()</code></h3>
 <div class="paragraph">
 <p>The <code>maxLength()</code> attribute applies only to <code>String</code> 
properties, indicating the maximum number of characters that the user may enter 
(for example in a text field in the UI).  The attribute It is ignored if 
applied to properties of any other type.  This attribute can also be applied to 
<a href="#_rgant-Parameter_maxLength">parameters</a>.</p>
 </div>
@@ -10355,7 +10488,7 @@ tables. Annotating with 
<code>@Property(where=Where.NOWHERE)</code> overrides th
 <p>In this case there is therefore no need for the 
<code>@Property#maxLength()</code> attribute.</p>
 </div>
 <div class="sect3">
-<h4 id="_non_persistent_properties">29.5.1. Non-persistent properties</h4>
+<h4 id="_non_persistent_properties">30.5.1. Non-persistent properties</h4>
 <div class="paragraph">
 <p>Of course, not every property is persistent (it could instead be derived), 
and neither is every domain object an entity (it could be a view model).  For 
these non persistable properties the <code>maxLength()</code> attribute is 
still required.</p>
 </div>
@@ -10392,7 +10525,7 @@ tables. Annotating with 
<code>@Property(where=Where.NOWHERE)</code> overrides th
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Property_mustSatisfy">29.6. <code>mustSatisfy()</code></h3>
+<h3 id="_rgant-Property_mustSatisfy">30.6. <code>mustSatisfy()</code></h3>
 <div class="paragraph">
 <p>The <code>mustSatisfy()</code> attribute allows arbitrary validation to be 
applied to properties using an (implementation of a) 
<code>org.apache.isis.applib.spec.Specification</code> object.
  The attribute is also supported on <a 
href="#_rgant-Parameter_mustSatisfy">parameters</a>.</p>
@@ -10467,7 +10600,7 @@ tables. Annotating with 
<code>@Property(where=Where.NOWHERE)</code> overrides th
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Property_notPersisted">29.7. <code>notPersisted()</code></h3>
+<h3 id="_rgant-Property_notPersisted">30.7. <code>notPersisted()</code></h3>
 <div class="paragraph">
 <p>The (somewhat misnamed) <code>notPersisted()</code> attribute indicates 
that the collection should be excluded from any snapshots generated by the <a 
href="rgsvc.html#_rgsvc_api_XmlSnapshotService"><code>XmlSnapshotService</code></a>.
  This attribute is also supported for <a 
href="#_rgant-Collection_notPersisted">collections</a>.</p>
 </div>
@@ -10540,7 +10673,7 @@ tables. Annotating with 
<code>@Property(where=Where.NOWHERE)</code> overrides th
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Property_optionality">29.8. <code>optionality()</code></h3>
+<h3 id="_rgant-Property_optionality">30.8. <code>optionality()</code></h3>
 <div class="paragraph">
 <p>By default, Apache Isis assumes that all properties of an domain object or 
view model are required (mandatory).  The <code>optionality()</code> attribute 
allows this to be relaxed.  The attribute is also supported for <a 
href="#_rgant-Parameter_optionality">parameters</a>.</p>
 </div>
@@ -10567,7 +10700,7 @@ tables. Annotating with 
<code>@Property(where=Where.NOWHERE)</code> overrides th
 <p>In this case there is no need for the <code>@Property#optionality()</code> 
attribute.</p>
 </div>
 <div class="sect3">
-<h4 id="_mismatched_defaults">29.8.1. Mismatched defaults</h4>
+<h4 id="_mismatched_defaults">30.8.1. Mismatched defaults</h4>
 <div class="paragraph">
 <p>If the <code>@Column#allowsNull()</code> attribute is omitted and the 
`@Property#optionality() attribute is also omitted, then note that Isis' 
defaults and JDO&#8217;s defaults differ.  Specifically, Isis always assumes 
properties are mandatory, whereas JDO specifies that primitives are mandatory, 
but all reference types are optional.</p>
 </div>
@@ -10576,7 +10709,7 @@ tables. Annotating with 
<code>@Property(where=Where.NOWHERE)</code> overrides th
 </div>
 </div>
 <div class="sect3">
-<h4 id="_superclass_inheritance_type">29.8.2. Superclass inheritance type</h4>
+<h4 id="_superclass_inheritance_type">30.8.2. Superclass inheritance type</h4>
 <div class="paragraph">
 <p>There is one case (at least) it may be necessary to annotate the property 
with both <code>@Column#allowsNull</code> and also 
<code>@Property#optionality()</code>.  If the property is logically mandatory 
and is in a subclass, but the mapping of the class hierarchy is to store both 
the superclass and subclass(es) into a single table (ie a "roll-up" mapping 
using <code>javax.jdo.annotations.InheritanceStrategy#SUPERCLASS_TABLE</code>), 
then JDO requires that the property is annotated as 
<code>@Column#allowsNull="true"</code>: its value will be not defined for other 
subclasses.</p>
 </div>
@@ -10623,7 +10756,7 @@ tables. Annotating with 
<code>@Property(where=Where.NOWHERE)</code> overrides th
 </div>
 </div>
 <div class="sect3">
-<h4 id="_non_persistent_properties_2">29.8.3. Non-persistent properties</h4>
+<h4 id="_non_persistent_properties_2">30.8.3. Non-persistent properties</h4>
 <div class="paragraph">
 <p>Of course, not every property is persistent (it could instead be derived), 
and neither is every domain object an entity (it could be a view model).  For 
these non persistable properties the <code>optionality()</code> attribute is 
still required.</p>
 </div>
@@ -10710,7 +10843,7 @@ tables. Annotating with 
<code>@Property(where=Where.NOWHERE)</code> overrides th
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-Property_regexPattern">29.9. <code>regexPattern()</code></h3>
+<h3 id="_rgant-Property_regexPattern">30.9. <code>regexPattern()</code></h3>
 <div class="paragraph">
 <p>There are three attributes related to enforcing regular expressions:</p>
 </div>
@@ -10756,7 +10889,7 @@ the provided argument does not match the regex 
pattern.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-PropertyLayout">30. <code>@PropertyLayout</code></h2>
+<h2 id="_rgant-PropertyLayout">31. <code>@PropertyLayout</code></h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@PropertyLayout</code> annotation applies to properties 
collecting together all UI hints within a single annotation.</p>
@@ -10765,7 +10898,7 @@ the provided argument does not match the regex 
pattern.</p>
 <p>The table below summarizes the annotation&#8217;s attributes.</p>
 </div>
 <table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 19. <code>@PropertyLayout</code> 
attributes</caption>
+<caption class="title">Table 20. <code>@PropertyLayout</code> 
attributes</caption>
 <colgroup>
 <col style="width: 25%;">
 <col style="width: 25%;">
@@ -10913,7 +11046,7 @@ so that boilerplate-busting tools such as <a 
href="https://projectlombok.org/";>P
 </table>
 </div>
 <div class="sect2">
-<h3 id="_rgant-PropertyLayout_cssClass">30.1. <code>cssClass()</code></h3>
+<h3 id="_rgant-PropertyLayout_cssClass">31.1. <code>cssClass()</code></h3>
 <div class="paragraph">
 <p>The <code>cssClass()</code> attribute can be used to render additional CSS 
classes in the HTML (a wrapping <code>&lt;div&gt;</code>) that represents the 
property.   <a 
href="rgcfg.html#_rgcfg_application-specific_application-css">Application-specific
 CSS</a> can then be used to target and adjust the UI representation of that 
particular element.</p>
 </div>
@@ -10944,7 +11077,7 @@ can be used instead, eg:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-PropertyLayout_describedAs">30.2. 
<code>describedAs()</code></h3>
+<h3 id="_rgant-PropertyLayout_describedAs">31.2. 
<code>describedAs()</code></h3>
 <div class="paragraph">
 <p>The <code>describedAs()</code> attribute is used to provide a short 
description of the property to the user.  In the <a href="ugvw.html">Wicket 
viewer</a> it is displayed as a 'tool tip'. The attribute can also be specified 
for <a href="#_rgant-CollectionLayout_describedAs">collections</a>,  <a 
href="#_rgant-ActionLayout_describedAs">actions</a>, <a 
href="#_rgant-ParameterLayout_describedAs">parameters</a>, <a 
href="#_rgant-DomainObjectLayout_describedAs">domain objects</a> and <a 
href="#_rgant-ViewModelLayout_describedAs">view models</a>.</p>
 </div>
@@ -10975,7 +11108,7 @@ can be used instead, eg:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-PropertyLayout_labelPosition">30.3. 
<code>labelPosition()</code></h3>
+<h3 id="_rgant-PropertyLayout_labelPosition">31.3. 
<code>labelPosition()</code></h3>
 <div class="paragraph">
 <p>The <code>labelPosition()</code> attribute determines the positioning of 
labels for properties.  This attribute can also be specified for <a 
href="#_rgant-ParameterLayout_labelPosition">parameters</a>.</p>
 </div>
@@ -11095,7 +11228,7 @@ can be used instead, eg:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-PropertyLayout_multiLine">30.4. <code>multiLine()</code></h3>
+<h3 id="_rgant-PropertyLayout_multiLine">31.4. <code>multiLine()</code></h3>
 <div class="paragraph">
 <p>The <code>multiLine()</code> attribute specifies that the text field for a 
string property should span multiple lines.  It is ignored for other property 
types.  The attribute is also supported for <a 
href="#_rgant-ParameterLayout_multiLine">parameters</a>.</p>
 </div>
@@ -11146,7 +11279,7 @@ can be used instead, eg:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-PropertyLayout_named">30.5. named()</h3>
+<h3 id="_rgant-PropertyLayout_named">31.5. named()</h3>
 <div class="paragraph">
 <p>The <code>named()</code> attribute explicitly specifies the 
property&#8217;s name, overriding the name that would normally be inferred from 
the Java source code.  This attribute can also be specified for <a 
href="#_rgant-ActionLayout_named">actions</a>, <a 
href="#_rgant-CollectionLayout_named">collections</a>, <a 
href="#_rgant-ParameterLayout_named">parameters</a>, <a 
href="#_rgant-DomainObjectLayout_named">domain objects</a>, <a 
href="#_rgant-ViewModelLayout_named">view models</a> and <a 
href="#_rgant-DomainServiceLayout_named">domain services</a>.</p>
 </div>
@@ -11212,7 +11345,7 @@ can be used instead, eg:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-PropertyLayout_renderedAsDayBefore">30.6. 
<code>renderedAsDayBefore()</code></h3>
+<h3 id="_rgant-PropertyLayout_renderedAsDayBefore">31.6. 
<code>renderedAsDayBefore()</code></h3>
 <div class="paragraph">
 <p>The <code>renderedAsDayBefore()</code> attribute applies only to date 
properties whereby the date will be rendered as the day before the value 
actually held in the domain object.  It is ignored for properties of other 
types. This attribute is also supported for <a 
href="#_rgant-ParameterLayout_renderedAsDayBefore">parameters</a>.</p>
 </div>
@@ -11257,7 +11390,7 @@ can be used instead, eg:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-PropertyLayout_typicalLength">30.7. 
<code>typicalLength()</code></h3>
+<h3 id="_rgant-PropertyLayout_typicalLength">31.7. 
<code>typicalLength()</code></h3>
 <div class="paragraph">
 <p>The <code>typicalLength()</code> attribute indicates the typical length of 
a string property.  It is ignored for properties of other types.  The attribute 
is also supported for <a 
href="#_rgant-ParameterLayout_typicalLength">parameters</a>.</p>
 </div>
@@ -11282,7 +11415,7 @@ can be used instead, eg:</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-RequestScoped">31. <code>@RequestScoped</code> 
(<code>javax</code>)</h2>
+<h2 id="_rgant-RequestScoped">32. <code>@RequestScoped</code> 
(<code>javax</code>)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@javax.enterprise.context.RequestScoped</code> <a 
href="https://jcp.org/en/jsr/detail?id=299";>JSR-299</a> CDI annotation is used 
to specify that a <a href="#_rgant-DomainService">domain service</a> should be 
request-scoped rather than a singleton.</p>
@@ -11356,7 +11489,7 @@ can be used instead, eg:</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-Title">32. <code>@Title</code></h2>
+<h2 id="_rgant-Title">33. <code>@Title</code></h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@Title</code> annotation is used to indicate which property or 
properties make up the object title. If more than one property is used, the 
order can be specified (using the same Dewey-decimal notation as used by 
<code>@MemberOrder</code>) and the string to use between the components can 
also be specified.</p>
@@ -11404,7 +11537,7 @@ present in the title column. This convention can be 
overridden using
 <code>@Hidden(where=Where.NOWHERE)</code>.</p>
 </div>
 <div class="sect2">
-<h3 id="_lombok_support">32.1. Lombok support</h3>
+<h3 id="_lombok_support">33.1. Lombok support</h3>
 <div class="paragraph">
 <p>If <a href="dg.html#_dg_ide_project-lombok">Project Lombok</a> is being 
used, then <code>@Title</code> can be specified on the backing field.</p>
 </div>
@@ -11432,7 +11565,7 @@ present in the title column. This convention can be 
overridden using
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-ViewModel">33. <code>@ViewModel</code></h2>
+<h2 id="_rgant-ViewModel">34. <code>@ViewModel</code></h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@ViewModel</code> annotation, applied to a class, is the simplest 
way to indicate that the class is a view model.</p>
@@ -11492,7 +11625,7 @@ represented in the URL). As such, view models are 
immutable.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-ViewModelLayout">34. <code>@ViewModelLayout</code></h2>
+<h2 id="_rgant-ViewModelLayout">35. <code>@ViewModelLayout</code></h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@ViewModelLayout</code> annotation is identical to the <a 
href="#_rgant-DomainObjectLayout"><code>@DomainObjectLayout</code></a>, but is 
provided
@@ -11502,7 +11635,7 @@ for symmetry with domain objects that have been 
annotated using <a href="#_rgant
 <p>The table below summarizes the annotation&#8217;s attributes.</p>
 </div>
 <table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 20. <code>@ViewModel</code> attributes</caption>
+<caption class="title">Table 21. <code>@ViewModel</code> attributes</caption>
 <colgroup>
 <col style="width: 25%;">
 <col style="width: 25%;">
@@ -11608,7 +11741,7 @@ for symmetry with domain objects that have been 
annotated using <a href="#_rgant
 </table>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ViewModelLayout_cssClass">34.1. <code>cssClass()</code></h3>
+<h3 id="_rgant-ViewModelLayout_cssClass">35.1. <code>cssClass()</code></h3>
 <div class="paragraph">
 <p>The <code>cssClass()</code> attribute can be used to render additional CSS 
classes in the HTML (a wrapping <code>&lt;div&gt;</code>) that represents the 
view model.   <a 
href="rgcfg.html#_rgcfg_application-specific_application-css">Application-specific
 CSS</a> can then be used to target and adjust the UI representation of that 
particular element.</p>
 </div>
@@ -11641,7 +11774,7 @@ for symmetry with domain objects that have been 
annotated using <a href="#_rgant
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ViewModelLayout_cssClassFa">34.2. <code>cssClassFa()</code></h3>
+<h3 id="_rgant-ViewModelLayout_cssClassFa">35.2. <code>cssClassFa()</code></h3>
 <div class="paragraph">
 <p>The <code>cssClassFa()</code> attribute is used to specify the name of a <a 
href="http://fortawesome.github.io/Font-Awesome/icons/";>Font Awesome icon</a> 
name, to be rendered as the domain object&#8217;s icon.</p>
 </div>
@@ -11685,7 +11818,7 @@ for symmetry with domain objects that have been 
annotated using <a href="#_rgant
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ViewModelLayout_describedAs">34.3. 
<code>describedAs()</code></h3>
+<h3 id="_rgant-ViewModelLayout_describedAs">35.3. 
<code>describedAs()</code></h3>
 <div class="paragraph">
 <p>The <code>describedAs()</code> attribute is used to provide a short 
description of the view model to the user.  In the <a href="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-CollectionLayout_describedAs">collections</a>,  <a 
href="#_rgant-PropertyLayout_describedAs">properties</a>, <a 
href="#_rgant-ActionLayout_describedAs">actions</a>, <a 
href="#_rgant-ParameterLayout_describedAs">parameters</a> and <a 
href="#_rgant-DomainObjectLayout_describedAs">domain objects</a>.</p>
 </div>
@@ -11705,7 +11838,7 @@ for symmetry with domain objects that have been 
annotated using <a href="#_rgant
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ViewModelLayout_named">34.4. <code>named()</code></h3>
+<h3 id="_rgant-ViewModelLayout_named">35.4. <code>named()</code></h3>
 <div class="paragraph">
 <p>The <code>named()</code> attribute explicitly specifies the view 
model&#8217;s name, overriding the name that would normally be inferred from 
the Java source code.  This attribute can also be specified for <a 
href="#_rgant-ActionLayout_named">actions</a>, <a 
href="#_rgant-CollectionLayout_named">collections</a>, <a 
href="#_rgant-PropertyLayout_named">properties</a>, <a 
href="#_rgant-ParameterLayout_named">parameters</a>, <a 
href="#_rgant-DomainObjectLayout_named">domain objects</a> and <a 
href="#_rgant-DomainServiceLayout_named">domain services</a>.</p>
 </div>
@@ -11753,7 +11886,7 @@ for symmetry with domain objects that have been 
annotated using <a href="#_rgant
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ViewModelLayout_paged">34.5. <code>paged()</code></h3>
+<h3 id="_rgant-ViewModelLayout_paged">35.5. <code>paged()</code></h3>
 <div class="paragraph">
 <p>The <code>paged()</code> attribute specifies the number of rows to display 
in a standalone collection, as returned from an action invocation.  This 
attribute can also be applied to <a 
href="#_rgant-CollectionLayout_paged">collections</a> and <a 
href="#_rgant-DomainObjectLayout_paged">domain objects</a>.</p>
 </div>
@@ -11791,7 +11924,7 @@ for symmetry with domain objects that have been 
annotated using <a href="#_rgant
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rgant-ViewModelLayout_plural">34.6. <code>plural()</code></h3>
+<h3 id="_rgant-ViewModelLayout_plural">35.6. <code>plural()</code></h3>
 <div class="paragraph">
 <p>When Apache Isis displays a standalone collection of several objects, it 
will label the collection using the plural form of the object type.</p>
 </div>
@@ -11817,7 +11950,7 @@ for symmetry with domain objects that have been 
annotated using <a href="#_rgant
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-XmlJavaTypeAdapter">35. <code>@XmlJavaTypeAdapter</code> 
(<code>jaxb</code>)</h2>
+<h2 id="_rgant-XmlJavaTypeAdapter">36. <code>@XmlJavaTypeAdapter</code> 
(<code>jaxb</code>)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The JAXB <code>@XmlJavaTypeAdapter</code> annotation is used with the 
framework-provided
@@ -11846,7 +11979,7 @@ in the user guide.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rgant-XmlRootElement">36. <code>@XmlRootElement</code> 
(<code>jaxb</code>)</h2>
+<h2 id="_rgant-XmlRootElement">37. <code>@XmlRootElement</code> 
(<code>jaxb</code>)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The <code>@XmlRootElement</code> annotation provides an alternative way to 
define a
@@ -11910,7 +12043,7 @@ implementation (eg which maps XML strings to a GUID, 
say) can be configured usin
 </table>
 </div>
 <div class="sect2">
-<h3 id="_example">36.1. Example</h3>
+<h3 id="_example">37.1. Example</h3>
 <div class="paragraph">
 <p>This example is taken from the (non-ASF) <a 
href="http://github.com/isisaddons/isis-app-todoapp";>Isis addons' 
todoapp</a>:</p>
 </div>
@@ -11943,7 +12076,7 @@ implementation (eg which maps XML strings to a GUID, 
say) can be configured usin
 </div>
 </div>
 <div class="sect2">
-<h3 id="_see_also">36.2. See also</h3>
+<h3 id="_see_also">37.2. See also</h3>
 <div class="paragraph">
 <p>Although (like any other viewmodel) a JAXB-annotated can have behaviour 
(actions) and UI hints, you may wish to keep
 the DTO "clean", just focused on specifying the data contract.</p>
@@ -12096,41 +12229,42 @@ in the user guide.</p>
 <li><a href="#_default_doop_and_noop_events_4">10.6.2. Default, Doop and Noop 
events</a></li>
 </ul>
 </li>
-<li><a href="#_rgant-DomainObject_nature">10.7. <code>nature()</code></a></li>
-<li><a href="#_rgant-DomainObject_persistedLifecycleEvent">10.8. 
persistedLifecycleEvent()</a>
+<li><a href="#_rgant-DomainObject_mixinMethod">10.7. 
<code>mixinMethod()</code> (<code>1.13.2-SNAPSHOT</code>)</a></li>
+<li><a href="#_rgant-DomainObject_nature">10.8. <code>nature()</code></a></li>
+<li><a href="#_rgant-DomainObject_persistedLifecycleEvent">10.9. 
persistedLifecycleEvent()</a>
 <ul class="sectlevel3">
-<li><a href="#_subscribers_5">10.8.1. Subscribers</a></li>
-<li><a href="#_default_doop_and_noop_events_5">10.8.2. Default, Doop and Noop 
events</a></li>
+<li><a href="#_subscribers_5">10.9.1. Subscribers</a></li>
+<li><a href="#_default_doop_and_noop_events_5">10.9.2. Default, Doop and Noop 
events</a></li>
 </ul>
 </li>
-<li><a href="#_rgant-DomainObject_persistingLifecycleEvent">10.9. 
persistingLifecycleEvent()</a>
+<li><a href="#_rgant-DomainObject_persistingLifecycleEvent">10.10. 
persistingLifecycleEvent()</a>
 <ul class="sectlevel3">
-<li><a href="#_subscribers_6">10.9.1. Subscribers</a></li>
-<li><a href="#_default_doop_and_noop_events_6">10.9.2. Default, Doop and Noop 
events</a></li>
+<li><a href="#_subscribers_6">10.10.1. Subscribers</a></li>
+<li><a href="#_default_doop_and_noop_events_6">10.10.2. Default, Doop and Noop 
events</a></li>
 </ul>
 </li>
-<li><a href="#_rgant-DomainObject_objectType">10.10. 
<code>objectType()</code></a></li>
-<li><a href="#_rgant-DomainObject_publishing">10.11. 
<code>publishing()</code></a>
+<li><a href="#_rgant-DomainObject_objectType">10.11. 
<code>objectType()</code></a></li>
+<li><a href="#_rgant-DomainObject_publishing">10.12. 
<code>publishing()</code></a>
 <ul class="sectlevel3">
-<li><a href="#__code_publishingpayloadfactory_code_2">10.11.1. 
<code>publishingPayloadFactory()</code></a></li>
+<li><a href="#__code_publishingpayloadfactory_code_2">10.12.1. 
<code>publishingPayloadFactory()</code></a></li>
 </ul>
 </li>
-<li><a href="#_rgant-DomainObject_removingLifecycleEvent">10.12. 
removingLifecycleEvent()</a>
+<li><a href="#_rgant-DomainObject_removingLifecycleEvent">10.13. 
removingLifecycleEvent()</a>
 <ul class="sectlevel3">
-<li><a href="#_subscribers_7">10.12.1. Subscribers</a></li>
-<li><a href="#_default_doop_and_noop_events_7">10.12.2. Default, Doop and Noop 
events</a></li>
+<li><a href="#_subscribers_7">10.13.1. Subscribers</a></li>
+<li><a href="#_default_doop_and_noop_events_7">10.13.2. Default, Doop and Noop 
events</a></li>
 </ul>
 </li>
-<li><a href="#_rgant-DomainObject_updatingLifecycleEvent">10.13. 
updatingLifecycleEvent()</a>
+<li><a href="#_rgant-DomainObject_updatingLifecycleEvent">10.14. 
updatingLifecycleEvent()</a>
 <ul class="sectlevel3">
-<li><a href="#_subscribers_8">10.13.1. Subscribers</a></li>
-<li><a href="#_default_doop_and_noop_events_8">10.13.2. Default, Doop and Noop 
events</a></li>
+<li><a href="#_subscribers_8">10.14.1. Subscribers</a></li>
+<li><a href="#_default_doop_and_noop_events_8">10.14.2. Default, Doop and Noop 
events</a></li>
 </ul>
 </li>
-<li><a href="#_rgant-DomainObject_updatedLifecycleEvent">10.14. 
updatedLifecycleEvent()</a>
+<li><a href="#_rgant-DomainObject_updatedLifecycleEvent">10.15. 
updatedLifecycleEvent()</a>
 <ul class="sectlevel3">
-<li><a href="#_subscribers_9">10.14.1. Subscribers</a></li>
-<li><a href="#_default_doop_and_noop_events_9">10.14.2. Default, Doop and Noop 
events</a></li>
+<li><a href="#_subscribers_9">10.15.1. Subscribers</a></li>
+<li><a href="#_default_doop_and_noop_events_9">10.15.2. Default, Doop and Noop 
events</a></li>
 </ul>
 </li>
 </ul>
@@ -12191,96 +12325,101 @@ in the user guide.</p>
 </li>
 <li><a href="#_rgant-MemberGroupLayout">17. 
<code>@MemberGroupLayout</code></a></li>
 <li><a href="#_rgant-MemberOrder">18. <code>@MemberOrder</code></a></li>
-<li><a href="#_rgant-Nullable">19. <code>@Nullable</code> 
(<code>javax</code>)</a></li>
-<li><a href="#_rgant-NotPersistent">20. <code>@NotPersistent</code> 
(<code>javax.jdo</code>)</a></li>
-<li><a href="#_rgant-MinLength">21. <code>@MinLength</code></a></li>
-<li><a href="#_rgant-Parameter">22. <code>@Parameter</code></a>
+<li><a href="#_rgant-Mixin">19. <code>@Mixin</code></a>
+<ul class="sectlevel2">
+<li><a href="#_rgant-Mixin_method">19.1. <code>method()</code> 
(<code>1.13.2-SNAPSHOT</code>)</a></li>
+</ul>
+</li>
+<li><a href="#_rgant-Nullable">20. <code>@Nullable</code> 
(<code>javax</code>)</a></li>
+<li><a href="#_rgant-NotPersistent">21. <code>@NotPersistent</code> 
(<code>javax.jdo</code>)</a></li>
+<li><a href="#_rgant-MinLength">22. <code>@MinLength</code></a></li>
+<li><a href="#_rgant-Parameter">23. <code>@Parameter</code></a>
 <ul class="sectlevel2">
-<li><a href="#_rgant-Parameter_fileAccept">22.1. 
<code>fileAccept()</code></a></li>
-<li><a href="#_rgant-Parameter_maxLength">22.2. 
<code>maxLength()</code></a></li>
-<li><a href="#_rgant-Parameter_mustSatisfy">22.3. 
<code>mustSatisfy()</code></a></li>
-<li><a href="#_rgant-Parameter_optionality">22.4. 
<code>optionality()</code></a></li>
-<li><a href="#_rgant-Parameter_regexPattern">22.5. 
<code>regexPattern()</code></a></li>
+<li><a href="#_rgant-Parameter_fileAccept">23.1. 
<code>fileAccept()</code></a></li>
+<li><a href="#_rgant-Parameter_maxLength">23.2. 
<code>maxLength()</code></a></li>
+<li><a href="#_rgant-Parameter_mustSatisfy">23.3. 
<code>mustSatisfy()</code></a></li>
+<li><a href="#_rgant-Parameter_optionality">23.4. 
<code>optionality()</code></a></li>
+<li><a href="#_rgant-Parameter_regexPattern">23.5. 
<code>regexPattern()</code></a></li>
 </ul>
 </li>
-<li><a href="#_rgant-ParameterLayout">23. <code>@ParameterLayout</code></a>
+<li><a href="#_rgant-ParameterLayout">24. <code>@ParameterLayout</code></a>
 <ul class="sectlevel2">
-<li><a href="#_rgant-ParameterLayout_cssClass">23.1. 
<code>cssClass()</code></a></li>
-<li><a href="#_rgant-ParameterLayout_describedAs">23.2. 
<code>describedAs()</code></a></li>
-<li><a href="#_rgant-ParameterLayout_labelPosition">23.3. 
<code>labelPosition()</code></a></li>
-<li><a href="#_rgant-ParameterLayout_multiLine">23.4. 
<code>multiLine()</code></a></li>
-<li><a href="#_rgant-ParameterLayout_named">23.5. <code>named()</code></a></li>
-<li><a href="#_rgant-ParameterLayout_renderedAsDayBefore">23.6. 
<code>renderedAsDayBefore()</code></a></li>
-<li><a href="#_rgant-ParameterLayout_typicalLength">23.7. 
<code>typicalLength()</code></a></li>
+<li><a href="#_rgant-ParameterLayout_cssClass">24.1. 
<code>cssClass()</code></a></li>
+<li><a href="#_rgant-ParameterLayout_describedAs">24.2. 
<code>describedAs()</code></a></li>
+<li><a href="#_rgant-ParameterLayout_labelPosition">24.3. 
<code>labelPosition()</code></a></li>
+<li><a href="#_rgant-ParameterLayout_multiLine">24.4. 
<code>multiLine()</code></a></li>
+<li><a href="#_rgant-ParameterLayout_named">24.5. <code>named()</code></a></li>
+<li><a href="#_rgant-ParameterLayout_renderedAsDayBefore">24.6. 
<code>renderedAsDayBefore()</code></a></li>
+<li><a href="#_rgant-ParameterLayout_typicalLength">24.7. 
<code>typicalLength()</code></a></li>
 </ul>
 </li>
-<li><a href="#_rgant-PersistenceCapable">24. <code>@PersistenceCapable</code> 
(<code>javax.jdo</code>)</a></li>
-<li><a href="#_rgant-PostConstruct">25. <code>@PostConstruct</code> 
(<code>javax</code>)</a></li>
-<li><a href="#_rgant-PreDestroy">26. <code>@PreDestroy</code> 
(<code>javax</code>)</a></li>
-<li><a href="#_rgant-PrimaryKey">27. <code>@PrimaryKey</code> 
(<code>javax.jdo</code>)</a></li>
-<li><a href="#_rgant-Programmatic">28. <code>@Programmatic</code></a></li>
-<li><a href="#_rgant-Property">29. <code>@Property</code></a>
+<li><a href="#_rgant-PersistenceCapable">25. <code>@PersistenceCapable</code> 
(<code>javax.jdo</code>)</a></li>
+<li><a href="#_rgant-PostConstruct">26. <code>@PostConstruct</code> 
(<code>javax</code>)</a></li>
+<li><a href="#_rgant-PreDestroy">27. <code>@PreDestroy</code> 
(<code>javax</code>)</a></li>
+<li><a href="#_rgant-PrimaryKey">28. <code>@PrimaryKey</code> 
(<code>javax.jdo</code>)</a></li>
+<li><a href="#_rgant-Programmatic">29. <code>@Programmatic</code></a></li>
+<li><a href="#_rgant-Property">30. <code>@Property</code></a>
 <ul class="sectlevel2">
-<li><a href="#_rgant-Property_domainEvent">29.1. <code>domainEvent()</code></a>
+<li><a href="#_rgant-Property_domainEvent">30.1. <code>domainEvent()</code></a>
 <ul class="sectlevel3">
-<li><a href="#_subscribers_13">29.1.1. Subscribers</a></li>
-<li><a href="#_default_doop_and_noop_events_13">29.1.2. Default, Doop and Noop 
events</a></li>
-<li><a href="#_raising_events_programmatically_6">29.1.3. Raising events 
programmatically</a></li>
+<li><a href="#_subscribers_13">30.1.1. Subscribers</a></li>
+<li><a href="#_default_doop_and_noop_events_13">30.1.2. Default, Doop and Noop 
events</a></li>
+<li><a href="#_raising_events_programmatically_6">30.1.3. Raising events 
programmatically</a></li>
 </ul>
 </li>
-<li><a href="#_rgant-Property_editing">29.2. <code>editing()</code></a></li>
-<li><a href="#_rgant-Property_fileAccept">29.3. 
<code>fileAccept()</code></a></li>
-<li><a href="#_rgant-Property_hidden">29.4. <code>hidden()</code></a></li>
-<li><a href="#_rgant-Property_maxLength">29.5. <code>maxLength()</code></a>
+<li><a href="#_rgant-Property_editing">30.2. <code>editing()</code></a></li>
+<li><a href="#_rgant-Property_fileAccept">30.3. 
<code>fileAccept()</code></a></li>
+<li><a href="#_rgant-Property_hidden">30.4. <code>hidden()</code></a></li>
+<li><a href="#_rgant-Property_maxLength">30.5. <code>maxLength()</code></a>
 <ul class="sectlevel3">
-<li><a href="#_non_persistent_properties">29.5.1. Non-persistent 
properties</a></li>
+<li><a href="#_non_persistent_properties">30.5.1. Non-persistent 
properties</a></li>
 </ul>
 </li>
-<li><a href="#_rgant-Property_mustSatisfy">29.6. 
<code>mustSatisfy()</code></a></li>
-<li><a href="#_rgant-Property_notPersisted">29.7. 
<code>notPersisted()</code></a></li>
-<li><a href="#_rgant-Property_optionality">29.8. <code>optionality()</code></a>
+<li><a href="#_rgant-Property_mustSatisfy">30.6. 
<code>mustSatisfy()</code></a></li>
+<li><a href="#_rgant-Property_notPersisted">30.7. 
<code>notPersisted()</code></a></li>
+<li><a href="#_rgant-Property_optionality">30.8. <code>optionality()</code></a>
 <ul class="sectlevel3">
-<li><a href="#_mismatched_defaults">29.8.1. Mismatched defaults</a></li>
-<li><a href="#_superclass_inheritance_type">29.8.2. Superclass inheritance 
type</a></li>
-<li><a href="#_non_persistent_properties_2">29.8.3. Non-persistent 
properties</a></li>
+<li><a href="#_mismatched_defaults">30.8.1. Mismatched defaults</a></li>
+<li><a href="#_superclass_inheritance_type">30.8.2. Superclass inheritance 
type</a></li>
+<li><a href="#_non_persistent_properties_2">30.8.3. Non-persistent 
properties</a></li>
 </ul>
 </li>
-<li><a href="#_rgant-Property_regexPattern">29.9. 
<code>regexPattern()</code></a></li>
+<li><a href="#_rgant-Property_regexPattern">30.9. 
<code>regexPattern()</code></a></li>
 </ul>
 </li>
-<li><a href="#_rgant-PropertyLayout">30. <code>@PropertyLayout</code></a>
+<li><a href="#_rgant-PropertyLayout">31. <code>@PropertyLayout</code></a>
 <ul class="sectlevel2">
-<li><a href="#_rgant-PropertyLayout_cssClass">30.1. 
<code>cssClass()</code></a></li>
-<li><a href="#_rgant-PropertyLayout_describedAs">30.2. 
<code>describedAs()</code></a></li>
-<li><a href="#_rgant-PropertyLayout_labelPosition">30.3. 
<code>labelPosition()</code></a></li>
-<li><a href="#_rgant-PropertyLayout_multiLine">30.4. 
<code>multiLine()</code></a></li>
-<li><a href="#_rgant-PropertyLayout_named">30.5. named()</a></li>
-<li><a href="#_rgant-PropertyLayout_renderedAsDayBefore">30.6. 
<code>renderedAsDayBefore()</code></a></li>
-<li><a href="#_rgant-PropertyLayout_typicalLength">30.7. 
<code>typicalLength()</code></a></li>
+<li><a href="#_rgant-PropertyLayout_cssClass">31.1. 
<code>cssClass()</code></a></li>
+<li><a href="#_rgant-PropertyLayout_describedAs">31.2. 
<code>describedAs()</code></a></li>
+<li><a href="#_rgant-PropertyLayout_labelPosition">31.3. 
<code>labelPosition()</code></a></li>
+<li><a href="#_rgant-PropertyLayout_multiLine">31.4. 
<code>multiLine()</code></a></li>
+<li><a href="#_rgant-PropertyLayout_named">31.5. named()</a></li>
+<li><a href="#_rgant-PropertyLayout_renderedAsDayBefore">31.6. 
<code>renderedAsDayBefore()</code></a></li>
+<li><a href="#_rgant-PropertyLayout_typicalLength">31.7. 
<code>typicalLength()</code></a></li>
 </ul>
 </li>
-<li><a href="#_rgant-RequestScoped">31. <code>@RequestScoped</code> 
(<code>javax</code>)</a></li>
-<li><a href="#_rgant-Title">32. <code>@Title</code></a>
+<li><a href="#_rgant-RequestScoped">32. <code>@RequestScoped</code> 
(<code>javax</code>)</a></li>
+<li><a href="#_rgant-Title">33. <code>@Title</code></a>
 <ul class="sectlevel2">
-<li><a href="#_lombok_support">32.1. Lombok support</a></li>
+<li><a href="#_lombok_support">33.1. Lombok support</a></li>
 </ul>
 </li>
-<li><a href="#_rgant-ViewModel">33. <code>@ViewModel</code></a></li>
-<li><a href="#_rgant-ViewModelLayout">34. <code>@ViewModelLayout</code></a>
+<li><a href="#_rgant-ViewModel">34. <code>@ViewModel</code></a></li>
+<li><a href="#_rgant-ViewModelLayout">35. <code>@ViewModelLayout</code></a>
 <ul class="sectlevel2">
-<li><a href="#_rgant-ViewModelLayout_cssClass">34.1. 
<code>cssClass()</code></a></li>
-<li><a href="#_rgant-ViewModelLayout_cssClassFa">34.2. 
<code>cssClassFa()</code></a></li>
-<li><a href="#_rgant-ViewModelLayout_describedAs">34.3. 
<code>describedAs()</code></a></li>
-<li><a href="#_rgant-ViewModelLayout_named">34.4. <code>named()</code></a></li>
-<li><a href="#_rgant-ViewModelLayout_paged">34.5. <code>paged()</code></a></li>
-<li><a href="#_rgant-ViewModelLayout_plural">34.6. 
<code>plural()</code></a></li>
+<li><a href="#_rgant-ViewModelLayout_cssClass">35.1. 
<code>cssClass()</code></a></li>
+<li><a href="#_rgant-ViewModelLayout_cssClassFa">35.2. 
<code>cssClassFa()</code></a></li>
+<li><a href="#_rgant-ViewModelLayout_describedAs">35.3. 
<code>describedAs()</code></a></li>
+<li><a href="#_rgant-ViewModelLayout_named">35.4. <code>named()</code></a></li>
+<li><a href="#_rgant-ViewModelLayout_paged">35.5. <code>paged()</code></a></li>
+<li><a href="#_rgant-ViewModelLayout_plural">35.6. 
<code>plural()</code></a></li>
 </ul>
 </li>
-<li><a href="#_rgant-XmlJavaTypeAdapter">35. <code>@XmlJavaTypeAdapter</code> 
(<code>jaxb</code>)</a></li>
-<li><a href="#_rgant-XmlRootElement">36. <code>@XmlRootElement</code> 
(<code>jaxb</code>)</a>
+<li><a href="#_rgant-XmlJavaTypeAdapter">36. <code>@XmlJavaTypeAdapter</code> 
(<code>jaxb</code>)</a></li>
+<li><a href="#_rgant-XmlRootElement">37. <code>@XmlRootElement</code> 
(<code>jaxb</code>)</a>
 <ul class="sectlevel2">
-<li><a href="#_example">36.1. Example</a></li>
-<li><a href="#_see_also">36.2. See also</a></li>
+<li><a href="#_example">37.1. Example</a></li>
+<li><a href="#_see_also">37.2. See also</a></li>
 </ul>
 </li>
 </ul>

Reply via email to