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 2017/03/08 00:00:31 UTC

[33/44] isis-site git commit: ISIS-1594: provide an 'edit' button

http://git-wip-us.apache.org/repos/asf/isis-site/blob/83a3755a/content/guides/rgcms.html
----------------------------------------------------------------------
diff --git a/content/guides/rgcms.html b/content/guides/rgcms.html
index 9153f9d..dea4eb3 100644
--- a/content/guides/rgcms.html
+++ b/content/guides/rgcms.html
@@ -1,12 +1,10 @@
 <!doctype html>
 <html class="no-js" lang="en">
-<head>
-    <meta charset="utf-8"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-
-    <title>Classes, Methods and Schema</title>
-
-    <!--
+ <head> 
+  <meta charset="utf-8"> 
+  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
+  <title>Classes, Methods and Schema</title> 
+  <!--
         Licensed to the Apache Software Foundation (ASF) under one
         or more contributor license agreements.  See the NOTICE file
         distributed with this work for additional information
@@ -23,31 +21,21 @@
         KIND, either express or implied.  See the License for the
         specific language governing permissions and limitations
         under the License.
-    -->
-
-    <!-- No caching headers -->
-    <meta http-equiv="cache-control" content="no-cache" />
-    <meta http-equiv="pragma" content="no-cache" />
-    <meta http-equiv="expires" content="-1" />
-
-
-    <!-- TODO: need to (re)instate CDN in the future (not using for now just so can develop off-line -->
-    <link href="../css/foundation/5.5.1/foundation.css" rel="stylesheet" />
-    <script src="../js/foundation/5.5.1/vendor/modernizr.js"></script>
-    <link href="../css/asciidoctor/colony.css" rel="stylesheet">
-    <link href="../css/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
-
-
-
-
-    <link href="../css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.css" rel="stylesheet" />
-    <!--[if lt IE 9]>
+    --> 
+  <!-- No caching headers --> 
+  <meta http-equiv="cache-control" content="no-cache"> 
+  <meta http-equiv="pragma" content="no-cache"> 
+  <meta http-equiv="expires" content="-1"> 
+  <!-- TODO: need to (re)instate CDN in the future (not using for now just so can develop off-line --> 
+  <link href="../css/foundation/5.5.1/foundation.css" rel="stylesheet"> 
+  <script src="../js/foundation/5.5.1/vendor/modernizr.js"></script> 
+  <link href="../css/asciidoctor/colony.css" rel="stylesheet"> 
+  <link href="../css/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"> 
+  <link href="../css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.css" rel="stylesheet"> 
+  <!--[if lt IE 9]>
       <link href="../css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.ie.css" rel="stylesheet" />
-    <![endif]-->
-
-
-
-    <style type="text/css">
+    <![endif]--> 
+  <style type="text/css">
         pre code {
             background-color: inherit;
             border-style: none;
@@ -192,9 +180,8 @@ table.CodeRay td.code>pre{padding:0}
         color:#fff;
         font-size: 1.1em;
     }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         @media only screen and (min-width: 40.063em) {
           .top-bar {
             .contain-to-grid .top-bar {
@@ -205,9 +192,8 @@ table.CodeRay td.code>pre{padding:0}
         .row {
             max-width: 80rem;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         .extended-quote,
         .extended-quote-first {
             margin-left: 40px;
@@ -231,9 +217,8 @@ table.CodeRay td.code>pre{padding:0}
             text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
         }
         
-    </style>
-
-    <style>
+    </style> 
+  <style>
         body {
           position: relative;
         }
@@ -255,6 +240,7 @@ table.CodeRay td.code>pre{padding:0}
 
         div#doc-content {
             margin-top: 30px;
+            padding-top: 30px;
         }
 
         div.documentation-page table.frame-all {
@@ -286,9 +272,8 @@ table.CodeRay td.code>pre{padding:0}
             min-height: 2000px;
         }
 
-    </style>
-
-    <style>
+    </style> 
+  <style>
 
         @media only screen and (min-width: 768px) {
           #toc.toc2 ul ul { margin-left: -10px; }
@@ -316,15 +301,13 @@ table.CodeRay td.code>pre{padding:0}
         body div#toc2 li.tocify-item.active a {
             color: red;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         footer {
             margin-top: 1000px;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         /* overriding colony.css stylesheet */
         .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] {
            /*padding: 1.25em 1.5625em 1.125em 1.5625em;*/
@@ -372,9 +355,8 @@ table.CodeRay td.code>pre{padding:0}
         .imageblock img {
             margin-bottom: 10px;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         /* from http://ben.balter.com/2014/03/13/pages-anchor-links/ */
         .header-link {
           position: absolute;
@@ -395,9 +377,8 @@ table.CodeRay td.code>pre{padding:0}
         h6:hover .header-link {
           opacity: 1;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         .top-bar
         {
             -webkit-transition-duration: .5s;
@@ -425,510 +406,487 @@ table.CodeRay td.code>pre{padding:0}
             -webkit-transition-property: -webkit-transform;
             transition-property: transform;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         #doc-content a.guide {
             color: white;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
+        .tocify {
+            margin-top: 80px;
+        }
+    </style> 
+  <style>
         .tocify {
             margin-top: 80px;
         }
-    </style>
-
-
-</script>
-
-</head>
-<body>
-
-<<div class="github-fork-ribbon-wrapper right" style="position: fixed;">
-    <div class="github-fork-ribbon">
-        <a href="https://github.com/apache/isis#fork-destination-box">Fork me on GitHub</a>
-    </div>
-</div>
-
-
-<div class="row">
-
-    <div class="fixed contain-to-grid header">
-        <nav class="top-bar" data-topbar role="navigation" style="max-width: 80rem">
-            <ul class="title-area">
-                <li class="name">
-                    <h1>
-                        <a href="/index.html">Apache Isis&trade;</a>
-                    </h1>
-                </li>
-                <!-- Remove the class "menu-icon" to get rid of menu icon. Take out "Menu" to just have icon alone -->
-                <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li>
-            </ul>
-
-            <section class="top-bar-section">
-                <ul class="right">
-
-                    <li class="has-form">
-                       <FORM class="searchbox navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
-                        <div class="row collapse">
-                            <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
-                            <INPUT type="hidden" name="cof" value="FORID:0">
-                            <INPUT class="form-control" name="q" type="text" placeholder="Search">
-                        </div>
-                    </FORM>
-                     </li>
-
-                </ul>
-
-                <!-- Left Nav Section -->
-                <ul class="left">
-
-                    <li><a href="/documentation.html">Documentation</a></li>
-                    <li><a href="/downloads.html">Downloads</a></li>
-                    <li><a href="/help.html">Help</a></li>
-                    <li><a href="/asf.html">@ASF</a></li>
-
-                </ul>
-
-            </section>
-        </nav>
-    </div>
-</div>
-
-<div class="row">
-
-    <div id="doc-content-left" class="large-9 medium-9 columns">
-
-
-        <div id="doc-content">
-          <div class="sect1">
-<h2 id="_rgcms">1. Classes, Methods and Schema</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>This reference guide lists and describes various elements of the the Apache Isis Programming Model, specifically
-reserved and prefix <a href="#_rgcms_methods">methods</a> (such as <code>title()</code> and <code>validate&#8230;&#8203;()</code>) and various utility and
-supporting <a href="#_rgcms_classes">classes</a>.</p>
-</div>
-<div class="paragraph">
-<p>It also describes the <a href="#_rgcms_schema">XSD schema</a> defined by Apache Isis.  One use case is for the
-JAXB serialization of view models.</p>
-</div>
-<div class="sect2">
-<h3 id="_other_guides">1.1. Other Guides</h3>
-<div class="paragraph">
-<p>Apache Isis documentation is broken out into a number of user, reference and "supporting procedures" guides.</p>
-</div>
-<div class="paragraph">
-<p>The user guides available are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="ugfun.html">Fundamentals</a></p>
-</li>
-<li>
-<p><a href="ugvw.html">Wicket viewer</a></p>
-</li>
-<li>
-<p><a href="ugvro.html">Restful Objects viewer</a></p>
-</li>
-<li>
-<p><a href="ugdno.html">DataNucleus object store</a></p>
-</li>
-<li>
-<p><a href="ugsec.html">Security</a></p>
-</li>
-<li>
-<p><a href="ugtst.html">Testing</a></p>
-</li>
-<li>
-<p><a href="ugbtb.html">Beyond the Basics</a></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>The reference guides are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="rgant.html">Annotations</a></p>
-</li>
-<li>
-<p><a href="rgsvc.html">Domain Services</a></p>
-</li>
-<li>
-<p><a href="rgcfg.html">Configuration Properties</a></p>
-</li>
-<li>
-<p><a href="#">Classes, Methods and Schema</a> (this guide)</p>
-</li>
-<li>
-<p><a href="rgmvn.html">Apache Isis Maven plugin</a></p>
-</li>
-<li>
-<p><a href="rgfis.html">Framework Internal Services</a></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>The remaining guides are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="dg.html">Developers' Guide</a> (how to set up a development environment
-for Apache Isis and contribute back to the project)</p>
-</li>
-<li>
-<p><a href="cgcom.html">Committers' Guide</a> (release procedures and related practices)</p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_rgcms_methods">2. Methods</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The Apache Isis metamodel is built up from declaratively (ie, <a href="rgant.html#_rgant">annotations</a>) and imperatively, from "supporting" methods and other reserved methods.</p>
-</div>
-<div class="paragraph">
-<p>This chapter documents the supporting methods and the reserved methods.  It also documents (separately) the reserved methods that act as callback hooks into the persistence lifecycle of domain entities.</p>
-</div>
-<div class="sect2">
-<h3 id="_rgcms_methods_prefixes">2.1. Supporting Method Prefixes</h3>
-<div class="paragraph">
-<p>Supporting methods are those that are associated with properties, collections and actions, providing additional imperative business rule checking and behaviour to be performed when the user interacts with those object members.</p>
-</div>
-<div class="paragraph">
-<p>This association is performed by name matching.  Thus, a property called "firstName", derived from a method <code>getFirstName()</code> may have supporting methods <code>hideFirstName()</code>, <code>disableFirstName()</code> and <code>validateFirstName()</code>.  Supporting methods are, therefore, each characterized by their own particular prefix.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Using name matching to associate supporting methods generally works very well, but of course if an object member&#8217;s method is renamed, there&#8217;s always the risk that the developer forgets to rename the supporting method; the supporting methods become "orphaned".</p>
-</div>
-<div class="paragraph">
-<p>Apache Isis checks for this automatically, and will fail-fast (fail to boot) if any orphaned methods are located.  A suitable error message is logged so that the issue can be easily diagnosed.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>The table below lists the method prefixes that are recognized as part of Apache Isis' default programming model.</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 1. Recognized Method Prefixes</caption>
-<colgroup>
-<col style="width: 18.1818%;">
-<col style="width: 9.0909%;">
-<col style="width: 9.0909%;">
-<col style="width: 9.0909%;">
-<col style="width: 9.0909%;">
-<col style="width: 9.0909%;">
-<col style="width: 36.3637%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Prefix</th>
-<th class="tableblock halign-left valign-top">Object</th>
-<th class="tableblock halign-left valign-top">Property</th>
-<th class="tableblock halign-left valign-top">Collection</th>
-<th class="tableblock halign-left valign-top">Action</th>
-<th class="tableblock halign-left valign-top">Action<br>
-Param</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="#_rgcms_methods_prefixes_addTo"><code>addTo&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>add object to a collection <br></p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Directly mutable collections are not currently supported by the <a href="ugvw.html">Wicket viewer</a>.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_removeFrom"><code>removeFrom&#8230;&#8203;()</code></a>`</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_autoComplete"><code>autoComplete&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Return a list of matching elements for a property or an action parameter.<br></p>
-</div>
-<div class="paragraph">
-<p>Alternatively, can specify for a class using <a href="rgant.html#_rgant-DomainObject_autoCompleteRepository"><code>@DomainObject</code><br>
-<code>#autoCompleteRepository</code></a><br></p>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_choices"><code>choices&#8230;&#8203;()</code></a></p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_choices"><code>choices&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Provide list of choices for a property or action parameter.<br></p>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_autoComplete"><code>autoComplete&#8230;&#8203;()</code></a>.</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_clear"><code>clear&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Clear a property (set it to null).<br></p>
-</div>
-<div class="paragraph">
-<p>Allows business logic to be placed apart from the setter.<br></p>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_modify"><code>modify&#8230;&#8203;()</code></a></p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_default"><code>default&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Default value for a property or an action parameter.</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_disable"><code>disable&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Disables (makes read-only) a property, a collection or an action.</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_get"><code>get&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Access the value of a property or collection.<br></p>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_set"><code>set&#8230;&#8203;()</code></a>.</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_hide"><code>hide&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Hides a property, a collection or an action.</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_modify"><code>modify&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Modify a property (set it to a non-null) value.<br></p>
-</div>
-<div class="paragraph">
-<p>Allows business logic to be placed apart from the setter.<br></p>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_clear"><code>clear&#8230;&#8203;()</code></a>`.</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_removeFrom"><code>removeFrom&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>remove object from a collection.<br></p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Directly mutable collections are not currently supported by the <a href="ugvw.html">Wicket viewer</a>.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_addTo"><code>addTo&#8230;&#8203;()</code></a>`</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_set"><code>set&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Sets the value of a property or a collection.</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_validate"><code>validate&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Check that a proposed value of a property or a set of action parameters or a single action parameter is valid.<br></p>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_validateAddTo"><code>validateAddTo&#8230;&#8203;()</code></a> and <a href="#_rgcms_methods_prefixes_validateRemoveFrom"><code>validateRemoveFrom&#8230;&#8203;()</code></a> to validate modifications to collections.</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_validateAddTo"><code>validate<br>
-AddTo&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Check that a proposed object to add to a collection is valid.<br></p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Directly mutable collections are not currently supported by the <a href="ugvw.html">Wicket viewer</a>.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_validateRemoveFrom"><code>validateRemoveFrom&#8230;&#8203;()</code></a>, and <a href="#_rgcms_methods_prefixes_validate"><code>validate&#8230;&#8203;()</code></a> for properties and actions.</p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_validateRemoveFrom"><code>validate<br>
-RemoveFrom&#8230;&#8203;()</code></a></p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Check that a proposed object to remove from a collection is valid.<br></p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Directly mutable collections are not currently supported by the <a href="ugvw.html">Wicket viewer</a>.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_validateAddTo"><code>validateAddTo&#8230;&#8203;()</code></a>, and <a href="#_rgcms_methods_prefixes_validate"><code>validate&#8230;&#8203;()</code></a> for properties and actions.</p>
-</div></div></td>
-</tr>
-</tbody>
-</table>
-<div class="sect3">
-<h4 id="_rgcms_methods_prefixes_addTo">2.1.1. <code>addTo&#8230;&#8203;()</code></h4>
-<div class="paragraph">
-<p>The <code>addTo&#8230;&#8203;()</code> supporting method is called whenever an object is added to a collection. Its purpose is to allow additional business logic to be performed.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Directly mutable collections are not currently supported by the <a href="ugvw.html">Wicket viewer</a>.  The suggested workaround is to simply define an action.</p>
-</div>
-</td>
-</tr>
-</table>
-</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="directive">public</span> <span class="type">class</span> <span class="class">LibraryMember</span> {
+    </style>  
+ </head> 
+ <body> 
+  <div class="row"> 
+   <div class="fixed contain-to-grid header"> 
+    <nav class="top-bar" data-topbar role="navigation" style="max-width: 80rem"> 
+     <ul class="title-area"> 
+      <li class="name"> <h1> <a href="/index.html">Apache Isis\u2122</a> </h1> </li> 
+      <!-- Remove the class "menu-icon" to get rid of menu icon. Take out "Menu" to just have icon alone --> 
+      <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li> 
+     </ul> 
+     <section class="top-bar-section"> 
+      <ul class="right"> 
+       <li class="has-form"> 
+        <form class="searchbox navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse"> 
+         <div class="row collapse"> 
+          <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya"> 
+          <input type="hidden" name="cof" value="FORID:0"> 
+          <input class="form-control" name="q" type="text" placeholder="Search"> 
+         </div> 
+        </form> </li> 
+      </ul> 
+      <!-- Left Nav Section --> 
+      <ul class="left"> 
+       <li><a href="/documentation.html">Documentation</a></li> 
+       <li><a href="/downloads.html">Downloads</a></li> 
+       <li><a href="/help.html">Help</a></li> 
+       <li><a href="/asf.html">@ASF</a></li> 
+      </ul> 
+     </section> 
+    </nav> 
+   </div> 
+  </div> 
+  <div class="row"> 
+   <div id="doc-content-left" class="large-9 medium-9 columns"> 
+    <div id="doc-content">
+     <button type="button" class="button secondary" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgcms.adoc&quot;" style="float: right; font-size: small; padding: 6px;  "><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button> 
+     <div class="sect1"> 
+      <h2 id="_rgcms">1. Classes, Methods and Schema</h2>
+      <button type="button" class="button secondary" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/_rgcms.adoc&quot;" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button> 
+      <div class="sectionbody"> 
+       <div class="paragraph"> 
+        <p>This reference guide lists and describes various elements of the the Apache Isis Programming Model, specifically reserved and prefix <a href="#_rgcms_methods">methods</a> (such as <code>title()</code> and <code>validate\u2026\u200b()</code>) and various utility and supporting <a href="#_rgcms_classes">classes</a>.</p> 
+       </div> 
+       <div class="paragraph"> 
+        <p>It also describes the <a href="#_rgcms_schema">XSD schema</a> defined by Apache Isis. One use case is for the JAXB serialization of view models.</p> 
+       </div> 
+       <div class="sect2"> 
+        <h3 id="_other_guides">1.1. Other Guides</h3> 
+        <div class="paragraph"> 
+         <p>Apache Isis documentation is broken out into a number of user, reference and "supporting procedures" guides.</p> 
+        </div> 
+        <div class="paragraph"> 
+         <p>The user guides available are:</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p><a href="ugfun.html">Fundamentals</a></p> </li> 
+          <li> <p><a href="ugvw.html">Wicket viewer</a></p> </li> 
+          <li> <p><a href="ugvro.html">Restful Objects viewer</a></p> </li> 
+          <li> <p><a href="ugdno.html">DataNucleus object store</a></p> </li> 
+          <li> <p><a href="ugsec.html">Security</a></p> </li> 
+          <li> <p><a href="ugtst.html">Testing</a></p> </li> 
+          <li> <p><a href="ugbtb.html">Beyond the Basics</a></p> </li> 
+         </ul> 
+        </div> 
+        <div class="paragraph"> 
+         <p>The reference guides are:</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p><a href="rgant.html">Annotations</a></p> </li> 
+          <li> <p><a href="rgsvc.html">Domain Services</a></p> </li> 
+          <li> <p><a href="rgcfg.html">Configuration Properties</a></p> </li> 
+          <li> <p><a href="#">Classes, Methods and Schema</a> (this guide)</p> </li> 
+          <li> <p><a href="rgmvn.html">Apache Isis Maven plugin</a></p> </li> 
+          <li> <p><a href="rgfis.html">Framework Internal Services</a></p> </li> 
+         </ul> 
+        </div> 
+        <div class="paragraph"> 
+         <p>The remaining guides are:</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p><a href="dg.html">Developers' Guide</a> (how to set up a development environment for Apache Isis and contribute back to the project)</p> </li> 
+          <li> <p><a href="cgcom.html">Committers' Guide</a> (release procedures and related practices)</p> </li> 
+         </ul> 
+        </div> 
+       </div> 
+      </div> 
+     </div> 
+     <div class="sect1"> 
+      <h2 id="_rgcms_methods">2. Methods</h2>
+      <button type="button" class="button secondary" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/_rgcms_methods.adoc&quot;" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button> 
+      <div class="sectionbody"> 
+       <div class="paragraph"> 
+        <p>The Apache Isis metamodel is built up from declaratively (ie, <a href="rgant.html#_rgant">annotations</a>) and imperatively, from "supporting" methods and other reserved methods.</p> 
+       </div> 
+       <div class="paragraph"> 
+        <p>This chapter documents the supporting methods and the reserved methods. It also documents (separately) the reserved methods that act as callback hooks into the persistence lifecycle of domain entities.</p> 
+       </div> 
+       <div class="sect2"> 
+        <h3 id="_rgcms_methods_prefixes">2.1. Supporting Method Prefixes</h3> 
+        <div class="paragraph"> 
+         <p>Supporting methods are those that are associated with properties, collections and actions, providing additional imperative business rule checking and behaviour to be performed when the user interacts with those object members.</p> 
+        </div> 
+        <div class="paragraph"> 
+         <p>This association is performed by name matching. Thus, a property called "firstName", derived from a method <code>getFirstName()</code> may have supporting methods <code>hideFirstName()</code>, <code>disableFirstName()</code> and <code>validateFirstName()</code>. Supporting methods are, therefore, each characterized by their own particular prefix.</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>Using name matching to associate supporting methods generally works very well, but of course if an object member\u2019s method is renamed, there\u2019s always the risk that the developer forgets to rename the supporting method; the supporting methods become "orphaned".</p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>Apache Isis checks for this automatically, and will fail-fast (fail to boot) if any orphaned methods are located. A suitable error message is logged so that the issue can be easily diagnosed.</p> 
+             </div> </td> 
+           </tr> 
+          </tbody>
+         </table> 
+        </div> 
+        <div class="paragraph"> 
+         <p>The table below lists the method prefixes that are recognized as part of Apache Isis' default programming model.</p> 
+        </div> 
+        <table class="tableblock frame-all grid-all spread"> 
+         <caption class="title">
+          Table 1. Recognized Method Prefixes
+         </caption> 
+         <colgroup> 
+          <col style="width: 18.1818%;"> 
+          <col style="width: 9.0909%;"> 
+          <col style="width: 9.0909%;"> 
+          <col style="width: 9.0909%;"> 
+          <col style="width: 9.0909%;"> 
+          <col style="width: 9.0909%;"> 
+          <col style="width: 36.3637%;"> 
+         </colgroup> 
+         <thead> 
+          <tr> 
+           <th class="tableblock halign-left valign-top">Prefix</th> 
+           <th class="tableblock halign-left valign-top">Object</th> 
+           <th class="tableblock halign-left valign-top">Property</th> 
+           <th class="tableblock halign-left valign-top">Collection</th> 
+           <th class="tableblock halign-left valign-top">Action</th> 
+           <th class="tableblock halign-left valign-top">Action<br> Param</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="#_rgcms_methods_prefixes_addTo"><code>addTo\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>add object to a collection <br></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>Directly mutable collections are not currently supported by the <a href="ugvw.html">Wicket viewer</a>.</p> 
+                  </div> </td> 
+                </tr> 
+               </tbody>
+              </table> 
+             </div> 
+             <div class="paragraph"> 
+              <p>See also <a href="#_rgcms_methods_prefixes_removeFrom"><code>removeFrom\u2026\u200b()</code></a>`</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_autoComplete"><code>autoComplete\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Return a list of matching elements for a property or an action parameter.<br></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>Alternatively, can specify for a class using <a href="rgant.html#_rgant-DomainObject_autoCompleteRepository"><code>@DomainObject</code><br> <code>#autoCompleteRepository</code></a><br></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>See also <a href="#_rgcms_methods_prefixes_choices"><code>choices\u2026\u200b()</code></a></p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_choices"><code>choices\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Provide list of choices for a property or action parameter.<br></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>See also <a href="#_rgcms_methods_prefixes_autoComplete"><code>autoComplete\u2026\u200b()</code></a>.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_clear"><code>clear\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Clear a property (set it to null).<br></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>Allows business logic to be placed apart from the setter.<br></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>See also <a href="#_rgcms_methods_prefixes_modify"><code>modify\u2026\u200b()</code></a></p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_default"><code>default\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Default value for a property or an action parameter.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_disable"><code>disable\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Disables (makes read-only) a property, a collection or an action.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_get"><code>get\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Access the value of a property or collection.<br></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>See also <a href="#_rgcms_methods_prefixes_set"><code>set\u2026\u200b()</code></a>.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_hide"><code>hide\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Hides a property, a collection or an action.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_modify"><code>modify\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Modify a property (set it to a non-null) value.<br></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>Allows business logic to be placed apart from the setter.<br></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>See also <a href="#_rgcms_methods_prefixes_clear"><code>clear\u2026\u200b()</code></a>`.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_removeFrom"><code>removeFrom\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>remove object from a collection.<br></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>Directly mutable collections are not currently supported by the <a href="ugvw.html">Wicket viewer</a>.</p> 
+                  </div> </td> 
+                </tr> 
+               </tbody>
+              </table> 
+             </div> 
+             <div class="paragraph"> 
+              <p>See also <a href="#_rgcms_methods_prefixes_addTo"><code>addTo\u2026\u200b()</code></a>`</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_set"><code>set\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Sets the value of a property or a collection.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_validate"><code>validate\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Check that a proposed value of a property or a set of action parameters or a single action parameter is valid.<br></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>See also <a href="#_rgcms_methods_prefixes_validateAddTo"><code>validateAddTo\u2026\u200b()</code></a> and <a href="#_rgcms_methods_prefixes_validateRemoveFrom"><code>validateRemoveFrom\u2026\u200b()</code></a> to validate modifications to collections.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_validateAddTo"><code>validate<br> AddTo\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Check that a proposed object to add to a collection is valid.<br></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>Directly mutable collections are not currently supported by the <a href="ugvw.html">Wicket viewer</a>.</p> 
+                  </div> </td> 
+                </tr> 
+               </tbody>
+              </table> 
+             </div> 
+             <div class="paragraph"> 
+              <p>See also <a href="#_rgcms_methods_prefixes_validateRemoveFrom"><code>validateRemoveFrom\u2026\u200b()</code></a>, and <a href="#_rgcms_methods_prefixes_validate"><code>validate\u2026\u200b()</code></a> for properties and actions.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgcms_methods_prefixes_validateRemoveFrom"><code>validate<br> RemoveFrom\u2026\u200b()</code></a></p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Check that a proposed object to remove from a collection is valid.<br></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>Directly mutable collections are not currently supported by the <a href="ugvw.html">Wicket viewer</a>.</p> 
+                  </div> </td> 
+                </tr> 
+               </tbody>
+              </table> 
+             </div> 
+             <div class="paragraph"> 
+              <p>See also <a href="#_rgcms_methods_prefixes_validateAddTo"><code>validateAddTo\u2026\u200b()</code></a>, and <a href="#_rgcms_methods_prefixes_validate"><code>validate\u2026\u200b()</code></a> for properties and actions.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+         </tbody> 
+        </table> 
+        <div class="sect3"> 
+         <h4 id="_rgcms_methods_prefixes_addTo">2.1.1. <code>addTo\u2026\u200b()</code></h4> 
+         <div class="paragraph"> 
+          <p>The <code>addTo\u2026\u200b()</code> supporting method is called whenever an object is added to a collection. Its purpose is to allow additional business logic to be performed.</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>Directly mutable collections are not currently supported by the <a href="ugvw.html">Wicket viewer</a>. The suggested workaround is to simply define an action.</p> 
+              </div> </td> 
+            </tr> 
+           </tbody>
+          </table> 
+         </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="directive">public</span> <span class="type">class</span> <span class="class">LibraryMember</span> {
     <span class="directive">public</span> <span class="predefined-type">SortedSet</span>&lt;<span class="predefined-type">Book</span>&gt; getBorrowed() { ... }
     <span class="directive">public</span> <span class="type">void</span> setBorrowed(<span class="predefined-type">SortedSet</span>&lt;<span class="predefined-type">Book</span>&gt; borrowed) { ... }
     <span class="directive">public</span> <span class="type">void</span> addToBorrowed(<span class="predefined-type">Book</span> book) {
@@ -937,66 +895,67 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
     }
     <span class="directive">public</span> <span class="type">void</span> removeFromBorrowed(<span class="predefined-type">Book</span> book) { ... }
     ...
-}</code></pre>
-</div>
-</div>
-<div class="colist arabic">
-<table>
-<tr>
-<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td>update the collection</td>
-</tr>
-<tr>
-<td><i class="conum" data-value="2"></i><b>2</b></td>
-<td>perform some additional business logic</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_removeFrom"><code>removeFrom&#8230;&#8203;()</code></a>`</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_rgcms_methods_prefixes_autoComplete">2.1.2. <code>autoComplete&#8230;&#8203;()</code></h4>
-<div class="paragraph">
-<p>The <code>autoComplete&#8230;&#8203;()</code> supporting method is called for action parameters and for properties to find objects from a drop-down list box.  The use case is when the number of candidate objects is expected to be large, so the user is required to enter some characters to narrow the search down.</p>
-</div>
-<div class="admonitionblock tip">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>If the number of candidate objects is comparatively small, then use <a href="#_rgcms_methods_prefixes_choices"><code>choices&#8230;&#8203;()</code></a> supporting method instead.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>The signature of the supporting method depends on whether it is for a parameter or a property.</p>
-</div>
-<div class="sect4">
-<h5 id="_parameters">Parameters</h5>
-<div class="paragraph">
-<p>For an action parameter in (0-based) position <em>N</em>, and of type <code>T</code>, the signature is:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="predefined-type">List</span>&lt;T&gt; autoCompleteNXxx(<span class="predefined-type">String</span> search) { ... }</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>It is also valid to return <code>T[]</code>, a <code>Set&lt;T&gt;</code> or a <code>Collection&lt;T&gt;</code>.</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="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
+}</code></pre> 
+          </div> 
+         </div> 
+         <div class="colist arabic"> 
+          <table> 
+           <tbody>
+            <tr> 
+             <td><i class="conum" data-value="1"></i><b>1</b></td> 
+             <td>update the collection</td> 
+            </tr> 
+            <tr> 
+             <td><i class="conum" data-value="2"></i><b>2</b></td> 
+             <td>perform some additional business logic</td> 
+            </tr> 
+           </tbody>
+          </table> 
+         </div> 
+         <div class="paragraph"> 
+          <p>See also <a href="#_rgcms_methods_prefixes_removeFrom"><code>removeFrom\u2026\u200b()</code></a>`</p> 
+         </div> 
+        </div> 
+        <div class="sect3"> 
+         <h4 id="_rgcms_methods_prefixes_autoComplete">2.1.2. <code>autoComplete\u2026\u200b()</code></h4> 
+         <div class="paragraph"> 
+          <p>The <code>autoComplete\u2026\u200b()</code> supporting method is called for action parameters and for properties to find objects from a drop-down list box. The use case is when the number of candidate objects is expected to be large, so the user is required to enter some characters to narrow the search down.</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 number of candidate objects is comparatively small, then use <a href="#_rgcms_methods_prefixes_choices"><code>choices\u2026\u200b()</code></a> supporting method instead.</p> 
+              </div> </td> 
+            </tr> 
+           </tbody>
+          </table> 
+         </div> 
+         <div class="paragraph"> 
+          <p>The signature of the supporting method depends on whether it is for a parameter or a property.</p> 
+         </div> 
+         <div class="sect4"> 
+          <h5 id="_parameters">Parameters</h5> 
+          <div class="paragraph"> 
+           <p>For an action parameter in (0-based) position <em>N</em>, and of type <code>T</code>, the signature is:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="predefined-type">List</span>&lt;T&gt; autoCompleteNXxx(<span class="predefined-type">String</span> search) { ... }</code></pre> 
+           </div> 
+          </div> 
+          <div class="paragraph"> 
+           <p>It is also valid to return <code>T[]</code>, a <code>Set&lt;T&gt;</code> or a <code>Collection&lt;T&gt;</code>.</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="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
     <span class="annotation">@Property</span>(editing=Editing.DISABLED)
     <span class="directive">public</span> Product getProduct() { ... }
     <span class="directive">public</span> <span class="type">void</span> setProduct(Product product) { ... }
@@ -1008,7 +967,7 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
     <span class="annotation">@Action</span>(semantics=SemanticsOf.IDEMPOTENT)
     <span class="directive">public</span> ShoppingCartItem updateProduct(
         Product product,
-        <span class="annotation">@ParameterLayout</span>(named=<span class="string"><span class="delimiter">&quot;</span><span class="content">Quantity</span><span class="delimiter">&quot;</span></span>)
+        <span class="annotation">@ParameterLayout</span>(named=<span class="string"><span class="delimiter">"</span><span class="content">Quantity</span><span class="delimiter">"</span></span>)
         <span class="directive">final</span> <span class="type">int</span> quantity) {
         setProduct(product);
         setQuantity(quantity);
@@ -1019,41 +978,43 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
         ...
     }
     ...
-}</code></pre>
-</div>
-</div>
-<div class="colist arabic">
-<table>
-<tr>
-<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td><code>product</code> is the 0th argument of the action.</td>
-</tr>
-<tr>
-<td><i class="conum" data-value="2"></i><b>2</b></td>
-<td>the <a href="rgant.html#_rgant-MinLength"><code>@MinLength</code></a> annotation specifies the minimum number of characters that must be entered before a search is performed for matching objects</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect4">
-<h5 id="_properties">Properties</h5>
-<div class="paragraph">
-<p>For a property of type <code>T</code>, the signature is:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="predefined-type">List</span>&lt;T&gt; autoCompleteXxx(<span class="predefined-type">String</span> search) { ... }</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>(As for action parameters) it is also valid to return <code>T[]</code>, a <code>Set&lt;T&gt;</code> or a <code>Collection&lt;T&gt;</code>.</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="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
+}</code></pre> 
+           </div> 
+          </div> 
+          <div class="colist arabic"> 
+           <table> 
+            <tbody>
+             <tr> 
+              <td><i class="conum" data-value="1"></i><b>1</b></td> 
+              <td><code>product</code> is the 0th argument of the action.</td> 
+             </tr> 
+             <tr> 
+              <td><i class="conum" data-value="2"></i><b>2</b></td> 
+              <td>the <a href="rgant.html#_rgant-MinLength"><code>@MinLength</code></a> annotation specifies the minimum number of characters that must be entered before a search is performed for matching objects</td> 
+             </tr> 
+            </tbody>
+           </table> 
+          </div> 
+         </div> 
+         <div class="sect4"> 
+          <h5 id="_properties">Properties</h5> 
+          <div class="paragraph"> 
+           <p>For a property of type <code>T</code>, the signature is:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="predefined-type">List</span>&lt;T&gt; autoCompleteXxx(<span class="predefined-type">String</span> search) { ... }</code></pre> 
+           </div> 
+          </div> 
+          <div class="paragraph"> 
+           <p>(As for action parameters) it is also valid to return <code>T[]</code>, a <code>Set&lt;T&gt;</code> or a <code>Collection&lt;T&gt;</code>.</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="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
     <span class="directive">public</span> Product getProduct() { ... }
     <span class="directive">public</span> <span class="type">void</span> setProduct(Product product) { ... }
 
@@ -1063,43 +1024,45 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
         ...
     }
     ...
-}</code></pre>
-</div>
-</div>
-<div class="colist arabic">
-<table>
-<tr>
-<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td>the <a href="rgant.html#_rgant-MinLength"><code>@MinLength</code></a> annotation specifies the minimum number of characters that must be entered before a search is performed for matching objects</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_rgcms_methods_prefixes_choices">2.1.3. <code>choices&#8230;&#8203;()</code></h4>
-<div class="paragraph">
-<p>The <code>choices&#8230;&#8203;()</code> supporting method is called for both action parameters and for properties, to find objects from a drop-down list box.  Unlike <a href="#_rgcms_methods_prefixes_autoComplete"><code>autoComplete&#8230;&#8203;()</code></a>, the use case is when the number of objects is comparatively small and can be selected from a drop-down without any additional filtering.</p>
-</div>
-<div class="paragraph">
-<p>The signature of the supporting method depends on whether it is for an action parameter or a property.</p>
-</div>
-<div class="sect4">
-<h5 id="_parameters_2">Parameters</h5>
-<div class="paragraph">
-<p>For an action parameter in (0-based) position <em>N</em>, and of type <code>T</code>, the signature is:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="predefined-type">Collection</span>&lt;T&gt; choicesNXxx() { ... }</code></pre>
-</div>
-</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="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
+}</code></pre> 
+           </div> 
+          </div> 
+          <div class="colist arabic"> 
+           <table> 
+            <tbody>
+             <tr> 
+              <td><i class="conum" data-value="1"></i><b>1</b></td> 
+              <td>the <a href="rgant.html#_rgant-MinLength"><code>@MinLength</code></a> annotation specifies the minimum number of characters that must be entered before a search is performed for matching objects</td> 
+             </tr> 
+            </tbody>
+           </table> 
+          </div> 
+         </div> 
+        </div> 
+        <div class="sect3"> 
+         <h4 id="_rgcms_methods_prefixes_choices">2.1.3. <code>choices\u2026\u200b()</code></h4> 
+         <div class="paragraph"> 
+          <p>The <code>choices\u2026\u200b()</code> supporting method is called for both action parameters and for properties, to find objects from a drop-down list box. Unlike <a href="#_rgcms_methods_prefixes_autoComplete"><code>autoComplete\u2026\u200b()</code></a>, the use case is when the number of objects is comparatively small and can be selected from a drop-down without any additional filtering.</p> 
+         </div> 
+         <div class="paragraph"> 
+          <p>The signature of the supporting method depends on whether it is for an action parameter or a property.</p> 
+         </div> 
+         <div class="sect4"> 
+          <h5 id="_parameters_2">Parameters</h5> 
+          <div class="paragraph"> 
+           <p>For an action parameter in (0-based) position <em>N</em>, and of type <code>T</code>, the signature is:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="predefined-type">Collection</span>&lt;T&gt; choicesNXxx() { ... }</code></pre> 
+           </div> 
+          </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="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
     <span class="annotation">@Property</span>(editing=Editing.DISABLED)
     <span class="directive">public</span> Product getProduct() { ... }
     <span class="directive">public</span> <span class="type">void</span> setProduct(Product product) { ... }
@@ -1111,7 +1074,7 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
     <span class="annotation">@Action</span>(semantics=SemanticsOf.IDEMPOTENT)
     <span class="directive">public</span> ShoppingCartItem updateProduct(
         Product product,
-        <span class="annotation">@ParameterLayout</span>(named=<span class="string"><span class="delimiter">&quot;</span><span class="content">Quantity</span><span class="delimiter">&quot;</span></span>)
+        <span class="annotation">@ParameterLayout</span>(named=<span class="string"><span class="delimiter">"</span><span class="content">Quantity</span><span class="delimiter">"</span></span>)
         <span class="directive">final</span> <span class="predefined-type">Integer</span> quantity) {
         setProduct(product);
         setQuantity(quantity);
@@ -1120,31 +1083,31 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
         <span class="keyword">return</span> <span class="predefined-type">Arrays</span>.asList(<span class="integer">1</span>,<span class="integer">2</span>,<span class="integer">3</span>,<span class="integer">5</span>,<span class="integer">10</span>,<span class="integer">25</span>,<span class="integer">50</span>,<span class="integer">100</span>);
     }
     ...
-}</code></pre>
-</div>
-</div>
-<div class="sect5">
-<h6 id="_dependent_choices">Dependent Choices</h6>
-<div class="paragraph">
-<p>Action parameters also support the notion of dependent choices, whereby the list of choices is dependent upon the value of some other argument.</p>
-</div>
-<div class="paragraph">
-<p>An example can be found in the (non-ASF) <a href="http://github.com/isisaddons/isis-app-todoapp">Isis addons' todoapp</a>, whereby `ToDoItem`s are categorized and then can also be subcategorized:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/reference-methods/prefixes/choices/dependent.png"><img src="images/reference-methods/prefixes/choices/dependent.png" alt="dependent" width="800px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>This functionality is actually implemented as a <a href="ugfun.html#_ugfun_how-tos_contributed-members">contributed action</a>, so the code for this is:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature = NatureOfService.VIEW_CONTRIBUTIONS_ONLY)
+}</code></pre> 
+           </div> 
+          </div> 
+          <div class="sect5"> 
+           <h6 id="_dependent_choices">Dependent Choices</h6> 
+           <div class="paragraph"> 
+            <p>Action parameters also support the notion of dependent choices, whereby the list of choices is dependent upon the value of some other argument.</p> 
+           </div> 
+           <div class="paragraph"> 
+            <p>An example can be found in the (non-ASF) <a href="http://github.com/isisaddons/isis-app-todoapp">Isis addons' todoapp</a>, whereby `ToDoItem`s are categorized and then can also be subcategorized:</p> 
+           </div> 
+           <div class="imageblock"> 
+            <div class="content"> 
+             <a class="image" href="images/reference-methods/prefixes/choices/dependent.png"><img src="images/reference-methods/prefixes/choices/dependent.png" alt="dependent" width="800px"></a> 
+            </div> 
+           </div> 
+           <div class="paragraph"> 
+            <p>This functionality is actually implemented as a <a href="ugfun.html#_ugfun_how-tos_contributed-members">contributed action</a>, so the code for this is:</p> 
+           </div> 
+           <div class="listingblock"> 
+            <div class="content"> 
+             <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(nature = NatureOfService.VIEW_CONTRIBUTIONS_ONLY)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">UpdateCategoryContributions</span> ... {
     <span class="annotation">@ActionLayout</span>(
-            describedAs = <span class="string"><span class="delimiter">&quot;</span><span class="content">Update category and subcategory</span><span class="delimiter">&quot;</span></span>
+            describedAs = <span class="string"><span class="delimiter">"</span><span class="content">Update category and subcategory</span><span class="delimiter">"</span></span>
     )
     <span class="annotation">@Action</span>(semantics = SemanticsOf.IDEMPOTENT)
     <span class="directive">public</span> Categorized updateCategory(
@@ -1162,40 +1125,42 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
         <span class="keyword">return</span> Subcategory.listFor(category);
     }
     ...
-}</code></pre>
-</div>
-</div>
-<div class="colist arabic">
-<table>
-<tr>
-<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td><code>ToDoItem</code> implements <code>Categorized</code></td>
-</tr>
-<tr>
-<td><i class="conum" data-value="2"></i><b>2</b></td>
-<td>subcategory is the 2-th argument (0-based)</td>
-</tr>
-<tr>
-<td><i class="conum" data-value="3"></i><b>3</b></td>
-<td>the item contributed to</td>
-</tr>
-<tr>
-<td><i class="conum" data-value="4"></i><b>4</b></td>
-<td>the category selected</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Dependent choices are not restricted to enums, however.  Going back to the shopping cart example shown above, the choices for the <code>quantity</code> parameter could be dependent upon the selected <code>Product</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
+}</code></pre> 
+            </div> 
+           </div> 
+           <div class="colist arabic"> 
+            <table> 
+             <tbody>
+              <tr> 
+               <td><i class="conum" data-value="1"></i><b>1</b></td> 
+               <td><code>ToDoItem</code> implements <code>Categorized</code></td> 
+              </tr> 
+              <tr> 
+               <td><i class="conum" data-value="2"></i><b>2</b></td> 
+               <td>subcategory is the 2-th argument (0-based)</td> 
+              </tr> 
+              <tr> 
+               <td><i class="conum" data-value="3"></i><b>3</b></td> 
+               <td>the item contributed to</td> 
+              </tr> 
+              <tr> 
+               <td><i class="conum" data-value="4"></i><b>4</b></td> 
+               <td>the category selected</td> 
+              </tr> 
+             </tbody>
+            </table> 
+           </div> 
+           <div class="paragraph"> 
+            <p>Dependent choices are not restricted to enums, however. Going back to the shopping cart example shown above, the choices for the <code>quantity</code> parameter could be dependent upon the selected <code>Product</code>:</p> 
+           </div> 
+           <div class="listingblock"> 
+            <div class="content"> 
+             <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
     ...
     <span class="annotation">@Action</span>(semantics=SemanticsOf.IDEMPOTENT)
     <span class="directive">public</span> ShoppingCartItem updateProduct(
         Product product,
-        <span class="annotation">@ParameterLayout</span>(named=<span class="string"><span class="delimiter">&quot;</span><span class="content">Quantity</span><span class="delimiter">&quot;</span></span>)
+        <span class="annotation">@ParameterLayout</span>(named=<span class="string"><span class="delimiter">"</span><span class="content">Quantity</span><span class="delimiter">"</span></span>)
         <span class="directive">final</span> <span class="predefined-type">Integer</span> quantity) {
         setProduct(product);
         setQuantity(quantity);
@@ -1204,56 +1169,58 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
         <span class="keyword">return</span> productService.quantityChoicesFor(product);                 <i class="conum" data-value="1"></i><b>(1)</b>
     }
     ...
-}</code></pre>
-</div>
-</div>
-<div class="colist arabic">
-<table>
-<tr>
-<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td><code>productService</code> is a (fictitous) injected service that knows what the quantity choices should be for any given product</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-<div class="sect4">
-<h5 id="_properties_2">Properties</h5>
-<div class="paragraph">
-<p>For a property of type <code>T</code>, the signature is:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="predefined-type">Collection</span>&lt;T&gt; choicesXxx() { ... }</code></pre>
-</div>
-</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="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
+}</code></pre> 
+            </div> 
+           </div> 
+           <div class="colist arabic"> 
+            <table> 
+             <tbody>
+              <tr> 
+               <td><i class="conum" data-value="1"></i><b>1</b></td> 
+               <td><code>productService</code> is a (fictitous) injected service that knows what the quantity choices should be for any given product</td> 
+              </tr> 
+             </tbody>
+            </table> 
+           </div> 
+          </div> 
+         </div> 
+         <div class="sect4"> 
+          <h5 id="_properties_2">Properties</h5> 
+          <div class="paragraph"> 
+           <p>For a property of type <code>T</code>, the signature is:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="predefined-type">Collection</span>&lt;T&gt; choicesXxx() { ... }</code></pre> 
+           </div> 
+          </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="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
     <span class="directive">public</span> Product getProduct() { ... }
     <span class="directive">public</span> <span class="type">void</span> setProduct(Product product) { ... }
 
     <span class="directive">public</span> <span class="predefined-type">Collection</span>&lt;Product&gt; choicesProduct() {
         ...
-    }</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_rgcms_methods_prefixes_clear">2.1.4. <code>clear&#8230;&#8203;()</code></h4>
-<div class="paragraph">
-<p>The <code>clear&#8230;&#8203;()</code> supporting method is called&#8201;&#8212;&#8201;instead of the setter&#8201;&#8212;&#8201;whenever an (optional) property is to be set to <code>null</code>.  Its purpose is to allow additional business logic to be performed.</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="directive">public</span> <span class="type">class</span> <span class="class">LibraryMember</span> {
+    }</code></pre> 
+           </div> 
+          </div> 
+         </div> 
+        </div> 
+        <div class="sect3"> 
+         <h4 id="_rgcms_methods_prefixes_clear">2.1.4. <code>clear\u2026\u200b()</code></h4> 
+         <div class="paragraph"> 
+          <p>The <code>clear\u2026\u200b()</code> supporting method is called\u2009\u2014\u2009instead of the setter\u2009\u2014\u2009whenever an (optional) property is to be set to <code>null</code>. Its purpose is to allow additional business logic to be performed.</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="directive">public</span> <span class="type">class</span> <span class="class">LibraryMember</span> {
     <span class="directive">public</span> Title getFavoriteTitle() { ... }
     <span class="directive">public</span> <span class="type">void</span> setFavoriteTitle(Title title) { ... }
     <span class="directive">public</span> <span class="type">void</span> modifyFavoriteTitle(Title title) { ... }
@@ -1263,52 +1230,54 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
         titleFavoritesService.decrement(title);         <i class="conum" data-value="2"></i><b>(2)</b>
     }
     ...
-}</code></pre>
-</div>
-</div>
-<div class="colist arabic">
-<table>
-<tr>
-<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td>update the property</td>
-</tr>
-<tr>
-<td><i class="conum" data-value="2"></i><b>2</b></td>
-<td>perform some additional business logic</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>See also <a href="#_rgcms_methods_prefixes_modify"><code>modify&#8230;&#8203;()</code></a>`</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_rgcms_methods_prefixes_default">2.1.5. <code>default&#8230;&#8203;()</code></h4>
-<div class="paragraph">
-<p>The <code>default&#8230;&#8203;()</code> supporting method is called for action parameters to return the initial argument value.  This may be some sensible default (eg today&#8217;s date, or 0 or 1), or&#8201;&#8212;&#8201;for an action that is modifying the state of an object&#8201;&#8212;&#8201;might default to the current value of a corresponding property.</p>
-</div>
-<div class="paragraph">
-<p>The method is <em>also</em> called for properties in the case when an object is newly instantiated using <a href="rgsvc.html#_rgsvc_api_DomainObjectContainer"><code>DomainObjectContainer#newTransientInstance(&#8230;&#8203;)</code></a>.  This is a much less common use case.  If a default is not specified then properties are initialized to a default based on their type (eg 0 or <code>false</code>).</p>
-</div>
-<div class="paragraph">
-<p>The signature of the supporting method depends on whether it is for an action parameter or a property.</p>
-</div>
-<div class="sect4">
-<h5 id="_parameters_3">Parameters</h5>
-<div class="paragraph">
-<p>For an action parameter in (0-based position n), and of type <code>T</code>, the signature is:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> T defaultNXxx() { ... }</code></pre>
-</div>
-</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="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
+}</code></pre> 
+          </div> 
+         </div> 
+         <div class="colist arabic"> 
+          <table> 
+           <tbody>
+            <tr> 
+             <td><i class="conum" data-value="1"></i><b>1</b></td> 
+             <td>update the property</td> 
+            </tr> 
+            <tr> 
+             <td><i class="conum" data-value="2"></i><b>2</b></td> 
+             <td>perform some additional business logic</td> 
+            </tr> 
+           </tbody>
+          </table> 
+         </div> 
+         <div class="paragraph"> 
+          <p>See also <a href="#_rgcms_methods_prefixes_modify"><code>modify\u2026\u200b()</code></a>`</p> 
+         </div> 
+        </div> 
+        <div class="sect3"> 
+         <h4 id="_rgcms_methods_prefixes_default">2.1.5. <code>default\u2026\u200b()</code></h4> 
+         <div class="paragraph"> 
+          <p>The <code>default\u2026\u200b()</code> supporting method is called for action parameters to return the initial argument value. This may be some sensible default (eg today\u2019s date, or 0 or 1), or\u2009\u2014\u2009for an action that is modifying the state of an object\u2009\u2014\u2009might default to the current value of a corresponding property.</p> 
+         </div> 
+         <div class="paragraph"> 
+          <p>The method is <em>also</em> called for properties in the case when an object is newly instantiated using <a href="rgsvc.html#_rgsvc_api_DomainObjectContainer"><code>DomainObjectContainer#newTransientInstance(\u2026\u200b)</code></a>. This is a much less common use case. If a default is not specified then properties are initialized to a default based on their type (eg 0 or <code>false</code>).</p> 
+         </div> 
+         <div class="paragraph"> 
+          <p>The signature of the supporting method depends on whether it is for an action parameter or a property.</p> 
+         </div> 
+         <div class="sect4"> 
+          <h5 id="_parameters_3">Parameters</h5> 
+          <div class="paragraph"> 
+           <p>For an action parameter in (0-based position n), and of type <code>T</code>, the signature is:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> T defaultNXxx() { ... }</code></pre> 
+           </div> 
+          </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="directive">public</span> <span class="type">class</span> <span class="class">ShoppingCartItem</span> {
     <span class="annotation">@Property</span>(editing=Editing.DISABLED)
     <span class="directive">public</span> Product getProduct() { ... }
     <span class="directive">public</span> <span class="type">void</span> setProduct(Product product) { ... }
@@ -1320,7 +1289,7 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
     <span class="annotation">@Action</span>(semantics=SemanticsOf.IDEMPOTENT)
     <span class="directive">public</span> ShoppingCartItem updateProduct(
         Product product,
-        <span class="annotation">@ParameterLayout</span>(named=<span class="string"><span class="delimiter">&quot;</span><span class="content">Quantity</span><span class="delimiter">&quot;</span></span>)
+        <span class="annotation">@ParameterLayout</span>(named=<span class="string"><span class="delimiter">"</span><span class="content">Quantity</span><span class="delimiter">"</span></span>)
         <span class="directive">final</span> <span class="predefined-type">Integer</span> quantity) {
         setProduct(product);
         setQuantity(quantity);
@@ -1332,30 +1301,32 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
         <span class="keyword">return</span> getQuantity();
     }
     ...
-}</code></pre>
-</div>
-</div>
-<div class="colist arabic">
-<table>
-<tr>
-<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td>default the 0-th parameter using the current value of the <code>product</code> property</td>
-</tr>
-<tr>
-<td><i class="conum" data-value="2"></i><b>2</b></td>
-<td>default the 1-th parameter using the current value of the <code>quantity</code> property</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Defaults are also supported (of course) for <a href="ugfun.html#_ugfun_how-tos_contributed-members">contributed actions</a>.  For example, here is a contributed action for updating category/subcategory of the (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="annotation">@DomainService</span>(nature = NatureOfService.VIEW_CONTRIBUTIONS_ONLY)
+}</code></pre> 
+           </div> 
+          </div> 
+          <div class="colist arabic"> 
+           <table> 
+            <tbody>
+             <tr> 
+              <td><i class="conum" data-value="1"></i><b>1</b></td> 
+              <td>default the 0-th parameter using the current value of the <code>product</code> property</td> 
+             </tr> 
+             <tr> 
+              <td><i class="conum" data-value="2"></i><b>2</b></td> 
+              <td>default the 1-th parameter using the current value of the <code>quantity</code> property</td> 
+             </tr> 
+            </tbody>
+           </table> 
+          </div> 
+          <div class="paragraph"> 
+           <p>Defaults are also supported (of course) for <a href="ugfun.html#_ugfun_how-tos_contributed-mem

<TRUNCATED>