http://git-wip-us.apache.org/repos/asf/isis-site/blob/2f475bbf/content/versions/2.0.0-M1/guides/rgant/rgant.html
----------------------------------------------------------------------
diff --git a/content/versions/2.0.0-M1/guides/rgant/rgant.html 
b/content/versions/2.0.0-M1/guides/rgant/rgant.html
new file mode 100644
index 0000000..7894892
--- /dev/null
+++ b/content/versions/2.0.0-M1/guides/rgant/rgant.html
@@ -0,0 +1,15075 @@
+<!doctype html>
+<html>
+ <head> 
+  <!--
+        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
+        regarding copyright ownership.  The ASF licenses this file
+        to you under the Apache License, Version 2.0 (the
+        "License"); you may not use this file except in compliance
+        with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+        Unless required by applicable law or agreed to in writing,
+        software distributed under the License is distributed on an
+        "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+        KIND, either express or implied.  See the License for the
+        specific language governing permissions and limitations
+        under the License.
+    --> 
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
+  <meta charset="utf-8"> 
+  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
+  <!-- No caching headers --> 
+  <meta http-equiv="cache-control" content="no-cache"> 
+  <meta http-equiv="pragma" content="no-cache"> 
+  <meta http-equiv="expires" content="-1"> 
+  <title>Annotations</title> 
+  <link rel="icon" type="image/png" href="../../images/isis-favicon.png"> 
+  <!--
+        Based on DataNucleus' template,
+        that was in turn based on an earlier version of Apache Isis' template,
+        that was in turn based on Apache Deltaspike's template.
+
+        This template uses
+        * Bootstrap v3.3.7 (https://getbootstrap.com/) for navbar.
+        * Bootstrap TOC plugin v0.4.1 (https://afeld.github.io/bootstrap-toc/)
+          for the table of contents.
+        * jQuery (necessary for Bootstrap's JavaScript plugins)
+        * Font-Awesome for some icons used by Asciidoctor
+
+        Also:
+        * Bootswatch "flatly" theme for Bootstrap 
(https://bootswatch.com/flatly).
+        * slick.js (carousel)
+        * add a link to all headers (home-grown, adapted from blog posts)
+        * integration of elasticlunr.js (home-grown, adapted from blog posts)
+    --> 
+  <link 
href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.7/flatly/bootstrap.min.css";
 rel="stylesheet"> 
+  <link href="../../css/bootstrap-toc/0.4.1/bootstrap-toc.min.css" 
rel="stylesheet"> 
+  <link href="../../css/asciidoctor/foundation.css" rel="stylesheet"> 
+  <link 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css";
 rel="stylesheet"> 
+  <link href="../../css/slick/1.5.0/slick.css" rel="stylesheet"> 
+  <link href="../../css/slick/1.5.0/slick-theme.css" rel="stylesheet"> 
+  <link href="../../css/search-panel/search-panel.css" rel="stylesheet"> 
+  <link href="../../css/header-links/header-links.css" rel="stylesheet"> 
+  <link href="../../css/sticky-header/sticky-header.css" rel="stylesheet"> 
+  <link href="../../css/customisations.css" rel="stylesheet"> 
+  <!-- Coderay syntax formatter --> 
+  <style type="text/css">
+        /* Stylesheet for CodeRay to match GitHub theme | MIT License | 
http://foundation.zurb.com */
+/*pre.CodeRay {background-color:#f7f7f8;}*/
+.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
+.CodeRay 
span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
+.CodeRay .line-numbers strong{color:rgba(0,0,0,.4)}
+table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
+table.CodeRay td{vertical-align: top;line-height:1.45}
+table.CodeRay td.line-numbers{text-align:right}
+table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
+table.CodeRay td.code{padding:0 0 0 .5em}
+table.CodeRay td.code>pre{padding:0}
+.CodeRay .debug{color:#fff !important;background:#000080 !important}
+.CodeRay .annotation{color:#007}
+.CodeRay .attribute-name{color:#000080}
+.CodeRay .attribute-value{color:#700}
+.CodeRay .binary{color:#509}
+.CodeRay .comment{color:#998;font-style:italic}
+.CodeRay .char{color:#04d}
+.CodeRay .char .content{color:#04d}
+.CodeRay .char .delimiter{color:#039}
+.CodeRay .class{color:#458;font-weight:bold}
+.CodeRay .complex{color:#a08}
+.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
+.CodeRay .color{color:#099}
+.CodeRay .class-variable{color:#369}
+.CodeRay .decorator{color:#b0b}
+.CodeRay .definition{color:#099}
+.CodeRay .delimiter{color:#000}
+.CodeRay .doc{color:#970}
+.CodeRay .doctype{color:#34b}
+.CodeRay .doc-string{color:#d42}
+.CodeRay .escape{color:#666}
+.CodeRay .entity{color:#800}
+.CodeRay .error{color:#808}
+.CodeRay .exception{color:inherit}
+.CodeRay .filename{color:#099}
+.CodeRay .function{color:#900;font-weight:bold}
+.CodeRay .global-variable{color:#008080}
+.CodeRay .hex{color:#058}
+.CodeRay .integer,.CodeRay .float{color:#099}
+.CodeRay .include{color:#555}
+.CodeRay .inline{color:#000}
+.CodeRay .inline .inline{background:#ccc}
+.CodeRay .inline .inline .inline{background:#bbb}
+.CodeRay .inline .inline-delimiter{color:#d14}
+.CodeRay .inline-delimiter{color:#d14}
+.CodeRay .important{color:#555;font-weight:bold}
+.CodeRay .interpreted{color:#b2b}
+.CodeRay .instance-variable{color:#008080}
+.CodeRay .label{color:#970}
+.CodeRay .local-variable{color:#963}
+.CodeRay .octal{color:#40e}
+.CodeRay .predefined{color:#369}
+.CodeRay .preprocessor{color:#579}
+.CodeRay .pseudo-class{color:#555}
+.CodeRay .directive{font-weight:bold}
+.CodeRay .type{font-weight:bold}
+.CodeRay .predefined-type{color:inherit}
+.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
+.CodeRay .key{color:#808}
+.CodeRay .key .delimiter{color:#606}
+.CodeRay .key .char{color:#80f}
+.CodeRay .value{color:#088}
+.CodeRay .regexp .delimiter{color:#808}
+.CodeRay .regexp .content{color:#808}
+.CodeRay .regexp .modifier{color:#808}
+.CodeRay .regexp .char{color:#d14}
+.CodeRay .regexp .function{color:#404;font-weight:bold}
+.CodeRay .string{color:#d20}
+.CodeRay .string .string .string{background:#ffd0d0}
+.CodeRay .string .content{color:#d14}
+.CodeRay .string .char{color:#d14}
+.CodeRay .string .delimiter{color:#d14}
+.CodeRay .shell{color:#d14}
+.CodeRay .shell .delimiter{color:#d14}
+.CodeRay .symbol{color:#990073}
+.CodeRay .symbol .content{color:#a60}
+.CodeRay .symbol .delimiter{color:#630}
+.CodeRay .tag{color:#008080}
+.CodeRay .tag-special{color:#d70}
+.CodeRay .variable{color:#036}
+.CodeRay .insert{background:#afa}
+.CodeRay .delete{background:#faa}
+.CodeRay .change{color:#aaf;background:#007}
+.CodeRay .head{color:#f8f;background:#505}
+.CodeRay .insert .insert{color:#080}
+.CodeRay .delete .delete{color:#800}
+.CodeRay .change .change{color:#66f}
+.CodeRay .head .head{color:#f4f}
+    </style> 
+ </head> 
+ <body data-spy="scroll" data-target="#toc"> 
+  <div id="basedir" style="display:none;">
+   ../../
+  </div> 
+  <div id="docname" style="display:none;">
+   rgant
+  </div> 
+  <div id="filetype" style="display:none;">
+   html
+  </div> 
+  <!-- Navbar --> 
+  <nav class="navbar navbar-default navbar-static-top header"> 
+   <div class="container"> 
+    <div class="navbar-header"> 
+     <!-- Three line menu button for use on mobile screens --> 
+     <button type="button" class="navbar-toggle collapsed" 
data-toggle="collapse" data-target="#navbar" aria-expanded="false" 
aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span 
class="icon-bar"></span> <span class="icon-bar"></span> <span 
class="icon-bar"></span> </button> 
+     <a class="navbar-brand" href="../../index.html"> <img alt="Brand" 
src="../../images/isis-logo-48x48.png"> </a> 
+     <a class="navbar-brand" href="../../index.html">Apache Isis</a> 
+    </div> 
+    <!-- Navbar that will collapse on mobile screens --> 
+    <div id="navbar" class="navbar-collapse collapse"> 
+     <ul class="nav navbar-nav"> 
+      <li class="dropdown"> <a href="#" class="dropdown-toggle" 
data-toggle="dropdown" role="button" aria-haspopup="true" 
aria-expanded="false">Documentation<span class="caret"></span></a> 
+       <ul class="dropdown-menu"> 
+        <li><a href="../../documentation.html">Table of Contents</a></li> 
+        <li role="separator" class="divider"></li> 
+        <li class="dropdown-header">User Guides</li> 
+        <li><a href="../../guides/ugfun/ugfun.html">Fundamentals</a></li> 
+        <li><a href="../../guides/ugvw/ugvw.html">Wicket Viewer</a></li> 
+        <li><a href="../../guides/ugvro/ugvro.html">Restful Objects 
Viewer</a></li> 
+        <li><a href="../../guides/ugodn/ugodn.html">DataNucleus Object 
Store</a></li> 
+        <li><a href="../../guides/ugsec/ugsec.html">Security</a></li> 
+        <li><a href="../../guides/ugtst/ugtst.html">Testing</a></li> 
+        <li><a href="../../guides/ugbtb/ugbtb.html">Beyond the Basics</a></li> 
+        <li role="separator" class="divider"></li> 
+        <li class="dropdown-header">Reference Guides</li> 
+        <li><a href="../../guides/rgant/rgant.html">Annotations</a></li> 
+        <li><a href="../../guides/rgsvc/rgsvc.html">Domain Services</a></li> 
+        <li><a href="../../guides/rgcfg/rgcfg.html">Core Config' 
Properties</a></li> 
+        <li><a href="../../guides/rgcms/rgcms.html">Classes, Methods and 
Schema</a></li> 
+        <li><a href="../../guides/rgmvn/rgmvn.html">Maven plugin</a></li> 
+        <li><a href="../../guides/rgfis/rgfis.html">Framework Internal 
Services</a></li> 
+        <li role="separator" class="divider"></li> 
+        <li class="dropdown-header">Javadoc</li> 
+        <li><a 
href="http://javadoc.io/doc/org.apache.isis.core/isis-core-applib";>Applib</a></li>
 
+       </ul> </li> 
+      <li class="dropdown  hidden-sm hidden-md"> <a href="#" 
class="dropdown-toggle" data-toggle="dropdown" role="button" 
aria-haspopup="true" aria-expanded="false">Downloads<span 
class="caret"></span></a> 
+       <ul class="dropdown-menu"> 
+        <li class="dropdown-header">Maven archetypes</li> 
+        <li><a 
href="../../guides/ugfun/ugfun.html#_ugfun_getting-started_helloworld-archetype">helloworld</a></li>
 
+        <li><a 
href="../../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">simpleapp</a></li>
 
+        <li role="separator" class="divider"></li> 
+        <li><a href="../../downloads.html">Downloads</a></li> 
+        <li><a href="../../release-notes/release-notes.html">Release 
Notes</a></li> 
+        <li><a href="../../migration-notes/migration-notes.html">Migration 
Notes</a></li> 
+        <li role="separator" class="divider"></li> 
+        <li><a href="https://github.com/apache/isis";>Github mirror</a></li> 
+       </ul> </li> 
+      <li class="dropdown  hidden-sm"> <a href="#" class="dropdown-toggle" 
data-toggle="dropdown" role="button" aria-haspopup="true" 
aria-expanded="false">Support<span class="caret"></span></a> 
+       <ul class="dropdown-menu"> 
+        <li class="dropdown-header">Guides</li> 
+        <li><a href="../../guides/dg/dg.html">Developers' Guide</a></li> 
+        <li><a href="../../guides/cgcom/cgcom.html">Committers' Guide</a></li> 
+        <li><a href="../../guides/htg.html">Hints-n-Tips Guide</a></li> 
+        <li role="separator" class="divider"></li> 
+        <li class="dropdown-header">Mailing Lists</li> 
+        <li><a href="../../support.html">How to subscribe</a></li> 
+        <li><a 
href="https://lists.apache.org/list.html?us...@isis.apache.org";>Archives (ASF 
Pony mail)</a></li> 
+        <li><a href="http://isis.markmail.org/search/?q=";>Archives 
(Markmail)</a></li> 
+        <li role="separator" class="divider"></li> 
+        <li class="dropdown-header">Other Resources</li> 
+        <li><a href="https://issues.apache.org/jira/browse/ISIS";>ASF 
JIRA</a></li> 
+        <li><a href="https://stackoverflow.com/questions/tagged/isis";>Stack 
Overflow</a></li> 
+        <li><a href="../../help.html">Wiki, Fisheye etc.</a></li> 
+       </ul> </li> 
+      <li class="dropdown hidden-sm hidden-md"> <a href="#" 
class="dropdown-toggle" data-toggle="dropdown" role="button" 
aria-haspopup="true" aria-expanded="false">@ASF<span class="caret"></span></a> 
+       <ul class="dropdown-menu"> 
+        <li><a href="https://www.apache.org/";>Apache Homepage</a></li> 
+        <li><a 
href="https://www.apache.org/events/current-event";>Events</a></li> 
+        <li><a href="https://www.apache.org/licenses/";>Licenses</a></li> 
+        <li><a href="https://www.apache.org/security/";>Security</a></li> 
+        <li><a 
href="https://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li> 
+        <li><a 
href="https://www.apache.org/foundation/thanks.html";>Thanks</a></li> 
+        <li role="separator" class="divider"></li> 
+        <li><a href="https://whimsy.apache.org/board/minutes/Isis.html";>PMC 
board minutes</a></li> 
+       </ul> </li> 
+     </ul> 
+     <div class="nav navbar-nav navbar-right"> 
+      <!-- 'style' added to fix height of input box. FIX THIS --> 
+      <form class="navbar-form" role="search" id="search-form" style="padding: 
1px 15px;"> 
+       <div class="form-group"> 
+        <input class="form-control" id="search-field" type="text" size="30" 
placeholder="Search"> 
+       </div> 
+      </form> 
+     </div> 
+     <p class="nav navbar-text navbar-right small">v2.0.0-M1</p> 
+    </div> 
+   </div> 
+  </nav> 
+  <div class="container"> 
+   <div class="row-fluid"> 
+    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-9"> 
+     <div id="search-panel"> 
+      <div id="search-results"></div> 
+      <div> 
+       <br> 
+       <a href="#" id="search-results-clear">clear</a> 
+      </div> 
+     </div> 
+     <span class="pdf-link"><a href="rgant.pdf"><img 
src="../../images/PDF-50.png"></a></span> 
+     <div class="page-title"> 
+      <h1>Annotations</h1> 
+     </div> 
+     <div id="doc-content">
+      <div class="btn-group" style="float: right; font-size: small; padding: 
6px;  ">
+       <button type="button" class="btn btn-xs btn-default" 
onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/rgant.adoc&quot;";><i
 class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+       <button type="button" class="btn btn-xs btn-default dropdown-toggle" 
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span 
class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+       <ul class="dropdown-menu">
+        <li><a 
href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/rgant.adoc";
 target="_blank"><i class="fa fa-pencil-square-o fa-fw" 
aria-hidden="true"></i>&nbsp; Edit</a></li>
+        <li><a 
href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/rgant.adoc";
 target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; 
History</a></li>
+        <li><a 
href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/rgant.adoc";
 target="_blank"><i class="fa fa-file-text-o fa-fw" 
aria-hidden="true"></i>&nbsp; Raw</a></li>
+        <li><a 
href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/rgant.adoc";
 target="_blank"><i class="fa fa-hand-o-right fa-fw" 
aria-hidden="true"></i>&nbsp; Blame</a></li>
+       </ul>
+      </div> 
+      <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/ugfun.html">Fundamentals</a></p> </li> 
+           <li> <p><a href="../ugvw/ugvw.html">Wicket viewer</a></p> </li> 
+           <li> <p><a href="../ugvro/ugvro.html">Restful Objects 
viewer</a></p> </li> 
+           <li> <p><a href="../ugodn/ugodn.html">DataNucleus object 
store</a></p> </li> 
+           <li> <p><a href="../ugsec/ugsec.html">Security</a></p> </li> 
+           <li> <p><a href="../ugtst/ugtst.html">Testing</a></p> </li> 
+           <li> <p><a href="../ugbtb/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/rgant.html">Annotations</a> (this 
guide)</p> </li> 
+           <li> <p><a href="../rgsvc/rgsvc.html">Domain Services</a></p> </li> 
+           <li> <p><a href="../rgcfg/rgcfg.html">Configuration 
Properties</a></p> </li> 
+           <li> <p><a href="../rgcms/rgcms.html">Classes, Methods and 
Schema</a></p> </li> 
+           <li> <p><a href="../rgmvn/rgmvn.html">Apache Isis Maven 
plugin</a></p> </li> 
+           <li> <p><a href="../rgfis/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/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/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(defaultView="table")</code></p> </li> 
+           <li> <p>if an action has a tooltip, it can be annotated using 
<code>@ActionLayout(describedAs=…​)</code></p> </li> 
+           <li> <p>if a domain object is bookmarkable, it can be annotated 
using <code>@DomainObjectLayout(bookmarking=BookmarkPolicy.AS_ROOT</code>).</p> 
</li> 
+          </ul> 
+         </div> 
+        </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_rgant_aaa">2. Summary</h2>
+       <div class="btn-group" style="float: right; font-size: small; padding: 
6px; margin-top: -55px; ">
+        <button type="button" class="btn btn-xs btn-default" 
onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa.adoc&quot;";><i
 class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+        <button type="button" class="btn btn-xs btn-default dropdown-toggle" 
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span 
class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+        <ul class="dropdown-menu">
+         <li><a 
href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa.adoc";
 target="_blank"><i class="fa fa-pencil-square-o fa-fw" 
aria-hidden="true"></i>&nbsp; Edit</a></li>
+         <li><a 
href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa.adoc";
 target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; 
History</a></li>
+         <li><a 
href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa.adoc";
 target="_blank"><i class="fa fa-file-text-o fa-fw" 
aria-hidden="true"></i>&nbsp; Raw</a></li>
+         <li><a 
href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa.adoc";
 target="_blank"><i class="fa fa-hand-o-right fa-fw" 
aria-hidden="true"></i>&nbsp; Blame</a></li>
+        </ul>
+       </div> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>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="btn-group" style="float: right; font-size: small; 
padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" 
onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_main.adoc&quot;";><i
 class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" 
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span 
class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a 
href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_main.adoc";
 target="_blank"><i class="fa fa-pencil-square-o fa-fw" 
aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a 
href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_main.adoc";
 target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; 
History</a></li>
+           <li><a 
href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_main.adoc";
 target="_blank"><i class="fa fa-file-text-o fa-fw" 
aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a 
href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_main.adoc";
 target="_blank"><i class="fa fa-hand-o-right fa-fw" 
aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
+         <div class="paragraph"> 
+          <p>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>…​Layout</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="../ugvw/ugvw.html#_ugvw_layout_file-based">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
+          </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="../ugvw/ugvw.html#_ugvw_layout_file-based">File-based layout</a>?</th> 
+           </tr> 
+          </thead> 
+          <tbody> 
+           <tr> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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="btn-group" style="float: right; font-size: small; 
padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" 
onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_other.adoc&quot;";><i
 class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" 
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span 
class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a 
href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_other.adoc";
 target="_blank"><i class="fa fa-pencil-square-o fa-fw" 
aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a 
href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_other.adoc";
 target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; 
History</a></li>
+           <li><a 
href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_other.adoc";
 target="_blank"><i class="fa fa-file-text-o fa-fw" 
aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a 
href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_other.adoc";
 target="_blank"><i class="fa fa-hand-o-right fa-fw" 
aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
+         <div class="paragraph"> 
+          <p>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="../ugvw/ugvw.html#_ugvw_layout_file-based">File-based layout</a>?</th> 
+           </tr> 
+          </thead> 
+          <tbody> 
+           <tr> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_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/rgant.html#_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’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/rgant.html#_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/rgant.html#_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/rgant.html#_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_jdo">2.3. JDO Annotations</h3>
+         <div class="btn-group" style="float: right; font-size: small; 
padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" 
onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc&quot;";><i
 class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" 
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span 
class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a 
href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc";
 target="_blank"><i class="fa fa-pencil-square-o fa-fw" 
aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a 
href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc";
 target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; 
History</a></li>
+           <li><a 
href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc";
 target="_blank"><i class="fa fa-file-text-o fa-fw" 
aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a 
href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc";
 target="_blank"><i class="fa fa-hand-o-right fa-fw" 
aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
+         <div class="paragraph"> 
+          <p>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> 
+           <tbody>
+            <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> 
+           </tbody>
+          </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/rgant.html#_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/rgant.html#_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/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/rgant.html#_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/rgant.html#_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/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/rgant.html#_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.</p> 
+              </div> 
+              <div class="paragraph"> 
+               <p>If the <code>schema()</code> attribute is specified (and if 
<a 
href="../rgant/rgant.html#\_rgant-Discriminator"><code>@Discriminator</code></a>
 <em>hasn’t</em> been specified), is also used to derive the object type, as 
used in `Bookmark`s, URLs for <a href="../ugvro/ugvro.html">RestfulObjects 
viewer</a> and elsewhere.</p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">Domain / persistence</p></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">Class</p></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#\_rgant-PrimaryKey"><code>@javax.jdo.annotations.</code><br>
 <code>PrimaryKey</code></a></p></td> 
+            <td class="tableblock halign-left valign-top">
+             <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="btn-group" style="float: right; font-size: small; 
padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" 
onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jee.adoc&quot;";><i
 class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" 
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span 
class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a 
href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jee.adoc";
 target="_blank"><i class="fa fa-pencil-square-o fa-fw" 
aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a 
href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jee.adoc";
 target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; 
History</a></li>
+           <li><a 
href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jee.adoc";
 target="_blank"><i class="fa fa-file-text-o fa-fw" 
aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a 
href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jee.adoc";
 target="_blank"><i class="fa fa-hand-o-right fa-fw" 
aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
+         <div class="paragraph"> 
+          <p>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="../ugvw/ugvw.html#_ugvw_layout_file-based">File-based layout</a>?</th> 
+           </tr> 
+          </thead> 
+          <tbody> 
+           <tr> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_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/rgant.html#_rgant-Pattern"><code>@javax.validation.</code><br> 
<code>constraints.</code><br> <code>Pattern</code></a></p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>Regular expressions for strings</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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgant.html#_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/rgsvc.html#_rgsvc_integration-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_partial">2.5. Incomplete/partial support</h3>
+         <div class="btn-group" style="float: right; font-size: small; 
padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" 
onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_partial.adoc&quot;";><i
 class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" 
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span 
class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a 
href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_partial.adoc";
 target="_blank"><i class="fa fa-pencil-square-o fa-fw" 
aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a 
href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_partial.adoc";
 target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; 
History</a></li>
+           <li><a 
href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_partial.adoc";
 target="_blank"><i class="fa fa-file-text-o fa-fw" 
aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a 
href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_partial.adoc";
 target="_blank"><i class="fa fa-hand-o-right fa-fw" 
aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
+         <div class="paragraph"> 
+          <p>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 6. 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>@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>@Parseable</code></p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>Indicates that a (value) class can be reconstructed from a 
string.<br></p> 
+              </div> 
+              <div class="paragraph"> 
+               <p>Parseability means being able to parse a string 
representation into an object by way of the 
<code>o.a.i.applib.adapters.Parser</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>@Parser</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 be able to be 
parsed.<br></p> 
+              </div> 
+              <div class="paragraph"> 
+               <p>Note that the Wicket viewer uses Apache Wicket’s Converter 
API instead.</p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">UI, Domain</p></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>@Value</code></p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>Specify that a class has value-semantics.<br></p> 
+              </div> 
+              <div class="paragraph"> 
+               <p>The <code>@Value</code> annotation indicates that a class 
should be treated as a value type rather than as a reference (or entity) type. 
It does this providing an implementation of a 
<code>o.a.i.applib.adapters.ValueSemanticsProvider</code>.<br></p> 
+              </div> 
+              <div class="paragraph"> 
+               <p>For example:<br></p> 
+              </div> 
+              <div class="listingblock"> 
+               <div class="content"> 
+                <pre class="CodeRay highlight"><code data-lang="java"><span 
class="annotation">@Value</span>(semanticsProviderClass=
+    ComplexNumberValueSemanticsProvider.class)
+<span class="directive">public</span> <span class="type">class</span> <span 
class="class">ComplexNumber</span> {
+    ...
+}</code></pre> 
+               </div> 
+              </div> 
+              <div class="paragraph"> 
+               <p>The <code>ValueSemanticsProvider</code> allows the framework 
to interact with the value, parsing strings and displaying as text, and 
encoding/decoding (for serialization).</p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">Domain</p></td> 
+           </tr> 
+          </tbody> 
+         </table> 
+        </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_rgant-Action">3. <code>@Action</code></h2>
+       <div class="btn-group" style="float: right; font-size: small; padding: 
6px; margin-top: -55px; ">
+        <button type="button" class="btn btn-xs btn-default" 
onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action.adoc&quot;";><i
 class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+        <button type="button" class="btn btn-xs btn-default dropdown-toggle" 
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span 
class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+        <ul class="dropdown-menu">
+         <li><a 
href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action.adoc";
 target="_blank"><i class="fa fa-pencil-square-o fa-fw" 
aria-hidden="true"></i>&nbsp; Edit</a></li>
+         <li><a 
href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action.adoc";
 target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; 
History</a></li>
+         <li><a 
href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action.adoc";
 target="_blank"><i class="fa fa-file-text-o fa-fw" 
aria-hidden="true"></i>&nbsp; Raw</a></li>
+         <li><a 
href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action.adoc";
 target="_blank"><i class="fa fa-hand-o-right fa-fw" 
aria-hidden="true"></i>&nbsp; Blame</a></li>
+        </ul>
+       </div> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>The <code>@Action</code> annotation groups together all 
domain-specific metadata for an invokable action on a domain object or domain 
service.</p> 
+        </div> 
+        <div class="paragraph"> 
+         <p>The table below summarizes the annotation’s attributes.</p> 
+        </div> 
+        <table class="tableblock frame-all grid-all spread"> 
+         <caption class="title">
+          Table 7. 
+          <code>@Action</code> attributes
+         </caption> 
+         <colgroup> 
+          <col style="width: 25%;"> 
+          <col style="width: 25%;"> 
+          <col style="width: 50%;"> 
+         </colgroup> 
+         <thead> 
+          <tr> 
+           <th class="tableblock halign-left valign-top">Attribute</th> 
+           <th class="tableblock halign-left valign-top">Values (default)</th> 
+           <th class="tableblock halign-left valign-top">Description</th> 
+          </tr> 
+         </thead> 
+         <tbody> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_rgant-Action_associateWith"><code>associateWith()</code></a></p></td>
 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><em>memberId</em><br> ("")</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>associates an action with another property or collection of 
the action.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_rgant-Action_associateWith"><code>associateWith-Sequence()</code></a></p></td>
 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><em>memberId</em><br> ("")</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>associates an action with another property or collection of 
the action.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_rgant-Action_command"><code>command()</code></a></p></td>
 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>AS_CONFIGURED</code>, <code>ENABLED</code>, 
<code>DISABLED</code><br> (<code>AS_CONFIGURED</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>whether the action invocation should be reified into a 
<code>o.a.i.applib.</code><br> <code>services.command.Command</code> object 
through the <a 
href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_CommandContext"><code>CommandContext</code></a>
 service.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>commandExecuteIn()</code></p></td> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>FOREGROUND</code>,<code>BACKGROUND</code><br> 
(<code>FOREGROUND</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>whether to execute the command immediately, or to persist it 
(assuming that an appropriate implementation of <a 
href="../rgsvc/rgsvc.html#_rgsvc_application-layer-spi_CommandService"><code>CommandService</code></a>
 has been configured) such that a background scheduler can execute the command 
asynchronously</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>commandPersistence()</code></p></td> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>PERSISTED</code>, <code>NOT_PERSISTED</code>, 
<code>IF_HINTED</code><br> (<code>PERSISTED</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>whether the reified <code>Command</code> (as provided by the 
<code>CommandContext</code> domain service) should actually be persisted 
(assuming an appropriate implementation of <a 
href="../rgsvc/rgsvc.html#_rgsvc_application-layer-spi_CommandService"><code>CommandService</code></a>
 has been configured).</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>commandDtoProcessor()</code></p></td> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock">Implementation of <code>CommandDtoProcessor</code> 
interface<br> (null)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>If the <code>Command</code> also implements 
<code>CommandWithDto</code> (meaning that it can return a 
<code>CommandDto</code>, in other words be converted into an XML memento), then 
optionally specifies a processor that can refine this XML.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_rgant-Action_domainEvent"><code>domainEvent()</code></a></p></td>
 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock">subtype of <code>ActionDomainEvent</code><br> 
(<code>ActionDomainEvent.Default</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>the event type to be posted to the <a 
href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a>
 to broadcast the action’s business rule checking (hide, disable, validate) 
and its invocation (pre-execute and post-execute).</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_rgant-Action_hidden"><code>hidden()</code></a></p></td>
 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>EVERYWHERE</code>, <code>NOWHERE</code><br> 
(<code>NOWHERE</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>indicates where (in the UI) the action should be hidden from 
the user.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_rgant-Action_invokeOn"><code>invokeOn()</code></a></p></td>
 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>OBJECT_ONLY</code>, <code>COLLECTION_ONLY</code>, 
<code>OBJECT_AND_COLLECTION</code><br> (<code>OBJECT_ONLY</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>(deprecated - use view models and associated actions 
instead).</p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>whether an action can be invoked on a single object and/or on 
many objects in a collection.</p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>Currently this is only supported for no-arg actions.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_rgant-Action_publishing"><code>publishing()</code></a></p></td>
 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>AS_CONFIGURED</code>, <code>ENABLED</code>, 
<code>DISABLED</code><br> (<code>AS_CONFIGURED</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>whether the action invocation should be published to the 
registered <a 
href="../rgsvc/rgsvc.html#_rgsvc_persistence-layer-spi_PublisherService"><code>PublisherService</code></a>.</p>
 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_rgant-Action_restrictTo"><code>restrictTo()</code></a></p></td>
 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>NO_RESTRICTIONS</code>,<code>PROTOTYPING</code><br> 
(<code>NO_RESTRICTIONS</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>whether the action is only available in prototyping mode, or 
whether it is available also in production mode.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_rgant-Action_semantics"><code>semantics()</code></a></p></td>
 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>SAFE_AND_REQUEST_CACHEABLE</code>, 
<code>SAFE</code>,<br> <code>IDEMPOTENT</code>, 
<code>IDEMPOTENT_ARE_YOU_SURE</code><br> <code>NON_IDEMPOTENT</code>, 
<code>NON_IDEMPOTENT_ARE_YOU_SURE</code> +<br> 
(<code>NON_IDEMPOTENT</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>the action’s semantics (ie whether objects are modified as 
the result of invoking this action, and if so whether reinvoking the action 
would result in no further change; if not whether the results can be cached for 
the remainder of the request).</p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>The <code>…​ARE_YOU_SURE</code> variants cause a 
confirmation dialog to be displayed in the <a href="../ugvw/ugvw.html">Wicket 
viewer</a>.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgant/rgant.html#_rgant-Action_typeOf"><code>typeOf()</code></a></p></td>
 
+           <td class="tableblock halign-left valign-top"><p 
class="tableblock">(none)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>if the action returns a collection, hints as to the run-time 
type of the objects within that collection (as a fallback)</p> 
+             </div>
+            </div></td> 
+          </tr> 
+         </tbody> 
+        </table> 
+        <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">ToDoItem</span> {
+    <span class="directive">public</span> <span 
class="directive">static</span> <span class="type">class</span> <span 
class="class">CompletedEvent</span> <span class="directive">extends</span> 
ActionDomainEvent&lt;ToDoItem&gt; { }
+    <span class="annotation">@Action</span>(
+        command=CommandReification.ENABLED,
+        commandExecuteIn=CommandExecuteIn.FOREGROUND,          <i 
class="conum" data-value="1"></i><b>(1)</b>
+        commandPersistence=CommandPersistence.NOT_PERSISTED,   <i 
class="conum" data-value="2"></i><b>(2)</b>
+        domainEvent=CompletedEvent.class,
+        hidden = Where.NOWHERE,                                <i 
class="conum" data-value="3"></i><b>(3)</b>
+        invokeOn = InvokeOn.OBJECT_ONLY,                       <i 
class="conum" data-value="4"></i><b>(4)</b>
+        publishing = Publishing.ENABLED,
+        semantics = SemanticsOf.IDEMPOTENT
+    )
+    <span class="directive">public</span> ToDoItem completed() { ... }
+}</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 value, so could be omitted</td> 
+           </tr> 
+           <tr> 
+            <td><i class="conum" data-value="2"></i><b>2</b></td> 
+            <td>default value, so could be omitted</td> 
+           </tr> 
+           <tr> 
+            <td><i class="conum" data-value="3"></i><b>3</b></td> 
+            <td>default value, so could be omitted</td> 
+           </tr> 
+           <tr> 
+            <td><i class="conum" data-value="4"></i><b>4</b></td> 
+            <td>default value, so could be omitted</td> 
+           </tr> 
+          </tbody>
+         </table> 
+        </div> 
+        <div class="sect2"> 
+         <h3 id="_rgant-Action_associateWith">3.1. 
<code>associateWith()</code></h3>
+         <div class="btn-group" style="float: right; font-size: small; 
padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" 
onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action_associateWith.adoc&quot;";><i
 class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" 
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span 
class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a 
href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action_associateWith.adoc";
 target="_blank"><i class="fa fa-pencil-square-o fa-fw" 
aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a 
href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action_associateWith.adoc";
 target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; 
History</a></li>
+           <li><a 
href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action_associateWith.adoc";
 target="_blank"><i class="fa fa-file-text-o fa-fw" 
aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a 
href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action_associateWith.adoc";
 target="_blank"><i class="fa fa-hand-o-right fa-fw" 
aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
+         <div class="paragraph"> 
+          <p>The <code>associateWith</code> attribute allows an action to be 
associated with other properties or collections of the same domain object. The 
optional <code>associateWithSequence</code> attribute specifies the order of 
the action in the UI.</p> 
+         </div> 
+         <div class="paragraph"> 
+          <p>For example, an <code>Order</code> could have a collection of 
<code>OrderItem</code>s, and might provide actions to add and remove items:</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">Order</span> {
+
+    <span class="annotation">@Collection</span>
+    <span class="predefined-type">SortedSet</span>&lt;OrderItem&gt; getItems() 
{ ... }
+
+    <span class="annotation">@Action</span>(associateWith=<span 
class="string"><span class="delimiter">"</span><span 
class="content">items</span><span class="delimiter">"</span></span>, 
associateWithSequence=<span class="string"><span 
class="delimiter">"</span><span class="content">1</span><span 
class="delimiter">"</span></span>)
+    <span class="directive">public</span> Order addItem(Product p, <span 
class="type">int</span> quantity) { ... }
+
+    <span class="annotation">@Action</span>(associateWith=<span 
class="string"><span class="delimiter

<TRUNCATED>

Reply via email to