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:35 UTC

[37/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/rgant.html
----------------------------------------------------------------------
diff --git a/content/guides/rgant.html b/content/guides/rgant.html
index 5baf362..b21b706 100644
--- a/content/guides/rgant.html
+++ b/content/guides/rgant.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>Annotations</title>
-
-    <!--
+ <head> 
+  <meta charset="utf-8"> 
+  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
+  <title>Annotations</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,1567 +406,1917 @@ 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>
-
-
-</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="_rgant">1. Annotations</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>This guide describes the various annotations used by Apache Isis to provide additional metadata about the domain objects.
-Most of these are defined by Isis itself, but some are from other libraries.  It also identifies a number of
-annotations that are now deprecated, and indicates their replacement.</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="#">Annotations</a> (this guide)</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="rgcms.html">Classes, Methods and Schema</a></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 class="sect2">
-<h3 id="_examples">1.2. Examples</h3>
-<div class="paragraph">
-<p>To give just a few examples of annotations supported by Apache Isis:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>if a property is read-only, then this can be annotated with <code>@Property(editing=EditingDISABLED)</code>.</p>
-</li>
-<li>
-<p>if a class has a small fixed set of instances (eg a picklist), then it can be annotated using <code>@DomainObject(bounded=true)</code></p>
-</li>
-<li>
-<p>if a class is a domain service and should be automatically instantiated as a singleton, then it can be annotated using <code>@DomainService</code></p>
-</li>
-<li>
-<p>if an action is idempotent, then it can be annotated using <code>@Action(semantics=SemanticsOf.IDEMPOTENT)</code>.</p>
-</li>
-<li>
-<p>if an action parameter is optional, it can be annotated using <code>@Parameter(optionality=Optionality.OPTIONAL)</code></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Some annotations act as UI hints, for example:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>if a collection should be rendered "open" rather than collapsed, it can be annotated using <code>@CollectionLayout(render=RenderType.EAGERLY)</code></p>
-</li>
-<li>
-<p>if an action has a tooltip, it can be annotated using <code>@ActionLayout(describedAs=&#8230;&#8203;)</code></p>
-</li>
-<li>
-<p>if a domain object is bookmarkable, it can be annotated using <code>@DomainObjectLayout(bookmarking=BookmarkPolicy.AS_ROOT</code>).</p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_rgant_aaa">2. Summary</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>This section summarizes the various annotations supported by Apache Isis.  They break out into five categories.</p>
-</div>
-<div class="sect2">
-<h3 id="_rgant_aaa_main">2.1. Core annotations</h3>
-<div class="paragraph">
-<p>In Apache Isis every domain object is either a domain entity, a view model or a domain service.  And each of these are made up of properties, collections and actions (domain services only have actions).</p>
-</div>
-<div class="paragraph">
-<p>For each of these domain types and members there are two annotations.  One covers the semantics intrinsic to the domain (eg whether an action parameter is optional or not), then other (suffix <code>&#8230;&#8203;Layout</code>) captures semantics relating to the UI/presentation layer.</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>Most UI semantics can also be specified using <a href="ugfun.html#_ugfun_object-layout_dynamic">dynamic object layout</a>.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>The table below summarizes these most commonly used annotations in Apache Isis.</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 1. Core annotations for domain objects, services and members (as of 1.8.0)</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 50%;">
-<col style="width: 12.5%;">
-<col style="width: 12.5%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Annotation</th>
-<th class="tableblock halign-left valign-top">Purpose</th>
-<th class="tableblock halign-left valign-top">Layer</th>
-<th class="tableblock halign-left valign-top"><a href="ugfun.html#_ugfun_object-layout_dynamic">Dynamic layout</a>?</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Action"><code>@Action</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Domain semantics for actions</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-ActionLayout"><code>@ActionLayout</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>User interface hints for actions</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Collection"><code>@Collection</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Domain semantics for collections</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-CollectionLayout"><code>@CollectionLayout</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>User interface hints for collections</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-DomainObject"><code>@DomainObject</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Domain semantics for domain object (entities and optionally view models, see also <code>@ViewModel)</code></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-DomainObjectLayout"><code>@DomainObjectLayout</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>User interface hints for domain object (entities and optionally view models, see also <code>@ViewModelLayout)</code></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-DomainService"><code>@DomainService</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Class is a domain service (rather than an entity or view model)</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-DomainServiceLayout"><code>@DomainServiceLayout</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>User interface hints for domain services</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Parameter"><code>@Parameter</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Domain semantics for action parameters</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-ParameterLayout"><code>@ParameterLayout</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Layout hints for an action parameter (currently: its label position either to top or the left).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Property"><code>@Property</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Domain semantics for properties</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-PropertyLayout"><code>@PropertyLayout</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Layout hints for a property</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-ViewModel"><code>@ViewModel</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Specify that a class is a view model (as opposed to an entity or domain service); equivalent to <code>@DomainObject(nature</code>=VIEW_MODEL).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain, Persistence</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-ViewModelLayout"><code>@ViewModelLayout</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>User interface hints for view models.
-For use with <code>@ViewModel</code>. If specifying view models using <code>@DomainObject(nature=VIEW_MODEL)</code> then use <code>@DomainObjectLayout</code>)</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="sect2">
-<h3 id="_rgant_aaa_other">2.2. Other Isis Annotations</h3>
-<div class="paragraph">
-<p>These annotations are also commonly used, but relate <em>not</em> to objects or object members but instead to other aspects of the Apache Isis metamodel.</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 2. Other Isis Annotations</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 50%;">
-<col style="width: 12.5%;">
-<col style="width: 12.5%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Annotation</th>
-<th class="tableblock halign-left valign-top">Purpose</th>
-<th class="tableblock halign-left valign-top">Layer</th>
-<th class="tableblock halign-left valign-top"><a href="ugfun.html#_ugfun_object-layout_dynamic">Dynamic layout</a>?</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Facets"><code>@Facets</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Install arbitrary facets within the Apache Isis metamodel.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">(any)</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-HomePage"><code>@HomePage</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Query-only action (on domain service) to be invoked, result of which is rendered as the user&#8217;s home page.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-MemberOrder"><code>@MemberOrder</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Ordering of properties, collections and actions, and also associating actions with either a property or a collection.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-MinLength"><code>@MinLength</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Minimum number of characters required for an auto-complete search argument.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Programmatic"><code>@Programmatic</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Ignore a public method, excluded from the Apache Isis metamodel.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="sect2">
-<h3 id="_rgant_aaa_jee">2.3. JDO Annotations</h3>
-<div class="paragraph">
-<p>Apache Isis uses JDO/DataNucleus as its ORM, and infers some of its own metadata from the JDO annotations.</p>
-</div>
-<div class="admonitionblock warning">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-warning" title="Warning"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Isis (currently) builds up metadata by parsing the JDO annotations from source, <em>not</em> by querying the JDO metamodel.  The upshot is that, for the annotations documented here at least, your domain entities must use JDO annotations rather than XML.</p>
-</div>
-<div class="paragraph">
-<p>Furthermore, note that although JDO (the property-related) annotations to be placed on either the field or on the getter, Apache Isis requires that annotations are placed on the getter.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>The table below lists the JDO annotations currently recognized by Apache Isis.</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 3. JDO Annotations</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 50%;">
-<col style="width: 12.5%;">
-<col style="width: 12.5%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Annotation</th>
-<th class="tableblock halign-left valign-top">Purpose</th>
-<th class="tableblock halign-left valign-top">Layer</th>
-<th class="tableblock halign-left valign-top">Applies to</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Column"><code>@javax.jdo.annotations.</code><br>
-<code>Column</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Used to determine whether a property is mandatory or optional.  For <code>String</code> and <code>BigDecimal</code> properties, used to determine length/precision/scale.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain / persistence</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Property</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Discriminator"><code>@javax.jdo.annotations.</code><br>
-<code>Discriminator</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Override for the object type, as used in `Bookmark`s, URLs for <a href="ugvro.html">RestfulObjects viewer</a> and elsewhere.<br></p>
-</div>
-<div class="paragraph">
-<p>Note that the discriminator overrides the object type that may otherwise be inferred from the <a href="#_rgant-PersistenceCapable"><code>@PersistenceCapable</code></a> annotation.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain / persistence</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Class</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-NotPersistent"><code>@javax.jdo.annotations.</code><br>
-<code>NotPersistent</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Used to determine whether to enforce or skip some <a href="ugbtb.html#_ugbtb_programming-model_custom-validator">metamodel validation</a> for <code>@Column</code> versus equivalent Isis annotations.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain / persistence</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Property</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-PersistenceCapable"><code>@javax.jdo.annotations.</code><br>
-<code>PersistenceCapable</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Used to build Apache Isis' own internal identifier for objects.<br></p>
-</div>
-<div class="paragraph">
-<p>If the <code>schema()</code> attribute is specified (and if <a href="#<em>rgant-Discriminator"><code>@Discriminator</code></a> _hasn&#8217;t</em> been specified), is also used to derive the object type, as used in `Bookmark`s, URLs for <a href="ugvro.html">RestfulObjects viewer</a> and elsewhere.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain / persistence</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Class</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-PrimaryKey"><code>@javax.jdo.annotations.</code><br>
-<code>PrimaryKey</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Used to ensure Apache Isis does not overwrite application-defined primary keys, and to ensure is read-only in the UI.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain / persistence</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Property</p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>Isis also parses the following JDO annotations, but the metadata is currently unused.</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 4. JDO Annotations (unused within Apache Isis)</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 50%;">
-<col style="width: 12.5%;">
-<col style="width: 12.5%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Annotation</th>
-<th class="tableblock halign-left valign-top">Purpose</th>
-<th class="tableblock halign-left valign-top">Layer</th>
-<th class="tableblock halign-left valign-top">Applies to</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@javax.jdo.annotations.</code><br>
-<code>DataStoreIdentity</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Unused</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Persistence</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Class</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@javax.jdo.annotations.</code><br>
-<code>EmbeddedOnly</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Unused</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Persistence</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Class</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@javax.jdo.annotations.</code><br>
-<code>Query</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Unused</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Persistence</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Class</p></td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="sect2">
-<h3 id="_rgant_aaa_jee">2.4. Java EE Annotations</h3>
-<div class="paragraph">
-<p>While Apache Isis does, as of today, define a good number of its own annotations, the policy is to reuse standard Java/JEE annotations wherever they exist or are added to the Java platform.</p>
-</div>
-<div class="paragraph">
-<p>The table below lists the JEE annotations currently recognized.  Expect to see more added in future releases of Apache Isis.</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 5. Java EE Annotations</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 50%;">
-<col style="width: 12.5%;">
-<col style="width: 12.5%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Annotation</th>
-<th class="tableblock halign-left valign-top">Purpose</th>
-<th class="tableblock halign-left valign-top">Layer</th>
-<th class="tableblock halign-left valign-top"><a href="ugfun.html#_ugfun_object-layout_dynamic">Dynamic layout</a>?</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Digits"><code>@javax.validation.</code><br>
-<code>constraints.</code><br>
-<code>Digits</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Precision/scale for BigDecimal values.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Inject"><code>@javax.inject.</code><br>
-<code>Inject</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Inject domain service into a domain object (entity or view model) or another domain service.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Digits"><code>@javax.annotation.</code><br>
-<code>Nullable</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Specify that a property/parameter is optional.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-PostConstruct"><code>@javax.annotation.</code><br>
-<code>PostConstruct</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Callback for domain services (either singleton or <a href="#_rgant-RequestScoped">request-scoped</a>) to initialize themselves once instantiated.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-PreDestroy"><code>@javax.annotation.</code><br>
-<code>PreDestroy</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Callback for domain services (either singleton or <a href="#_rgant-RequestScoped">request-scoped</a>) to clean up resources prior to destruction.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-RequestScoped"><code>@javax.enterprise.</code><br>
-<code>context.</code><br>
-<code>RequestScoped</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Specify that a domain service has request-scope (rather than a singleton).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-XmlRootElement"><code>javax.xml.bind</code><br>
-<code>.annotation</code><br>
-<code>XmlRootElement</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>JAXB annotation indicating the XML root element when serialized to XML; also used by the framework for view models (whose memento is the XML), often also acting as a DTO.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Application</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-XmlJavaTypeAdapter"><code>javax.xml.bind</code><br>
-<code>.annotation</code><br>
-<code>XmlJavaTypeAdapter</code></a></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>JAXB annotation defining how to serialize an entity.  Used in conjunction with the (framework provided) <code>PersistentEntityAdapter</code> class to serialize persistent entities into a canonical OID (equivalent to the <code>Bookmark</code> provided by the <a href="rgsvc.html#_rgsvc_api_BookmarkService"><code>BookmarkService</code></a>).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="sect2">
-<h3 id="_rgant_aaa_deprecated">2.5. Deprecated Annotations</h3>
-<div class="paragraph">
-<p>As Apache Isis has evolved and grown, we found ourselves adding more and more annotations; but most of these related to either an object type (entity, view model, service) or an object member (property, collection, action).
-Over time it became harder and harder for end programmers to discover these new features.</p>
-</div>
-<div class="paragraph">
-<p>Accordingly, (in v1.8.0) we decided to unify the semantics into the main (core) annotations listed <a href="#_rgant-aaa_main">above</a>.</p>
-</div>
-<div class="paragraph">
-<p>The annotations listed in the table below are still supported by Apache Isis, but will be retired in Apache Isis v2.0.</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 6. Deprecated Annotations</caption>
-<colgroup>
-<col style="width: 18.1818%;">
-<col style="width: 36.3636%;">
-<col style="width: 27.2727%;">
-<col style="width: 9.0909%;">
-<col style="width: 9.091%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Annotation</th>
-<th class="tableblock halign-left valign-top">Purpose</th>
-<th class="tableblock halign-left valign-top">Use instead</th>
-<th class="tableblock halign-left valign-top">Layer</th>
-<th class="tableblock halign-left valign-top"><a href="ugfun.html#_ugfun_object-layout_dynamic">Dynamic layout</a>?</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@ActionOrder</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Order of buttons and menu items representing actions.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-MemberOrder"><code>@MemberOrder</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@ActionInteraction</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Enable subscribers on the Event Bus Service to either veto, validate or take further steps before/after an action has been invoked.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Action_domainEvent"><code>@Action#domainEvent()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@ActionSemantics</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Query-only, idempotent or non-idempotent.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Action_semantics"><code>@Action#semantics()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Audited</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Audit changes to an object.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-DomainObject_auditing"><code>@DomainObject#</code><br>
-<code>auditing()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@AutoComplete</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Repository method to search for entities</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-DomainObject_autoCompleteRepository"><code>@DomainObject</code><br>
-<code>#autoCompleteRepository()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI/Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Bookmarkable</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Whether (and how) to create a bookmark for visited object.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-DomainObjectLayout_bookmarking"><code>@DomainObjectLayout</code><br>
-<code>#bookmarking()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Bounded</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Bounded (and limited) number of instances of an entity type, translates into a drop-down for any property of that type.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-DomainObject_bounded"><code>@DomainObject#bounded()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Bulk</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Indicates an action is a bulk action, can be applied to multiple instances.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Action_invokeOn"><code>@Action#invokeOn()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI, Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@CollectionInteraction</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Enable subscribers on the Event Bus Service to either veto, validate or take further steps before/after a collection has been added to or removed from.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Collection_domainEvent"><code>@Collection#domainEvent()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Command</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Action invocation should be reified as a command object, optionally persistable for profiling and enhanced auditing, and background/async support.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Action_command"><code>@Action#command()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@CssClass</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Allow visual representation of individual objects or object members layout to be customized by application-specific CSS.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#cssClass()</code> attribute for: <a href="#_rgant-DomainObjectLayout_cssClass"><code>@DomainObjectLayout</code></a>, <a href="#_rgant-PropertyLayout_cssClass"><code>@PropertyLayout</code></a>,  <a href="#_rgant-CollectionLayout_cssClass"><code>@CollectionLayout</code></a>, <a href="#_rgant-ActionLayout_cssClass"><code>@ActionLayout</code></a> and <a href="#_rgant-ParameterLayout_cssClass"><code>@ParameterLayout</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@CssClassFa</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>So that font awesome icons can be applied to action buttons/menu items and optionally as an object icon.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>cssClassFa()</code> attribute for: <a href="#_rgant-ActionLayout_cssClassFa"><code>@ActionLayout</code></a>, <a href="#_rgant-DomainObjectLayout_cssClassFa"><code>DomainObjectLayout</code></a> and <a href="#_rgant-ViewModelLayout_cssClassFa"><code>ViewModelLayout</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Debug</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Action only invokable in debug mode.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Not supported by either the <a href="ugvw.html">Wicket viewer</a> or the <a href="ugvro.html">RestfulObjects viewer</a>; use prototype mode instead (<a href="#_rgant-Action_restrictTo"><code>@Action#restrictTo()</code></a>)</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@DescribedAs</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Provide a longer description/tool-tip of an object or object member.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#describedAs()</code> attribute for <a href="#_rgant-DomainObject_describedAs"><code>@DomainObjectLayout</code></a>, <a href="#_rgant-PropertyLayout_describedAs"><code>@PropertyLayout</code></a>, <a href="#_rgant-CollectionLayout_describedAs"><code>@CollectionLayout</code></a>, <a href="#_rgant-ActionLayout_describedAs"><code>@ActionLayout</code></a> and <a href="#_rgant-ParameterLayout_describedAs"><code>@ParameterLayout</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Disabled</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Object property cannot be edited, an object collection cannot be added to/removed from, or an object action cannot be invoked.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#editing()</code> attribute for <a href="#_rgant-Property_editing"><code>@Property</code></a>,  <a href="#_rgant-Collection_editing"><code>@Collection</code></a> and <a href="#_rgant-DomainObject_editing"><code>@DomainObject</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI, Domain</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Exploration</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Action available in special 'exploration' mode.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Not supported by either the <a href="ugvw.html">Wicket viewer</a> or the <a href="ugvro.html">RestfulObjects viewer</a>; use prototype mode instead (<a href="#_rgant-Action_restrictTo"><code>@Action#restrictTo()</code></a>)</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@FieldOrder</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Order of properties and collections.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-MemberOrder"><code>@MemberOrder</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Hidden</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Object member is not visible, or on domain service (to indicate that none of its actions are visible).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>For domain object members, use <code>#hidden()</code> attribute of <a href="#_rgant-Action_hidden"><code>Action</code></a>, <a href="#_rgant-Property_hidden"><code>Property</code></a> or <a href="#_rgant-Collection_hidden"><code>Collection</code></a>. <br>
-For domain service, use <a href="#_rgant-DomainService_nature"><code>@DomainService(</code><br>
-<code>nature=DOMAIN)</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI, Domain</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Idempotent</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Whether an action is idempotent (can be invoked multiple times with same post-condition).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Action_semantics"><code>@Action#semantics</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Ignore</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Exclude this method from the metamodel.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Programmatic"><code>@Programmatic</code></a>.<br></p>
-</div>
-<div class="paragraph">
-<p><code>@Ignore</code> was deprecated because it can easily clash with <code>@org.junit.Ignore</code>.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Immutable</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>An object&#8217;s state cannot be changed (properties cannot be edited, collections cannot be added to or removed from).
-Actions can still be invoked.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-DomainObject_editing"><code>@DomainObject#editing()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Mask</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>How to parse/render values (never properly supported)</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>(None)</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI/domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@MaxLength</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Maximum length of a property value (strings).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#maxLength()</code> attribute for <a href="#_rgant-Property_maxLength"><code>@Property</code></a> or <a href="#_rgant-Parameter_maxLength"><code>@Parameter</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@MemberGroups</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Layout of properties and collections of a domain object or view model object.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="ugfun.html#_ugfun_object-layout_dynamic_xml">dynamic <code>.layout.xml</code></a> files</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">@MemberGroupLayout`</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Grouping of properties into groups, and organizing of properties, collections into columns.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="ugfun.html#_ugfun_object-layout_dynamic_xml">dynamic <code>.layout.xml</code></a> files</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@MultiLine</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Render string property over multiple lines (a textarea rather than a textbox).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#multiLine()</code> attribute for <a href="#_rgant-Property_multiLine"><code>@Property</code></a> or <a href="#_rgant-Parameter_multiLine"><code>@Parameter</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@MustSatisfy</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Specify arbitrary specification constraints on a property or action parameter.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#mustSatisfy()</code> attribute for <a href="#_rgant-Property_mustSatisfy"><code>@Property</code></a> or <a href="#_rgant-Parameter_mustSatisfy"><code>@Parameter</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Named</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Override name inferred from class. Required for parameter names (prior to Java8).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#named()</code> attribute for <a href="#_rgant-DomainServiceLayout_named"><code>@DomainServiceLayout</code></a>, <a href="#_rgant-DomainObjectLayout_named"><code>@DomainObjectLayout</code></a>, <a href="#_rgant-PropertyLayout_named"><code>@PropertyLayout</code></a>, <a href="#_rgant-CollectionLayout_named"><code>@CollectionLayout</code></a>, <a href="#_rgant-ActionLayout_named"><code>@ActionLayout</code></a> and <a href="#_rgant-ParameterLayout_named"><code>@ParameterLayout</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@NotContributed</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Indicates that a domain service action is not rendered as an action on the (entity) types of its parameters.
-For 1-arg query-only actions, controls whether the domain service action is rendered as a property or collection on the entity type of its parameter.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Use <a href="#_rgant-DomainService_nature"><code>@DomainService#nature()</code></a> to specify whether any of the actions in a domain service should appear in the menu bars (applies at type level, not action level).
-For individual actions, use <a href="#_rgant-ActionLayout_contributedAs"><code>@ActionLayout#</code><br>
-<code>contributedAs()</code></a> to specify whether any individual action should be contributed only as an action or as an association (property or collection).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@NotInServiceMenu</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Indicates that a domain service should not be rendered in the application menu (at top of page in Wicket viewer).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-DomainService_nature"><code>@DomainService#nature()</code></a> to signify that none of the actions in a domain service should appear in the menu bars</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@NotPersisted</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Indicates that an object property is not persisted (meaning it is excluded from view model mementos, and should not be audited).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#notPersisted()</code> attribute of <a href="#_rgant-Property_notPersisted"><code>@Property</code></a> and <a href="#_rgant-Collection_notPersisted"><code>@Collection</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain, Persistence</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@ObjectType</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>For constructing the external identifier (URI) of an entity instance (part of its URL in both Wicket viewer and Restful Objects viewer).
-Also part of the toString representation of bookmarks, if using the Bookmark Service</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-DomainObject_objectType"><code>@DomainObject#objectType()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Optional</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Specifies that a property or action parameter is not mandatory.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#optionality()</code> attribute for <a href="#_rgant-Property_optionality"><code>@Property</code></a> or  <a href="#_rgant-Parameter_optionality"><code>@Parameter</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Paged</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Number of instances to display in tables representing (standalone or parented) collections.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#paged()</code> attribute for <a href="#_rgant-DomainObjectLayout_paged"><code>@DomainObjectLayout</code></a> or <a href="#_rgant-CollectionLayout_paged"><code>@CollectionLayout</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Plural</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>For the irregular plural form of an entity type.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-DomainObject_plural"><code>@DomainObjectLayout</code><br>
-<code>#plural()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@PostsAction</code><br>
-<code>InvokedEvent</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Post a domain event to the Event Bus Service indicating that an action has been invoked.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Action_domainEvent"><code>@Action#domainEvent()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@PostsCollection</code><br>
-<code>AddedToEvent</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Post a domain event to the Event Bus Service indicating that an element has been added to a collection.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Collection_domainEvent"><code>@Collection#domainEvent()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@PostsCollection</code><br>
-<code>RemovedFromEvent</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Post a domain event to the Event Bus Service indicating that an element has been removed from a collection.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Collection_domainEvent"><code>@Collection#domainEvent()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@PostsProperty</code><br>
-<code>ChangedEvent</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Post a domain event to the Event Bus Service indicating that the value of a property has changed.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Property_domainEvent"><code>@Property#domainEvent()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@PropertyInteraction</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Enable subscribers on the Event Bus Service to either veto, validate or take further steps before/after a property has been modified or cleared.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Property_domainEvent"><code>@Property#domainEvent()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Prototype</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Indicates that an action should only be visible in 'prototype' mode.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Action_restrictTo"><code>@Action#restrictTo()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@PublishedAction</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Action invocation should be serialized and published by configured PublishingService (if any), eg to other systems.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Action_publishing"><code>@Action#publishing()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@PublishedObject</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Change to object should be serialized and published by configured PublishingService (if any), eg to other systems.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-DomainObject_publishing"><code>@DomainObject#publishing()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@QueryOnly</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Whether an action is query-only (has no side-effects).</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-Action_semantics"><code>@Action#semantics()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@RegEx</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Validate change to value of string property.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#regexPattern()</code> for <a href="#_rgant-Property_regexPattern"><code>@Property</code></a> or  <a href="#_rgant-Property_regexPattern"><code>@Parameter</code></a>.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Render</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Eagerly (or lazily) render the contents of a collection.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-CollectionLayout_render"><code>@CollectionLayout</code><br>
-<code>#render()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@RenderedAsDayBefore</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Render dates as the day before; ie store [a,b) internally but render [a,b-1]) to end-user.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#renderedAsDayBefore()</code> attribute for <a href="#_rgant-PropertyLayout_renderedAsDayBefore"><code>@PropertyLayout</code></a> and <a href="#_rgant-ParameterLayout_renderedAsDayBefore"><code>@ParameterLayout</code></a>.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Resolve</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Eagerly (or lazily) render the contents of a collection (same as <code>@Render)</code></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-CollectionLayout_render"><code>@CollectionLayout</code><br>
-<code>#render()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@SortedBy</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Display instances in collections in the order determined by the provided Comparator.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="#_rgant-CollectionLayout_sortedBy"><code>@CollectionLayout</code><br>
-<code>#sortedBy()</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@TypeOf</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>The type of entity stored within a collection, or as the result of invoking an action, if cannot be otherwise inferred, eg from generics.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#typeOf()</code> attribute for <a href="#_rgant-Collection_typeOf"><code>@Collection</code></a> and <a href="#_rgant-Action_typeOf"><code>@Action</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@TypicalLength</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>The typical length of a string property, eg to determine a sensible length for a textbox.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>#typicalLength()</code> attribute for <a href="#_rgant-PropertyLayout_typicalLength"><code>@PropertyLayout</code></a> and <a href="#_rgant-ParameterLayout_typicalLength"><code>@ParameterLayout</code></a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">UI</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="sect2">
-<h3 id="_rgant_aaa_partial">2.6. Incomplete/partial support</h3>
-<div class="paragraph">
-<p>These annotations have only incomplete/partial support, primarily relating to the management of value types.  We recommend that you do not use them for now.  Future versions of Apache Isis may either formally deprecate/retire them, or we may go the other way and properly support them.  This will depend in part on the interactions between the Apache Isis runtime, its two viewer implementations, and DataNucleus persistence.</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 7. Annotations with incomplete/partial support</caption>
-<colgroup>
-<col style="width: 28.5714%;">
-<col style="width: 57.1428%;">
-<col style="width: 14.2858%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Annotation</th>
-<th class="tableblock halign-left valign-top">Purpose</th>
-<th class="tableblock halign-left valign-top">Layer</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Aggregated</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Indicates that the object is aggregated, or wholly owned, by a root object.<br></p>
-</div>
-<div class="paragraph">
-<p>This information could in theory provide useful semantics for some object store implementations, eg to store the aggregated objects "inline". <br></p>
-</div>
-<div class="paragraph">
-<p>Currently neither the JDO ObjectStore nor any of the viewers exploit this metadata.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain, Persistence</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Defaulted</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Indicates that a (value) class has a default value.<br></p>
-</div>
-<div class="paragraph">
-<p>The concept of "defaulted" means being able to provide a default value for the type by way of the <code>o.a.i.applib.adapters.DefaultsProvider</code> interface. Generally this only applies to value types, where the <code>@Value</code> annotation implies encodability through the <code>ValueSemanticsProvider</code> interface.<br></p>
-</div>
-<div class="paragraph">
-<p>For these reasons the <code>@Defaulted</code> annotation is generally never applied directly, but can be thought of as a placeholder for future enhancements whereby non-value types might also have a default value provided for them.</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Encodable</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Indicates that a (value) class can be serialized/encoded.<br></p>
-</div>
-<div class="paragraph">
-<p>Encodability means the ability to convert an object to-and-from a string, by way of the <code>o.a.i.applib.adapters.EncoderDecoder</code> interface. Generally this only applies to value types, where the <code>@Value</code> annotation implies encodability through the <code>ValueSemanticsProvider</code> interface.</p>
-</div>
-<div class="paragraph">
-<p>For these reasons the <code>@Encodable</code> annotation is generally never applied directly, but can be thought of as a placeholder for future enhancements whereby non-value types might also be directly encoded.</p>
-</div>
-<div class="paragraph">
-<p>Currently neither the Wicket viewer nor the RO viewer use this API.  The Wicket viewer uses Wicket APIs, while RO viewer has its own mechanisms (parsing data from input JSON representations, etc.)</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Persistence</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@NotPersistable</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Indicates that a domain object may not be programmatically persisted.<br></p>
-</div>
-<div class="paragraph">
-<p>+
-This annotation  indicates that transient instances of this class may be created but may not be persisted. The framework will not provide the user with an option to 'save' the object, and attempting to persist such an object programmatically would be an error.</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">@NotPersistable</span>(By.USER)
+    </style> 
+  <style>
+        .tocify {
+            margin-top: 80px;
+        }
+    </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/rgant.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="_rgant">1. Annotations</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/_rgant.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 guide describes the various annotations used by Apache Isis to provide additional metadata about the domain objects. Most of these are defined by Isis itself, but some are from other libraries. It also identifies a number of annotations that are now deprecated, and indicates their replacement.</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="#">Annotations</a> (this guide)</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="rgcms.html">Classes, Methods and Schema</a></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 class="sect2"> 
+        <h3 id="_examples">1.2. Examples</h3> 
+        <div class="paragraph"> 
+         <p>To give just a few examples of annotations supported by Apache Isis:</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>if a property is read-only, then this can be annotated with <code>@Property(editing=EditingDISABLED)</code>.</p> </li> 
+          <li> <p>if a class has a small fixed set of instances (eg a picklist), then it can be annotated using <code>@DomainObject(bounded=true)</code></p> </li> 
+          <li> <p>if a class is a domain service and should be automatically instantiated as a singleton, then it can be annotated using <code>@DomainService</code></p> </li> 
+          <li> <p>if an action is idempotent, then it can be annotated using <code>@Action(semantics=SemanticsOf.IDEMPOTENT)</code>.</p> </li> 
+          <li> <p>if an action parameter is optional, it can be annotated using <code>@Parameter(optionality=Optionality.OPTIONAL)</code></p> </li> 
+         </ul> 
+        </div> 
+        <div class="paragraph"> 
+         <p>Some annotations act as UI hints, for example:</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>if a collection should be rendered "open" rather than collapsed, it can be annotated using <code>@CollectionLayout(render=RenderType.EAGERLY)</code></p> </li> 
+          <li> <p>if an action has a tooltip, it can be annotated using <code>@ActionLayout(describedAs=\u2026\u200b)</code></p> </li> 
+          <li> <p>if a domain object is bookmarkable, it can be annotated using <code>@DomainObjectLayout(bookmarking=BookmarkPolicy.AS_ROOT</code>).</p> </li> 
+         </ul> 
+        </div> 
+       </div> 
+      </div> 
+     </div> 
+     <div class="sect1"> 
+      <h2 id="_rgant_aaa">2. Summary</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/_rgant_aaa.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 section summarizes the various annotations supported by Apache Isis. They break out into five categories.</p> 
+       </div> 
+       <div class="sect2"> 
+        <h3 id="_rgant_aaa_main">2.1. Core annotations</h3> 
+        <div class="paragraph"> 
+         <p>In Apache Isis every domain object is either a domain entity, a view model or a domain service. And each of these are made up of properties, collections and actions (domain services only have actions).</p> 
+        </div> 
+        <div class="paragraph"> 
+         <p>For each of these domain types and members there are two annotations. One covers the semantics intrinsic to the domain (eg whether an action parameter is optional or not), then other (suffix <code>\u2026\u200bLayout</code>) captures semantics relating to the UI/presentation layer.</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>Most UI semantics can also be specified using <a href="ugfun.html#_ugfun_object-layout_dynamic">dynamic object layout</a>.</p> 
+             </div> </td> 
+           </tr> 
+          </tbody>
+         </table> 
+        </div> 
+        <div class="paragraph"> 
+         <p>The table below summarizes these most commonly used annotations in Apache Isis.</p> 
+        </div> 
+        <table class="tableblock frame-all grid-all spread"> 
+         <caption class="title">
+          Table 1. Core annotations for domain objects, services and members (as of 1.8.0)
+         </caption> 
+         <colgroup> 
+          <col style="width: 25%;"> 
+          <col style="width: 50%;"> 
+          <col style="width: 12.5%;"> 
+          <col style="width: 12.5%;"> 
+         </colgroup> 
+         <thead> 
+          <tr> 
+           <th class="tableblock halign-left valign-top">Annotation</th> 
+           <th class="tableblock halign-left valign-top">Purpose</th> 
+           <th class="tableblock halign-left valign-top">Layer</th> 
+           <th class="tableblock halign-left valign-top"><a href="ugfun.html#_ugfun_object-layout_dynamic">Dynamic layout</a>?</th> 
+          </tr> 
+         </thead> 
+         <tbody> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-Action"><code>@Action</code></a></p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Domain semantics for actions</p> 
+             </div>
+            </div></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">Domain</p></td> 
+           <td class="tableblock halign-left valign-top"></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_rgant-ActionLayout"><code>@ActionLayout</code></a></p

<TRUNCATED>