http://git-wip-us.apache.org/repos/asf/isis-site/blob/8b42f65e/content/guides/ugtst/ugtst.html
----------------------------------------------------------------------
diff --git a/content/guides/ugtst/ugtst.html b/content/guides/ugtst/ugtst.html
index f9b23fc..0179ec7 100644
--- a/content/guides/ugtst/ugtst.html
+++ b/content/guides/ugtst/ugtst.html
@@ -1347,30 +1347,75 @@ CustomerRepository customers;</code></pre>
           <p>Integration tests instantiate an Apache Isis "runtime" (as a 
singleton) within a JUnit test. Because (depending on the size of your app) it 
takes a little time to bootstrap Apache Isis, the framework caches the runtime 
on a thread-local from one test to the next.</p> 
          </div> 
          <div class="paragraph"> 
-          <p>Nevertheless, we do need to bootstrap the runtime for the very 
first test.</p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>As of 1.9.0 the bootstrapping of integration tests and webapps 
has been simplified through the <a 
href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping"><code>AppManifest</code></a>
 class. Since this isn’t mandatory, for now we present both techniques.</p> 
+          <p>Newer releases of the framework reduce the amount of boilerplate 
to do this; this guide documents multiple versions.</p> 
          </div> 
          <div class="paragraph"> 
           <p>The example code in this section is taken from the app generated 
by the <a 
href="../ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp 
archetype</a>.</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_system_initializer">4.2.1. System Initializer</h4> 
+          <h4 id="_1_15_0_snapshot">4.2.1. 1.15.0-SNAPSHOT</h4> 
           <div class="paragraph"> 
-           <p>The bootstrapping itself is performed by a "system initializer" 
class. This is responsible for instantiating the Apache Isis runtime, and 
binding it to a thread-local.</p> 
+           <p>In <code>1.15.0-SNAPSHOT</code> the bootstrapping is 
accomplished using a combination of <code>AppManifestAbstract</code> (a 
framework-provided implementation of <a 
href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping"><code>AppManifest</code></a>)
 and <code>IntegrationTestAbstract2</code> superclass.</p> 
           </div> 
-          <div class="sect4"> 
-           <h5 id="_1_13_0_improved_intent">1.13.0 (Improved intent)</h5> 
-           <div class="paragraph"> 
-            <p>As of <code>1.13.0</code>, the 
<code>IsisConfigurationForJdoIntegTests</code> (which provides a number of 
configuration settings specifically for running integration tests) can be 
removed; instead all configuration properties can be defined through the 
<code>AppManifest</code>:</p> 
+          <div class="paragraph"> 
+           <p>For example, the <a 
href="../ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp 
archetype</a>'s integration tests all inherit from this class:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span 
class="directive">public</span> <span class="directive">abstract</span> <span 
class="type">class</span> <span class="class">DomainAppIntegTestAbstract</span> 
<span class="directive">extends</span> IntegrationTestAbstract2 {
+
+    <span class="annotation">@BeforeClass</span>
+    <span class="directive">public</span> <span 
class="directive">static</span> <span class="type">void</span> initSystem() {
+        bootstrapUsing(<span class="keyword">new</span> 
DomainAppAppManifest());
+    }
+
+}</code></pre> 
            </div> 
-           <div class="paragraph"> 
-            <p>For example:</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>where <code>DomainAppAppManifest</code> in turn 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">DomainAppAppManifest</span> <span 
class="directive">extends</span> AppManifestAbstract {
+
+    <span class="directive">public</span> <span 
class="directive">static</span> <span class="directive">final</span> Builder 
BUILDER = Builder.forModules(
+                    SimpleModuleDomSubmodule.class,
+                    DomainAppApplicationModuleFixtureSubmodule.class,
+                    DomainAppApplicationModuleServicesSubmodule.class
+            )
+            .withConfigurationPropertiesFile(DomainAppAppManifest.class,
+                    <span class="string"><span class="delimiter">"</span><span 
class="content">isis.properties</span><span class="delimiter">"</span></span>,
+                    <span class="string"><span class="delimiter">"</span><span 
class="content">authentication_shiro.properties</span><span 
class="delimiter">"</span></span>,
+                    <span class="string"><span class="delimiter">"</span><span 
class="content">persistor_datanucleus.properties</span><span 
class="delimiter">"</span></span>,
+                    <span class="string"><span class="delimiter">"</span><span 
class="content">viewer_restfulobjects.properties</span><span 
class="delimiter">"</span></span>,
+                    <span class="string"><span class="delimiter">"</span><span 
class="content">viewer_wicket.properties</span><span 
class="delimiter">"</span></span>
+            ).withAuthMechanism(<span class="string"><span 
class="delimiter">"</span><span class="content">shiro</span><span 
class="delimiter">"</span></span>);
+
+    <span class="directive">public</span> DomainAppAppManifest() {
+        <span class="local-variable">super</span>(BUILDER);
+    }
+}</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">class</span> <span 
class="class">DomainAppSystemInitializer</span> {
+          </div> 
+          <div class="paragraph"> 
+           <p>The <code>AppManifestAbstract</code> class (which is also used 
to bootstrap the regular app as well as integration tests) is discussed further 
<a 
href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">here</a>, 
while the <code>IntegrationTestAbstract2</code> class is discussed further <a 
href="#_ugtst_integ-test-support_abstract-class">here</a>.</p> 
+          </div> 
+         </div> 
+         <div class="sect3"> 
+          <h4 id="_1_13_0">4.2.2. 1.13.0</h4> 
+          <div class="paragraph"> 
+           <p>In <code>1.13.0</code> the bootstrapping itself is typically 
performed by a "system initializer" class. This is responsible for 
instantiating the Apache Isis runtime (based on a provided 
<code>AppManifest</code>) and binding it to a thread-local.</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>The <code>AppManifest.Util</code> class allows configuration 
properties for integration testing to be defined (replacing the 
<code>IsisConfigurationForJdoIntegTests</code> of earlier releases).</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>For example:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span 
class="directive">public</span> <span class="type">class</span> <span 
class="class">DomainAppSystemInitializer</span> {
     <span class="directive">public</span> <span 
class="directive">static</span> <span class="type">void</span> initIsft() {
         IsisSystemForTest isft = IsisSystemForTest.getElseNull();
         <span class="keyword">if</span>(isft == <span 
class="predefined-constant">null</span>) {
@@ -1392,20 +1437,62 @@ CustomerRepository customers;</code></pre>
         }
     }
 }</code></pre> 
-            </div> 
-           </div> 
-           <div class="paragraph"> 
-            <p>While the code is slightly longer than previously, the 
responsibilities for returning the configuration properties to use for the test 
now reside in a single location. The new <code>AppManifest.Util</code> class 
provides the helper methods to actually add in the appropriate config 
properties.</p> 
            </div> 
           </div> 
-          <div class="sect4"> 
-           <h5 id="_1_9_0_code_appmanifest_code">1.9.0 
(<code>AppManifest</code>)</h5> 
-           <div class="paragraph"> 
-            <p>As of 1.9.0, the code (using <code>AppManifest</code>) is:</p> 
+          <div class="paragraph"> 
+           <p>The above code uses the <code>AppManifest.Util</code> helper 
class, which provides a number of static methods that can be used to set up <a 
href="#_ugtst_integ-test-support_configuration-properties">configuration 
properties</a> appropriate for integration testing (eg run using an in-memory 
database). This allows the responsibility of returning the configuration 
properties to belong exclusively to the <code>AppManifest</code>.</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>There are three such static methods:</p> 
+          </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">AppManifest</span> {
+  ...
+  public <span class="directive">static</span> <span class="type">class</span> 
<span class="class">Util</span> {
+    <span class="directive">public</span> <span 
class="directive">static</span> <span 
class="predefined-type">Map</span>&lt;<span 
class="predefined-type">String</span>,<span 
class="predefined-type">String</span>&gt;
+        withJavaxJdoRunInMemoryProperties(<span 
class="predefined-type">Map</span>&lt;<span 
class="predefined-type">String</span>, <span 
class="predefined-type">String</span>&gt; map) { ... }   <i class="conum" 
data-value="1"></i><b>(1)</b>
+    <span class="directive">public</span> <span 
class="directive">static</span> <span 
class="predefined-type">Map</span>&lt;<span 
class="predefined-type">String</span>,<span 
class="predefined-type">String</span>&gt;
+        withDataNucleusProperties(<span 
class="predefined-type">Map</span>&lt;<span 
class="predefined-type">String</span>, <span 
class="predefined-type">String</span>&gt; map) { ... }           <i 
class="conum" data-value="2"></i><b>(2)</b>
+    <span class="directive">public</span> <span 
class="directive">static</span> <span 
class="predefined-type">Map</span>&lt;<span 
class="predefined-type">String</span>,<span 
class="predefined-type">String</span>&gt;
+        withIsisIntegTestProperties(<span 
class="predefined-type">Map</span>&lt;<span 
class="predefined-type">String</span>, <span 
class="predefined-type">String</span>&gt; map) { ... }         <i class="conum" 
data-value="3"></i><b>(3)</b>
+  }
+}</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">class</span> <span 
class="class">DomainAppSystemInitializer</span> {
+          </div> 
+          <div class="colist arabic"> 
+           <table> 
+            <tbody>
+             <tr> 
+              <td><i class="conum" data-value="1"></i><b>1</b></td> 
+              <td>sets up the <code>javax.jdo.option.Connection*</code> 
properties so as to run against an in-memory instance of HSQLDB</td> 
+             </tr> 
+             <tr> 
+              <td><i class="conum" data-value="2"></i><b>2</b></td> 
+              <td>sets up DataNucleus to automatically create the databse 
schema, as well as a number of other standard properties (disable persistence 
by reachability, support mixed case identifiers, disable level 2 cache)</td> 
+             </tr> 
+             <tr> 
+              <td><i class="conum" data-value="3"></i><b>3</b></td> 
+              <td>sets up standard properties for the Apache Isis framework, 
most specifically to enable fixtures to be installed.</td> 
+             </tr> 
+            </tbody>
+           </table> 
+          </div> 
+         </div> 
+         <div class="sect3"> 
+          <h4 id="_1_9_0">4.2.3. 1.9.0</h4> 
+          <div class="paragraph"> 
+           <p>In <code>1.9.0</code> the <code>AppManifest</code> was 
introduced as mechanism to specify all parts (domain code, framework 
components, configuation properties) that make up a running application.</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>The suggested way to use this concept was using a "system 
initializer" class. This uses a <code>IsisConfigurationForJdoIntegTests</code> 
class to bring together the configuration properties (discussed further <a 
href="#_ugtst_integ-test-support_configuration-properties">here</a>) to 
bootstrap the application.</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>For example:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span 
class="directive">public</span> <span class="type">class</span> <span 
class="class">DomainAppSystemInitializer</span> {
     <span class="directive">public</span> <span 
class="directive">static</span> <span class="type">void</span> initIsft() {
         IsisSystemForTest isft = IsisSystemForTest.getElseNull();
         <span class="keyword">if</span>(isft == <span 
class="predefined-constant">null</span>) {
@@ -1419,14 +1506,14 @@ CustomerRepository customers;</code></pre>
         }
     }
 }</code></pre> 
-            </div> 
-           </div> 
-           <div class="paragraph"> 
-            <p>where <code>DomainAppAppManifest</code> in turn is defined 
as:</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">DomainAppAppManifest</span> <span 
class="directive">implements</span> AppManifest {
+          </div> 
+          <div class="paragraph"> 
+           <p>where <code>DomainAppAppManifest</code> in turn is defined 
as:</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">DomainAppAppManifest</span> <span 
class="directive">implements</span> AppManifest {
     <span class="annotation">@Override</span>
     <span class="directive">public</span> <span 
class="predefined-type">List</span>&lt;<span 
class="predefined-type">Class</span>&lt;?&gt;&gt; getModules() {
         <span class="keyword">return</span> <span 
class="predefined-type">Arrays</span>.asList(
@@ -1437,20 +1524,20 @@ CustomerRepository customers;</code></pre>
     }
     ...
 }</code></pre> 
-            </div> 
-           </div> 
-           <div class="paragraph"> 
-            <p>Further details on bootstrapping with the 
<code>AppManifest</code> can be found in the <a 
href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">reference 
guide</a>.</p> 
            </div> 
           </div> 
-          <div class="sect4"> 
-           <h5 id="_1_8_0_and_earlier">1.8.0 and earlier</h5> 
-           <div class="paragraph"> 
-            <p>Prior to 1.9.0, the services and entities had to be specified 
in two separate locations. The suggested way to do this was to introduce a 
subclass of the <code>IsisSystemForTest.Builder</code> class:</p> 
-           </div> 
-           <div class="listingblock"> 
-            <div class="content"> 
-             <pre class="CodeRay highlight"><code data-lang="java"><span 
class="directive">private</span> <span class="directive">static</span> <span 
class="type">class</span> <span class="class">DomainAppSystemBuilder</span> 
<span class="directive">extends</span> IsisSystemForTest.Builder {      <i 
class="conum" data-value="1"></i><b>(1)</b>
+          <div class="paragraph"> 
+           <p>Further details on bootstrapping with the 
<code>AppManifest</code> can be found in the <a 
href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">reference 
guide</a>.</p> 
+          </div> 
+         </div> 
+         <div class="sect3"> 
+          <h4 id="_1_8_0_and_earlier">4.2.4. 1.8.0 and earlier</h4> 
+          <div class="paragraph"> 
+           <p>Prior to 1.9.0, the services and entities had to be specified in 
two separate locations. The suggested way to do this was to introduce a 
subclass of the <code>IsisSystemForTest.Builder</code> class:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span 
class="directive">private</span> <span class="directive">static</span> <span 
class="type">class</span> <span class="class">DomainAppSystemBuilder</span> 
<span class="directive">extends</span> IsisSystemForTest.Builder {      <i 
class="conum" data-value="1"></i><b>(1)</b>
     <span class="directive">public</span> DomainAppSystemBuilder() {
         withLoggingAt(org.apache.log4j.Level.INFO);
         with(testConfiguration());
@@ -1464,320 +1551,51 @@ CustomerRepository customers;</code></pre>
         <span class="keyword">return</span> testConfiguration;
     }
 }</code></pre> 
-            </div> 
-           </div> 
-           <div class="colist arabic"> 
-            <table> 
-             <tbody>
-              <tr> 
-               <td><i class="conum" data-value="1"></i><b>1</b></td> 
-               <td>subclass the framework-provided 
<code>IsisSystemForTest.Builder</code>.</td> 
-              </tr> 
-              <tr> 
-               <td><i class="conum" data-value="2"></i><b>2</b></td> 
-               <td>equivalent to <code>isis.persistor=datanucleus</code> in 
<code>isis.properties</code></td> 
-              </tr> 
-              <tr> 
-               <td><i class="conum" data-value="3"></i><b>3</b></td> 
-               <td>specify the <code>isis.services</code> key in 
<code>isis.properties</code> (where "domainapp" is the base package for all 
classes within the app)</td> 
-              </tr> 
-              <tr> 
-               <td><i class="conum" data-value="4"></i><b>4</b></td> 
-               <td><code>IsisConfigurationForJdoIntegTests</code> has 
pre-canned configuration for using an in-memory HSQLDB and other standard 
settings; more on this below.</td> 
-              </tr> 
-              <tr> 
-               <td><i class="conum" data-value="5"></i><b>5</b></td> 
-               <td>equivalent to 
<code>isis.persistor.datanucleus.RegisterEntities.packagePrefix</code> key 
(typically in <code>persistor_datanucleus.properties</code>)</td> 
-              </tr> 
-             </tbody>
-            </table> 
-           </div> 
-           <div class="paragraph"> 
-            <p>This builder could then be used within the system 
initializer:</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">DomainAppSystemInitializer</span> {
-    <span class="directive">public</span> <span 
class="directive">static</span> <span class="type">void</span> initIsft() {
-        IsisSystemForTest isft = IsisSystemForTest.getElseNull();
-        <span class="keyword">if</span>(isft == <span 
class="predefined-constant">null</span>) {
-            isft = <span class="keyword">new</span> DomainAppSystemBuilder()   
 <i class="conum" data-value="1"></i><b>(1)</b>
-                            .build()
-                            .setUpSystem();
-            IsisSystemForTest.set(isft);           <i class="conum" 
data-value="2"></i><b>(2)</b>
-        }
-    }
-    <span class="directive">private</span> <span 
class="directive">static</span> <span class="type">class</span> <span 
class="class">DomainAppSystemBuilder</span>
-        <span class="directive">extends</span> IsisSystemForTest.Builder { ... 
}
-}</code></pre> 
-            </div> 
-           </div> 
-           <div class="colist arabic"> 
-            <table> 
-             <tbody>
-              <tr> 
-               <td><i class="conum" data-value="1"></i><b>1</b></td> 
-               <td>instantiates and initializes the Apache Isis runtime (the 
<code>IsisSystemForTest</code> class)</td> 
-              </tr> 
-              <tr> 
-               <td><i class="conum" data-value="2"></i><b>2</b></td> 
-               <td>binds the runtime to a thread-local.</td> 
-              </tr> 
-             </tbody>
-            </table> 
            </div> 
           </div> 
-          <div class="sect4"> 
-           <h5 
id="_isisconfigurationforjdointegtests">IsisConfigurationForJdoIntegTests</h5> 
-           <div class="paragraph"> 
-            <p>Integration tests are configured programmatically, with a 
default set of properties to bootstrap the JDO/DataNucleus objectstore using an 
HSQLDB in-memory database.</p> 
-           </div> 
-           <div class="paragraph"> 
-            <p>To remove a little bit of boilerplate, the 
<code>IsisConfigurationForJdoIntegTests</code> class (in the 
<code>org.apache.isis.objectstore.jdo.datanucleus</code> package) can be used 
to bootstrap the application. If necessary, this class can be subclassed to 
override these defaults.</p> 
-           </div> 
-           <table class="tableblock frame-all grid-all spread"> 
-            <caption class="title">
-             Table 1. Default Configuration Properties for Integration Tests
-            </caption> 
-            <colgroup> 
-             <col style="width: 33.3333%;"> 
-             <col style="width: 16.6666%;"> 
-             <col style="width: 50.0001%;"> 
-            </colgroup> 
-            <thead> 
-             <tr> 
-              <th class="tableblock halign-left valign-top">Property</th> 
-              <th class="tableblock halign-left valign-top">Value</th> 
-              <th class="tableblock halign-left valign-top">Description</th> 
-             </tr> 
-            </thead> 
-            <tbody> 
-             <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>javax.jdo.option.ConnectionURL</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">jdbc:hsqldb:mem:test</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>JDBC URL</p> 
-                </div>
-               </div></td> 
-             </tr> 
-             <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>javax.jdo.option.ConnectionDriverName</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">org.hsqldb.jdbcDriver</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>JDBC Driver</p> 
-                </div>
-               </div></td> 
-             </tr> 
-             <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>javax.jdo.option.ConnectionUserName</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">sa</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>Username</p> 
-                </div>
-               </div></td> 
-             </tr> 
-             <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>javax.jdo.option.ConnectionPassword</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">&lt;empty string&gt;</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>Password, possibly encrypted (see 
<code>datanucleus.ConnectionPasswordEncrypter</code>, below).</p> 
-                </div>
-               </div></td> 
-             </tr> 
-             <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.ConnectionPasswordEncrypter</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">&lt;empty string&gt;</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>Specify the 
<code>datanucleus.ConnectionPasswordDecrypter</code> implementation used to 
decrypt the password.</p> 
-                </div> 
-                <div class="paragraph"> 
-                 <p>See the <a 
href="http://www.datanucleus.org/products/accessplatform_4_1/persistence_properties.html#ConnectionPasswordDecrypter";>DataNucleus
 documentation</a> for further details.</p> 
-                </div>
-               </div></td> 
-             </tr> 
-             <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.schema.autoCreateAll</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">true</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>Recreate DB for each test run (an in-memory database)</p> 
-                </div>
-               </div></td> 
-             </tr> 
-             <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.schema.validateAll</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">false</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>Disable validations (minimize bootstrap time)</p> 
-                </div>
-               </div></td> 
-             </tr> 
-             <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.persistenceByReachabilityAtCommit</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">false</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>As per WEB-INF/persistor_datanucleus.properties</p> 
-                </div>
-               </div></td> 
-             </tr> 
+          <div class="colist arabic"> 
+           <table> 
+            <tbody>
              <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.identifier.case</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">MixedCase</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>As per WEB-INF/persistor_datanucleus.properties</p> 
-                </div>
-               </div></td> 
+              <td><i class="conum" data-value="1"></i><b>1</b></td> 
+              <td>subclass the framework-provided 
<code>IsisSystemForTest.Builder</code>.</td> 
              </tr> 
              <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.cache.level2.type</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">none</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>As per WEB-INF/persistor_datanucleus.properties</p> 
-                </div>
-               </div></td> 
+              <td><i class="conum" data-value="2"></i><b>2</b></td> 
+              <td>equivalent to <code>isis.persistor=datanucleus</code> in 
<code>isis.properties</code></td> 
              </tr> 
              <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.cache.level2.mode</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">ENABLE_SELECTIVE</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>As per WEB-INF/persistor_datanucleus.properties</p> 
-                </div>
-               </div></td> 
+              <td><i class="conum" data-value="3"></i><b>3</b></td> 
+              <td>specify the <code>isis.services</code> key in 
<code>isis.properties</code> (where "domainapp" is the base package for all 
classes within the app)</td> 
              </tr> 
              <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.datanucleus.</code><br> 
<code>install-fixtures</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">true</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p>Automatically install any fixtures that might have been 
registered</p> 
-                </div>
-               </div></td> 
+              <td><i class="conum" data-value="4"></i><b>4</b></td> 
+              <td><code>IsisConfigurationForJdoIntegTests</code> has 
pre-canned configuration for using an in-memory HSQLDB and other standard 
settings; more on this below.</td> 
              </tr> 
              <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.persistor.</code><br> 
<code>enforceSafeSemantics</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">false</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div></div></td> 
+              <td><i class="conum" data-value="5"></i><b>5</b></td> 
+              <td>equivalent to 
<code>isis.persistor.datanucleus.RegisterEntities.packagePrefix</code> key 
(typically in <code>persistor_datanucleus.properties</code>)</td> 
              </tr> 
-             <tr> 
-              <td class="tableblock halign-left valign-top">
-               <div>
-                <div class="paragraph"> 
-                 <p><code>isis.deploymentType</code></p> 
-                </div>
-               </div></td> 
-              <td class="tableblock halign-left valign-top"><p 
class="tableblock">server_prototype</p></td> 
-              <td class="tableblock halign-left valign-top">
-               <div></div></td> 
-             </tr> 
-            </tbody> 
+            </tbody>
            </table> 
           </div> 
-         </div> 
-         <div class="sect3"> 
-          <h4 id="_abstract_class">4.2.2. Abstract Class</h4> 
-          <div class="paragraph"> 
-           <p>We recommend defining a base class for all your other classes to 
integration classes to inherit from. The main responsibility of this class is 
tocall the system initializer, described earlier. We only need the 
initialization to be performed once, so this call is performed in a 
<code>@BeforeClass</code> hook.</p> 
-          </div> 
           <div class="paragraph"> 
-           <p>The code below shows the general form:</p> 
+           <p>This builder could then be used within the system 
initializer:</p> 
           </div> 
           <div class="listingblock"> 
            <div class="content"> 
-            <pre class="CodeRay highlight"><code data-lang="java"><span 
class="directive">public</span> <span class="directive">abstract</span> <span 
class="type">class</span> <span class="class">DomainAppIntegTest</span> {
-    <span class="annotation">@BeforeClass</span>
-    <span class="directive">public</span> <span 
class="directive">static</span> <span class="type">void</span> initClass() {
-        org.apache.log4j.PropertyConfigurator.configure(<span 
class="string"><span class="delimiter">"</span><span 
class="content">logging.properties</span><span 
class="delimiter">"</span></span>);   <i class="conum" 
data-value="1"></i><b>(1)</b>
-        DomainAppSystemInitializer.initIsft();                                 
  <i class="conum" data-value="2"></i><b>(2)</b>
-        <span class="keyword">new</span> ScenarioExecutionForIntegration();    
                               <i class="conum" data-value="3"></i><b>(3)</b>
+            <pre class="CodeRay highlight"><code data-lang="java"><span 
class="directive">public</span> <span class="type">class</span> <span 
class="class">DomainAppSystemInitializer</span> {
+    <span class="directive">public</span> <span 
class="directive">static</span> <span class="type">void</span> initIsft() {
+        IsisSystemForTest isft = IsisSystemForTest.getElseNull();
+        <span class="keyword">if</span>(isft == <span 
class="predefined-constant">null</span>) {
+            isft = <span class="keyword">new</span> DomainAppSystemBuilder()   
 <i class="conum" data-value="1"></i><b>(1)</b>
+                            .build()
+                            .setUpSystem();
+            IsisSystemForTest.set(isft);           <i class="conum" 
data-value="2"></i><b>(2)</b>
+        }
     }
+    <span class="directive">private</span> <span 
class="directive">static</span> <span class="type">class</span> <span 
class="class">DomainAppSystemBuilder</span>
+        <span class="directive">extends</span> IsisSystemForTest.Builder { ... 
}
 }</code></pre> 
            </div> 
           </div> 
@@ -1786,37 +1604,59 @@ CustomerRepository customers;</code></pre>
             <tbody>
              <tr> 
               <td><i class="conum" data-value="1"></i><b>1</b></td> 
-              <td>ensure that logging messages don’t get swallowed</td> 
+              <td>instantiates and initializes the Apache Isis runtime (the 
<code>IsisSystemForTest</code> class)</td> 
              </tr> 
              <tr> 
               <td><i class="conum" data-value="2"></i><b>2</b></td> 
-              <td>initialize the Apache Isis runtime</td> 
-             </tr> 
-             <tr> 
-              <td><i class="conum" data-value="3"></i><b>3</b></td> 
-              <td>primarily exists to support the writing of <a 
href="../ugtst/ugtst.html#_ugtst_bdd-spec-support">BDD specifications</a>, but 
also enables finer-grained management of sessions/transactions (discussed 
below).</td> 
+              <td>binds the runtime to a thread-local.</td> 
              </tr> 
             </tbody>
            </table> 
           </div> 
-          <div class="sect4"> 
-           <h5 
id="__ugtst_integ-test-support_bootstrapping_IntegrationTestAbstract"><code>IntegrationTestAbstract</code></h5>
 
-           <div class="paragraph"> 
-            <p>In fact, we recommend that your base class inherit from Apache 
Isis' <code>IntegrationTestAbstract</code> class:</p> 
-           </div> 
-           <div class="listingblock"> 
-            <div class="content"> 
-             <pre class="CodeRay highlight"><code data-lang="java"><span 
class="directive">public</span> <span class="directive">abstract</span> <span 
class="type">class</span> <span class="class">DomainAppIntegTest</span> <span 
class="directive">extends</span> IntegrationTestAbstract {
+         </div> 
+        </div> 
+        <div class="sect2"> 
+         <h3 id="_ugtst_integ-test-support_abstract-class">4.3. Abstract 
class</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/ugtst/_ugtst_integ-test-support_abstract-class.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/ugtst/_ugtst_integ-test-support_abstract-class.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/ugtst/_ugtst_integ-test-support_abstract-class.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/ugtst/_ugtst_integ-test-support_abstract-class.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/ugtst/_ugtst_integ-test-support_abstract-class.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>When writing integration tests, it’s easiest to inherit from a 
base class:</p> 
+         </div> 
+         <div class="ulist"> 
+          <ul> 
+           <li> <p>for <code>1.15.0-SNAPSHOT</code>, use 
<code>IntegrationTestAbstract2</code></p> </li> 
+           <li> <p>for earlier releases, use (its superclass) 
<code>IntegrationTestAbstract</code>.</p> </li> 
+          </ul> 
+         </div> 
+         <div class="paragraph"> 
+          <p>This base class <a 
href="#_ugtst_integ-test-support_bootstrapping">bootstraps</a> the framework 
(caching the framework on a thread-local), and provides various utility methods 
and framework-provided services for use by your application’s subclass 
tests.</p> 
+         </div> 
+         <div class="sect3"> 
+          <h4 
id="__ugtst_integ-test-support_abstract-class_IntegrationTestAbstract2">4.3.1. 
<code>IntegrationTestAbstract2</code> (<code>1.15.0-SNAPSHOT</code>)</h4> 
+          <div class="paragraph"> 
+           <p>(As of <code>1.15.0-SNAPSHOT</code>) we recommend that your 
integration tests inherit from Apache Isis' 
<code>IntegrationTestAbstract2</code> class:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span 
class="directive">public</span> <span class="directive">abstract</span> <span 
class="type">class</span> <span class="class">DomainAppIntegTest</span> <span 
class="directive">extends</span> IntegrationTestAbstract2 {
     ...
 }</code></pre> 
-            </div> 
-           </div> 
-           <div class="paragraph"> 
-            <p>Although not mandatory, this provides a number of 
helper/convenience methods and JUnit rules:</p> 
            </div> 
-           <div class="listingblock"> 
-            <div class="content"> 
-             <pre class="CodeRay highlight"><code data-lang="java">    <span 
class="annotation">@Rule</span>
+          </div> 
+          <div class="paragraph"> 
+           <p>Although not mandatory, this provides a number of 
helper/convenience methods and JUnit rules:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java">    <span 
class="annotation">@Rule</span>
     <span class="directive">public</span> IsisTransactionRule 
isisTransactionRule =                         <i class="conum" 
data-value="1"></i><b>(1)</b>
         <span class="keyword">new</span> IsisTransactionRule();
     <span class="annotation">@Rule</span>
@@ -1828,57 +1668,321 @@ CustomerRepository customers;</code></pre>
     <span class="annotation">@Rule</span>
     <span class="directive">public</span> ExceptionRecognizerTranslate 
exceptionRecognizerTranslations =    <i class="conum" 
data-value="4"></i><b>(4)</b>
         ExceptionRecognizerTranslate.create();</code></pre> 
-            </div> 
-           </div> 
-           <div class="colist arabic"> 
-            <table> 
-             <tbody>
-              <tr> 
-               <td><i class="conum" data-value="1"></i><b>1</b></td> 
-               <td>ensures an Apache Isis session/transaction running for each 
test</td> 
-              </tr> 
-              <tr> 
-               <td><i class="conum" data-value="2"></i><b>2</b></td> 
-               <td>sets up a JMock context (using Apache Isis' extension to 
JMock as described in <a 
href="../ugtst/ugtst.html#_ugtst_unit-test-support_jmock-extensions">JMock 
Extensions</a>.</td> 
-              </tr> 
-              <tr> 
-               <td><i class="conum" data-value="3"></i><b>3</b></td> 
-               <td>standard JUnit rule for writing tests that throw 
exceptions</td> 
-              </tr> 
-              <tr> 
-               <td><i class="conum" data-value="4"></i><b>4</b></td> 
-               <td>to capture messages that require translation, as described 
in <a href="../ugbtb/ugbtb.html#_ugbtb_i18n">i18 support</a>.</td> 
-              </tr> 
-             </tbody>
-            </table> 
-           </div> 
-           <div class="paragraph"> 
-            <p>All of these rules could be inlined in your own base class; as 
we say, they are a convenience.</p> 
            </div> 
-           <div class="paragraph"> 
-            <p>The <code>IntegrationTestAbstract</code> also provides a number 
of helper/convenience methods, though most of these have been deprecated 
because the functionality they expose is now readily accessible through various 
domain services; most notably these are:</p> 
+          </div> 
+          <div class="colist arabic"> 
+           <table> 
+            <tbody>
+             <tr> 
+              <td><i class="conum" data-value="1"></i><b>1</b></td> 
+              <td>ensures an Apache Isis session/transaction running for each 
test</td> 
+             </tr> 
+             <tr> 
+              <td><i class="conum" data-value="2"></i><b>2</b></td> 
+              <td>sets up a JMock context (using Apache Isis' extension to 
JMock as described in <a 
href="../ugtst/ugtst.html#_ugtst_unit-test-support_jmock-extensions">JMock 
Extensions</a>.</td> 
+             </tr> 
+             <tr> 
+              <td><i class="conum" data-value="3"></i><b>3</b></td> 
+              <td>standard JUnit rule for writing tests that throw 
exceptions</td> 
+             </tr> 
+             <tr> 
+              <td><i class="conum" data-value="4"></i><b>4</b></td> 
+              <td>to capture messages that require translation, as described 
in <a href="../ugbtb/ugbtb.html#_ugbtb_i18n">i18 support</a>.</td> 
+             </tr> 
+            </tbody>
+           </table> 
+          </div> 
+          <div class="paragraph"> 
+           <p>All of these rules could be inlined in your own base class; as 
we say, they are a convenience.</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>The <code>IntegrationTestAbstract2</code> also provides a number 
of helper/convenience methods, though most of these have been deprecated 
because the functionality they expose is now readily accessible through various 
domain services; most notably these are:</p> 
+          </div> 
+          <div class="ulist"> 
+           <ul> 
+            <li> <p><a 
href="../rgsvc/rgsvc.html#_rgsvc_persistence-layer-api_RepositoryService"><code>RepositoryService</code></a></p>
 </li> 
+            <li> <p><a 
href="../rgsvc/rgsvc.html#_rgsvc_core-domain-api_FactoryService"><code>FactoryService</code></a></p>
 </li> 
+            <li> <p><a 
href="../rgsvc/rgsvc.html#_rgsvc_metadata-api_ServiceRegistry"><code>ServiceRegistry2</code></a></p>
 </li> 
+            <li> <p><a 
href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_WrapperFactory"><code>WrapperFactory</code></a><br></p>
 
+             <div class="paragraph"> 
+              <p>to wrap objects simulating interaction through the user 
interface)</p> 
+             </div> </li> 
+            <li> <p><a 
href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_TransactionService"><code>TransactionService</code></a><br></p>
 
+             <div class="paragraph"> 
+              <p>most commonly used to commit changes after the fixture setup) 
and,</p> 
+             </div> </li> 
+            <li> <p><a 
href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_SessionManagementService"><code>SessionManagementService</code></a><br></p>
 
+             <div class="paragraph"> 
+              <p>for tests that check interactions over multiple separate 
sessions.</p> 
+             </div> </li> 
+           </ul> 
+          </div> 
+         </div> 
+         <div class="sect3"> 
+          <h4 
id="__ugtst_integ-test-support_abstract-class_IntegrationTestAbstract">4.3.2. 
<code>IntegrationTestAbstract</code></h4> 
+          <div class="paragraph"> 
+           <p>For earlier releases we recommend that your base class inherit 
from Apache Isis' <code>IntegrationTestAbstract</code> class:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="java"><span 
class="directive">public</span> <span class="directive">abstract</span> <span 
class="type">class</span> <span class="class">DomainAppIntegTest</span> <span 
class="directive">extends</span> IntegrationTestAbstract {
+    ...
+}</code></pre> 
            </div> 
-           <div class="ulist"> 
-            <ul> 
-             <li> <p><a 
href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_WrapperFactory"><code>WrapperFactory</code></a><br></p>
 
+          </div> 
+          <div class="paragraph"> 
+           <p>This provides most of the benefits of 
<code>IntegrationTestAbstract2</code> (it is the latter’s superclass, in 
fact), but the <a 
href="#_ugtst_integ-test-support_bootstrapping">bootstrapping</a> is more 
verbose.</p> 
+          </div> 
+         </div> 
+        </div> 
+        <div class="sect2"> 
+         <h3 id="_ugtst_integ-test-support_configuration-properties">4.4. 
Configuration Properties</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/ugtst/_ugtst_integ-test-support_configuration-properties.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/ugtst/_ugtst_integ-test-support_configuration-properties.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/ugtst/_ugtst_integ-test-support_configuration-properties.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/ugtst/_ugtst_integ-test-support_configuration-properties.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/ugtst/_ugtst_integ-test-support_configuration-properties.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 recommended way to run integration tests is against an HSQLDB 
in-memory database. This can be done using the application’s usual <a 
href="../rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping"><code>AppManifest</code></a>,
 and then overriding JDBC URL and similar.</p> 
+         </div> 
+         <div class="paragraph"> 
+          <p>Different releases of the framework have provided differing ways 
to accomplish this. As of <code>1.15.0-SNAPSHOT</code>, using 
<code>IntegrationTestAbstract2’s `bootstrapUsing</code> method will make 
these configuration properties as the default. In earlier releases either the 
helper methods in <code>AppManifest.Util</code> class or the 
<code>IsisConfigurationForJdoIntegTests</code> (implementation of 
<code>IsisConfiguration</code>) can be used.</p> 
+         </div> 
+         <div class="paragraph"> 
+          <p>Whichever approach is used, these are the configuration 
properties that will be overridden:</p> 
+         </div> 
+         <table class="tableblock frame-all grid-all spread"> 
+          <caption class="title">
+           Table 1. Default Configuration Properties for Integration Tests
+          </caption> 
+          <colgroup> 
+           <col style="width: 33.3333%;"> 
+           <col style="width: 16.6666%;"> 
+           <col style="width: 50.0001%;"> 
+          </colgroup> 
+          <thead> 
+           <tr> 
+            <th class="tableblock halign-left valign-top">Property</th> 
+            <th class="tableblock halign-left valign-top">Value</th> 
+            <th class="tableblock halign-left valign-top">Description</th> 
+           </tr> 
+          </thead> 
+          <tbody> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
               <div class="paragraph"> 
-               <p>to wrap objects simulating interaction through the user 
interface)</p> 
-              </div> </li> 
-             <li> <p><a 
href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_TransactionService"><code>TransactionService</code></a><br></p>
 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>javax.jdo.option.ConnectionURL</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">jdbc:hsqldb:mem:test</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
               <div class="paragraph"> 
-               <p>most commonly used to commit changes after the fixture 
setup) and,</p> 
-              </div> </li> 
-             <li> <p><a 
href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_SessionManagementService"><code>SessionManagementService</code></a><br></p>
 
+               <p>JDBC URL</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
               <div class="paragraph"> 
-               <p>for tests that check interactions over multiple separate 
sessions.</p> 
-              </div> </li> 
-            </ul> 
-           </div> 
-          </div> 
-         </div> 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>javax.jdo.option.ConnectionDriverName</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">org.hsqldb.jdbcDriver</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>JDBC Driver</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>javax.jdo.option.ConnectionUserName</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">sa</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>Username</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>javax.jdo.option.ConnectionPassword</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">&lt;empty string&gt;</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>Password, possibly encrypted (see 
<code>datanucleus.ConnectionPasswordEncrypter</code>, below).</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.ConnectionPasswordEncrypter</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">&lt;empty string&gt;</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>Specify the 
<code>datanucleus.ConnectionPasswordDecrypter</code> implementation used to 
decrypt the password.</p> 
+              </div> 
+              <div class="paragraph"> 
+               <p>See the <a 
href="http://www.datanucleus.org/products/accessplatform_4_1/persistence_properties.html#ConnectionPasswordDecrypter";>DataNucleus
 documentation</a> for further details.</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.schema.autoCreateAll</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">true</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>Recreate DB for each test run (an in-memory database)</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.schema.validateAll</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">false</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>Disable validations (minimize bootstrap time)</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.persistenceByReachabilityAtCommit</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">false</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>As per WEB-INF/persistor_datanucleus.properties</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.identifier.case</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">MixedCase</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>As per WEB-INF/persistor_datanucleus.properties</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.cache.level2.type</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">none</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>As per WEB-INF/persistor_datanucleus.properties</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.datanucleus.impl.</code><br> 
<code>datanucleus.cache.level2.mode</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">ENABLE_SELECTIVE</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>As per WEB-INF/persistor_datanucleus.properties</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.datanucleus.</code><br> 
<code>install-fixtures</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">true</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p>Automatically install any fixtures that might have been 
registered</p> 
+              </div>
+             </div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.persistor.</code><br> 
<code>enforceSafeSemantics</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">false</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div></div></td> 
+           </tr> 
+           <tr> 
+            <td class="tableblock halign-left valign-top">
+             <div>
+              <div class="paragraph"> 
+               <p><code>isis.deploymentType</code></p> 
+              </div>
+             </div></td> 
+            <td class="tableblock halign-left valign-top"><p 
class="tableblock">server_prototype</p></td> 
+            <td class="tableblock halign-left valign-top">
+             <div></div></td> 
+           </tr> 
+          </tbody> 
+         </table> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugtst_integ-test-support_wrapper-factory">4.3. Wrapper 
Factory</h3>
+         <h3 id="_ugtst_integ-test-support_wrapper-factory">4.5. Wrapper 
Factory</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/ugtst/_ugtst_integ-test-support_wrapper-factory.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>
@@ -1932,7 +2036,7 @@ CustomerRepository customers;</code></pre>
           <p>Let’s look in a bit more detail at what the test can do with 
the wrapper.</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_wrapping_and_unwrapping">4.3.1. Wrapping and 
Unwrapping</h4> 
+          <h4 id="_wrapping_and_unwrapping">4.5.1. Wrapping and 
Unwrapping</h4> 
           <div class="paragraph"> 
            <p>Wrapping a domain object is very straightforward; simply call 
<code>WrapperFactory#wrap(…​)</code>.</p> 
           </div> 
@@ -1971,7 +2075,7 @@ Customer customer = 
(Customer)((WrappingObject)wrappedCustomer).__isis_wrapped()
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_using_the_wrapper">4.3.2. Using the wrapper</h4> 
+          <h4 id="_using_the_wrapper">4.5.2. Using the wrapper</h4> 
           <div class="paragraph"> 
            <p>As the wrapper is intended to simulate the UI, only those 
methods that correspond to the "primary" methods of the domain object’s 
members are allowed to be called. That means:</p> 
           </div> 
@@ -2009,7 +2113,7 @@ Customer customer = 
(Customer)((WrappingObject)wrappedCustomer).__isis_wrapped()
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_firing_domain_events">4.3.3. Firing Domain Events</h4> 
+          <h4 id="_firing_domain_events">4.5.3. Firing Domain Events</h4> 
           <div class="paragraph"> 
            <p>As well as enforcing business rules, the wrapper has another 
important feature, namely that it will cause domain events to be fired.</p> 
           </div> 
@@ -2101,7 +2205,7 @@ Customer customer = 
(Customer)((WrappingObject)wrappedCustomer).__isis_wrapped()
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugtst_integ-test-support_maven-configuration">4.4. Maven 
Configuration</h3>
+         <h3 id="_ugtst_integ-test-support_maven-configuration">4.6. Maven 
Configuration</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/ugtst/_ugtst_integ-test-support_maven-configuration.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>

Reply via email to