http://git-wip-us.apache.org/repos/asf/isis-site/blob/6ad91949/content/guides/rgsvc/rgsvc.html
----------------------------------------------------------------------
diff --git a/content/guides/rgsvc/rgsvc.html b/content/guides/rgsvc/rgsvc.html
index 5653e86..a59509d 100644
--- a/content/guides/rgsvc/rgsvc.html
+++ b/content/guides/rgsvc/rgsvc.html
@@ -439,7 +439,7 @@
          </div> 
         </div> 
         <div class="paragraph"> 
-         <p>A small number of domain services can be considered both API and 
SPI; a good example is the <a 
href="#_rgsvc_api_EmailService"><code>EmailService</code></a> that is of direct 
use for domain objects wishing to send out emails, but is also used by the 
framework to support the <a 
href="ugvw.html#_ugvw_features_user-registration">user registration</a> 
functionality supported by the <a href="ugvw.html">Wicket viewer</a>. The same 
is true of the <a 
href="#_rgsvc_api_EventBusService"><code>EventBusService</code></a>; this can 
be used by domain objects to broadcast arbitrary events, but is also used by 
the framework to automatically emit events for <a 
href="rgant.html#_rgant-Action_domainEvent"><code>@Action#domainEvent()</code></a>
 etc.</p> 
+         <p>A small number of domain services can be considered both API and 
SPI; a good example is the <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_EmailService"><code>EmailService</code></a>
 that is of direct use for domain objects wishing to send out emails, but is 
also used by the framework to support the <a 
href="../ugvw/ugvw.html#_ugvw_features_user-registration">user registration</a> 
functionality supported by the <a href="../ugvw/ugvw.html">Wicket viewer</a>. 
The same is true of the <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_EventBusService"><code>EventBusService</code></a>;
 this can be used by domain objects to broadcast arbitrary events, but is also 
used by the framework to automatically emit events for <a 
href="../rgant/rgant.html#_rgant-Action_domainEvent"><code>@Action#domainEvent()</code></a>
 etc.</p> 
         </div> 
         <div class="paragraph"> 
          <p>For these hybrid services we have categorized the service as an 
"API" service. This chapter therefore contains only the strictly SPI 
services.</p> 
@@ -454,7 +454,7 @@
          <p>The vast majority of Apache Isis' domain services are defined in 
Apache Isis' applib (<code>o.a.i.core:isis-core-applib</code> module) as 
stable, public classes. Importantly, this also minimizes the coupling between 
your code and Apache Isis, allowing you to easily mock out these services in 
your unit tests.</p> 
         </div> 
         <div class="paragraph"> 
-         <p>The framework also defines a number of "internal" services. These 
are not part of the framework’s formal API, in that they use classes that are 
outside of the applib. These internal framework services should be thought of 
as part of the internal design of the framework, and are liable to change from 
release to release. The internal framework services are documented in the <a 
href="rgfis.html">Framework Internal Services</a> guide.</p> 
+         <p>The framework also defines a number of "internal" services. These 
are not part of the framework’s formal API, in that they use classes that are 
outside of the applib. These internal framework services should be thought of 
as part of the internal design of the framework, and are liable to change from 
release to release. The internal framework services are documented in the <a 
href="../rgfis/rgfis.html">Framework Internal Services</a> guide.</p> 
         </div> 
        </div> 
        <div class="sect2"> 
@@ -497,10 +497,10 @@
          <p>For objects that are already persisted, the service is 
automatically injected just after the object is rehydrated by 
JDO/DataNucleus.</p> 
         </div> 
         <div class="paragraph"> 
-         <p>For transient objects (instantiated programmatically), the <a 
href="#_rgsvc_api_FactoryService"><code>FactoryService</code></a>'s 
<code>instantiate()</code> method (or the deprecated <a 
href="#_rgsvc_api_DomainObjectContainer"><code>DomainObjectContainer</code></a>'s
 <code>newTransientInstance()</code> method) will automatically inject the 
services.</p> 
+         <p>For transient objects (instantiated programmatically), the <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_FactoryService"><code>FactoryService</code></a>'s
 <code>instantiate()</code> method (or the deprecated <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_DomainObjectContainer"><code>DomainObjectContainer</code></a>'s
 <code>newTransientInstance()</code> method) will automatically inject the 
services.</p> 
         </div> 
         <div class="paragraph"> 
-         <p>Alternatively the object can be instantiated simply using 
<code>new</code>, then services injected using <a 
href="#_rgsvc_api_ServiceRegistry"><code>ServiceRegistry</code></a>'s 
<code>injectServicesInto(…​)</code> method (or the deprecated <a 
href="#_rgsvc_api_DomainObjectContainer"><code>DomainObjectContainer</code></a>'s
 <code>injectServicesInto(…​)</code> method).</p> 
+         <p>Alternatively the object can be instantiated simply using 
<code>new</code>, then services injected using <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_ServiceRegistry"><code>ServiceRegistry</code></a>'s
 <code>injectServicesInto(…​)</code> method (or the deprecated <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_DomainObjectContainer"><code>DomainObjectContainer</code></a>'s
 <code>injectServicesInto(…​)</code> method).</p> 
         </div> 
        </div> 
        <div class="sect2"> 
@@ -509,7 +509,7 @@
          <p>The framework provides default implementations for many of the 
domain services. This is convenient, but sometimes you will want to replace the 
default implementation with your own service implementation.</p> 
         </div> 
         <div class="paragraph"> 
-         <p>The trick is to use the <a 
href="rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>
 attribute, specifying a low number (typically <code>"1"</code>).</p> 
+         <p>The trick is to use the <a 
href="../rgant/rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>
 attribute, specifying a low number (typically <code>"1"</code>).</p> 
         </div> 
         <div class="admonitionblock note"> 
          <table> 
@@ -518,14 +518,14 @@
             <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
             <td class="content"> 
              <div class="paragraph"> 
-              <p>For a small number of domain services, all implementations 
are used (following the chain-of-responsibility pattern), not just the first 
one. The services in question are: <a 
href="#_rgsvc_spi_ContentMappingService"><code>ContentMappingService</code></a>,
 <a href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>, 
and <a href="#_rgsvc_spi_RoutingService"><code>RoutingService</code></a>.</p> 
+              <p>For a small number of domain services, all implementations 
are used (following the chain-of-responsibility pattern), not just the first 
one. The services in question are: <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_ContentMappingService"><code>ContentMappingService</code></a>,
 <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>,
 and <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_RoutingService"><code>RoutingService</code></a>.</p>
 
              </div> </td> 
            </tr> 
           </tbody>
          </table> 
         </div> 
         <div class="paragraph"> 
-         <p>For example, suppose you wanted to provide your own implementation 
of <a href="#_rgsvc_api_LocaleProvider"><code>LocaleProvider</code></a>. 
Here’s how:</p> 
+         <p>For example, suppose you wanted to provide your own implementation 
of <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_LocaleProvider"><code>LocaleProvider</code></a>.
 Here’s how:</p> 
         </div> 
         <div class="listingblock"> 
          <div class="content"> 
@@ -619,22 +619,22 @@
         </div> 
         <div class="ulist"> 
          <ul> 
-          <li> <p>the (request-scoped) <a 
href="#_rgsvc_api_CommandContext"><code>CommandContext</code></a> captures the 
user’s intention to invoke an action or edit a property; this is held by the 
<code>Command</code> object.</p> </li> 
-          <li> <p>if a <a 
href="#_rgsvc_spi_CommandService"><code>CommandService</code></a> has been 
configured, then this will be used to create the <code>Command</code> object 
implementation, generally so that it can then also be persisted.<br></p> 
+          <li> <p>the (request-scoped) <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_CommandContext"><code>CommandContext</code></a>
 captures the user’s intention to invoke an action or edit a property; this 
is held by the <code>Command</code> object.</p> </li> 
+          <li> <p>if a <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_CommandService"><code>CommandService</code></a>
 has been configured, then this will be used to create the <code>Command</code> 
object implementation, generally so that it can then also be persisted.<br></p> 
            <div class="paragraph"> 
-            <p>If the action or property is annotated to be invoked in the 
background (using <a 
href="rgant.html#_rgant-Action_command"><code>@Action#command…​()</code></a>
 or <a 
href="rgant.html#_rgant-Property_command"><code>@Property#command…​()</code></a>)
 then no further work is done. But, if the action/property is to be executed in 
the foreground, then the interaction continues.</p> 
+            <p>If the action or property is annotated to be invoked in the 
background (using <a 
href="../rgant/rgant.html#_rgant-Action_command"><code>@Action#command…​()</code></a>
 or <a 
href="../rgant/rgant.html#_rgant-Property_command"><code>@Property#command…​()</code></a>)
 then no further work is done. But, if the action/property is to be executed in 
the foreground, then the interaction continues.</p> 
            </div> </li> 
-          <li> <p>the (request-scoped) <a 
href="#_rgsvc_api_InteractionContext"><code>InteractionContext</code></a> 
domain service acts as a factory for the <code>Interaction</code> object, which 
keeps track of the call-graph of executions 
(<code>Interaction.Execution</code>) of either action invocations or property 
edits. In the majority of cases there is likely to be just a single top-level 
node of this graph, but for applications that use the <a 
href="#_rgsvc_api_WrapperFactory"><code>WrapperFactory</code></a> extensively 
each successive call results in a new child execution.</p> </li> 
-          <li> <p>before and after each action invocation/property edit, a <a 
href="rgcms.html#_rgcms_classes_domainevent">domain event</a> is may be 
broadcast to all subscribers. Whether this occurs depends on whether the 
action/property has been annotated (using <a 
href="rgant.html#_rgant-Action_domainEvent"><code>@Action#domainEvent()</code></a>
 or <a 
href="rgant.html#_rgant-Property_domainEvent"><code>@Property#domainEvent()</code></a>).<br></p>
 
+          <li> <p>the (request-scoped) <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_InteractionContext"><code>InteractionContext</code></a>
 domain service acts as a factory for the <code>Interaction</code> object, 
which keeps track of the call-graph of executions 
(<code>Interaction.Execution</code>) of either action invocations or property 
edits. In the majority of cases there is likely to be just a single top-level 
node of this graph, but for applications that use the <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_WrapperFactory"><code>WrapperFactory</code></a>
 extensively each successive call results in a new child execution.</p> </li> 
+          <li> <p>before and after each action invocation/property edit, a <a 
href="../rgcms/rgcms.html#_rgcms_classes_domainevent">domain event</a> is may 
be broadcast to all subscribers. Whether this occurs depends on whether the 
action/property has been annotated (using <a 
href="../rgant/rgant.html#_rgant-Action_domainEvent"><code>@Action#domainEvent()</code></a>
 or <a 
href="../rgant/rgant.html#_rgant-Property_domainEvent"><code>@Property#domainEvent()</code></a>).<br></p>
 
            <div class="paragraph"> 
             <p>(Note that susbcribers will also receive events for vetoing the 
action/property; this is not shown on the diagram).</p> 
            </div> </li> 
-          <li> <p>As each execution progresses, and objects that are modified 
are "enlisted" into the (internal) <a 
href="rgfis.html#_rgfis_spi_ChangedObjectsServiceInternal"><code>ChangedObjectsServiceInternal</code></a>
 domain service. Metrics as to which objects are merely loaded into memory are 
also captured using the <a 
href="#_rgsvc_api_MetricsService"><code>MetricsService</code></a> (not shown on 
the diagram).</p> </li> 
-          <li> <p>At the end of each execution, details of that execution are 
published through the (internal) <a 
href="rgfis.html#_rgfis_spi_PublisherServiceInternal"><code>PublisherServiceInternal</code></a>
 domain service. This is only done for actions/properties annotated appropriate 
(with <a 
href="rgant.html#_rgant-Action_publishing"><code>@Action#publishing()</code></a>
 or <a 
href="rgant.html#_rgant-Property_publishing"><code>@Property#publishing()</code></a>).
 <br></p> 
+          <li> <p>As each execution progresses, and objects that are modified 
are "enlisted" into the (internal) <a 
href="../rgfis/rgfis.html#_rgfis_spi_ChangedObjectsServiceInternal"><code>ChangedObjectsServiceInternal</code></a>
 domain service. Metrics as to which objects are merely loaded into memory are 
also captured using the <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_MetricsService"><code>MetricsService</code></a>
 (not shown on the diagram).</p> </li> 
+          <li> <p>At the end of each execution, details of that execution are 
published through the (internal) <a 
href="../rgfis/rgfis.html#_rgfis_spi_PublisherServiceInternal"><code>PublisherServiceInternal</code></a>
 domain service. This is only done for actions/properties annotated appropriate 
(with <a 
href="../rgant/rgant.html#_rgant-Action_publishing"><code>@Action#publishing()</code></a>
 or <a 
href="../rgant/rgant.html#_rgant-Property_publishing"><code>@Property#publishing()</code></a>).
 <br></p> 
            <div class="paragraph"> 
-            <p>The internal service delegates in turn to any registered <a 
href="#_rgsvc_spi_PublishingService"><code>PublishingService</code></a> 
(deprecated) and also to any registered <a 
href="#_rgsvc_spi_PublisherService"><code>PublisherService</code></a>s (there 
may be more than one).</p> 
+            <p>The internal service delegates in turn to any registered <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_PublishingService"><code>PublishingService</code></a>
 (deprecated) and also to any registered <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_PublisherService"><code>PublisherService</code></a>s
 (there may be more than one).</p> 
            </div> </li> 
-          <li> <p>At the end of each transaction, details of all changed 
objects are published, again through the (internal) <a 
href="rgfis.html#_rgfis_spi_PublisherServiceInternal"><code>PublisherServiceInternal</code></a>
 to any registered <code>PublishingService</code> or 
<code>PublisherService</code> implementations. Only domain objects specified to 
be published with <a 
href="rgant.html#_rgant-DomainObject_publishing"><code>@DomainObject#publishing()</code></a>
 are published.<br></p> 
+          <li> <p>At the end of each transaction, details of all changed 
objects are published, again through the (internal) <a 
href="../rgfis/rgfis.html#_rgfis_spi_PublisherServiceInternal"><code>PublisherServiceInternal</code></a>
 to any registered <code>PublishingService</code> or 
<code>PublisherService</code> implementations. Only domain objects specified to 
be published with <a 
href="../rgant/rgant.html#_rgant-DomainObject_publishing"><code>@DomainObject#publishing()</code></a>
 are published.<br></p> 
            <div class="admonitionblock note"> 
             <table> 
              <tbody>
@@ -642,26 +642,26 @@
                <td class="icon"> <i class="fa icon-note" title="Note"></i> 
</td> 
                <td class="content"> 
                 <div class="paragraph"> 
-                 <p>Note that it’s possible for there to be more than one 
transaction per top-level interaction, by virtue of the <a 
href="#_rgsvc_api_TransactionService"><code>TransactionService</code></a>.</p> 
+                 <p>Note that it’s possible for there to be more than one 
transaction per top-level interaction, by virtue of the <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_TransactionService"><code>TransactionService</code></a>.</p>
 
                 </div> </td> 
               </tr> 
              </tbody>
             </table> 
            </div> </li> 
-          <li> <p>Also at the end of each transaction, details of all changed 
properties are passed to any registered <a 
href="#_rgsvc_spi_AuditerService"><code>AuditerService</code></a> or <a 
href="#_rgsvc_spi_AuditingService"><code>AuditingService</code></a> (the latter 
deprecated) by way of the (internal) <a 
href="rgfis.html#_rgfis_spi_AuditingServiceInternal"><code>AuditingServiceInternal</code></a>
 domain service.</p> </li> 
+          <li> <p>Also at the end of each transaction, details of all changed 
properties are passed to any registered <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_AuditerService"><code>AuditerService</code></a>
 or <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_AuditingService"><code>AuditingService</code></a>
 (the latter deprecated) by way of the (internal) <a 
href="../rgfis/rgfis.html#_rgfis_spi_AuditingServiceInternal"><code>AuditingServiceInternal</code></a>
 domain service.</p> </li> 
          </ul> 
         </div> 
         <div class="paragraph"> 
-         <p>Implementations of <a 
href="#_rgsvc_spi_CommandService"><code>CommandService</code></a> can use the 
<code>Command#getMemento()</code> method to obtain a XML equivalent of that 
<code>Command</code>, reified using the <a 
href="rgcms.html#_rgcms_schema-cmd"><code>cmd.xsd</code></a> schema. This can 
be converted back into a <code>CommandDto</code> using the 
<code>CommandDtoUtils</code> utility class (part of the applib).</p> 
+         <p>Implementations of <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_CommandService"><code>CommandService</code></a>
 can use the <code>Command#getMemento()</code> method to obtain a XML 
equivalent of that <code>Command</code>, reified using the <a 
href="../rgcms/rgcms.html#_rgcms_schema-cmd"><code>cmd.xsd</code></a> schema. 
This can be converted back into a <code>CommandDto</code> using the 
<code>CommandDtoUtils</code> utility class (part of the applib).</p> 
         </div> 
         <div class="paragraph"> 
-         <p>Similarly, implementations of <a 
href="#_rgsvc_spi_PublisherService"><code>PublisherService</code></a> can use 
the <code>InteractionDtoUtils</code> utility class to obtain a 
<code>InteractionDto</code> representing the interaction, either just for a 
single execution or for the entire call-graph. This can be converted into XML 
in a similar fashion.</p> 
+         <p>Similarly, implementations of <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_PublisherService"><code>PublisherService</code></a>
 can use the <code>InteractionDtoUtils</code> utility class to obtain a 
<code>InteractionDto</code> representing the interaction, either just for a 
single execution or for the entire call-graph. This can be converted into XML 
in a similar fashion.</p> 
         </div> 
         <div class="paragraph"> 
          <p>Likewise, the <code>PublishedObjects</code> class passed to the 
<code>PublisherService</code> at the end of the interaction provides the 
<code>PublishedObjects#getDto()</code> method which returns a 
<code>ChangesDto</code> instance. This can be converted into XML using the 
<code>ChangesDtoUtils</code> utility class.</p> 
         </div> 
         <div class="paragraph"> 
-         <p>One final point: multiple <a 
href="#_rgsvc_spi_PublisherService"><code>PublisherService</code></a> 
implementations are supported because different implementations may have 
different responsibilities. For example, the (non-ASF) <a 
href="http://github.com/isisaddons/isis-module-publishmq";>Isis addons' 
publishmq</a> module is responsible for publishing messages onto an ActiveMQ 
event bus, for inter-system communication. However, the SPI can also be used 
for profiling; each execution within the call-graph contains metrics of the 
number of objects loaded or modified as a result of that execution, and thus 
could be used for application profiling. The framework provides a default 
<code>PublisherServiceLogging</code> implementation that logs this using 
SLF4J.</p> 
+         <p>One final point: multiple <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_PublisherService"><code>PublisherService</code></a>
 implementations are supported because different implementations may have 
different responsibilities. For example, the (non-ASF) <a 
href="http://github.com/isisaddons/isis-module-publishmq";>Isis addons' 
publishmq</a> module is responsible for publishing messages onto an ActiveMQ 
event bus, for inter-system communication. However, the SPI can also be used 
for profiling; each execution within the call-graph contains metrics of the 
number of objects loaded or modified as a result of that execution, and thus 
could be used for application profiling. The framework provides a default 
<code>PublisherServiceLogging</code> implementation that logs this using 
SLF4J.</p> 
         </div> 
        </div> 
       </div> 
@@ -696,7 +696,7 @@
         </thead> 
         <tbody> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_ContentMappingService"><code>o.a.i.applb.</code><br> 
<code>services.conmap</code><br> 
<code>ContentMappingService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_ContentMappingService"><code>o.a.i.applb.</code><br>
 <code>services.conmap</code><br> 
<code>ContentMappingService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
@@ -707,18 +707,18 @@
           <td class="tableblock halign-left valign-top"><p 
class="tableblock">Replaces (and simplifies) the earlier 
<code>ContentMappingService</code> that defined an SPI using classes internal 
to the framework.<br> + No default implementation.</p></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_EmailNotificationService"><code>o.a.i.applib.</code><br> 
<code>services.userreg</code><br> 
<code>EmailNotificationService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_EmailNotificationService"><code>o.a.i.applib.</code><br>
 <code>services.userreg</code><br> 
<code>EmailNotificationService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
-             <p>Notify a user during <a 
href="#_rgsvc_spi_UserRegistrationService">self-registration</a> of users.</p> 
+             <p>Notify a user during <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_UserRegistrationService">self-registration</a>
 of users.</p> 
             </div>
            </div></td> 
           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>EmailNotificationService-</code><br> 
<code>Default</code><br> <code>o.a.i.core</code><br> 
<code>isis-core-runtime</code></p></td> 
           <td class="tableblock halign-left valign-top"><p 
class="tableblock">depends on:<br> a configured 
<code>EmailService</code></p></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_ErrorReportingService"><code>o.a.i.applib.</code><br> 
<code>services.error</code><br> <code>ErrorReportingService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_ErrorReportingService"><code>o.a.i.applib.</code><br>
 <code>services.error</code><br> 
<code>ErrorReportingService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
@@ -729,7 +729,7 @@
           <td class="tableblock halign-left valign-top"></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_ExceptionRecognizer"><code>o.a.i.applib.</code><br> 
<code>services.exceprecog</code><br> 
<code>ExceptionRecognizer2</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_ExceptionRecognizer"><code>o.a.i.applib.</code><br>
 <code>services.exceprecog</code><br> 
<code>ExceptionRecognizer2</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
@@ -740,7 +740,7 @@
           <td class="tableblock halign-left valign-top"><p 
class="tableblock">Extensible using composite pattern if required</p></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_GridSystemService"><code>o.a.i.applib.</code><br> 
<code>services.grid</code><br> <code>GridSystemService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridSystemService"><code>o.a.i.applib.</code><br>
 <code>services.grid</code><br> <code>GridSystemService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
@@ -751,7 +751,7 @@
           <td class="tableblock halign-left valign-top"></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_GridLoaderService"><code>o.a.i.applib.</code><br> 
<code>services.grid</code><br> <code>GridLoaderService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridLoaderService"><code>o.a.i.applib.</code><br>
 <code>services.grid</code><br> <code>GridLoaderService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
@@ -762,18 +762,18 @@
           <td class="tableblock halign-left valign-top"></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_GridService"><code>o.a.i.applib.</code><br> 
<code>services.grid</code><br> <code>GridService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridService"><code>o.a.i.applib.</code><br>
 <code>services.grid</code><br> <code>GridService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
-             <p>A facade on top of both <a 
href="#_rgsvc_spi_GridLoaderService"><code>GridLoaderService</code></a> and <a 
href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>, thus 
being able to return normalized grids for any domain class.</p> 
+             <p>A facade on top of both <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridLoaderService"><code>GridLoaderService</code></a>
 and <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>,
 thus being able to return normalized grids for any domain class.</p> 
             </div>
            </div></td> 
           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>GridServiceDefault</code><br> 
<code>o.a.i.core</code><br> <code>isis-core-metamodel</code></p></td> 
           <td class="tableblock halign-left valign-top"></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_HintStore"><code>o.a.i.applib.</code><br> 
<code>services.hint</code><br> <code>HintStore</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_HintStore"><code>o.a.i.applib.</code><br> 
<code>services.hint</code><br> <code>HintStore</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
@@ -784,18 +784,18 @@
           <td class="tableblock halign-left valign-top"></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_LocaleProvider"><code>o.a.i.applib.</code><br> 
<code>services.i18n</code><br> <code>LocaleProvider</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_LocaleProvider"><code>o.a.i.applib.</code><br>
 <code>services.i18n</code><br> <code>LocaleProvider</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
-             <p>Request-scoped service to return the locale of the current 
user, in support of i18n (ie so that the app’s UI, messages and exceptions 
can be translated to the required locale by the <a 
href="#_rgsvc_spi_TranslationService"><code>TranslationService</code></a>.</p> 
+             <p>Request-scoped service to return the locale of the current 
user, in support of i18n (ie so that the app’s UI, messages and exceptions 
can be translated to the required locale by the <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_TranslationService"><code>TranslationService</code></a>.</p>
 
             </div>
            </div></td> 
           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>LocaleProviderWicket</code><br> 
<code>o.a.i.viewer</code><br> <code>isis-viewer-wicket-impl</code></p></td> 
           <td class="tableblock halign-left valign-top"></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_RoutingService"><code>o.a.i.applib.</code><br> 
<code>services.routing</code><br> <code>RoutingService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_RoutingService"><code>o.a.i.applib.</code><br>
 <code>services.routing</code><br> <code>RoutingService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
@@ -803,10 +803,10 @@
             </div>
            </div></td> 
           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>RoutingServiceDefault</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">The default implementation will return the home page (per <a 
href="#_rgsvc_api_HomePageProviderService"><code>HomePageProviderService</code></a>)
 if a void or null is returned.<br> Used by the <a href="ugvw.html">Wicket 
viewer</a> only.</p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock">The default implementation will return the home page (per <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_HomePageProviderService"><code>HomePageProviderService</code></a>)
 if a void or null is returned.<br> Used by the <a 
href="../ugvw/ugvw.html">Wicket viewer</a> only.</p></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_TableColumnOrderService"><code>o.a.i.applib.</code><br> 
<code>services.tablecol</code><br> <code>TableColumn-</code><br> 
<code>OrderService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_TableColumnOrderService"><code>o.a.i.applib.</code><br>
 <code>services.tablecol</code><br> <code>TableColumn-</code><br> 
<code>OrderService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
@@ -817,29 +817,29 @@
           <td class="tableblock halign-left valign-top"></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_TranslationService"><code>o.a.i.applib.</code><br> 
<code>services.i18n</code><br> <code>TranslationService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_TranslationService"><code>o.a.i.applib.</code><br>
 <code>services.i18n</code><br> <code>TranslationService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
-             <p>Translate an app’s UI, messages and exceptions for the 
current user (as per the locale provided by <a 
href="#_rgsvc_spi_LocaleProvider"><code>LocalProvider</code></a>.</p> 
+             <p>Translate an app’s UI, messages and exceptions for the 
current user (as per the locale provided by <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_LocaleProvider"><code>LocalProvider</code></a>.</p>
 
             </div>
            </div></td> 
           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>TranslationServicePo</code><br> 
<code>o.a.i.core</code><br> <code>isis-core-runtime</code></p></td> 
           <td class="tableblock halign-left valign-top"><p 
class="tableblock">related services: <code>TranslationServicePoMenu</code><br> 
depends on:<br> <code>TranslationsResolver</code>, 
<code>LocaleProvider</code></p></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_TranslationsResolver"><code>o.a.i.applib.</code><br> 
<code>services.i18n</code><br> <code>TranslationsResolver</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_TranslationsResolver"><code>o.a.i.applib.</code><br>
 <code>services.i18n</code><br> <code>TranslationsResolver</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
-             <p>Obtain translations for a particuar phrase and locale, in 
support of i18n (ie so that the app’s UI, messages and exceptions can be 
translated to the required locale by the <a 
href="#_rgsvc_spi_TranslationService"><code>TranslationService</code></a></p> 
+             <p>Obtain translations for a particuar phrase and locale, in 
support of i18n (ie so that the app’s UI, messages and exceptions can be 
translated to the required locale by the <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_TranslationService"><code>TranslationService</code></a></p>
 
             </div>
            </div></td> 
           <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>TranslationsResolverWicket</code><br> 
<code>o.a.i.viewer</code><br> <code>isis-viewer-wicket-impl</code></p></td> 
           <td class="tableblock halign-left valign-top"></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_UrlEncodingService"><code>o.a.i.applib.</code><br> 
<code>services.urlencoding</code><br> 
<code>UrlEncodingService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_UrlEncodingService"><code>o.a.i.applib.</code><br>
 <code>services.urlencoding</code><br> 
<code>UrlEncodingService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
@@ -850,7 +850,7 @@
           <td class="tableblock halign-left valign-top"></td> 
          </tr> 
          <tr> 
-          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="#_rgsvc_spi_UserProfileService"><code>o.a.i.applib.</code><br> 
<code>services.userprof</code><br> <code>UserProfileService</code></a></p></td> 
+          <td class="tableblock halign-left valign-top"><p 
class="tableblock"><a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_UserProfileService"><code>o.a.i.applib.</code><br>
 <code>services.userprof</code><br> 
<code>UserProfileService</code></a></p></td> 
           <td class="tableblock halign-left valign-top">
            <div>
             <div class="paragraph"> 
@@ -876,10 +876,10 @@
        <div class="sect2"> 
         <h3 id="_rgsvc_spi_ContentMappingService">3.1. 
<code>ContentMappingService</code></h3> 
         <div class="paragraph"> 
-         <p>The <code>ContentMappingService</code> supports the (default 
implementation of the) <a 
href="rgfis.html#_rgfis_spi_ContentNegotiationService"><code>ContentNegotiationService</code></a>
 allowing the <a href="ugvro.html">RestfulObjects viewer</a> to allow domain 
objects to be transformed into some other format as specified by the HTTP 
<code>Accept</code> header.</p> 
+         <p>The <code>ContentMappingService</code> supports the (default 
implementation of the) <a 
href="../rgfis/rgfis.html#_rgfis_spi_ContentNegotiationService"><code>ContentNegotiationService</code></a>
 allowing the <a href="../ugvro/ugvro.html">RestfulObjects viewer</a> to allow 
domain objects to be transformed into some other format as specified by the 
HTTP <code>Accept</code> header.</p> 
         </div> 
         <div class="paragraph"> 
-         <p>See <a 
href="rgfis.html#_rgfis_spi_ContentNegotiationService"><code>ContentNegotiationService</code></a>
 for further discussion.</p> 
+         <p>See <a 
href="../rgfis/rgfis.html#_rgfis_spi_ContentNegotiationService"><code>ContentNegotiationService</code></a>
 for further discussion.</p> 
         </div> 
         <div class="admonitionblock note"> 
          <table> 
@@ -888,7 +888,7 @@
             <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
             <td class="content"> 
              <div class="paragraph"> 
-              <p>Unlike most other domain services, the framework (that is, 
<code>ContentNegotiationService</code>) will check <em>all</em> available 
implementations of <code>ContentMappingService</code> to convert the domain 
object to the requested media type, rather than merely the first implementation 
found; in other words it uses the chain-of-responsibility pattern. Services are 
checked in the ordering defined by <a 
href="rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>).
 The mapped object used will be the first non-<code>null</code> result returned 
by an implementation.</p> 
+              <p>Unlike most other domain services, the framework (that is, 
<code>ContentNegotiationService</code>) will check <em>all</em> available 
implementations of <code>ContentMappingService</code> to convert the domain 
object to the requested media type, rather than merely the first implementation 
found; in other words it uses the chain-of-responsibility pattern. Services are 
checked in the ordering defined by <a 
href="../rgant/rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>).
 The mapped object used will be the first non-<code>null</code> result returned 
by an implementation.</p> 
              </div> </td> 
            </tr> 
           </tbody>
@@ -922,7 +922,7 @@
           </table> 
          </div> 
          <div class="paragraph"> 
-          <p>In versions prior to <code>v1.12.0</code>, this interface resided 
in a different package, internal to the <a href="#ugvro.adoc">Restful 
Objects</a> viewer, and defined a slightly different signature that used an 
internal enum:</p> 
+          <p>In versions prior to <code>v1.12.0</code>, this interface resided 
in a different package, internal to the <a href="../ugvro/ugvro.html">Restful 
Objects</a> viewer, and defined a slightly different signature that used an 
internal enum:</p> 
          </div> 
          <div class="listingblock"> 
           <div class="content"> 
@@ -987,23 +987,23 @@
         <div class="sect3"> 
          <h4 id="_related_services">3.1.3. Related Services</h4> 
          <div class="paragraph"> 
-          <p>This service is a companion to the default implementation of the 
<a 
href="rgfis.html#_rgfis_spi_ContentNegotiationService"><code>ContentNegotiationService</code></a>.</p>
 
+          <p>This service is a companion to the default implementation of the 
<a 
href="../rgfis/rgfis.html#_rgfis_spi_ContentNegotiationService"><code>ContentNegotiationService</code></a>.</p>
 
          </div> 
         </div> 
        </div> 
        <div class="sect2"> 
         <h3 id="_rgsvc_spi_EmailNotificationService">3.2. 
<code>EmailNotificationService</code></h3> 
         <div class="paragraph"> 
-         <p>The <code>EmailNotificationService</code> supports the <a 
href="ugvw.html#_ugvw_features_user-registration">user registration</a> (self 
sign-up) features of the <a href="ugvw.html">Wicket viewer</a> whereby a user 
can sign-up to access an application by providing a valid email address.</p> 
+         <p>The <code>EmailNotificationService</code> supports the <a 
href="../ugvw/ugvw.html#_ugvw_features_user-registration">user registration</a> 
(self sign-up) features of the <a href="../ugvw/ugvw.html">Wicket viewer</a> 
whereby a user can sign-up to access an application by providing a valid email 
address.</p> 
         </div> 
         <div class="paragraph"> 
-         <p>The Wicket viewer will check whether an implementation of this 
service (and also the <a 
href="#_rgsvc_spi_UserRegistrationService"><code>UserRegistrationService</code></a>)
 is available, and if so will (unless configured not to) expose a sign-up page 
where the user enters their email address. A verification email is sent using 
this service; the email includes a link back to the running application. The 
user then completes the registration process (choosing a user name, password 
and so on) and the Wicket viewer creates an account for them (using the 
aforementioned <code>UserRegistrationService</code>).</p> 
+         <p>The Wicket viewer will check whether an implementation of this 
service (and also the <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_UserRegistrationService"><code>UserRegistrationService</code></a>)
 is available, and if so will (unless configured not to) expose a sign-up page 
where the user enters their email address. A verification email is sent using 
this service; the email includes a link back to the running application. The 
user then completes the registration process (choosing a user name, password 
and so on) and the Wicket viewer creates an account for them (using the 
aforementioned <code>UserRegistrationService</code>).</p> 
         </div> 
         <div class="paragraph"> 
          <p>The role of this service in all of this is to format and send out 
emails for the initial registration, or for password resets.</p> 
         </div> 
         <div class="paragraph"> 
-         <p>The default implementation of this service uses the <a 
href="#_rgsvc_api_EmailService"><code>EmailService</code></a>, which must be 
configured in order for user registration to be enabled.</p> 
+         <p>The default implementation of this service uses the <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_EmailService"><code>EmailService</code></a>,
 which must be configured in order for user registration to be enabled.</p> 
         </div> 
         <div class="sect3"> 
          <h4 id="_spi_2">3.2.1. SPI</h4> 
@@ -1058,7 +1058,7 @@
            <p>If you have configured an alternative email service 
implementation, it should process the message body as HTML.</p> 
           </div> 
           <div class="paragraph"> 
-           <p>If you wish to write an alternative implementation of this 
service, note that (unlike most Apache Isis domain services) the implementation 
is also instantiated and injected by Google Guice. This is because 
<code>EmailNotificationService</code> is used as part of the <a 
href="ugvw.html#_ugvw_features_user-registration">user registration</a> 
functionality and is used by Wicket pages that are accessed outside of the 
usual Apache Isis runtime.</p> 
+           <p>If you wish to write an alternative implementation of this 
service, note that (unlike most Apache Isis domain services) the implementation 
is also instantiated and injected by Google Guice. This is because 
<code>EmailNotificationService</code> is used as part of the <a 
href="../ugvw/ugvw.html#_ugvw_features_user-registration">user registration</a> 
functionality and is used by Wicket pages that are accessed outside of the 
usual Apache Isis runtime.</p> 
           </div> 
           <div class="paragraph"> 
            <p>This implies a couple of additional constraints:</p> 
@@ -1077,19 +1077,19 @@
         <div class="sect3"> 
          <h4 id="_registering_the_service">3.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.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the 
app</a>) then Apache Isis' default implementation of 
<code>EmailNotificationService</code> service is automatically registered and 
injected (it is annotated with <code>@DomainService</code>) so no further 
configuration is required.</p> 
+          <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>EmailNotificationService</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.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>
 (as explained in the <a 
href="#__rgsvc_intro_overriding-the-services">introduction</a> to this 
guide).</p> 
+          <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 class="sect3"> 
          <h4 id="_related_services_2">3.2.4. Related Services</h4> 
          <div class="paragraph"> 
-          <p>As noted elsewhere, the default implementation of this service 
uses <a href="#_rgsvc_api_EmailService"><code>EmailService</code></a>. This 
service has no specific configuration properties but does require that the 
<code>EmailService</code> has been configured.</p> 
+          <p>As noted elsewhere, the default implementation of this service 
uses <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_EmailService"><code>EmailService</code></a>.
 This service has no specific configuration properties but does require that 
the <code>EmailService</code> has been configured.</p> 
          </div> 
          <div class="paragraph"> 
-          <p>Conversely, this service is used by (Isis' default implementation 
of) <a 
href="#_rgsvc_spi_UserRegistrationService"><code>UserRegistrationService</code></a>.</p>
 
+          <p>Conversely, this service is used by (Isis' default implementation 
of) <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_UserRegistrationService"><code>UserRegistrationService</code></a>.</p>
 
          </div> 
         </div> 
        </div> 
@@ -1128,11 +1128,11 @@
            <tbody>
             <tr> 
              <td><i class="conum" data-value="1"></i><b>1</b></td> 
-             <td>the main message to be displayed to the end-user. The service 
is responsible for translating this into the language of the end-user (it can 
use <a href="#_rgsvc_spi_LocaleProvider"><code>LocaleProvider</code></a> if 
required).</td> 
+             <td>the main message to be displayed to the end-user. The service 
is responsible for translating this into the language of the end-user (it can 
use <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_LocaleProvider"><code>LocaleProvider</code></a>
 if required).</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="2"></i><b>2</b></td> 
-             <td>whether this message has already been recognized by an <a 
href="#_rgsvc_spi_ExceptionRecognizer"><code>ExceptionRecognizer</code></a> 
service. Generally this converts potentially non-recoverable (fatal) exceptions 
into recoverable exceptions (warnings) as well providing an alternative 
mechanism for generating user-friendly error messages.</td> 
+             <td>whether this message has already been recognized by an <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_ExceptionRecognizer"><code>ExceptionRecognizer</code></a>
 service. Generally this converts potentially non-recoverable (fatal) 
exceptions into recoverable exceptions (warnings) as well providing an 
alternative mechanism for generating user-friendly error messages.</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="3"></i><b>3</b></td> 
@@ -1217,7 +1217,7 @@
         <div class="sect3"> 
          <h4 id="_registering_the_services">3.3.3. Registering the 
Services</h4> 
          <div class="paragraph"> 
-          <p>There is no default implementation of this service. To register 
your own implementation (and assuming that an <code>AppManifest</code> is being 
used to <a href="rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap 
the app</a>), then just ensure that the implementation is on the classpath and 
the module containing the implementation is returned in 
<code>AppManifest#getModules()</code>.</p> 
+          <p>There is no default implementation of this service. To register 
your own implementation (and assuming that an <code>AppManifest</code> is being 
used to <a 
href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap 
the app</a>), then just ensure that the implementation is on the classpath and 
the module containing the implementation is returned in 
<code>AppManifest#getModules()</code>.</p> 
          </div> 
         </div> 
        </div> 
@@ -1329,7 +1329,7 @@
           </table> 
          </div> 
          <div class="paragraph"> 
-          <p>In essence, if an exception is recognized then it is also 
categorized. This lets the viewer act accordingly. For example, if an exception 
is raised from the loading of an individual object, then this is passed by the 
registered <code>ExceptionRecognizer</code>s. If any of these recognize the 
exception as representing a not-found exception, then an Apache Isis 
<code>ObjectNotFoundException</code> is raised. Both the viewers interprets 
this correctly (the <a href="ugvw.html">Wicket viewer</a> as a suitable error 
page, the <a href="ugvro.html">Restful Objects viewer</a> as a 404 status 
return code).</p> 
+          <p>In essence, if an exception is recognized then it is also 
categorized. This lets the viewer act accordingly. For example, if an exception 
is raised from the loading of an individual object, then this is passed by the 
registered <code>ExceptionRecognizer</code>s. If any of these recognize the 
exception as representing a not-found exception, then an Apache Isis 
<code>ObjectNotFoundException</code> is raised. Both the viewers interprets 
this correctly (the <a href="../ugvw/ugvw.html">Wicket viewer</a> as a suitable 
error page, the <a href="../ugvro/ugvro.html">Restful Objects viewer</a> as a 
404 status return code).</p> 
          </div> 
          <div class="paragraph"> 
           <p>If the implementation recognizes the exception then it returns a 
user-friendly message to be rendered (by the viewer) back to the user; 
otherwise it returns <code>null</code>. There is no need for the implementation 
to check for exception causes; the casual chain is unwrapped by Apache Isis 
core and each exception in the chain will also be passed through to the 
recognizer (from most specific to least). The recognizer implementation can 
therefore be as fine-grained or as coarse-grained as it wishes.</p> 
@@ -1360,7 +1360,7 @@
         <div class="sect3"> 
          <h4 id="_registering_the_services_2">3.4.3. Registering the 
Services</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.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the 
app</a>) then the default implementations provided by the framework 
(<code>DomainObjectContainerDefault</code> and 
<code>ExceptionRecognizerCompositeForJdoObjectStore</code>) will be 
registered.</p> 
+          <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 the default implementations provided by the framework 
(<code>DomainObjectContainerDefault</code> and 
<code>ExceptionRecognizerCompositeForJdoObjectStore</code>) will be 
registered.</p> 
          </div> 
          <div class="paragraph"> 
           <p>In addition, you can register any further exception recognizers 
in <code>isis.properties</code>:</p> 
@@ -1386,7 +1386,7 @@
           </table> 
          </div> 
          <div class="paragraph"> 
-          <p>If the JDO exception recognizers are not required (rather 
unlikely), then they can be disabled en-masse using the <a 
href="rgcfg.html#_rgcfg_configuring-core">configuration property</a> 
<code>isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable</code>.</p>
 
+          <p>If the JDO exception recognizers are not required (rather 
unlikely), then they can be disabled en-masse using the <a 
href="../rgcfg/rgcfg.html#_rgcfg_configuring-core">configuration property</a> 
<code>isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable</code>.</p>
 
          </div> 
         </div> 
        </div> 
@@ -1405,7 +1405,7 @@
             <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
             <td class="content"> 
              <div class="paragraph"> 
-              <p>Unlike most other domain services, the framework will check 
<em>all</em> available implementations of <code>GridSystemService</code> to 
obtain available grid systems, rather than merely the first implementation 
found; in other words it uses the chain-of-responsibility pattern. Services are 
called in the order defined by <a 
href="rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>).</p>
 
+              <p>Unlike most other domain services, the framework will check 
<em>all</em> available implementations of <code>GridSystemService</code> to 
obtain available grid systems, rather than merely the first implementation 
found; in other words it uses the chain-of-responsibility pattern. Services are 
called in the order defined by <a 
href="../rgant/rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>).</p>
 
              </div> 
              <div class="paragraph"> 
               <p>Note though that each concrete implementation must also 
provide corresponding Wicket viewer components capable of interpreting the grid 
layout.</p> 
@@ -1437,7 +1437,7 @@
            <tbody>
             <tr> 
              <td><i class="conum" data-value="1"></i><b>1</b></td> 
-             <td>The concrete subclass of <code>Grid</code> supported by this 
implementation. As noted in the introduction, there can be multiple 
implementations of this service, but there can only be one implementation per 
concrete subclass. As is normal practice, the service with the lowest <a 
href="rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>
 takes precedence.</td> 
+             <td>The concrete subclass of <code>Grid</code> supported by this 
implementation. As noted in the introduction, there can be multiple 
implementations of this service, but there can only be one implementation per 
concrete subclass. As is normal practice, the service with the lowest <a 
href="../rgant/rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>
 takes precedence.</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="2"></i><b>2</b></td> 
@@ -1453,15 +1453,15 @@
             </tr> 
             <tr> 
              <td><i class="conum" data-value="5"></i><b>5</b></td> 
-             <td>Validates and normalizes a grid, modifying the grid so that 
all of the domain object’s members (properties, collections, actions) are 
bound to regions of the grid. This is done using existing metadata, most 
notably that of the <a 
href="rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a> annotation. 
Such a grid, if persisted as the layout XML file for the domain class, allows 
the <code>@MemberOrder</code> annotation to be removed from the source code of 
the domain class (but other annotations must be retained).</td> 
+             <td>Validates and normalizes a grid, modifying the grid so that 
all of the domain object’s members (properties, collections, actions) are 
bound to regions of the grid. This is done using existing metadata, most 
notably that of the <a 
href="../rgant/rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a> 
annotation. Such a grid, if persisted as the layout XML file for the domain 
class, allows the <code>@MemberOrder</code> annotation to be removed from the 
source code of the domain class (but other annotations must be retained).</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="6"></i><b>6</b></td> 
-             <td>Takes a normalized grid and enriches it with additional 
metadata (taken from Apache Isis' internal metadata) that can be represented in 
the layout XML. Such a grid, if persisted as the layout XML file for the domain 
class, allows all layout annotations (<a 
href="rgant.html#_rgant-ActionLayout"><code>@ActionLayout</code></a>, <a 
href="rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a> and <a 
href="rgant.html#_rgant-CollectionLayout"><code>@CollectionLayout</code></a>) 
to be removed from the source code of the domain class.</td> 
+             <td>Takes a normalized grid and enriches it with additional 
metadata (taken from Apache Isis' internal metadata) that can be represented in 
the layout XML. Such a grid, if persisted as the layout XML file for the domain 
class, allows all layout annotations (<a 
href="../rgant/rgant.html#_rgant-ActionLayout"><code>@ActionLayout</code></a>, 
<a 
href="../rgant/rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a>
 and <a 
href="../rgant/rgant.html#_rgant-CollectionLayout"><code>@CollectionLayout</code></a>)
 to be removed from the source code of the domain class.</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="7"></i><b>7</b></td> 
-             <td>Takes a normalized grid and strips out removes all members, 
leaving only the grid structure. Such a grid, if persisted as the layout XML 
file for the domain class, requires that the <a 
href="rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a> annotation 
is retained in the source code of said class in order to bind members to the 
regions of the grid.</td> 
+             <td>Takes a normalized grid and strips out removes all members, 
leaving only the grid structure. Such a grid, if persisted as the layout XML 
file for the domain class, requires that the <a 
href="../rgant/rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a> 
annotation is retained in the source code of said class in order to bind 
members to the regions of the grid.</td> 
             </tr> 
            </tbody>
           </table> 
@@ -1470,22 +1470,22 @@
         <div class="sect3"> 
          <h4 id="_implementation_4">3.5.2. Implementation</h4> 
          <div class="paragraph"> 
-          <p>The framework provides <code>GridSystemServiceBS3</code>, an 
implementation that encodes the bootstrap3 grid system. (The framework also 
provides <a href="#ugvw.adoc">Wicket viewer</a> components that are capable of 
interpreting and rendering this metadata).</p> 
+          <p>The framework provides <code>GridSystemServiceBS3</code>, an 
implementation that encodes the bootstrap3 grid system. (The framework also 
provides <a href="../ugvw/ugvw.html">Wicket viewer</a> components that are 
capable of interpreting and rendering this metadata).</p> 
          </div> 
         </div> 
         <div class="sect3"> 
          <h4 id="_registering_the_services_3">3.5.3. Registering the 
Services</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.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the 
app</a>), then the Bootstrap3 default implementation of 
<code>GridSystemService</code> is automatically registered and injected, and no 
further configuration is required.</p> 
+          <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 the Bootstrap3 default implementation of 
<code>GridSystemService</code> is automatically registered and injected, and no 
further configuration is required.</p> 
          </div> 
          <div class="paragraph"> 
-          <p>To use an alternative implementation, use <a 
href="rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>
 (as explained in the <a 
href="#__rgsvc_intro_overriding-the-services">introduction</a> to this 
guide).</p> 
+          <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 class="sect3"> 
          <h4 id="_related_services_3">3.5.4. Related Services</h4> 
          <div class="paragraph"> 
-          <p>This service is used by <a 
href="#_rgsvc_spi_GridService"><code>GridService</code></a>.</p> 
+          <p>This service is used by <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridService"><code>GridService</code></a>.</p>
 
          </div> 
         </div> 
        </div> 
@@ -1518,7 +1518,7 @@
             </tr> 
             <tr> 
              <td><i class="conum" data-value="2"></i><b>2</b></td> 
-             <td>support metamodel invalidation/rebuilding of spec, eg as 
called by this <a 
href="rgcms.html#__rgcms_classes_mixins_Object_rebuildMetamodel">Object 
mixin</a> action.</td> 
+             <td>support metamodel invalidation/rebuilding of spec, eg as 
called by this <a 
href="../rgcms/rgcms.html#__rgcms_classes_mixins_Object_rebuildMetamodel">Object
 mixin</a> action.</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="3"></i><b>3</b></td> 
@@ -1526,7 +1526,7 @@
             </tr> 
             <tr> 
              <td><i class="conum" data-value="4"></i><b>4</b></td> 
-             <td>returns a new instance of a <a 
href="rgcms.html#__rgcms_classes_layout_component"><code>Grid</code></a> for 
the specified domain class, eg as loaded from a <code>layout.xml</code> file. 
If none exists, will return null (and the calling <a 
href="#_rgsvc_spi_GridService"><code>GridService</code></a> will use <a 
href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a> to 
obtain a default grid for the domain class).</td> 
+             <td>returns a new instance of a <a 
href="../rgcms/rgcms.html#__rgcms_classes_layout_component"><code>Grid</code></a>
 for the specified domain class, eg as loaded from a <code>layout.xml</code> 
file. If none exists, will return null (and the calling <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridService"><code>GridService</code></a> 
will use <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>
 to obtain a default grid for the domain class).</td> 
             </tr> 
            </tbody>
           </table> 
@@ -1544,16 +1544,16 @@
         <div class="sect3"> 
          <h4 id="_registering_the_services_4">3.6.3. Registering the 
Services</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.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the 
app</a>), then the default implementation of <code>GridLoaderService</code> is 
automatically registered and injected, and no further configuration is 
required.</p> 
+          <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 the default implementation of <code>GridLoaderService</code> 
is automatically registered and injected, and no further configuration is 
required.</p> 
          </div> 
          <div class="paragraph"> 
-          <p>To use an alternative implementation, use <a 
href="rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>
 (as explained in the <a 
href="#__rgsvc_intro_overriding-the-services">introduction</a> to this 
guide).</p> 
+          <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 class="sect3"> 
          <h4 id="_related_services_4">3.6.4. Related Services</h4> 
          <div class="paragraph"> 
-          <p>This service is used by <a 
href="#_rgsvc_spi_GridService"><code>GridService</code></a>.</p> 
+          <p>This service is used by <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridService"><code>GridService</code></a>.</p>
 
          </div> 
         </div> 
        </div> 
@@ -1564,8 +1564,8 @@
         </div> 
         <div class="ulist"> 
          <ul> 
-          <li> <p>to <a 
href="#_rgsvc_spi_GridLoaderService"><code>GridLoaderService</code></a> to load 
a pre-existing layout for the domain class, if possible</p> </li> 
-          <li> <p>to <a 
href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a> to 
normalize the grid with respect to Apache Isis' internal metamodel, in other 
words to ensure that all of the domain objects' properties, collections and 
actions are associated with regions of the grid.</p> </li> 
+          <li> <p>to <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridLoaderService"><code>GridLoaderService</code></a>
 to load a pre-existing layout for the domain class, if possible</p> </li> 
+          <li> <p>to <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>
 to normalize the grid with respect to Apache Isis' internal metamodel, in 
other words to ensure that all of the domain objects' properties, collections 
and actions are associated with regions of the grid.</p> </li> 
          </ul> 
         </div> 
         <div class="paragraph"> 
@@ -1599,15 +1599,15 @@
             </tr> 
             <tr> 
              <td><i class="conum" data-value="2"></i><b>2</b></td> 
-             <td>support metamodel invalidation/rebuilding of spec, eg as 
called by this <a 
href="rgcms.html#__rgcms_classes_mixins_Object_rebuildMetamodel">Object 
mixin</a> action.</td> 
+             <td>support metamodel invalidation/rebuilding of spec, eg as 
called by this <a 
href="../rgcms/rgcms.html#__rgcms_classes_mixins_Object_rebuildMetamodel">Object
 mixin</a> action.</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="3"></i><b>3</b></td> 
-             <td>whether any persisted layout metadata (eg a 
<code>.layout.xml</code> file) exists for this domain class. Just delegates to 
corresponding method in <a 
href="#_rgsvc_spi_GridLoaderService"><code>GridLoaderService</code></a>.</td> 
+             <td>whether any persisted layout metadata (eg a 
<code>.layout.xml</code> file) exists for this domain class. Just delegates to 
corresponding method in <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridLoaderService"><code>GridLoaderService</code></a>.</td>
 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="4"></i><b>4</b></td> 
-             <td>returns a new instance of a <a 
href="rgcms.html#__rgcms_classes_layout_component"><code>Grid</code></a> for 
the specified domain class, eg as loaded from a <code>layout.xml</code> file. 
If none exists, will return null (and the calling <a 
href="#_rgsvc_spi_GridService"><code>GridService</code></a> will use <a 
href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a> to 
obtain a default grid for the domain class).</td> 
+             <td>returns a new instance of a <a 
href="../rgcms/rgcms.html#__rgcms_classes_layout_component"><code>Grid</code></a>
 for the specified domain class, eg as loaded from a <code>layout.xml</code> 
file. If none exists, will return null (and the calling <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridService"><code>GridService</code></a> 
will use <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>
 to obtain a default grid for the domain class).</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="5"></i><b>5</b></td> 
@@ -1615,21 +1615,21 @@
             </tr> 
             <tr> 
              <td><i class="conum" data-value="6"></i><b>6</b></td> 
-             <td>validates and normalizes a grid, modifying the grid so that 
all of the domain object’s members (properties, collections, actions) are 
bound to regions of the grid. This is done using existing metadata, most 
notably that of the <a 
href="rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a> annotation. 
Such a grid, if persisted as the layout XML file for the domain class, allows 
the <code>@MemberOrder</code> annotation to be removed from the source code of 
the domain class (but other annotations must be retained).</td> 
+             <td>validates and normalizes a grid, modifying the grid so that 
all of the domain object’s members (properties, collections, actions) are 
bound to regions of the grid. This is done using existing metadata, most 
notably that of the <a 
href="../rgant/rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a> 
annotation. Such a grid, if persisted as the layout XML file for the domain 
class, allows the <code>@MemberOrder</code> annotation to be removed from the 
source code of the domain class (but other annotations must be retained).</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="7"></i><b>7</b></td> 
-             <td>Takes a normalized grid and enriches it with additional 
metadata (taken from Apache Isis' internal metadata) that can be represented in 
the layout XML. Such a grid, if persisted as the layout XML file for the domain 
class, allows all layout annotations (<a 
href="rgant.html#_rgant-ActionLayout"><code>@ActionLayout</code></a>, <a 
href="rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a> and <a 
href="rgant.html#_rgant-CollectionLayout"><code>@CollectionLayout</code></a>) 
to be removed from the source code of the domain class.</td> 
+             <td>Takes a normalized grid and enriches it with additional 
metadata (taken from Apache Isis' internal metadata) that can be represented in 
the layout XML. Such a grid, if persisted as the layout XML file for the domain 
class, allows all layout annotations (<a 
href="../rgant/rgant.html#_rgant-ActionLayout"><code>@ActionLayout</code></a>, 
<a 
href="../rgant/rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a>
 and <a 
href="../rgant/rgant.html#_rgant-CollectionLayout"><code>@CollectionLayout</code></a>)
 to be removed from the source code of the domain class.</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="8"></i><b>8</b></td> 
-             <td>Takes a normalized grid and strips out removes all members, 
leaving only the grid structure. Such a grid, if persisted as the layout XML 
file for the domain class, requires that the <a 
href="rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a> annotation 
is retained in the source code of said class in order to bind members to the 
regions of the grid.</td> 
+             <td>Takes a normalized grid and strips out removes all members, 
leaving only the grid structure. Such a grid, if persisted as the layout XML 
file for the domain class, requires that the <a 
href="../rgant/rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a> 
annotation is retained in the source code of said class in order to bind 
members to the regions of the grid.</td> 
             </tr> 
            </tbody>
           </table> 
          </div> 
          <div class="paragraph"> 
-          <p>The first four methods just delegate to the corresponding methods 
in <a href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>, 
while the last four delegate to the corresponding method in <a 
href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>. The 
service inspects the <code>Grid</code>'s concrete class to determine which 
actual <code>GridSystemService</code> instance to delegate to.</p> 
+          <p>The first four methods just delegate to the corresponding methods 
in <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>,
 while the last four delegate to the corresponding method in <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>.
 The service inspects the <code>Grid</code>'s concrete class to determine which 
actual <code>GridSystemService</code> instance to delegate to.</p> 
          </div> 
         </div> 
         <div class="sect3"> 
@@ -1641,26 +1641,26 @@
         <div class="sect3"> 
          <h4 id="_registering_the_services_5">3.7.3. Registering the 
Services</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.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the 
app</a>), then the default implementation of <code>GridLoaderService</code> is 
automatically registered and injected, and no further configuration is 
required.</p> 
+          <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 the default implementation of <code>GridLoaderService</code> 
is automatically registered and injected, and no further configuration is 
required.</p> 
          </div> 
          <div class="paragraph"> 
-          <p>To use an alternative implementation, use <a 
href="rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>
 (as explained in the <a 
href="#__rgsvc_intro_overriding-the-services">introduction</a> to this guide). 
That said, there should be little reason to use a different implementation; if 
behaviour does need to be changed, it would also be possible to replace the 
implementation of either the <code>GridLoaderService</code> or the 
<code>GridSystemService</code>.</p> 
+          <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). That said, there should be little reason to use a different 
implementation; if behaviour does need to be changed, it would also be possible 
to replace the implementation of either the <code>GridLoaderService</code> or 
the <code>GridSystemService</code>.</p> 
          </div> 
         </div> 
         <div class="sect3"> 
          <h4 id="_related_services_5">3.7.4. Related Services</h4> 
          <div class="paragraph"> 
-          <p>This service calls <a 
href="#_rgsvc_spi_GridLoaderService"><code>GridLoaderService</code></a> and <a 
href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>.</p> 
+          <p>This service calls <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridLoaderService"><code>GridLoaderService</code></a>
 and <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>.</p>
 
          </div> 
          <div class="paragraph"> 
-          <p>This service is called by <a 
href="#_rgsvc_api_LayoutService"><code>LayoutService</code></a>, exposed in the 
UI through <code>LayoutServiceMenu</code> (to download the layout XML as a zip 
file for all domain objects) and the <a 
href="rgcms.html#_rgcms_classes_mixins_Object"><code>downloadLayoutXml()</code></a>
 mixin (to download the layout XML for a single domain object).</p> 
+          <p>This service is called by <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_LayoutService"><code>LayoutService</code></a>,
 exposed in the UI through <code>LayoutServiceMenu</code> (to download the 
layout XML as a zip file for all domain objects) and the <a 
href="../rgcms/rgcms.html#_rgcms_classes_mixins_Object"><code>downloadLayoutXml()</code></a>
 mixin (to download the layout XML for a single domain object).</p> 
          </div> 
         </div> 
        </div> 
        <div class="sect2"> 
         <h3 id="_rgsvc_spi_HintStore">3.8. <code>HintStore</code></h3> 
         <div class="paragraph"> 
-         <p>The <code>HintStore</code> service defines an SPI for the <a 
href="ugvw.html">Wicket viewer</a> to store UI hints on a per-object basis. For 
example, the viewer remembers which tabs are selected, and for collections 
which view is selected (eg table or hidden), which page of a table to render, 
or whether "show all" (rows) is toggled.</p> 
+         <p>The <code>HintStore</code> service defines an SPI for the <a 
href="../ugvw/ugvw.html">Wicket viewer</a> to store UI hints on a per-object 
basis. For example, the viewer remembers which tabs are selected, and for 
collections which view is selected (eg table or hidden), which page of a table 
to render, or whether "show all" (rows) is toggled.</p> 
         </div> 
         <div class="paragraph"> 
          <p>The default implementation of this service uses the HTTP session. 
The service is an SPI because the amount of data stored could potentially be 
quite large (for large numbers of users who use the app all day). An SPI makes 
it easy to plug in an alternative implementation that is more sophisticated 
than the default (eg implementing MRU/LRU queue, or using a NoSQL database, or 
simply to disabling the functionality altogether).</p> 
@@ -1686,7 +1686,7 @@
            <tbody>
             <tr> 
              <td><i class="conum" data-value="1"></i><b>1</b></td> 
-             <td>obtain a hint (eg which tab to open) for a particular object. 
Object identity is represented by <code>Bookmark</code>, as per the <a 
href="#_rgsvc_api_BookmarkService"><code>BookmarkService</code></a>, so that 
alternative implementations can easily serialize this state to a string.</td> 
+             <td>obtain a hint (eg which tab to open) for a particular object. 
Object identity is represented by <code>Bookmark</code>, as per the <a 
href="../rgsvc/rgsvc.html#_rgsvc_api_BookmarkService"><code>BookmarkService</code></a>,
 so that alternative implementations can easily serialize this state to a 
string.</td> 
             </tr> 
             <tr> 
              <td><i class="conum" data-value="2"></i><b>2</b></td> 
@@ -1717,23 +1717,23 @@
         <div class="sect3"> 
          <h4 id="_registering_the_service_2">3.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.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the 
app</a>) then Apache Isis' core implementation of <code>HintStore</code> 
service is automatically registered and injected (it is annotated with 
<code>@DomainService</code>) so no further configuration is required.</p> 
+          <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>HintStore</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.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>
 (as explained in the <a 
href="#__rgsvc_intro_overriding-the-services">introduction</a> to this 
guide).</p> 
+          <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 class="sect3"> 
          <h4 id="_related_services_6">3.8.4. Related Services</h4> 
          <div class="paragraph"> 
-          <p>The <a href="#ugvw.adoc">Wicket viewer</a> exposes the <a 
href="rgcms.html#__rgcms_classes_mixins_Object_clearHints">"clear hints"</a> 
mixin action that is for use by end-users of the application to clear any UI 
hints that have accumulated for a domain object.</p> 
+          <p>The <a href="../ugvw/ugvw.html">Wicket viewer</a> exposes the <a 
href="../rgcms/rgcms.html#__rgcms_classes_mixins_Object_clearHints">"clear 
hints"</a> mixin action that is for use by end-users of the application to 
clear any UI hints that have accumulated for a domain object.</p> 
          </div> 
         </div> 
        </div> 
        <div class="sect2"> 
         <h3 id="_rgsvc_spi_LocaleProvider">3.9. 
<code>LocaleProvider</code></h3> 
         <div class="paragraph"> 
-         <p>The <code>LocaleProvider</code> service is one of the services 
that work together to implement Apache Isis' support for i18n, being used by 
Isis' default implementation of <a 
href="#_rgsvc_spi_TranslationService"><code>TranslationService</code></a>.</p> 
+         <p>The <code>LocaleProvider</code> service is one of the services 
that work together to implement Apache Isis' support for i18n, being used by 
Isis' default implementation of <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_TranslationService"><code>TranslationService</code></a>.</p>
 
         </div> 
         <div class="paragraph"> 
          <p>The role of the service itself is simply to return the 
<code>Locale</code> of the current user.</p> 
@@ -1745,7 +1745,7 @@
             <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
             <td class="content"> 
              <div class="paragraph"> 
-              <p>For the "big picture" and further details on Apache Isis' 
i18n support, see <a href="ugbtb.html#_ugbtb_i18n">here</a>.</p> 
+              <p>For the "big picture" and further details on Apache Isis' 
i18n support, see <a href="../ugbtb/ugbtb.html#_ugbtb_i18n">here</a>.</p> 
              </div> </td> 
            </tr> 
           </tbody>
@@ -1765,13 +1765,13 @@
           </div> 
          </div> 
          <div class="paragraph"> 
-          <p>This is notionally request-scoped, returning the 
<code>Locale</code> of the current user; <em>not</em> that of the server. (Note 
that the implementation is not required to actually be <a 
href="rgant.html#_rgant-RequestScoped"><code>@RequestScoped</code></a>, 
however).</p> 
+          <p>This is notionally request-scoped, returning the 
<code>Locale</code> of the current user; <em>not</em> that of the server. (Note 
that the implementation is not required to actually be <a 
href="../rgant/rgant.html#_rgant-RequestScoped"><code>@RequestScoped</code></a>,
 however).</p> 
          </div> 
         </div> 
         <div class="sect3"> 
          <h4 id="_implementation_8">3.9.2. Implementation</h4> 
          <div class="paragraph"> 
-          <p>Isis' <a href="ugvw.html">Wicket viewer</a> provides an 
implementation of this service (<code>LocaleProviderWicket</code>) which 
leverages Apache Wicket APIs.</p> 
+          <p>Isis' <a href="../ugvw/ugvw.html">Wicket viewer</a> provides an 
implementation of this service (<code>LocaleProviderWicket</code>) which 
leverages Apache Wicket APIs.</p> 
          </div> 
          <div class="admonitionblock note"> 
           <table> 
@@ -1780,7 +1780,7 @@
              <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
              <td class="content"> 
               <div class="paragraph"> 
-               <p>Currently there is no equivalent implementation for the <a 
href="ugvro.html">RestfulObjects viewer</a>.</p> 
+               <p>Currently there is no equivalent implementation for the <a 
href="../ugvro/ugvro.html">RestfulObjects viewer</a>.</p> 
               </div> </td> 
             </tr> 
            </tbody>
@@ -1790,16 +1790,16 @@
         <div class="sect3"> 
          <h4 id="_registering_the_services_6">3.9.3. Registering the 
Services</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.html#_rgcms_classes_AppManifest-bootstrapping">bootstrap the 
app</a>), <em>and</em> that the <a href="ugvw.html">Wicket viewer</a> is being 
used, then an implementation of <code>LocaleProvider</code> is automatically 
registered and injected (it is annotated with <code>@DomainService</code>) so 
no further configuration is required.</p> 
+          <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>), <em>and</em> that the <a href="../ugvw/ugvw.html">Wicket 
viewer</a> is being used, then an implementation of <code>LocaleProvider</code> 
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.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>
 (as explained in the <a 
href="#__rgsvc_intro_overriding-the-services">introduction</a> to this 
guide).</p> 
+          <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 class="sect3"> 
          <h4 id="_related_services_7">3.9.4. Related Services</h4> 
          <div class="paragraph"> 
-          <p>This service works in conjunction with <a 
href="#_rgsvc_spi_TranslationService"><code>TranslationService</code></a> and 
<a 
href="#_rgsvc_spi_TranslationsResolver"><code>TranslationsResolver</code></a> 
in order to provide i18n support.</p> 
+          <p>This service works in conjunction with <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_TranslationService"><code>TranslationService</code></a>
 and <a 
href="../rgsvc/rgsvc.html#_rgsvc_spi_TranslationsResolver"><code>TranslationsResolver</c

<TRUNCATED>

Reply via email to