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/12/15 18:27:51 UTC

[07/17] isis-site git commit: ISIS-1465: tiny doc fix

http://git-wip-us.apache.org/repos/asf/isis-site/blob/a1b07ded/content/guides/rgsvc/rgsvc.html
----------------------------------------------------------------------
diff --git a/content/guides/rgsvc/rgsvc.html b/content/guides/rgsvc/rgsvc.html
index a934c15..45d5556 100644
--- a/content/guides/rgsvc/rgsvc.html
+++ b/content/guides/rgsvc/rgsvc.html
@@ -2591,6 +2591,17 @@ table.CodeRay td.code>pre{padding:0}
            <td class="tableblock halign-left valign-top"><p class="tableblock">API is also a concrete class.<br> depends on:<br> <a href="../rgsvc/rgsvc.html#_rgsvc_application-layer-spi_CommandService"><code>CommandService</code></a> for persistent <code>Command</code>, else in-memory impl. used. </p><p class="tableblock">The <a href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_InteractionContext"><code>InteractionContext</code></a> manages the actual execution of the command.</p></td> 
           </tr> 
           <tr> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_DtoMappingHelper"><code>o.a.i.applib.</code><br> <code>services.dto</code><br> <code>DtoMappingHelper</code></a></p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Maps domain objects internal identifier to an <code>OidDto</code> for use in serialized representations.</p> 
+             </div>
+            </div></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><code>DtoMappingHelper</code><br> <code>o.a.i.core</code><br> <code>isis-core-applib</code></p></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">(<code>1.16.0-SNAPSHOT</code>) API is also a concrete class.</p></td> 
+          </tr> 
+          <tr> 
            <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_InteractionContext"><code>o.a.i.applib.</code><br> <code>services.iactn</code><br> <code>InteractionContext</code></a></p></td> 
            <td class="tableblock halign-left valign-top">
             <div>
@@ -3599,7 +3610,59 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_rgsvc_application-layer-api_InteractionContext">4.5. <code>InteractionContext</code></h3>
+         <h3 id="_rgsvc_application-layer-api_DtoMappingHelper">4.5. <code>DtoMappingHelper</code> (<code>1.16.0-SNAPSHOT</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/rgsvc/_rgsvc_application-layer-api_DtoMappingHelper.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/rgsvc/_rgsvc_application-layer-api_DtoMappingHelper.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/rgsvc/_rgsvc_application-layer-api_DtoMappingHelper.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/rgsvc/_rgsvc_application-layer-api_DtoMappingHelper.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/rgsvc/_rgsvc_application-layer-api_DtoMappingHelper.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>DtoMappingHelper</code> converts the domain object’s internal identifier into a serializable <code>OidDto</code> for use in the <a href="../rgcms/rgcms.html#_rgcms_schema-cmd">command</a> and <a href="../rgcms/rgcms.html#_rgcms_schema-ixn">interaction</a> schemas.</p> 
+         </div> 
+         <div class="sect3"> 
+          <h4 id="_api_and_usage">4.5.1. API and Usage</h4> 
+          <div class="paragraph"> 
+           <p>The API of <code>DtoMappingHelper</code> is:</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">DtoMappingHelper</span> {
+
+    <span class="directive">public</span> OidDto oidDtoFor(<span class="directive">final</span> <span class="predefined-type">Object</span> object) { ... }    <i class="conum" data-value="1"></i><b>(1)</b>
+}</code></pre> 
+           </div> 
+          </div> 
+          <div class="colist arabic"> 
+           <table> 
+            <tbody>
+             <tr> 
+              <td><i class="conum" data-value="1"></i><b>1</b></td> 
+              <td>Uses the <a href="../rgsvc/rgsvc.html#_rgsvc_api_BookmarkService"><code>BookmarkService</code></a> to convert the domain object’s internal identifier into a serializable <code>OidDto</code>.</td> 
+             </tr> 
+            </tbody>
+           </table> 
+          </div> 
+          <div class="paragraph"> 
+           <p>This class (<code>o.a.i.applib.services.dto.DtoMappingHelper</code>) is also the implementation.</p> 
+          </div> 
+         </div> 
+         <div class="sect3"> 
+          <h4 id="_registering_the_service_6">4.5.2. Registering the Service</h4> 
+          <div class="paragraph"> 
+           <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>MessageService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>To use an alternative implementation, use <a href="../rgant/rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a> (as explained in the <a href="../rgsvc/rgsvc.html#__rgsvc_intro_overriding-the-services">introduction</a> to this guide).</p> 
+          </div> 
+         </div> 
+        </div> 
+        <div class="sect2"> 
+         <h3 id="_rgsvc_application-layer-api_InteractionContext">4.6. <code>InteractionContext</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/rgsvc/_rgsvc_application-layer-api_InteractionContext.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>
@@ -3629,7 +3692,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </ul> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_api_implementation_5">4.5.1. API &amp; Implementation</h4> 
+          <h4 id="_api_implementation_5">4.6.1. API &amp; Implementation</h4> 
           <div class="paragraph"> 
            <p>The public API of the service consists of several related classes:</p> 
           </div> 
@@ -3842,13 +3905,13 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_interacting_with_the_services_2">4.5.2. Interacting with the services</h4> 
+          <h4 id="_interacting_with_the_services_2">4.6.2. Interacting with the services</h4> 
           <div class="paragraph"> 
            <p>Typically domain objects will have little need to interact with the <code>InteractionContext</code> and <code>Interaction</code> directly. The services are used within the framework however, primarily to support the <a href="../rgsvc/rgsvc.html#_rgsvc_persistence-layer-spi_PublisherService"><code>PublisherService</code></a> SPI, and to emit domain events over the <a href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a>.</p> 
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_6">4.5.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_7">4.6.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' default implementation of <code>InteractionContext</code> class is automatically registered (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -3870,7 +3933,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="__rgsvc_application-layer-api_InteractionContext_Related-Classes">4.5.4. Related Classes</h4> 
+          <h4 id="__rgsvc_application-layer-api_InteractionContext_Related-Classes">4.6.4. Related Classes</h4> 
           <div class="paragraph"> 
            <p>This service is very similar in nature to <a href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_CommandContext"><code>CommandContext</code></a>, in that the <code>Interaction</code> object accessed through it is very similar to the <code>Command</code> object obtained from the <code>CommandContext</code>. The principle distinction is that while <code>Command</code> represents the <em>intention</em> to invoke an action or edit a property, the <code>Interaction</code> (and contained <code>Execution</code>s) represents the actual execution.</p> 
           </div> 
@@ -3880,7 +3943,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_rgsvc_application-layer-api_MessageService">4.6. <code>MessageService</code></h3>
+         <h3 id="_rgsvc_application-layer-api_MessageService">4.7. <code>MessageService</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/rgsvc/_rgsvc_application-layer-api_MessageService.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>
@@ -3908,7 +3971,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </table> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_api_and_usage">4.6.1. API and Usage</h4> 
+          <h4 id="_api_and_usage_2">4.7.1. API and Usage</h4> 
           <div class="paragraph"> 
            <p>The API of <code>MessageService</code> is:</p> 
           </div> 
@@ -3974,13 +4037,13 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_implementation_15">4.6.2. Implementation</h4> 
+          <h4 id="_implementation_15">4.7.2. Implementation</h4> 
           <div class="paragraph"> 
            <p>The core framework provides a default implementation of this service, <code>o.a.i.core.runtime.services.message.MessageServiceDefault</code>.</p> 
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_7">4.6.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_8">4.7.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>MessageService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -3990,7 +4053,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_rgsvc_application-layer-api_SessionManagementService">4.7. <code>SessionManagementService</code></h3>
+         <h3 id="_rgsvc_application-layer-api_SessionManagementService">4.8. <code>SessionManagementService</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/rgsvc/_rgsvc_application-layer-api_SessionManagementService.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>
@@ -4005,7 +4068,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           <p>The <code>SessionManagementService</code> provides the ability to programmatically manage sessions. The primary use case is for fixture scripts or other routines that are invoked from the UI and which create or modify large amounts of data. A classic example is migrating data from one system to another.</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_api">4.7.1. API</h4> 
+          <h4 id="_api">4.8.1. API</h4> 
           <div class="paragraph"> 
            <p>The API of <code>SessionManagementService</code> is:</p> 
           </div> 
@@ -4037,13 +4100,13 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_implementation_16">4.7.2. Implementation</h4> 
+          <h4 id="_implementation_16">4.8.2. Implementation</h4> 
           <div class="paragraph"> 
            <p>The core framework provides a default implementation of this service (<code>o.a.i.core.runtime.services.xactn.SessionManagementServiceDefault</code>).</p> 
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_8">4.7.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_9">4.8.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>SessionManagementService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -4053,7 +4116,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_rgsvc_application-layer-api_TitleService">4.8. <code>TitleService</code></h3>
+         <h3 id="_rgsvc_application-layer-api_TitleService">4.9. <code>TitleService</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/rgsvc/_rgsvc_application-layer-api_TitleService.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>
@@ -4081,7 +4144,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </table> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_api_2">4.8.1. API</h4> 
+          <h4 id="_api_2">4.9.1. API</h4> 
           <div class="paragraph"> 
            <p>The API of <code>TitleService</code> is:</p> 
           </div> 
@@ -4109,7 +4172,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_usage_5">4.8.2. Usage</h4> 
+          <h4 id="_usage_5">4.9.2. Usage</h4> 
           <div class="paragraph"> 
            <p>By way of example, here’s some code based on a system for managing government benefits:</p> 
           </div> 
@@ -4134,13 +4197,13 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_implementation_17">4.8.3. Implementation</h4> 
+          <h4 id="_implementation_17">4.9.3. Implementation</h4> 
           <div class="paragraph"> 
            <p>The core framework provides a default implementation of this service (<code>o.a.i.core.metamodel.services.title.TitleServiceDefault</code>).</p> 
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_9">4.8.4. Registering the Service</h4> 
+          <h4 id="_registering_the_service_10">4.9.4. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>TitleService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -4150,7 +4213,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_rgsvc_application-layer-api_TransactionService">4.9. <code>TransactionService2</code></h3>
+         <h3 id="_rgsvc_application-layer-api_TransactionService">4.10. <code>TransactionService2</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/rgsvc/_rgsvc_application-layer-api_TransactionService.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>
@@ -4178,7 +4241,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </table> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_api_3">4.9.1. API</h4> 
+          <h4 id="_api_3">4.10.1. API</h4> 
           <div class="paragraph"> 
            <p>The API of <code>TransactionService2</code> is:</p> 
           </div> 
@@ -4320,13 +4383,13 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_implementation_18">4.9.2. Implementation</h4> 
+          <h4 id="_implementation_18">4.10.2. Implementation</h4> 
           <div class="paragraph"> 
            <p>The core framework provides a default implementation of this service, <code>o.a.i.core.metamodel.services.xactn.TransactionServiceDefault</code>.</p> 
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_10">4.9.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_11">4.10.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>TransactionService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -4336,7 +4399,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_rgsvc_application-layer-api_WrapperFactory">4.10. <code>WrapperFactory</code></h3>
+         <h3 id="_rgsvc_application-layer-api_WrapperFactory">4.11. <code>WrapperFactory</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/rgsvc/_rgsvc_application-layer-api_WrapperFactory.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>
@@ -4373,7 +4436,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           <p>This capability is frequently used within <a href="../ugtst/ugtst.html#_ugtst_integ-test-support">integration tests</a>, but can also be used in production code. (There are analogies that can be drawn here with the way that JEE beans can interact through an EJB local interface).</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_api_4">4.10.1. API</h4> 
+          <h4 id="_api_4">4.11.1. API</h4> 
           <div class="paragraph"> 
            <p>The API provided by the service is:</p> 
           </div> 
@@ -4472,7 +4535,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_usage_6">4.10.2. Usage</h4> 
+          <h4 id="_usage_6">4.11.2. Usage</h4> 
           <div class="paragraph"> 
            <p>The caller will typically obtain the target object (eg from some repository) and then use the injected <code>WrapperFactory</code> to wrap it before interacting with it.</p> 
           </div> 
@@ -4532,7 +4595,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_listener_api">4.10.3. Listener API</h4> 
+          <h4 id="_listener_api">4.11.3. Listener API</h4> 
           <div class="paragraph"> 
            <p>The <code>WrapperFactory</code> also provides a listener API to allow other services to listen in on interactions.</p> 
           </div> 
@@ -4578,7 +4641,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_11">4.10.4. Registering the Service</h4> 
+          <h4 id="_registering_the_service_12">4.11.4. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>WrapperFactory</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -5014,7 +5077,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_12">5.3.2. Registering the Service</h4> 
+          <h4 id="_registering_the_service_13">5.3.2. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>HomePageProviderService</code> is automatically registered (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -5335,7 +5398,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_13">6.1.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_14">6.1.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>ClockService</code> is automatically registered (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -5386,7 +5449,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </table> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_api_and_usage_2">6.2.1. API and Usage</h4> 
+          <h4 id="_api_and_usage_3">6.2.1. API and Usage</h4> 
           <div class="paragraph"> 
            <p>The API of <code>ConfigurationService</code> is:</p> 
           </div> 
@@ -5466,7 +5529,7 @@ org.quartz.plugin.jobInitializer.failOnFileNotFound = true</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_14">6.2.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_15">6.2.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>ConfigurationService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -6139,7 +6202,7 @@ container.persist(cust);</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_15">6.3.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_16">6.3.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>DomainObjectContainer</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -6752,7 +6815,7 @@ repositoryService.persist(cust);</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_16">6.5.4. Registering the Service</h4> 
+          <h4 id="_registering_the_service_17">6.5.4. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>FactoryService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -6902,7 +6965,7 @@ Scratchpad scratchpad;</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_17">6.6.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_18">6.6.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>Scratchpad</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -6952,7 +7015,7 @@ Scratchpad scratchpad;</code></pre>
           </table> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_api_and_usage_3">6.7.1. API and Usage</h4> 
+          <h4 id="_api_and_usage_4">6.7.1. API and Usage</h4> 
           <div class="paragraph"> 
            <p>The API of <code>UserService</code> is:</p> 
           </div> 
@@ -7005,7 +7068,7 @@ Scratchpad scratchpad;</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_18">6.7.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_19">6.7.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>UserService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -7291,7 +7354,7 @@ Scratchpad scratchpad;</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_19">7.1.4. Registering the Service</h4> 
+          <h4 id="_registering_the_service_20">7.1.4. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>BookmarkService</code> is automatically registered (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -7715,7 +7778,7 @@ Scratchpad scratchpad;</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_20">7.5.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_21">7.5.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>JaxbService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -7890,7 +7953,7 @@ Scratchpad scratchpad;</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_21">7.6.4. Registering the Service</h4> 
+          <h4 id="_registering_the_service_22">7.6.4. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>MementoService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -8131,7 +8194,7 @@ Element customerXsd = snapshot.getXsdElement();</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_22">7.7.5. Registering the Service</h4> 
+          <h4 id="_registering_the_service_23">7.7.5. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>XmlSnapshotService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -8321,7 +8384,7 @@ Element customerXsd = snapshot.getXsdElement();</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_23">8.1.2. Registering the Service</h4> 
+          <h4 id="_registering_the_service_24">8.1.2. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>ApplicationFeatureRepository</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -8467,7 +8530,7 @@ Element customerXsd = snapshot.getXsdElement();</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_rgsvc_metadata-api_MetamodelService">8.3. <code>MetaModelService3</code></h3>
+         <h3 id="_rgsvc_metadata-api_MetamodelService">8.3. <code>MetaModelService</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/rgsvc/_rgsvc_metadata-api_MetamodelService.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>
@@ -8479,7 +8542,7 @@ Element customerXsd = snapshot.getXsdElement();</code></pre>
           </ul>
          </div> 
          <div class="paragraph"> 
-          <p>The <code>MetaModelService3</code> service provides access to a number of aspects of Apache Isis' internal metamodel.</p> 
+          <p>The <code>MetaModelService</code> service (and its various subtypes) provides access to a number of aspects of Apache Isis' internal metamodel.</p> 
          </div> 
          <div class="sect3"> 
           <h4 id="_api_6">8.3.1. API</h4> 
@@ -8488,12 +8551,13 @@ Element customerXsd = snapshot.getXsdElement();</code></pre>
           </div> 
           <div class="listingblock"> 
            <div class="content"> 
-            <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">interface</span> <span class="class">MetaModelService2</span> {
+            <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">interface</span> <span class="class">MetaModelService4</span> {
     <span class="predefined-type">Class</span>&lt;?&gt; fromObjectType(<span class="predefined-type">String</span> objectType);   <i class="conum" data-value="1"></i><b>(1)</b>
     <span class="predefined-type">String</span> toObjectType(<span class="predefined-type">Class</span>&lt;?&gt; domainType);     <i class="conum" data-value="2"></i><b>(2)</b>
     <span class="type">void</span> rebuild(<span class="predefined-type">Class</span>&lt;?&gt; domainType);            <i class="conum" data-value="3"></i><b>(3)</b>
     <span class="predefined-type">List</span>&lt;DomainMember&gt; <span class="keyword">export</span>();                  <i class="conum" data-value="4"></i><b>(4)</b>
 
+    <span class="comment">// introduced in MetaModelService2</span>
     <span class="type">enum</span> Sort {                                   <i class="conum" data-value="5"></i><b>(5)</b>
         VIEW_MODEL, JDO_ENTITY, DOMAIN_SERVICE,
         MIXIN, VALUE, COLLECTION, UNKNOWN;
@@ -8504,8 +8568,14 @@ Element customerXsd = snapshot.getXsdElement();</code></pre>
     }
     Sort sortOf(<span class="predefined-type">Class</span>&lt;?&gt; domainType);             <i class="conum" data-value="6"></i><b>(6)</b>
     Sort sortOf(Bookmark bookmark);
+
+    <span class="comment">// introduced in MetaModelService3</span>
     Sort sortOf(<span class="predefined-type">Class</span>&lt;?&gt; domainType, Mode mode);
     Sort sortOf(Bookmark bookmark, Mode mode);
+
+    <span class="comment">// introduced in MetaModelService4</span>
+    AppManifest getAppManifest();                 <i class="conum" data-value="7"></i><b>(7)</b>
+    AppManifest2 getAppManifest2();
 }</code></pre> 
            </div> 
           </div> 
@@ -8536,6 +8606,10 @@ Element customerXsd = snapshot.getXsdElement();</code></pre>
               <td><i class="conum" data-value="6"></i><b>6</b></td> 
               <td>whether to throw an exception or return <code>Sort.UNKNOWN</code> if the object type is not recognized. (The overloads with no <code>Mode</code> parameter default to strict mode).</td> 
              </tr> 
+             <tr> 
+              <td><i class="conum" data-value="7"></i><b>7</b></td> 
+              <td>(As of <code>1.16.0-SNAPSHOT</code>), returns the <code>AppManifest</code> used to bootstrap the application. If an <code>AppManifest2</code> was used (from a <code>Module</code>), then this is also returned (else just <code>null</code>).</td> 
+             </tr> 
             </tbody>
            </table> 
           </div> 
@@ -8547,7 +8621,7 @@ Element customerXsd = snapshot.getXsdElement();</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_24">8.3.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_25">8.3.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>MetamodelService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -8658,7 +8732,7 @@ repositoryService.persist(cust);</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_25">8.4.4. Registering the Service</h4> 
+          <h4 id="_registering_the_service_26">8.4.4. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>ServiceRegistry</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -8752,7 +8826,7 @@ repositoryService.persist(cust);</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_26">8.5.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_27">8.5.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>SwaggerService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -9238,7 +9312,7 @@ repositoryService.persist(cust);</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_27">9.4.5. Registering the Service</h4> 
+          <h4 id="_registering_the_service_28">9.4.5. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>SudoService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -9839,7 +9913,7 @@ repositoryService.persist(cust);</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_28">10.3.2. Registering the Service</h4> 
+          <h4 id="_registering_the_service_29">10.3.2. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' default implementation of <code>MetricsService</code> class is automatically registered (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -9988,7 +10062,7 @@ repositoryService.persist(cust);</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_29">10.4.3. Registering the Service</h4> 
+          <h4 id="_registering_the_service_30">10.4.3. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>QueryResultsCache</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div> 
@@ -10386,7 +10460,7 @@ public static final String KEY_DISABLE_AUTOFLUSH = "isis.services.container.disa
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_registering_the_service_30">10.5.4. Registering the Service</h4> 
+          <h4 id="_registering_the_service_31">10.5.4. Registering the Service</h4> 
           <div class="paragraph"> 
            <p>Assuming that the <code>configuration-and-annotation</code> services installer is configured (implicit if using the <code>AppManifest</code> to <a href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the app</a>) then Apache Isis' core implementation of <code>RepositoryService</code> service is automatically registered and injected (it is annotated with <code>@DomainService</code>) so no further configuration is required.</p> 
           </div>