You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/12/13 14:05:12 UTC

[isis] branch master updated (fdc886c -> 921081c)

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from fdc886c  isis-1782: simplifications/improvements to the Headless (integration test) API
     new 3cac5b0  ISIS-1794: cleans up BDD classes (deprecating old stuff), and updates docs
     new a146a2a  ISIS-1782: now reads only from "isis.headless.module" as an override, and sets "isis.headless" system property only
     new 921081c  ISIS-1782:: renames Module.Util supporting method; throw runtime exception if different appmanifest inferred; reinstate reading from isis.integTest.module if required

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../guides/ugtst/_ugtst_bdd-spec-support.adoc      |   2 -
 .../ugtst/_ugtst_bdd-spec-support_bdd-tooling.adoc |  14 ---
 .../ugtst/_ugtst_bdd-spec-support_key-classes.adoc |  59 ----------
 ...ugtst_bdd-spec-support_maven-configuration.adoc |  50 ++++-----
 ..._ugtst_bdd-spec-support_writing-a-bdd-spec.adoc | 120 ++++++++++-----------
 .../_ugtst_integ-test-support_abstract-class.adoc  |   8 +-
 .../_ugtst_integ-test-support_bootstrapping.adoc   |  26 ++++-
 .../apache/isis/applib/AppManifestAbstract2.java   |   2 +-
 .../main/java/org/apache/isis/applib/Module.java   |   7 +-
 .../Module_Util_transitiveDependenciesOf_Test.java |   2 +-
 .../HeadlessWithBootstrappingAbstract.java         |  12 ++-
 .../runtime/headless/IsisSystemBootstrapper.java   |   6 +-
 .../scenarios/DomainServiceProvider.java           |   3 +
 .../scenarios/DomainServiceProviderMockery.java    |   4 +
 .../core/specsupport/scenarios/InMemoryDB.java     |   3 +
 .../scenarios/ScenarioExecutionScope.java          |   3 +
 .../core/specsupport/specs/CukeGlueAbstract.java   |   3 +
 .../core/specsupport/specs/CukeGlueAbstract2.java  |  19 ++--
 ...act.java => CukeGlueBootstrappingAbstract.java} |   5 +-
 .../core/specsupport/specs/CukeSpecsAbstract.java  |   3 +
 .../bdd/specglue/BootstrappingGlue.java            |   4 +-
 .../bdd/specglue/CatalogOfFixturesGlue.java        |  14 +--
 .../{RunIntegBddSpecs.java => RunBddSpecs.java}    |   2 +-
 .../simple/specglue/SimpleObjectMenuGlue.java      |   4 +-
 24 files changed, 167 insertions(+), 208 deletions(-)
 delete mode 100644 adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_bdd-tooling.adoc
 delete mode 100644 adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_key-classes.adoc
 copy example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java => core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueAbstract2.java (69%)
 rename core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/{CukeGlueIntegrationScopeAbstract.java => CukeGlueBootstrappingAbstract.java} (87%)
 rename example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specs/{RunIntegBddSpecs.java => RunBddSpecs.java} (97%)

-- 
To stop receiving notification emails like this one, please contact
['"commits@isis.apache.org" <co...@isis.apache.org>'].

[isis] 03/03: ISIS-1782:: renames Module.Util supporting method; throw runtime exception if different appmanifest inferred; reinstate reading from isis.integTest.module if required

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 921081cbcec1dfa383d1a62293c6a4eeb78deda9
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Dec 13 14:05:04 2017 +0000

    ISIS-1782:: renames Module.Util supporting method; throw runtime exception if different appmanifest inferred; reinstate reading from isis.integTest.module if required
---
 .../ugtst/_ugtst_integ-test-support_abstract-class.adoc      |  7 +++----
 .../java/org/apache/isis/applib/AppManifestAbstract2.java    |  2 +-
 core/applib/src/main/java/org/apache/isis/applib/Module.java |  7 ++++++-
 .../applib/Module_Util_transitiveDependenciesOf_Test.java    |  2 +-
 .../runtime/headless/HeadlessWithBootstrappingAbstract.java  | 12 +++++++++++-
 .../isis/core/runtime/headless/IsisSystemBootstrapper.java   |  6 +++++-
 6 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc
index c50f33c..00668fc 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc
@@ -35,18 +35,17 @@ public abstract class DomainAppIntegTest
 }
 ----
 
-However, the `IntegrationTestAbstract3` class also allows the module to be specified externally, using the `isis.headles.module` system property, eg by updating the `pom.xml`.
+However, the `IntegrationTestAbstract3` class also allows the module to be specified externally, using either the `isis.integTest.module` or the (more general) `isis.headless.module` system property, eg by updating the `pom.xml`.
 
 For example:
 
 [source,xml]
 ----
 <properties>
-    <isis.headless.module>
+    <isis.integTest.module>
         org.estatio.module.application.EstatioApplicationModule
-    </isis.headless.module>
+    </isis.integTest.module>
 </properties>
-
 ----
 
 This is required when the codebase is organised as multiple "logical" modules within a single Maven "physical" module (ie `src/main/java` compilation unit).
diff --git a/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract2.java b/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract2.java
index d762a57..f42ff25 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract2.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract2.java
@@ -119,7 +119,7 @@ public abstract class AppManifestAbstract2 extends AppManifestAbstract implement
 
         private void withTransitiveFrom(final Module module) {
             withAdditionalModules(asClasses(Module.Util.transitiveDependenciesOf(module)));
-            withAdditionalModules(Module.Util.transitiveDependenciesAsClassOf(module));
+            withAdditionalModules(Module.Util.transitiveAdditionalModulesOf(module));
             withAdditionalServices(Module.Util.transitiveAdditionalServicesOf(module));
             withConfigurationPropertyResources(Module.Util.transitivePropertyResourcesOf(module));
             withConfigurationProperties(Module.Util.transitiveIndividualConfigPropsOf(module));
diff --git a/core/applib/src/main/java/org/apache/isis/applib/Module.java b/core/applib/src/main/java/org/apache/isis/applib/Module.java
index 285d70b..3e567b7 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/Module.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/Module.java
@@ -139,12 +139,17 @@ public interface Module {
          *     No guarantees are made as to the order of these additional module classes.
          * </p>
          */
-        static List<Class<?>> transitiveDependenciesAsClassOf(Module module) {
+        static List<Class<?>> transitiveAdditionalModulesOf(Module module) {
             final Set<Class<?>> modules = Sets.newHashSet();
             final List<Module> transitiveDependencies = transitiveDependenciesOf(module);
             for (Module transitiveDependency : transitiveDependencies) {
                 final Set<Class<?>> additionalModules = transitiveDependency.getAdditionalModules();
                 if(additionalModules != null && !additionalModules.isEmpty()) {
+                    for (Class<?> clazz : additionalModules) {
+                        if(Module.class.isAssignableFrom(clazz)) {
+                            throw new IllegalArgumentException("Module " + transitiveDependency + " has returned " + clazz + " from getAdditionalModules().  This class implements 'Module' interface so should instead be returned from getDependencies()");
+                        }
+                    }
                     modules.addAll(additionalModules);
                 }
             }
diff --git a/core/applib/src/test/java/org/apache/isis/applib/Module_Util_transitiveDependenciesOf_Test.java b/core/applib/src/test/java/org/apache/isis/applib/Module_Util_transitiveDependenciesOf_Test.java
index 7cc24c4..b4d6229 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/Module_Util_transitiveDependenciesOf_Test.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/Module_Util_transitiveDependenciesOf_Test.java
@@ -173,7 +173,7 @@ public class Module_Util_transitiveDependenciesOf_Test {
 
     void assertTransitiveDependenciesAsClass(
             final Module module, final List<Class<?>> expected) {
-        final List<Class<?>> dependenciesAsClass = Module.Util.transitiveDependenciesAsClassOf(module);
+        final List<Class<?>> dependenciesAsClass = Module.Util.transitiveAdditionalModulesOf(module);
         assertTrue(dependenciesAsClass.containsAll(expected));
         assertTrue(expected.containsAll(dependenciesAsClass));
     }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
index 1f646e3..6aeb73a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
@@ -76,7 +76,15 @@ public abstract class HeadlessWithBootstrappingAbstract extends HeadlessAbstract
             setupLogging.set(true);
         }
 
-        final String moduleFqcn = System.getProperty("isis.headless.module");
+        final String integTestModuleFqcn = System.getProperty("isis.integTest.module");
+        LOG.info("isis.integTest.module = " + integTestModuleFqcn);
+        String moduleFqcn = integTestModuleFqcn;
+
+        if(moduleFqcn == null) {
+            final String headlessModuleFqcn = System.getProperty("isis.headless.module");
+            LOG.info("isis.headless.module = " + headlessModuleFqcn);
+            moduleFqcn = headlessModuleFqcn;
+        }
 
         final Module moduleToUse =
                 !Strings.isNullOrEmpty(moduleFqcn)
@@ -92,6 +100,8 @@ public abstract class HeadlessWithBootstrappingAbstract extends HeadlessAbstract
     protected void bootstrapAndSetupIfRequired() {
 
         System.setProperty("isis.headless", "true");
+        System.setProperty("isis.integTest", "true");
+        System.setProperty("isis.bddSpec", "true");
 
         isisSystemBootstrapper.bootstrapIfRequired();
         isisSystemBootstrapper.injectServicesInto(this);
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystemBootstrapper.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystemBootstrapper.java
index 3fa41db..94c05c3 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystemBootstrapper.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystemBootstrapper.java
@@ -106,7 +106,11 @@ public class IsisSystemBootstrapper {
             break;
         case BOOTSTRAPPED_DIFFERENT_MODULES:
             // TODO: this doesn't work correctly yet; not tearing down HSQLDB correctly.
-            teardownSystem();
+            if(false) {
+                teardownSystem();
+            } else {
+                throw new RuntimeException("Bootstrapping different modules is not yet supported");
+            }
             // fall through
         case NOT_BOOTSTRAPPED:
 

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.

[isis] 01/03: ISIS-1794: cleans up BDD classes (deprecating old stuff), and updates docs

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 3cac5b085b79f86d553198eb1993ecb211dd56fe
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Dec 13 12:37:08 2017 +0000

    ISIS-1794: cleans up BDD classes (deprecating old stuff), and updates docs
---
 .../guides/ugtst/_ugtst_bdd-spec-support.adoc      |   2 -
 .../ugtst/_ugtst_bdd-spec-support_bdd-tooling.adoc |  14 ---
 .../ugtst/_ugtst_bdd-spec-support_key-classes.adoc |  59 ----------
 ...ugtst_bdd-spec-support_maven-configuration.adoc |  50 ++++-----
 ..._ugtst_bdd-spec-support_writing-a-bdd-spec.adoc | 120 ++++++++++-----------
 .../_ugtst_integ-test-support_abstract-class.adoc  |  11 +-
 .../_ugtst_integ-test-support_bootstrapping.adoc   |  26 ++++-
 .../scenarios/DomainServiceProvider.java           |   3 +
 .../scenarios/DomainServiceProviderMockery.java    |   4 +
 .../core/specsupport/scenarios/InMemoryDB.java     |   3 +
 .../scenarios/ScenarioExecutionScope.java          |   3 +
 .../core/specsupport/specs/CukeGlueAbstract.java   |   3 +
 .../core/specsupport/specs/CukeGlueAbstract2.java  |  19 ++--
 ...act.java => CukeGlueBootstrappingAbstract.java} |   5 +-
 .../core/specsupport/specs/CukeSpecsAbstract.java  |   3 +
 .../bdd/specglue/BootstrappingGlue.java            |   4 +-
 .../bdd/specglue/CatalogOfFixturesGlue.java        |  14 +--
 .../{RunIntegBddSpecs.java => RunBddSpecs.java}    |   2 +-
 .../simple/specglue/SimpleObjectMenuGlue.java      |   4 +-
 19 files changed, 147 insertions(+), 202 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support.adoc b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support.adoc
index 37fdaa5..f1c308d 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support.adoc
@@ -12,11 +12,9 @@ Since domain experts are usually non-technical (at least, they are unlikely to b
 There are many BDD tools out there; Apache Isis provides an integration with link:https://cucumber.io/docs/reference/jvm#java[Cucumber JVM] (see also the https://github.com/cucumber/cucumber-jvm[github site]):
 
 
-
 include::_ugtst_bdd-spec-support_how-it-works.adoc[leveloffset=+1]
 include::_ugtst_bdd-spec-support_key-classes.adoc[leveloffset=+1]
 include::_ugtst_bdd-spec-support_writing-a-bdd-spec.adoc[leveloffset=+1]
-include::_ugtst_bdd-spec-support_bdd-tooling.adoc[leveloffset=+1]
 include::_ugtst_bdd-spec-support_maven-configuration.adoc[leveloffset=+1]
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_bdd-tooling.adoc b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_bdd-tooling.adoc
deleted file mode 100644
index b7be45c..0000000
--- a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_bdd-tooling.adoc
+++ /dev/null
@@ -1,14 +0,0 @@
-[[_ugtst_bdd-spec-support_bdd-tooling]]
-= BDD Tooling
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-:_basedir: ../../
-:_imagesdir: images/
-
-
-
-
-
-To help write feature files and generate step definitions, we recommend https://github.com/rlogiacco/Natural[Roberto Lo Giacco's Eclipse plugin]. For more information, see Dan's short http://danhaywood.com/2013/07/05/cucumber-editors-in-eclipse/[blog post]. It works very well. Of interest: this is implemented using http://www.eclipse.org/Xtext/[XText].
-
-
-
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_key-classes.adoc b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_key-classes.adoc
deleted file mode 100644
index fba3f67..0000000
--- a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_key-classes.adoc
+++ /dev/null
@@ -1,59 +0,0 @@
-[[_ugtst_bdd-spec-support_key-classes]]
-= Key classes
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-:_basedir: ../../
-:_imagesdir: images/
-
-
-
-
-There are some key framework classes that make up the spec support; these are discussed below.
-
-NOTE: some of these are also used by Apache Isis' xref:../ugtst/ugtst.adoc#_ugtst_integ-test-support[Integration Test support].
-
-
-
-
-== `IsisSystemForTest`
-
-The `IsisSystemForTest` class allows a complete running instance of Apache Isis to be bootstrapped (with the JDO objectstore); this is then held on a a `ThreadLocal` from one test to another.
-
-Typically bootstrapping code is used to lazily instantiate the `IsisSystemForTest` once and once only. The mechanism for doing this is line-for-line identical in both BDD step defs and integration tests.
-
-
-
-
-== `ScenarioExecution`
-
-The `ScenarioExecution` provides a context for a scenario that is being executed.  It is Cucumber that determines which step definitions are run, and in which order, and so state cannot be passed between step definitions using local variables or instance variables.  Instead the `ScenarioExecution` acts like a hashmap, allowing each step to put data (eg "given an uncompleted todoitem") into the map or get data ("when I complete the todoitem") from the map.  This is done using the `putVar( [...]
-
-[TIP]
-====
-This corresponds broadly to the "World" object in Ruby-flavoured Cucumber.
-====
-
-The `ScenarioExecution` also provids access to the configured domain services (using the `service(...)` method) and the `DomainObjectContainer` (through the `container()` method).
-
-[NOTE]
-====
-This could probably be refactored; Cucumber JVM provides automatic dependency injection into setp definitions, but Apache Isis does not currently leverage or exploit this capability.
-====
-
-Like the `IsisSystemForTest` class, the `ScenarioExecution` class binds an instance of itself onto a `ThreadLocal`. It can then be accessed in BDD step definitions using `ScenarioExecution.current()` static method.
-
-
-
-== `WrapperFactory`
-
-As with integration tests, the UI can be simulated by "wrapping" each domain object in a proxy using the `WrapperFactory`.
-
-
-
-
-== `CukeGlueAbstract`
-
-The `CukeGlueAbstract` acts as a convenience superclass for writing BDD step definitions (analogous to the `IntegrationTestAbstract` for integation tests).  Underneath the covers it delegates to an underlying `ScenarioExecution`.
-
-
-
-
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_maven-configuration.adoc b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_maven-configuration.adoc
index 94f632e..27f6b21 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_maven-configuration.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_maven-configuration.adoc
@@ -21,37 +21,33 @@ To set it up manually, update the `pom.xml` of your domain object model module:
 <1> Normally `test`; usual Maven scoping rules apply.
 
 
-We also recommend that you configure the `maven-surefire-plugin` to pick up the following class patterns:
-
+As of `1.14.0`, the configuration is wrapped up as maven mixins:
 
 [source,xml]
 ----
-<plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-surefire-plugin</artifactId>
-    <version>2.10</version>
-    <configuration>
-        <includes>
-            <include>**/*Test.java</include>
-            <include>**/*Test_*.java</include>
-            <include>**/*Spec*.java</include>
-        </includes>
-        <excludes>
-            <exclude>**/Test*.java</exclude>
-            <exclude>**/*ForTesting.java</exclude>
-            <exclude>**/*Abstract*.java</exclude>
-        </excludes>
-        <useFile>true</useFile>
-        <printSummary>true</printSummary>
-        <outputDirectory>${project.build.directory}/surefire-reports</outputDirectory>
-    </configuration>
-</plugin>
-----
+<plugins>
+    <plugin>
+        <groupId>com.github.odavid.maven.plugins</groupId>
+        <artifactId>mixin-maven-plugin</artifactId>
+        <version>0.1-alpha-39</version>
+        <extensions>true</extensions>
+        <configuration>
+            <mixins>
+                ...
+                <mixin>
+                    <groupId>com.danhaywood.mavenmixin</groupId>
+                    <artifactId>surefire</artifactId>
+                </mixin>
+                <mixin>
+                    <groupId>com.danhaywood.mavenmixin</groupId>
+                    <artifactId>cucumberreporting</artifactId>
+                </mixin>
+            </mixins>
+        </configuration>
+    </plugin>
+</plugins>
 
-[NOTE]
-====
-As of `1.14.0`, this configuration has been replaced to use mavenmixins.
-====
+----
 
 You may also find it more convenient to place the `.feature` files in `src/test/java`, rather than `src/test/resources`.
 If you wish to do this, then your integtest module's `pom.xml` must contain:
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_writing-a-bdd-spec.adoc b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_writing-a-bdd-spec.adoc
index 7faca21..dbf80f0 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_writing-a-bdd-spec.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_bdd-spec-support_writing-a-bdd-spec.adoc
@@ -1,5 +1,5 @@
 [[_ugtst_bdd-spec-support_writing-a-bdd-spec]]
-= Writing a BDD spec
+= Writing a BDD spec (`1.16.0-SNAPSHOT`)
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 :_basedir: ../../
 :_imagesdir: images/
@@ -21,49 +21,38 @@ We therefore recommend that they reside in a separate package, and are organized
 +
 For example, given a feature that involves `Customer` and `Order`, have the step definitions pertaining to `Customer` reside in `CustomerGlue`, and the step definitions pertaining to `Order` reside in `OrderGlue`. +
 +
-The `glue` attribute of the Cucumber-JVM JUnit runner eallows you to indicate which package(s) should be recursively searched to find any glue.
+The `glue` attribute of the Cucumber-JVM JUnit runner allows you to indicate which package(s) should be recursively searched to find any glue.
 
-* a system initializer class.  You can reuse the  system initializer from any integration tests (as described in xref:../ugtst/ugtst.adoc#_ugtst_integ-test-support[Integration Test Support], bootstrapping section).
++
+There also needs to be one glue class that is used to bootstrap the runtime.
 
 
 Here's an example of a feature from the xref:../ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]:
 
 [source,java]
 ----
-@SimpleObjectsFixture
+@DomainAppDemo
 Feature: List and Create New Simple Objects
 
-  @integration
   Scenario: Existing simple objects can be listed and new ones created
-    Given there are initially 3 simple objects
+    Given there are initially 10 simple objects
     When  I create a new simple object
-    Then  there are 4 simple objects
+    Then  there are 11 simple objects
 ----
 
-The `@SimpleObjectsFixture` is a custom tag we've specified to indicate the prerequisite fixtures to be loaded; more on this in a moment.
-The `@integration` tag, meanwhile, says that this feature should be run with integration-level scope.
+The "@DomainAppDemo" is a custom tag we've specified to indicate the prerequisite fixtures to be loaded; more on this in a moment.
 
 
 [NOTE]
 ====
-Although BDD specs are most commonly used for end-to-end tests (ie at the same scope as an integration test), the two concerns (expressability of a test to a business person vs granularity of the test) should not be conflated.
-There are a couple of http://silkandspinach.net/2013/01/18/a-testing-strategy/[good] blog http://claysnow.co.uk/the-testing-iceberg/[posts] discussing http://claysnow.co.uk/living-documentation-can-be-readable-and-fast/[this].
-The basic idea is to avoid the overhead of a heavy-duty integration test if possible.
-
-Apache Isis does also support running BDD specs in unit test mode; by annotating the scenario with the `@unit` (rather than `@integration` tag).
-When running under unit-level scope, the Apache Isis system is _not_ instantiated.
-Instead, the `ScenarioExecution` class returns JMock mocks (except for the `WrapperFactory`, if configured).
-
-To support unit testing scope Apache Isis provides the `InMemoryDB` class; a glorified hashmap of "persisted" objects.
-Use of this utility class is optional.
-
-Writing a BDD spec that supports both modes of operation therefore takes more effort and we expect most users interested in BDD will use integration-testing scope; for these reasons we have chosen _not_ to include unit-testing support in the xref:../ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
-For those who do require faster-executing test suite, it's worthwhile knowing that Apache Isis can support this.
+Prior to `1.16.0-SNAPSHOT` the BDD spec support provided by the framework aimed to allow tests to be written either as integration tests or as unit tests.
+While there are good reasons for attempting this (see http://silkandspinach.net/2013/01/18/a-testing-strategy/[these] http://claysnow.co.uk/the-testing-iceberg/[blog] http://claysnow.co.uk/living-documentation-can-be-readable-and-fast/[posts]), the downside is that the programming model to support unit tests is quite different from "normal" Isis code.
 
+This feature is therefore being dropped.
+As of `1.16.0-SNAPSHOT`, BDD specs are assumed to run only as integration tests.
 ====
 
-
-The `RunSpecs` class to run this feature (and any other features in this package or subpackages) is just boilerplate
+The `RunBddSpecs` class to run this feature (and any other features in this package or subpackages) is just boilerplate
 
 [source,java]
 ----
@@ -73,10 +62,14 @@ The `RunSpecs` class to run this feature (and any other features in this package
                 "html:target/cucumber-html-report"
                 ,"json:target/cucumber.json"
         },
-        glue={"classpath:domainapp.integtests.specglue"},
+        glue={
+                "classpath:domainapp.application.bdd.specglue",
+                "classpath:domainapp.modules.simple.specglue"
+        },
         strict = true,
-        tags = { "~@backlog", "~@ignore" })
-public class RunSpecs {
+        tags = { "~@backlog", "~@ignore" }
+)
+public class RunBddSpecs {
     // intentionally empty
 }
 ----
@@ -84,69 +77,70 @@ public class RunSpecs {
 The JSON formatter allows integration with enhanced reports.
 (Commented out) configuration for this is provided in the xref:../ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
 
-The bootstrapping of Apache Isis can be moved into a `BootstrappingGlue` step definition:
+The bootstrapping of Apache Isis itself lives in a `BootstrappingGlue` step definition:
 
 [source,java]
 ----
-public class BootstrappingGlue extends CukeGlueAbstract {
-    @Before(value={"@integration"}, order=100)
-    public void beforeScenarioIntegrationScope() {
-        org.apache.log4j.PropertyConfigurator.configure("logging.properties");
-        SimpleAppSystemInitializer.initIsft();
-
-        before(ScenarioExecutionScope.INTEGRATION);
-    }
-    @After
-    public void afterScenario(cucumber.api.Scenario sc) {
-        assertMocksSatisfied();
-        after(sc);
+public class BootstrappingGlue extends CukeGlueBootstrappingAbstract {  // <1>
+    public BootstrappingGlue() {
+        super(new DomainAppApplicationModule());                        // <2>
     }
 }
 ----
+<1> superclass contains the bootstrapping logic.
+This reuses many of the same classes as the integration testing framework
+<2> the `Module` to use to bootstrap the application in headless mode.
 
-The fixture to run also lives in its own step definition, https://github.com/apache/isis/blob/07fe61ef3fb029ae36427f60da2afeeb931e4f88/example/application/simpleapp/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java#L24[`CatalogOfFixturesGlue`]:
+The fixture to run also lives in its own step definition, `CatalogOfFixturesGlue`:
 
 [source,java]
 ----
-public class CatalogOfFixturesGlue extends CukeGlueAbstract {
-    @Before(value={"@integration", "@SimpleObjectsFixture"}, order=20000)
-    public void integrationFixtures() throws Throwable {
-        scenarioExecution().install(new RecreateSimpleObjects());
+public class CatalogOfFixturesGlue extends CukeGlueAbstract2 {
+    @Before(value={"@DomainAppDemo"}, order=20000)
+    public void runDomainAppDemo() {
+        fixtureScripts.runFixtureScript(new DomainAppDemo(), null); // <1>
     }
 }
 ----
+<1> The `fixtureScripts` service is inherited from the superclass.
 
-Note that this is annotated with a tag (`@SimpleObjectsFixture`) so that the correct fixture runs. (We might have a whole variety of these).
+This will only activate for feature files tagged with "@DomainAppDemo".
 
-The step definitions pertaining to `SimpleObject` domain entity then reside in the https://github.com/apache/isis/blob/07fe61ef3fb029ae36427f60da2afeeb931e4f88/example/application/simpleapp/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java#L31[`SimpleObjectGlue`] class.
+Finally, the step definitions pertaining to `SimpleObject` domain entity then reside in the `SimpleObjectGlue` class.
 This is where the heavy lifting gets done:
 
 [source,java]
 ----
-public class SimpleObjectGlue extends CukeGlueAbstract {
-    @Given("^there are.* (\\d+) simple objects$")
+public class SimpleObjectMenuGlue extends CukeGlueAbstract2 {
+
+    @Given("^there are.* (\\d+) simple objects$")                           // <1>
     public void there_are_N_simple_objects(int n) throws Throwable {
-        try {
-            final List<SimpleObject> findAll = service(SimpleObjects.class).listAll();
-            assertThat(findAll.size(), is(n));
-            putVar("list", "all", findAll);
-
-        } finally {
-            assertMocksSatisfied();
-        }
+        final List<SimpleObject> list = wrap(simpleObjectMenu).listAll();   // <2>
+        assertThat(list.size(), is(n));
     }
-    @When("^I create a new simple object$")
-    public void I_create_a_new_simple_object() throws Throwable {
-        service(SimpleObjects.class).create(UUID.randomUUID().toString());
+
+    @When("^.*create a .*simple object$")
+    public void create_a_simple_object() throws Throwable {
+        wrap(simpleObjectMenu).create(UUID.randomUUID().toString());
     }
+
+    @Inject
+    SimpleObjectMenu simpleObjectMenu;                                      // <3>
 }
 ----
+<1> regex to match to feature file specification
+<2> the inherited `wrap(...)` method delegates to `WrapperFactory#wrap(...)`
+<3> injected in the usual way
 
 [TIP]
 ====
-If using Java 8, note that Cucumber JVM supports a link:https://cucumber.io/docs/reference/jvm#java-8-lambdas[simplified syntax using lambdas].
+The xref:rgsvc.adoc#_rgsvc_api_Scratchpad[`Scratchpad`] domain service is one way in which glue classes can pass state between each other.
+Or, for more type safety, you could develop your own custom domain services for each scenario, and inject these in as regular services.
+See link:http://www.thinkcode.se/blog/2017/04/01/sharing-state-between-steps-in-cucumberjvm-using-picocontainer[this blog] post for more details.
 ====
 
-
-
+[TIP]
+====
+If using Java 8, note that Cucumber JVM supports a link:https://cucumber.io/docs/reference/jvm#java-8-lambdas[simplified syntax using lambdas].
+====
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc
index 1024320..c50f33c 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc
@@ -8,7 +8,7 @@
 
 When writing integration tests, it's easiest to inherit from a base class:
 
-* as of (`1.16.0`), use `IntegrationTestAbstract3`
+* as of (`1.16.0=SNAPSHOT`), use `IntegrationTestAbstract3`
 * as of (`1.15.0`), use `IntegrationTestAbstract2`
 * for earlier releases, use (its superclass) `IntegrationTestAbstract`.
 
@@ -17,7 +17,7 @@ This base class xref:ugtst.adoc#_ugtst_integ-test-support_bootstrapping[bootstra
 
 
 [[__ugtst_integ-test-support_abstract-class_IntegrationTestAbstract3]]
-== `IntegrationTestAbstract3`
+== `IntegrationTestAbstract3` (`1.16.0-SNAPSHOT`)
 
 (As of `1.16.0-SNAPSHOT`) we recommend that your integration tests inherit from Apache Isis' `IntegrationTestAbstract3` class.
 The primary benefit over `IntegrationTestAbstract2` (discussed xref:ugtst.adoc#__ugtst_integ-test-support_abstract-class_IntegrationTestAbstract2[below] is that it allows the test to be bootstrapped by passing in a `Module` rather than an `AppManifest`.
@@ -35,17 +35,16 @@ public abstract class DomainAppIntegTest
 }
 ----
 
-
-However, the `IntegrationTestAbstract3` class also allows the module to be specified externally, using the `isis.integTest.module` system property, eg by updating the `pom.xml`.
+However, the `IntegrationTestAbstract3` class also allows the module to be specified externally, using the `isis.headles.module` system property, eg by updating the `pom.xml`.
 
 For example:
 
 [source,xml]
 ----
 <properties>
-    <isis.integTest.module>
+    <isis.headless.module>
         org.estatio.module.application.EstatioApplicationModule
-    </isis.integTest.module>
+    </isis.headless.module>
 </properties>
 
 ----
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_bootstrapping.adoc b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_bootstrapping.adoc
index 79b6fc6..08d00cc 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_bootstrapping.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_bootstrapping.adoc
@@ -14,9 +14,30 @@ The example code in this section is taken from the app generated by the xref:../
 
 
 
-== 1.15.0 onwards
+== 1.16.0-SNAPSHOT
 
-In `1.15.0` the bootstrapping is accomplished using a combination of `AppManifestAbstract` (a framework-provided implementation of xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[`AppManifest`]) and `IntegrationTestAbstract2` superclass.
+In `1.16.0-SNAPSHOT` and later, the bootstrapping of integration tests is done using a xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest2-bootstrapping[`Module`] implementation, along with the `IntegrationTestAbstract3` superclass.
+
+For example, the xref:../ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]'s integration tests all inherit from this class:
+
+[source,java]
+----
+public abstract class DomainAppIntegTestAbstract extends IntegrationTestAbstract3 {
+
+    public DomainAppIntegTestAbstract() {
+        super(new DomainAppApplicationModule());
+    }
+}
+----
+
+where `DomainAppApplicationModule` in turn declares all the dependencies that make up the application.
+
+If required, the `Module` can be customised first using the various `withXxx(...)` methods to specify addition modules, domain services and configuration properties.
+
+
+== 1.15.0
+
+In `1.15.0` the bootstrapping of integration tests is done using a combination of `AppManifestAbstract` (a framework-provided implementation of xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[`AppManifest`]) and `IntegrationTestAbstract2` superclass.
 
 For example, the xref:../ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]'s integration tests all inherit from this class:
 
@@ -28,7 +49,6 @@ public abstract class DomainAppIntegTestAbstract extends IntegrationTestAbstract
     public static void initSystem() {
         bootstrapUsing(new DomainAppAppManifest());
     }
-
 }
 ----
 
diff --git a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProvider.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProvider.java
index b89c8b6..09429d5 100644
--- a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProvider.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProvider.java
@@ -27,7 +27,10 @@ import org.apache.isis.applib.DomainObjectContainer;
  * For {@link ScenarioExecution scenario}s with integration-scope, these will be
  * configured services for an end-to-end running system.  For scenarios with
  * unit-scope, these will typically be mocks.
+ * 
+ * @deprecated - with no replacement
  */
+@Deprecated
 public interface DomainServiceProvider {
 
     DomainObjectContainer getContainer();
diff --git a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java
index 4d4d2cd..cbb6f11 100644
--- a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java
@@ -27,6 +27,10 @@ import org.jmock.api.Invocation;
 import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.core.unittestsupport.jmocking.JavassistImposteriser;
 
+/**
+ * @deprecated - with no replacement
+ */
+@Deprecated
 class DomainServiceProviderMockery implements DomainServiceProvider {
 
     private DomainObjectContainer mockContainer = null;
diff --git a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/InMemoryDB.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/InMemoryDB.java
index 2ffb7c2..792f274 100644
--- a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/InMemoryDB.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/InMemoryDB.java
@@ -46,7 +46,10 @@ import org.apache.isis.applib.DomainObjectContainer;
  * <p>
  * Finally, note that the {@link #init(Object, String) init} hook method allows subclasses to
  * customize the state of any objects created.
+ *
+ * @deprecated - with no replacement
  */
+@Deprecated
 public class InMemoryDB {
     
     private final ScenarioExecution scenarioExecution;
diff --git a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java
index a6a89db..0b28cf4 100644
--- a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java
@@ -20,7 +20,10 @@ package org.apache.isis.core.specsupport.scenarios;
 /**
  * The scope at which the specification will run; acts as a factory to create
  * an instance of the appropriate subclass of {@link ScenarioExecution}.
+ *
+ * @deprecated - with no replacement
  */
+@Deprecated
 public class ScenarioExecutionScope {
     
     public final static ScenarioExecutionScope UNIT = new ScenarioExecutionScope(ScenarioExecutionForUnit.class);
diff --git a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueAbstract.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueAbstract.java
index 675ea26..8a3b95b 100644
--- a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueAbstract.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueAbstract.java
@@ -44,7 +44,10 @@ import static org.junit.Assert.fail;
  * <p>
  * Simply declares that an instance of {@link ScenarioExecution} (or a subclass)
  * must be instantiated by the Cucumber-JVM runtime and injected into the step definitions.
+ * 
+ * @deprecated  - use {@link CukeGlueAbstract2} instead.
  */
+@Deprecated
 public abstract class CukeGlueAbstract {
 
     /**
diff --git a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueAbstract2.java
similarity index 69%
copy from example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
copy to core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueAbstract2.java
index 9eeb747..01b95a3 100644
--- a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueAbstract2.java
@@ -14,16 +14,17 @@ O *  Licensed to the Apache Software Foundation (ASF) under one or more
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package domainapp.application.bdd.specglue;
+package org.apache.isis.core.specsupport.specs;
 
-import org.apache.isis.core.specsupport.specs.CukeGlueIntegrationScopeAbstract;
+import org.apache.isis.core.runtime.headless.HeadlessAbstract;
 
-import domainapp.application.DomainAppApplicationModule;
-
-public class BootstrappingGlue extends CukeGlueIntegrationScopeAbstract {
-
-    public BootstrappingGlue() {
-        super(new DomainAppApplicationModule());
-    }
+/**
+ * Base class for BDD spec glue.
+ *
+ * <p>
+ *     Note that there also needs to be at least one spec glue that inherits from{@link CukeGlueBootstrappingAbstract}.
+ * </p>
+ */
+public abstract class CukeGlueAbstract2 extends HeadlessAbstract {
 
 }
diff --git a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueIntegrationScopeAbstract.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueBootstrappingAbstract.java
similarity index 87%
rename from core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueIntegrationScopeAbstract.java
rename to core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueBootstrappingAbstract.java
index 5fcc8f2..0ca1e90 100644
--- a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueIntegrationScopeAbstract.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeGlueBootstrappingAbstract.java
@@ -26,10 +26,9 @@ import cucumber.api.java.Before;
  * For BDD spec using headless access, there needs to be (at least) one BDD spec glue that inherits from this adapter
  * class, specifying the {@link Module} to use to bootstrap the system.
  */
-public abstract class CukeGlueIntegrationScopeAbstract extends HeadlessWithBootstrappingAbstract {
+public abstract class CukeGlueBootstrappingAbstract extends HeadlessWithBootstrappingAbstract {
 
-    protected CukeGlueIntegrationScopeAbstract(final Module module,
-            final Class... additionalModuleClasses) {
+    protected CukeGlueBootstrappingAbstract(final Module module) {
         super(module);
     }
 
diff --git a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeSpecsAbstract.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeSpecsAbstract.java
index 07f72e3..e00e4ea 100644
--- a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeSpecsAbstract.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/specs/CukeSpecsAbstract.java
@@ -23,7 +23,10 @@ import cucumber.api.junit.Cucumber;
 
 /**
  * Base class for all Cucumber specs run at unit-scope; runs the spec as a JUnit test.
+ *
+ * @deprecated - with no replacement
  */
+@Deprecated
 @RunWith(Cucumber.class)
 @CucumberOptions(
         format = {
diff --git a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java b/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
index 9eeb747..7988f2f 100644
--- a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
+++ b/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
@@ -16,11 +16,11 @@ O *  Licensed to the Apache Software Foundation (ASF) under one or more
  */
 package domainapp.application.bdd.specglue;
 
-import org.apache.isis.core.specsupport.specs.CukeGlueIntegrationScopeAbstract;
+import org.apache.isis.core.specsupport.specs.CukeGlueBootstrappingAbstract;
 
 import domainapp.application.DomainAppApplicationModule;
 
-public class BootstrappingGlue extends CukeGlueIntegrationScopeAbstract {
+public class BootstrappingGlue extends CukeGlueBootstrappingAbstract {
 
     public BootstrappingGlue() {
         super(new DomainAppApplicationModule());
diff --git a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/CatalogOfFixturesGlue.java b/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/CatalogOfFixturesGlue.java
index 2de699a..e2bc1a0 100644
--- a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/CatalogOfFixturesGlue.java
+++ b/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/CatalogOfFixturesGlue.java
@@ -16,22 +16,14 @@
  */
 package domainapp.application.bdd.specglue;
 
-import javax.inject.Inject;
-
-import org.apache.isis.applib.fixturescripts.FixtureScripts;
-import org.apache.isis.core.runtime.headless.HeadlessAbstract;
+import org.apache.isis.core.specsupport.specs.CukeGlueAbstract2;
 
 import cucumber.api.java.Before;
 import domainapp.application.fixture.scenarios.DomainAppDemo;
 
-public class CatalogOfFixturesGlue extends HeadlessAbstract {
-
+public class CatalogOfFixturesGlue extends CukeGlueAbstract2 {
     @Before(value={"@DomainAppDemo"}, order=20000)
-    public void integrationFixtures() throws Throwable {
+    public void runDomainAppDemo() {
         fixtureScripts.runFixtureScript(new DomainAppDemo(), null);
     }
-
-    @Inject
-    FixtureScripts fixtureScripts;
-
 }
diff --git a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specs/RunIntegBddSpecs.java b/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specs/RunBddSpecs.java
similarity index 97%
rename from example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specs/RunIntegBddSpecs.java
rename to example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specs/RunBddSpecs.java
index 77e5a5e..b507749 100644
--- a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specs/RunIntegBddSpecs.java
+++ b/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specs/RunBddSpecs.java
@@ -38,6 +38,6 @@ import cucumber.api.junit.Cucumber;
         strict = true,
         tags = { "~@backlog", "~@ignore" }
 )
-public class RunIntegBddSpecs {
+public class RunBddSpecs {
     // intentionally empty 
 }
diff --git a/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/specglue/SimpleObjectMenuGlue.java b/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/specglue/SimpleObjectMenuGlue.java
index 0b6345a..a960df2 100644
--- a/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/specglue/SimpleObjectMenuGlue.java
+++ b/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/specglue/SimpleObjectMenuGlue.java
@@ -21,7 +21,7 @@ import java.util.UUID;
 
 import javax.inject.Inject;
 
-import org.apache.isis.core.runtime.headless.HeadlessAbstract;
+import org.apache.isis.core.specsupport.specs.CukeGlueAbstract2;
 
 import cucumber.api.java.en.Given;
 import cucumber.api.java.en.When;
@@ -30,7 +30,7 @@ import domainapp.modules.simple.dom.impl.SimpleObjectMenu;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
-public class SimpleObjectMenuGlue extends HeadlessAbstract {
+public class SimpleObjectMenuGlue extends CukeGlueAbstract2 {
 
     @Given("^there are.* (\\d+) simple objects$")
     public void there_are_N_simple_objects(int n) throws Throwable {

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.

[isis] 02/03: ISIS-1782: now reads only from "isis.headless.module" as an override, and sets "isis.headless" system property only

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit a146a2a95761e3b46c4f4cd3af4401a124fde953
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Dec 13 12:38:11 2017 +0000

    ISIS-1782: now reads only from "isis.headless.module" as an override, and sets "isis.headless" system property only
    
    no longer isis.integTest.module nor isis.integTest system properties
---
 .../core/runtime/headless/HeadlessWithBootstrappingAbstract.java    | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
index 25ea0ab..1f646e3 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
@@ -76,10 +76,7 @@ public abstract class HeadlessWithBootstrappingAbstract extends HeadlessAbstract
             setupLogging.set(true);
         }
 
-        String moduleFqcn = System.getProperty("isis.headless.module");
-        if(moduleFqcn == null) {
-            moduleFqcn = System.getProperty("isis.integTest.module"); // to deprecate
-        }
+        final String moduleFqcn = System.getProperty("isis.headless.module");
 
         final Module moduleToUse =
                 !Strings.isNullOrEmpty(moduleFqcn)
@@ -95,7 +92,6 @@ public abstract class HeadlessWithBootstrappingAbstract extends HeadlessAbstract
     protected void bootstrapAndSetupIfRequired() {
 
         System.setProperty("isis.headless", "true");
-        System.setProperty("isis.integTest", "true"); // to deprecate
 
         isisSystemBootstrapper.bootstrapIfRequired();
         isisSystemBootstrapper.injectServicesInto(this);

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.