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 2018/07/18 22:50:56 UTC

[isis] branch master updated (5177bac -> 85cb362)

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 5177bac  ISIS-1810: java-doc improvements
     new a009d31  ISIS-1810: allows gpg passphrase to be specified on command line
     new a922053  ISIS-1810: disables doclint if building on JDK 8+
     new 003b3c5  ISIS-1810: updates script to recreate archetypes
     new 4622b57  ISIS-1810: recreating simpleapp archetype
     new 85cb362  ISIS-1810: recreating simpleapp archetype

The 5 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:
 core/pom.xml                                       |  42 +++
 example/archetype/simpleapp/pom.xml                | 109 ++++---
 .../META-INF/maven/archetype-metadata.xml          | 339 ++++++++++-----------
 .../resources/archetype-resources/.gitlab-ci.yml   |  28 +-
 .../resources/archetype-resources/.m2/settings.xml |   8 +-
 .../archetype-resources/application/pom.xml        |   2 +-
 .../fixture/scenarios/DomainAppDemo.java           |   6 +-
 .../manifest/isis-non-changing.properties          |   4 +-
 .../bdd/specglue/BootstrappingGlue.java            |   4 +-
 .../bdd/specglue/BootstrappingGlueAbstract.java    |   3 +
 .../application/translations.pot                   | 105 +++++--
 .../archetype-resources/module-simple/pom.xml      |  42 ++-
 .../domainapp/modules/simple/SimpleModule.java     |   6 +-
 .../modules/simple/dom/impl/SimpleObject.java      |  22 +-
 .../simple/dom/impl/SimpleObjectRepository.java    |  58 ----
 .../modules/simple/dom/impl/SimpleObjects.java     |  13 +-
 .../domainapp/modules/simple/dom/types/Name.java   |   3 +
 .../simple/fixture/SimpleObject_persona.java       |   6 +-
 .../modules/simple/dom/impl/SimpleObject_Test.java |   7 +-
 .../simple/dom/impl/SimpleObjects_Test.java        |   9 +-
 .../integtests/SimpleModuleIntegTestAbstract.java  |   6 +-
 .../tests/SimpleObjectMenu_IntegTest.java          |  30 +-
 .../integtests/tests/SimpleObject_IntegTest.java   |  42 ++-
 .../module-simple/translations.pot                 | 105 +++++--
 .../src/main/resources/archetype-resources/pom.xml | 288 +++++++++--------
 .../resources/archetype-resources/webapp/pom.xml   |   2 +-
 .../src/main/webapp/WEB-INF/logging.properties     |   4 +-
 .../webapp/src/main/webapp/WEB-INF/web.xml         |   7 +-
 .../resources/projects/basic/archetype.properties  |   2 +-
 scripts/recreate-archetype.sh                      |   6 +-
 scripts/updateGeneratedArchetypeSources.groovy     | 169 ++++------
 31 files changed, 763 insertions(+), 714 deletions(-)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java (94%)
 delete mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java (93%)


[isis] 04/05: ISIS-1810: recreating simpleapp archetype

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 4622b57c5e33f75481c7cc53bcc7e3e7bbfc22d0
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jul 19 00:37:17 2018 +0200

    ISIS-1810: recreating simpleapp archetype
---
 example/archetype/simpleapp/pom.xml                | 109 ++++---
 .../META-INF/maven/archetype-metadata.xml          | 339 ++++++++++-----------
 .../resources/archetype-resources/.gitlab-ci.yml   |  28 +-
 .../resources/archetype-resources/.m2/settings.xml |   8 +-
 .../archetype-resources/application/pom.xml        |   2 +-
 .../fixture/scenarios/DomainAppDemo.java           |   6 +-
 .../manifest/isis-non-changing.properties          |   4 +-
 .../bdd/specglue/BootstrappingGlue.java            |   4 +-
 ...ingGlue.java => BootstrappingGlueAbstract.java} |  25 +-
 .../application/translations.pot                   | 105 +++++--
 .../archetype-resources/module-simple/pom.xml      |  42 ++-
 .../domainapp/modules/simple/SimpleModule.java     |   6 +-
 .../modules/simple/dom/impl/SimpleObject.java      |  22 +-
 .../simple/dom/impl/SimpleObjectRepository.java    |  58 ----
 .../modules/simple/dom/impl/SimpleObjects.java     |  13 +-
 .../domainapp/modules/simple/dom/types/Name.java   |  38 +++
 .../simple/fixture/SimpleObject_persona.java       |   6 +-
 .../modules/simple/dom/impl/SimpleObject_Test.java |   7 +-
 .../simple/dom/impl/SimpleObjects_Test.java        |   9 +-
 .../integtests/SimpleModuleIntegTestAbstract.java  |   6 +-
 .../tests/SimpleObjectMenu_IntegTest.java          |  30 +-
 .../integtests/tests/SimpleObject_IntegTest.java   |  42 ++-
 .../module-simple/translations.pot                 | 105 +++++--
 .../src/main/resources/archetype-resources/pom.xml | 288 +++++++++--------
 .../resources/archetype-resources/webapp/pom.xml   |   2 +-
 .../src/main/webapp/WEB-INF/logging.properties     |   4 +-
 .../webapp/src/main/webapp/WEB-INF/web.xml         |   7 +-
 .../resources/projects/basic/archetype.properties  |   2 +-
 28 files changed, 700 insertions(+), 617 deletions(-)

diff --git a/example/archetype/simpleapp/pom.xml b/example/archetype/simpleapp/pom.xml
index 485f3d8..eb6a4e3 100644
--- a/example/archetype/simpleapp/pom.xml
+++ b/example/archetype/simpleapp/pom.xml
@@ -17,63 +17,62 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.isis.archetype</groupId>
-    <artifactId>simpleapp-archetype</artifactId>
-    <version>${revision}</version>
-    <packaging>maven-archetype</packaging>
-    <name>simpleapp-archetype</name>
-    <build>
-        <extensions>
-            <extension>
-                <groupId>org.apache.maven.archetype</groupId>
-                <artifactId>archetype-packaging</artifactId>
-                <version>3.0.1</version>
-            </extension>
-        </extensions>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <artifactId>maven-archetype-plugin</artifactId>
-                    <version>3.0.1</version>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-    </build>
-    <description>This module defines a standard parent POM to use for various Incode applications and modules.  
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.isis.archetype</groupId>
+  <artifactId>simpleapp-archetype</artifactId>
+  <version>2.0.0-M1</version>
+  <packaging>maven-archetype</packaging>
+  <name>simpleapp-archetype</name>
+  <build>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.archetype</groupId>
+        <artifactId>archetype-packaging</artifactId>
+        <version>3.0.1</version>
+      </extension>
+    </extensions>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-archetype-plugin</artifactId>
+          <version>3.0.1</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+  <description>This module defines a standard parent POM to use for various Incode applications and modules.  
         Its primary purpose is to make it easy to use a set up maven mixins (https://github.com/odavid/maven-plugins)
         within child POMs.  Specifically this means locking down the versions of plugins using pluginManagement.
         
         It does NOT define any mixins for Apache Isis.</description>
-    <url>https://github.com/incodehq/incode-build/simpleapp</url>
-    <developers>
-        <developer>
-            <id>danhaywood</id>
-            <name>Dan Haywood</name>
-            <email>dan@haywood-associates.co.uk</email>
-        </developer>
-    </developers>
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-            <distribution>repo</distribution>
-        </license>
-    </licenses>
-    <scm>
-        <connection>scm:git:git@github.com:incodehq/incode-build.git/simpleapp</connection>
-        <developerConnection>scm:git:git@github.com:incodehq/incode-build.git/simpleapp</developerConnection>
-        <url>git@github.com:incodehq/incode-build.git/simpleapp</url>
-    </scm>
-    <parent>
-        <groupId>org.apache.isis.core</groupId>
-        <artifactId>isis</artifactId>
-        <version>1.16.3-SNAPSHOT</version>
-        <relativePath>../../../core/pom.xml</relativePath>
-    </parent>
-    <properties>
-        <revision>2.0.0-M1-SNAPSHOT</revision>
-        <archetype.test.skip>true</archetype.test.skip>
-    </properties>
+  <url>https://github.com/incodehq/incode-build/simpleapp</url>
+  <developers>
+    <developer>
+      <id>danhaywood</id>
+      <name>Dan Haywood</name>
+      <email>dan@haywood-associates.co.uk</email>
+    </developer>
+  </developers>
+  <licenses>
+    <license>
+      <name>The Apache Software License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+  <scm>
+    <connection>scm:git:git@github.com:incodehq/incode-build.git/simpleapp</connection>
+    <developerConnection>scm:git:git@github.com:incodehq/incode-build.git/simpleapp</developerConnection>
+    <url>git@github.com:incodehq/incode-build.git/simpleapp</url>
+  </scm>
+  <parent>
+    <groupId>org.apache.isis.core</groupId>
+    <artifactId>isis</artifactId>
+    <version>2.0.0-M1</version>
+    <relativePath>../../../core/pom.xml</relativePath>
+  </parent>
+  <properties>
+    <archetype.test.skip>true</archetype.test.skip>
+  </properties>
 </project>
diff --git a/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml b/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
index 925709d..37b7cec 100644
--- a/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -17,180 +17,177 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<archetype-descriptor xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" name="simpleapp" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <fileSets>
+<archetype-descriptor xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="simpleapp" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd">
+  <fileSets>
+    <fileSet filtered="true" encoding="UTF-8">
+      <directory>_checks</directory>
+      <includes>
+        <include>**/*.xml</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="true" encoding="UTF-8">
+      <directory>.m2</directory>
+      <includes>
+        <include>**/*.xml</include>
+      </includes>
+    </fileSet>
+    <fileSet encoding="UTF-8">
+      <directory/>
+      <includes>
+        <include>.gitattributes</include>
+        <include>.gitignore</include>
+        <include>.gitlab-ci.yml</include>
+        <include>enhance-all.sh</include>
+        <include>README.adoc</include>
+      </includes>
+    </fileSet>
+  </fileSets>
+  <modules>
+    <module name="${rootArtifactId}-module-simple" id="${rootArtifactId}-module-simple" dir="module-simple">
+      <fileSets>
         <fileSet filtered="true" encoding="UTF-8">
-            <directory>_checks</directory>
-            <includes>
-                <include>**/*.xml</include>
-            </includes>
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.png</include>
+          </includes>
         </fileSet>
         <fileSet filtered="true" encoding="UTF-8">
-            <directory>.m2</directory>
-            <includes>
-                <include>**/*.xml</include>
-            </includes>
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory/>
+          <includes>
+            <include>logging-dn-enhance.properties</include>
+            <include>logging-integtest.properties</include>
+          </includes>
         </fileSet>
         <fileSet encoding="UTF-8">
-            <directory/>
-            <includes>
-                <include>.gitattributes</include>
-                <include>.gitignore</include>
-                <include>.gitlab-ci.yml</include>
-                <include>enhance-all.sh</include>
-                <include>README.adoc</include>
-            </includes>
-        </fileSet>
-    </fileSets>
-    <modules>
-        <module name="${rootArtifactId}-module-simple" id="${rootArtifactId}-module-simple" dir="module-simple">
-            <fileSets>
-                <fileSet filtered="true" encoding="UTF-8">
-                    <directory>src/main/java</directory>
-                    <includes>
-                        <include>**/*.java</include>
-                        <include>**/*.xml</include>
-                    </includes>
-                </fileSet>
-                <fileSet encoding="UTF-8">
-                    <directory>src/main/java</directory>
-                    <includes>
-                        <include>**/*.png</include>
-                    </includes>
-                </fileSet>
-                <fileSet filtered="true" encoding="UTF-8">
-                    <directory>src/test/java</directory>
-                    <includes>
-                        <include>**/*.java</include>
-                    </includes>
-                </fileSet>
-                <fileSet filtered="true" encoding="UTF-8">
-                    <directory/>
-                    <includes>
-                        <include>logging-dn-enhance.properties</include>
-                        <include>logging-integtest.properties</include>
-                    </includes>
-                </fileSet>
-                <fileSet encoding="UTF-8">
-                    <directory/>
-                    <includes>
-                        <include>.gitignore</include>
-                        <include>build.gradle</include>
-                        <include>gradlew</include>
-                        <include>gradlew.bat</include>
-                        <include>layouts.gradle</include>
-                        <include>liveReload.gradle</include>
-                        <include>translations.pot</include>
-                    </includes>
-                </fileSet>
-            </fileSets>
-        </module>
-        <module name="${rootArtifactId}-application" id="${rootArtifactId}-application" dir="application">
-            <fileSets>
-                <fileSet filtered="true" encoding="UTF-8">
-                    <directory>src/main/java</directory>
-                    <includes>
-                        <include>**/*.java</include>
-                        <include>**/*.xml</include>
-                    </includes>
-                </fileSet>
-                <fileSet encoding="UTF-8">
-                    <directory>src/main/java</directory>
-                    <includes>
-                        <include>**/*.png</include>
-                    </includes>
-                </fileSet>
-                <fileSet filtered="true" encoding="UTF-8">
-                    <directory>src/main/resources</directory>
-                    <includes>
-                        <include>**/*.properties</include>
-                    </includes>
-                </fileSet>
-                <fileSet filtered="true" encoding="UTF-8">
-                    <directory>src/test/java</directory>
-                    <includes>
-                        <include>**/*.java</include>
-                    </includes>
-                </fileSet>
-                <fileSet encoding="UTF-8">
-                    <directory>src/test/java</directory>
-                    <includes>
-                        <include>**/*.feature</include>
-                    </includes>
-                </fileSet>
-                <fileSet filtered="true" encoding="UTF-8">
-                    <directory>src/test/resources</directory>
-                    <includes>
-                        <include>**/*.properties</include>
-                    </includes>
-                </fileSet>
-                <fileSet filtered="true" encoding="UTF-8">
-                    <directory/>
-                    <includes>
-                        <include>logging-integtest.properties</include>
-                    </includes>
-                </fileSet>
-                <fileSet encoding="UTF-8">
-                    <directory/>
-                    <includes>
-                        <include>.gitignore</include>
-                        <include>translations.pot</include>
-                    </includes>
-                </fileSet>
-            </fileSets>
-        </module>
-        <module name="${rootArtifactId}-webapp" id="${rootArtifactId}-webapp" dir="webapp">
-            <fileSets>
-                <fileSet filtered="true" encoding="UTF-8">
-                    <directory>src/main/java</directory>
-                    <includes>
-                        <include>**/*.java</include>
-                        <include>**/*.html</include>
-                        <include>**/*.properties</include>
-                    </includes>
-                </fileSet>
-                <fileSet filtered="true" encoding="UTF-8">
-                    <directory>src/main/webapp</directory>
-                    <includes>
-                        <include>**/*.xml</include>
-                        <include>**/*.html</include>
-                        <include>**/*.properties</include>
-                    </includes>
-                </fileSet>
-                <fileSet encoding="UTF-8">
-                    <directory>src/main/resources</directory>
-                    <includes>
-                        <include>**/*.</include>
-                    </includes>
-                </fileSet>
-                <fileSet encoding="UTF-8">
-                    <directory>src/main/jettyconsole</directory>
-                    <includes>
-                        <include>**/*.png</include>
-                        <include>**/*.pdn</include>
-                    </includes>
-                </fileSet>
-                <fileSet encoding="UTF-8">
-                    <directory>src/main/webapp</directory>
-                    <includes>
-                        <include>**/*.css</include>
-                        <include>**/*.ico</include>
-                        <include>**/*.gif</include>
-                        <include>**/*.ini</include>
-                        <include>**/*.md</include>
-                        <include>**/*.ttf</include>
-                        <include>**/*.png</include>
-                        <include>**/*.js</include>
-                        <include>**/*.po</include>
-                    </includes>
-                </fileSet>
-                <fileSet encoding="UTF-8">
-                    <directory>lib</directory>
-                    <includes>
-                        <include>**/*.gitignore</include>
-                    </includes>
-                </fileSet>
-            </fileSets>
-        </module>
-    </modules>
+          <directory/>
+          <includes>
+            <include>.gitignore</include>
+            <include>build.gradle</include>
+            <include>gradlew</include>
+            <include>gradlew.bat</include>
+            <include>layouts.gradle</include>
+            <include>liveReload.gradle</include>
+            <include>translations.pot</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module name="${rootArtifactId}-application" id="${rootArtifactId}-application" dir="application">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.png</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.feature</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/test/resources</directory>
+          <includes>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory/>
+          <includes>
+            <include>logging-integtest.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory/>
+          <includes>
+            <include>.gitignore</include>
+            <include>translations.pot</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module name="${rootArtifactId}-webapp" id="${rootArtifactId}-webapp" dir="webapp">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+            <include>**/*.html</include>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/webapp</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.html</include>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/jettyconsole</directory>
+          <includes>
+            <include>**/*.png</include>
+            <include>**/*.pdn</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/webapp</directory>
+          <includes>
+            <include>**/*.css</include>
+            <include>**/*.gif</include>
+            <include>**/*.ini</include>
+            <include>**/*.png</include>
+            <include>**/*.js</include>
+            <include>**/*.po</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>lib</directory>
+          <includes>
+            <include>**/*.gitignore</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+  </modules>
 </archetype-descriptor>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitlab-ci.yml b/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitlab-ci.yml
index 9331427..7d4a33b 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitlab-ci.yml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitlab-ci.yml
@@ -1,8 +1,12 @@
 #
 # requires the following gitlab secret variables
-# - DOCKER_HUB_USERNAME
-# - DOCKER_HUB_PASSWORD
-# - DOCKER_HUB_EMAIL
+# - DOCKER_REGISTRY_USERNAME
+# - DOCKER_REGISTRY_PASSWORD
+# - DOCKER_REGISTRY_EMAIL
+# - DOCKER_REGISTRY_NAME        # eg "registry-1.docker.io" (for docker hub)
+                                # or "docker-dev.incode.cloud" (eg a cloud-based nexus)
+# - DOCKER_REGISTRY_URL         # eg "https://index.docker.io/v1/" (for docker hub)
+                                # or "https://repo.incode.cloud/repository/docker-dev/" (eg a cloud-based nexus)
 #
 
 image: maven:3.5.3-jdk-8
@@ -16,11 +20,8 @@ services:
 variables:
   DOCKER_HOST: tcp://docker:2375
   DOCKER_DRIVER: overlay2
-  MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
   MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dskip.cloudbees-estatio-repositories -Dskip.sonatype-snapshots -Dskip.apache-snapshots"
-  APP_NAME: "isis-demoapp-simpleapp"
-  DOCKER_REGISTRY_ID: "docker-hub"
-  DOCKER_REGISTRY_URL: "https://index.docker.io/v1/"
+  APP_NAME: "simpleapp"
 
 stages:
   - build-package-push
@@ -30,20 +31,21 @@ build-package-push:
   script:
     - echo "REVISION=$REVISION"
     - >
-      mvn $MAVEN_CLI_OPTS \
-          clean install \
+      mvn --batch-mode \
+           install \
           -Drevision=$REVISION \
           -Dmavenmixin-docker \
-          -Ddocker-plugin.imageName=$DOCKER_HUB_USERNAME/$APP_NAME
+          -Ddocker-plugin.imageName=$DOCKER_REGISTRY_NAME/$DOCKER_REGISTRY_USERNAME/$APP_NAME
     - >
-      mvn $MAVEN_CLI_OPTS \
+      mvn -s .m2/settings.xml \
+          --batch-mode \
           docker:push@push-image-tagged \
           -pl webapp \
           -Drevision=$REVISION \
           -DskipTests \
           -Dskip.isis-swagger \
           -Dmavenmixin-docker \
-          -Ddocker-plugin.imageName=$DOCKER_HUB_USERNAME/$APP_NAME \
-          -Ddocker-plugin.serverId=$DOCKER_REGISTRY_ID \
+          -Ddocker-plugin.imageName=$DOCKER_REGISTRY_USERNAME/$DOCKER_REGISTRY_REPOSITORY \
+          -Ddocker-plugin.serverId=docker-registry \
           -Ddocker.registryUrl=$DOCKER_REGISTRY_URL
 
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/.m2/settings.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/.m2/settings.xml
index 013142b..3a2172d 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/.m2/settings.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/.m2/settings.xml
@@ -7,11 +7,11 @@
           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
   <servers>
     <server>
-      <id>${symbol_dollar}{env.DOCKER_REGISTRY_ID}</id>
-      <username>${symbol_dollar}{env.DOCKER_HUB_USERNAME}</username>
-      <password>${symbol_dollar}{env.DOCKER_HUB_PASSWORD}</password>
+      <id>docker-registry</id>
+      <username>${symbol_dollar}{env.DOCKER_REGISTRY_USERNAME}</username>
+      <password>${symbol_dollar}{env.DOCKER_REGISTRY_PASSWORD}</password>
       <configuration>
-        <email>${symbol_dollar}{env.DOCKER_HUB_EMAIL}</email>
+        <email>${symbol_dollar}{env.DOCKER_REGISTRY_EMAIL}</email>
       </configuration>
     </server>
   </servers>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/pom.xml
index 6e95f1a..040a36f 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/pom.xml
@@ -26,7 +26,7 @@
     </parent>
 
     <artifactId>${artifactId}</artifactId>
-    <name>SimpleApp Application</name>
+    <name>Apache Isis App - SimpleApp Application</name>
 
     <description>This defines the application (manifest) and runs application-level fixtures and integration (smoke) tests</description>
 
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
index 0229979..ca584a1 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
@@ -25,7 +25,7 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.AppManifest2;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
-import org.apache.isis.applib.services.metamodel.MetaModelService4;
+import org.apache.isis.applib.services.metamodel.MetaModelService;
 
 import domainapp.modules.simple.fixture.SimpleObject_persona;
 
@@ -37,12 +37,12 @@ public class DomainAppDemo extends FixtureScript {
 
     @Override
     protected void execute(final ExecutionContext ec) {
-        AppManifest2 appManifest2 = metaModelService4.getAppManifest2();
+        AppManifest2 appManifest2 = metaModelService.getAppManifest2();
         ec.executeChild(this, appManifest2.getTeardownFixture());
         ec.executeChild(this, appManifest2.getRefDataSetupFixture());
         ec.executeChild(this, new SimpleObject_persona.PersistAll());
     }
 
     @Inject
-    MetaModelService4 metaModelService4;
+    MetaModelService metaModelService;
 }
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/resources/domainapp/application/manifest/isis-non-changing.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/resources/domainapp/application/manifest/isis-non-changing.properties
index 22bf94f..13aabf3 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/resources/domainapp/application/manifest/isis-non-changing.properties
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/resources/domainapp/application/manifest/isis-non-changing.properties
@@ -21,9 +21,9 @@ ${symbol_pound}  under the License.
 
 
 
-
+${symbol_pound} -- auto wired by plugins -- 
 ${symbol_pound}isis.services.eventbus.implementation=guava
-isis.services.eventbus.implementation=axon
+${symbol_pound}isis.services.eventbus.implementation=axon
 
 
 ${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
index 5b2364d..b6b046e 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
@@ -19,13 +19,11 @@ O *  Licensed to the Apache Software Foundation (ASF) under one or more
  */
 package domainapp.application.bdd.specglue;
 
-import org.apache.isis.core.runtime.headless.HeadlessWithBootstrappingAbstract;
-
 import cucumber.api.java.After;
 import cucumber.api.java.Before;
 import domainapp.application.DomainAppApplicationModule;
 
-public class BootstrappingGlue extends HeadlessWithBootstrappingAbstract {
+public class BootstrappingGlue extends BootstrappingGlueAbstract {
 
     @Before(order=100)
     public void beforeScenario() {
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java
similarity index 67%
copy from example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
copy to example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java
index 5b2364d..efd213a 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java
@@ -19,26 +19,17 @@ O *  Licensed to the Apache Software Foundation (ASF) under one or more
  */
 package domainapp.application.bdd.specglue;
 
+import org.apache.isis.applib.Module;
+import org.apache.isis.core.integtestsupport.ModuleBuilder;
 import org.apache.isis.core.runtime.headless.HeadlessWithBootstrappingAbstract;
 
-import cucumber.api.java.After;
-import cucumber.api.java.Before;
-import domainapp.application.DomainAppApplicationModule;
+public class BootstrappingGlueAbstract extends HeadlessWithBootstrappingAbstract {
 
-public class BootstrappingGlue extends HeadlessWithBootstrappingAbstract {
-
-    @Before(order=100)
-    public void beforeScenario() {
-        super.bootstrapAndSetupIfRequired();
-    }
-
-    @After
-    public void afterScenario(cucumber.api.Scenario sc) {
-        super.tearDownAllModules();
-    }
-
-    public BootstrappingGlue() {
-        super(new DomainAppApplicationModule());
+    public BootstrappingGlueAbstract(final Module module) {
+        super(ModuleBuilder.create(module)
+                .withHeadlessTransactionSupport()
+                .withIntegrationTestConfigFallback()
+                .build());
     }
 
 }
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
index 1ab3518..bbd2a03 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
@@ -23,7 +23,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"POT-Creation-Date: 2018-03-10 13:41:00+\n"
+"POT-Creation-Date: 2018-07-18 23:11:02+\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -40,12 +40,12 @@ msgid ".pot file name"
 msgstr ""
 
 
+#: org.apache.isis.applib.mixins.dto.Dto_downloadXml#act()
+#: org.apache.isis.applib.mixins.dto.Dto_downloadXsd#act()
+#: org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act()
+#: org.apache.isis.applib.mixins.layout.Object_openRestApi#act()
+#: org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel#act()
 #: org.apache.isis.applib.services.bookmark.BookmarkHolder_lookup#act()
-#: org.apache.isis.applib.services.dto.Dto_downloadXml#act()
-#: org.apache.isis.applib.services.dto.Dto_downloadXsd#act()
-#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#act()
-#: org.apache.isis.applib.services.layout.Object_openRestApi#act()
-#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel#act()
 #: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#act()
 msgid "Act"
 msgstr ""
@@ -56,6 +56,15 @@ msgid "Action"
 msgstr ""
 
 
+#: java.lang.Class#addEventListener()
+#: java.util.function.Consumer#addEventListener()
+#: org.apache.isis.applib.services.eventbus.EventBusService#addEventListener()
+#: org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault#addEventListener()
+#: org.apache.isis.objectstore.jdo.datanucleus.service.eventbus.EventBusServiceJdo#addEventListener()
+msgid "Add Event Listener"
+msgstr ""
+
+
 #: org.apache.isis.applib.services.xactn.TransactionService$Policy#ALWAYS
 msgid "Always"
 msgstr ""
@@ -66,6 +75,11 @@ msgid "Are you sure?"
 msgstr ""
 
 
+#: org.apache.isis.core.integtestsupport.components.HeadlessTransactionSupportDefault#beginTransaction()
+msgid "Begin Transaction"
+msgstr ""
+
+
 #: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
 msgid "Cancel"
 msgstr ""
@@ -124,12 +138,17 @@ msgstr ""
 #: domainapp.application.services.homepage.HomePageViewModel#downloadLayoutXml()
 #: domainapp.modules.simple.dom.impl.SimpleObject#downloadLayoutXml()
 #: java.io.Serializable#downloadLayoutXml()
+#: java.lang.Class#downloadLayoutXml()
 #: java.lang.Comparable#downloadLayoutXml()
 #: java.lang.Iterable#downloadLayoutXml()
 #: java.lang.Object#downloadLayoutXml()
+#: java.lang.reflect.AnnotatedElement#downloadLayoutXml()
+#: java.lang.reflect.GenericDeclaration#downloadLayoutXml()
+#: java.lang.reflect.Type#downloadLayoutXml()
 #: java.util.Collection#downloadLayoutXml()
 #: java.util.List#downloadLayoutXml()
 #: java.util.Set#downloadLayoutXml()
+#: java.util.function.Consumer#downloadLayoutXml()
 #: javax.jdo.listener.InstanceLifecycleListener#downloadLayoutXml()
 #: javax.jdo.listener.LoadLifecycleListener#downloadLayoutXml()
 #: javax.jdo.listener.StoreLifecycleListener#downloadLayoutXml()
@@ -148,7 +167,6 @@ msgstr ""
 #: org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository#downloadLayoutXml()
 #: org.apache.isis.applib.services.audit.AuditerService#downloadLayoutXml()
 #: org.apache.isis.applib.services.background.BackgroundService#downloadLayoutXml()
-#: org.apache.isis.applib.services.background.BackgroundService2#downloadLayoutXml()
 #: org.apache.isis.applib.services.bookmark.BookmarkService#downloadLayoutXml()
 #: org.apache.isis.applib.services.classdiscovery.ClassDiscoveryService#downloadLayoutXml()
 #: org.apache.isis.applib.services.command.Command#downloadLayoutXml()
@@ -170,11 +188,10 @@ msgstr ""
 #: org.apache.isis.applib.services.i18n.TranslationService#downloadLayoutXml()
 #: org.apache.isis.applib.services.jaxb.JaxbService#downloadLayoutXml()
 #: org.apache.isis.applib.services.jaxb.JaxbService$Simple#downloadLayoutXml()
-#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport0#downloadLayoutXml()
+#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport#downloadLayoutXml()
 #: org.apache.isis.applib.services.jdosupport.IsisJdoSupport_v3_2#downloadLayoutXml()
 #: org.apache.isis.applib.services.layout.LayoutService#downloadLayoutXml()
 #: org.apache.isis.applib.services.layout.LayoutService2#downloadLayoutXml()
-#: org.apache.isis.applib.services.memento.MementoService#downloadLayoutXml()
 #: org.apache.isis.applib.services.menu.MenuBarsLoaderService#downloadLayoutXml()
 #: org.apache.isis.applib.services.menu.MenuBarsService#downloadLayoutXml()
 #: org.apache.isis.applib.services.message.MessageService#downloadLayoutXml()
@@ -200,11 +217,12 @@ msgstr ""
 #: org.apache.isis.applib.services.xactn.TransactionService#downloadLayoutXml()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService#downloadLayoutXml()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotServiceAbstract#downloadLayoutXml()
+#: org.apache.isis.commons.internal.memento._Mementos$EncoderDecoder#downloadLayoutXml()
+#: org.apache.isis.commons.internal.memento._Mementos$SerializingAdapter#downloadLayoutXml()
 #: org.apache.isis.core.commons.authentication.AuthenticationSessionProvider#downloadLayoutXml()
 #: org.apache.isis.core.commons.components.ApplicationScopedComponent#downloadLayoutXml()
 #: org.apache.isis.core.commons.components.Component#downloadLayoutXml()
 #: org.apache.isis.core.commons.config.IsisConfiguration#downloadLayoutXml()
-#: org.apache.isis.core.commons.config.IsisConfigurationDefault#downloadLayoutXml()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManager#downloadLayoutXml()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerBase#downloadLayoutXml()
 #: org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider#downloadLayoutXml()
@@ -219,9 +237,11 @@ msgstr ""
 #: org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal#downloadLayoutXml()
 #: org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal#downloadLayoutXml()
 #: org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal#downloadLayoutXml()
+#: org.apache.isis.core.plugins.eventbus.EventBusPlugin$EventListener#downloadLayoutXml()
 #: org.apache.isis.core.runtime.authentication.AuthenticationManager#downloadLayoutXml()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManager#downloadLayoutXml()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManagerAbstract#downloadLayoutXml()
+#: org.apache.isis.core.runtime.headless.HeadlessTransactionSupport#downloadLayoutXml()
 #: org.apache.isis.core.runtime.persistence.FixturesInstalledFlag#downloadLayoutXml()
 #: org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault#downloadLayoutXml()
 #: org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory#downloadLayoutXml()
@@ -258,6 +278,11 @@ msgid "Download Translations"
 msgstr ""
 
 
+#: org.apache.isis.core.integtestsupport.components.HeadlessTransactionSupportDefault#endTransaction()
+msgid "End Transaction"
+msgstr ""
+
+
 #: org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternalNoop#executeWithinTransaction()
 #: org.apache.isis.core.runtime.services.persistsession.PersistenceSessionServiceInternalDefault#executeWithinTransaction()
 msgid "Execute Within Transaction"
@@ -269,10 +294,10 @@ msgid "Fallback"
 msgstr ""
 
 
-#: org.apache.isis.applib.services.dto.Dto_downloadXml#act(java.lang.String)
-#: org.apache.isis.applib.services.dto.Dto_downloadXsd#act(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.mixins.dto.Dto_downloadXml#act(java.lang.String)
+#: org.apache.isis.applib.mixins.dto.Dto_downloadXsd#act(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
 #: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadMenuBarsLayout(java.lang.String,org.apache.isis.applib.services.menu.MenuBarsService$Type)
-#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
 #: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#act(java.lang.String)
 msgid "File name"
 msgstr ""
@@ -374,7 +399,7 @@ msgid "New Application Feature"
 msgstr ""
 
 
-#: org.apache.isis.core.metamodel.services.xactn.TransactionServiceDefault#nextTransaction()
+#: org.apache.isis.core.runtime.services.xactn.TransactionServiceDefault#nextTransaction()
 msgid "Next Transaction"
 msgstr ""
 
@@ -412,12 +437,17 @@ msgstr ""
 #: domainapp.application.services.homepage.HomePageViewModel#openRestApi()
 #: domainapp.modules.simple.dom.impl.SimpleObject#openRestApi()
 #: java.io.Serializable#openRestApi()
+#: java.lang.Class#openRestApi()
 #: java.lang.Comparable#openRestApi()
 #: java.lang.Iterable#openRestApi()
 #: java.lang.Object#openRestApi()
+#: java.lang.reflect.AnnotatedElement#openRestApi()
+#: java.lang.reflect.GenericDeclaration#openRestApi()
+#: java.lang.reflect.Type#openRestApi()
 #: java.util.Collection#openRestApi()
 #: java.util.List#openRestApi()
 #: java.util.Set#openRestApi()
+#: java.util.function.Consumer#openRestApi()
 #: javax.jdo.listener.InstanceLifecycleListener#openRestApi()
 #: javax.jdo.listener.LoadLifecycleListener#openRestApi()
 #: javax.jdo.listener.StoreLifecycleListener#openRestApi()
@@ -436,7 +466,6 @@ msgstr ""
 #: org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository#openRestApi()
 #: org.apache.isis.applib.services.audit.AuditerService#openRestApi()
 #: org.apache.isis.applib.services.background.BackgroundService#openRestApi()
-#: org.apache.isis.applib.services.background.BackgroundService2#openRestApi()
 #: org.apache.isis.applib.services.bookmark.BookmarkService#openRestApi()
 #: org.apache.isis.applib.services.classdiscovery.ClassDiscoveryService#openRestApi()
 #: org.apache.isis.applib.services.command.Command#openRestApi()
@@ -458,11 +487,10 @@ msgstr ""
 #: org.apache.isis.applib.services.i18n.TranslationService#openRestApi()
 #: org.apache.isis.applib.services.jaxb.JaxbService#openRestApi()
 #: org.apache.isis.applib.services.jaxb.JaxbService$Simple#openRestApi()
-#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport0#openRestApi()
+#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport#openRestApi()
 #: org.apache.isis.applib.services.jdosupport.IsisJdoSupport_v3_2#openRestApi()
 #: org.apache.isis.applib.services.layout.LayoutService#openRestApi()
 #: org.apache.isis.applib.services.layout.LayoutService2#openRestApi()
-#: org.apache.isis.applib.services.memento.MementoService#openRestApi()
 #: org.apache.isis.applib.services.menu.MenuBarsLoaderService#openRestApi()
 #: org.apache.isis.applib.services.menu.MenuBarsService#openRestApi()
 #: org.apache.isis.applib.services.message.MessageService#openRestApi()
@@ -489,11 +517,12 @@ msgstr ""
 #: org.apache.isis.applib.services.xactn.TransactionService#openRestApi()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService#openRestApi()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotServiceAbstract#openRestApi()
+#: org.apache.isis.commons.internal.memento._Mementos$EncoderDecoder#openRestApi()
+#: org.apache.isis.commons.internal.memento._Mementos$SerializingAdapter#openRestApi()
 #: org.apache.isis.core.commons.authentication.AuthenticationSessionProvider#openRestApi()
 #: org.apache.isis.core.commons.components.ApplicationScopedComponent#openRestApi()
 #: org.apache.isis.core.commons.components.Component#openRestApi()
 #: org.apache.isis.core.commons.config.IsisConfiguration#openRestApi()
-#: org.apache.isis.core.commons.config.IsisConfigurationDefault#openRestApi()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManager#openRestApi()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerBase#openRestApi()
 #: org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider#openRestApi()
@@ -508,9 +537,11 @@ msgstr ""
 #: org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal#openRestApi()
 #: org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal#openRestApi()
 #: org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal#openRestApi()
+#: org.apache.isis.core.plugins.eventbus.EventBusPlugin$EventListener#openRestApi()
 #: org.apache.isis.core.runtime.authentication.AuthenticationManager#openRestApi()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManager#openRestApi()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManagerAbstract#openRestApi()
+#: org.apache.isis.core.runtime.headless.HeadlessTransactionSupport#openRestApi()
 #: org.apache.isis.core.runtime.persistence.FixturesInstalledFlag#openRestApi()
 #: org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault#openRestApi()
 #: org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory#openRestApi()
@@ -569,15 +600,25 @@ msgid "Public"
 msgstr ""
 
 
+#: org.apache.isis.core.metamodel.services.bookmarks.BookmarkServiceInternalDefault#read()
+msgid "Read"
+msgstr ""
+
+
 #: domainapp.application.services.homepage.HomePageViewModel#rebuildMetamodel()
 #: domainapp.modules.simple.dom.impl.SimpleObject#rebuildMetamodel()
 #: java.io.Serializable#rebuildMetamodel()
+#: java.lang.Class#rebuildMetamodel()
 #: java.lang.Comparable#rebuildMetamodel()
 #: java.lang.Iterable#rebuildMetamodel()
 #: java.lang.Object#rebuildMetamodel()
+#: java.lang.reflect.AnnotatedElement#rebuildMetamodel()
+#: java.lang.reflect.GenericDeclaration#rebuildMetamodel()
+#: java.lang.reflect.Type#rebuildMetamodel()
 #: java.util.Collection#rebuildMetamodel()
 #: java.util.List#rebuildMetamodel()
 #: java.util.Set#rebuildMetamodel()
+#: java.util.function.Consumer#rebuildMetamodel()
 #: javax.jdo.listener.InstanceLifecycleListener#rebuildMetamodel()
 #: javax.jdo.listener.LoadLifecycleListener#rebuildMetamodel()
 #: javax.jdo.listener.StoreLifecycleListener#rebuildMetamodel()
@@ -596,7 +637,6 @@ msgstr ""
 #: org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository#rebuildMetamodel()
 #: org.apache.isis.applib.services.audit.AuditerService#rebuildMetamodel()
 #: org.apache.isis.applib.services.background.BackgroundService#rebuildMetamodel()
-#: org.apache.isis.applib.services.background.BackgroundService2#rebuildMetamodel()
 #: org.apache.isis.applib.services.bookmark.BookmarkService#rebuildMetamodel()
 #: org.apache.isis.applib.services.classdiscovery.ClassDiscoveryService#rebuildMetamodel()
 #: org.apache.isis.applib.services.command.Command#rebuildMetamodel()
@@ -618,11 +658,10 @@ msgstr ""
 #: org.apache.isis.applib.services.i18n.TranslationService#rebuildMetamodel()
 #: org.apache.isis.applib.services.jaxb.JaxbService#rebuildMetamodel()
 #: org.apache.isis.applib.services.jaxb.JaxbService$Simple#rebuildMetamodel()
-#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport0#rebuildMetamodel()
+#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport#rebuildMetamodel()
 #: org.apache.isis.applib.services.jdosupport.IsisJdoSupport_v3_2#rebuildMetamodel()
 #: org.apache.isis.applib.services.layout.LayoutService#rebuildMetamodel()
 #: org.apache.isis.applib.services.layout.LayoutService2#rebuildMetamodel()
-#: org.apache.isis.applib.services.memento.MementoService#rebuildMetamodel()
 #: org.apache.isis.applib.services.menu.MenuBarsLoaderService#rebuildMetamodel()
 #: org.apache.isis.applib.services.menu.MenuBarsService#rebuildMetamodel()
 #: org.apache.isis.applib.services.message.MessageService#rebuildMetamodel()
@@ -648,11 +687,12 @@ msgstr ""
 #: org.apache.isis.applib.services.xactn.TransactionService#rebuildMetamodel()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService#rebuildMetamodel()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotServiceAbstract#rebuildMetamodel()
+#: org.apache.isis.commons.internal.memento._Mementos$EncoderDecoder#rebuildMetamodel()
+#: org.apache.isis.commons.internal.memento._Mementos$SerializingAdapter#rebuildMetamodel()
 #: org.apache.isis.core.commons.authentication.AuthenticationSessionProvider#rebuildMetamodel()
 #: org.apache.isis.core.commons.components.ApplicationScopedComponent#rebuildMetamodel()
 #: org.apache.isis.core.commons.components.Component#rebuildMetamodel()
 #: org.apache.isis.core.commons.config.IsisConfiguration#rebuildMetamodel()
-#: org.apache.isis.core.commons.config.IsisConfigurationDefault#rebuildMetamodel()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManager#rebuildMetamodel()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerBase#rebuildMetamodel()
 #: org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider#rebuildMetamodel()
@@ -667,9 +707,11 @@ msgstr ""
 #: org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal#rebuildMetamodel()
 #: org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal#rebuildMetamodel()
 #: org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal#rebuildMetamodel()
+#: org.apache.isis.core.plugins.eventbus.EventBusPlugin$EventListener#rebuildMetamodel()
 #: org.apache.isis.core.runtime.authentication.AuthenticationManager#rebuildMetamodel()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManager#rebuildMetamodel()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManagerAbstract#rebuildMetamodel()
+#: org.apache.isis.core.runtime.headless.HeadlessTransactionSupport#rebuildMetamodel()
 #: org.apache.isis.core.runtime.persistence.FixturesInstalledFlag#rebuildMetamodel()
 #: org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault#rebuildMetamodel()
 #: org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory#rebuildMetamodel()
@@ -686,6 +728,14 @@ msgid "Recreate Objects And Return First"
 msgstr ""
 
 
+#: org.apache.isis.applib.services.eventbus.EventBusService#removeEventListener()
+#: org.apache.isis.core.plugins.eventbus.EventBusPlugin$EventListener#removeEventListener()
+#: org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault#removeEventListener()
+#: org.apache.isis.objectstore.jdo.datanucleus.service.eventbus.EventBusServiceJdo#removeEventListener()
+msgid "Remove Event Listener"
+msgstr ""
+
+
 #: org.apache.isis.applib.fixturescripts.FixtureResult#object
 msgid "Result"
 msgstr ""
@@ -768,14 +818,19 @@ msgid "Version"
 msgstr ""
 
 
+#: org.apache.isis.core.metamodel.services.bookmarks.BookmarkServiceInternalDefault#write()
+msgid "Write"
+msgstr ""
+
+
 #: org.apache.isis.applib.services.swagger.SwaggerService$Format#YAML
 msgid "Yaml"
 msgstr ""
 
 
-#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml
-#: org.apache.isis.applib.services.layout.Object_openRestApi
-#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel
+#: org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml
+#: org.apache.isis.applib.mixins.layout.Object_openRestApi
+#: org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel
 #: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata
 msgid "datanucleusIdLong"
 msgstr ""
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/pom.xml
index 76511c7..65479af 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/pom.xml
@@ -26,7 +26,7 @@
     </parent>
 
     <artifactId>${artifactId}</artifactId>
-    <name>SimpleApp Simple Module</name>
+    <name>Apache Isis App - SimpleApp Simple Module</name>
 
     <properties>
         <isis-maven-plugin.validate.appManifest>domainapp.modules.simple.SimpleModuleManifest</isis-maven-plugin.validate.appManifest>
@@ -131,17 +131,43 @@
     </build>
 
     <dependencies>
+    
+    	<!-- ISIS API -->
+    	
         <dependency>
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-applib</artifactId>
         </dependency>
-
+        
+        <!-- ISIS CORE PLUGINS -->
+        
         <dependency>
-            <groupId>org.axonframework</groupId>
-            <artifactId>axon-core</artifactId>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-codegen-bytebuddy</artifactId>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-discovery-reflections</artifactId>
         </dependency>
+    
+      	<dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-jdo-datanucleus-5</artifactId>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-eventbus-guava</artifactId>
+        </dependency>
+    
+    	<dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-jaxrs-resteasy-3</artifactId>
+        </dependency>
+
+        <!-- TESTS -->
 
-        <!-- test -->
         <dependency>
             <groupId>org.apache.isis.mavendeps</groupId>
             <artifactId>isis-mavendeps-testing</artifactId>
@@ -150,12 +176,6 @@
         </dependency>
 
         <dependency>
-            <groupId>org.datanucleus</groupId>
-            <artifactId>datanucleus-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
             <groupId>org.hsqldb</groupId>
             <artifactId>hsqldb</artifactId>
             <scope>test</scope>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
index 2645e06..10ca1bf 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
@@ -43,9 +43,9 @@ public class SimpleModule extends ModuleAbstract {
     }
 
     public static class PropertyDomainEvent<S,T>
-            extends org.apache.isis.applib.services.eventbus.PropertyDomainEvent<S,T> {}
+            extends org.apache.isis.applib.events.domain.PropertyDomainEvent<S,T> {}
     public static class CollectionDomainEvent<S,T>
-            extends org.apache.isis.applib.services.eventbus.CollectionDomainEvent<S,T> {}
+            extends org.apache.isis.applib.events.domain.CollectionDomainEvent<S,T> {}
     public static class ActionDomainEvent<S> extends
-            org.apache.isis.applib.services.eventbus.ActionDomainEvent<S> {}
+            org.apache.isis.applib.events.domain.ActionDomainEvent<S> {}
 }
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
index a8ba8f5..3bbdbac 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
@@ -27,14 +27,11 @@ import javax.jdo.annotations.VersionStrategy;
 import com.google.common.collect.ComparisonChain;
 
 import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Auditing;
 import org.apache.isis.applib.annotation.CommandReification;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -44,7 +41,7 @@ import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.title.TitleService;
 
-import lombok.AccessLevel;
+import domainapp.modules.simple.dom.types.Name;
 
 @javax.jdo.annotations.PersistenceCapable(identityType=IdentityType.DATASTORE, schema = "simple")
 @javax.jdo.annotations.DatastoreIdentity(strategy=javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column="id")
@@ -52,30 +49,26 @@ import lombok.AccessLevel;
 @javax.jdo.annotations.Unique(name="SimpleObject_name_UNQ", members = {"name"})
 @DomainObject(auditing = Auditing.ENABLED)
 @DomainObjectLayout()  // causes UI events to be triggered
-@lombok.Getter @lombok.Setter
 @lombok.RequiredArgsConstructor
 public class SimpleObject implements Comparable<SimpleObject> {
 
-    @javax.jdo.annotations.Column(allowsNull = "false", length = 40)
-    @lombok.NonNull
-    @Property() // editing disabled by default, see isis.properties
+
+    @lombok.Getter @lombok.Setter @lombok.NonNull
     @Title(prepend = "Object: ")
-    private String name;
+    @Name private String name;
 
     @javax.jdo.annotations.Column(allowsNull = "true", length = 4000)
+    @lombok.Getter @lombok.Setter
     @Property(editing = Editing.ENABLED)
     private String notes;
 
 
     @Action(semantics = SemanticsOf.IDEMPOTENT, command = CommandReification.ENABLED, publishing = Publishing.ENABLED, associateWith = "name")
     public SimpleObject updateName(
-            @Parameter(maxLength = 40)
-            @ParameterLayout(named = "Name")
-            final String name) {
+            @Name final String name) {
         setName(name);
         return this;
     }
-
     public String default0UpdateName() {
         return getName();
     }
@@ -111,17 +104,14 @@ public class SimpleObject implements Comparable<SimpleObject> {
     // -- injected services
     @javax.inject.Inject
     @javax.jdo.annotations.NotPersistent
-    @lombok.Getter(AccessLevel.NONE) @lombok.Setter(AccessLevel.NONE)
     RepositoryService repositoryService;
 
     @javax.inject.Inject
     @javax.jdo.annotations.NotPersistent
-    @lombok.Getter(AccessLevel.NONE) @lombok.Setter(AccessLevel.NONE)
     TitleService titleService;
 
     @javax.inject.Inject
     @javax.jdo.annotations.NotPersistent
-    @lombok.Getter(AccessLevel.NONE) @lombok.Setter(AccessLevel.NONE)
     MessageService messageService;
     //endregion
 
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java
deleted file mode 100644
index 85c7bfe..0000000
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java
+++ /dev/null
@@ -1,58 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package domainapp.modules.simple.dom.impl;
-
-import java.util.List;
-
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.query.QueryDefault;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
-import org.apache.isis.applib.services.repository.RepositoryService;
-
-@DomainService(
-        nature = NatureOfService.DOMAIN,
-        repositoryFor = SimpleObject.class
-)
-public class SimpleObjectRepository {
-
-    public List<SimpleObject> listAll() {
-        return repositoryService.allInstances(SimpleObject.class);
-    }
-
-    public List<SimpleObject> findByName(final String name) {
-        return repositoryService.allMatches(
-                new QueryDefault<>(
-                        SimpleObject.class,
-                        "findByName",
-                        "name", name));
-    }
-
-    public SimpleObject create(final String name) {
-        return repositoryService.persist(SimpleObject.create(name));
-    }
-
-    @javax.inject.Inject
-    RepositoryService repositoryService;
-    @javax.inject.Inject
-    ServiceRegistry serviceRegistry;
-}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
index 0bb252d..cdf9d30 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
@@ -23,7 +23,7 @@ package domainapp.modules.simple.dom.impl;
 
 import java.util.List;
 
-import org.datanucleus.query.typesafe.TypesafeQuery;
+import javax.jdo.JDOQLTypedQuery;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
@@ -35,10 +35,9 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
-import org.apache.isis.applib.services.jdosupport.IsisJdoSupport;
+import org.apache.isis.applib.events.domain.ActionDomainEvent;
+import org.apache.isis.applib.services.jdosupport.IsisJdoSupport_v3_2;
 import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.applib.services.xactn.TransactionService;
 
 @DomainService(
         nature = NatureOfService.VIEW_MENU_ONLY,
@@ -66,7 +65,7 @@ public class SimpleObjects {
             @ParameterLayout(named="Name")
             final String name
     ) {
-        TypesafeQuery<SimpleObject> q = isisJdoSupport.newTypesafeQuery(SimpleObject.class);
+    	JDOQLTypedQuery<SimpleObject> q = isisJdoSupport.newTypesafeQuery(SimpleObject.class);
         final QSimpleObject cand = QSimpleObject.candidate();
         q = q.filter(
                 cand.name.indexOf(q.stringParameter("name")).ne(-1)
@@ -77,7 +76,7 @@ public class SimpleObjects {
 
     @Programmatic
     public SimpleObject findByNameExact(final String name) {
-        TypesafeQuery<SimpleObject> q = isisJdoSupport.newTypesafeQuery(SimpleObject.class);
+    	JDOQLTypedQuery<SimpleObject> q = isisJdoSupport.newTypesafeQuery(SimpleObject.class);
         final QSimpleObject cand = QSimpleObject.candidate();
         q = q.filter(
                 cand.name.eq(q.stringParameter("name"))
@@ -100,6 +99,6 @@ public class SimpleObjects {
     RepositoryService repositoryService;
 
     @javax.inject.Inject
-    IsisJdoSupport isisJdoSupport;
+    IsisJdoSupport_v3_2 isisJdoSupport;
 
 }
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
new file mode 100644
index 0000000..ad40574
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
@@ -0,0 +1,38 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package domainapp.modules.simple.dom.types;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.jdo.annotations.Column;
+
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.ParameterLayout;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.services.i18n.TranslatableString;
+import org.apache.isis.applib.spec.AbstractSpecification2;
+
+@Column(length = Name.MAX_LEN, allowsNull = "false")
+@Property(mustSatisfy = Name.NoExclamationMarks.class, maxLength = Name.MAX_LEN)
+@Parameter(mustSatisfy = Name.NoExclamationMarks.class, maxLength = Name.MAX_LEN)
+@ParameterLayout(named = "Name")
+@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Name {
+
+    int MAX_LEN = 40;
+
+    class NoExclamationMarks extends AbstractSpecification2<String> {
+
+        @Override
+        public TranslatableString satisfiesTranslatableSafely(final String name) {
+            return name != null && name.contains("!")
+                    ? TranslatableString.tr("Exclamation mark is not allowed")
+                    : null;
+        }
+    }
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
index 5fd5865..d2fb93b 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
@@ -25,7 +25,7 @@ package domainapp.modules.simple.fixture;
 import org.apache.isis.applib.fixturescripts.PersonaWithBuilderScript;
 import org.apache.isis.applib.fixturescripts.PersonaWithFinder;
 import org.apache.isis.applib.fixturescripts.setup.PersonaEnumPersistAll;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 
 import domainapp.modules.simple.dom.impl.SimpleObject;
 import domainapp.modules.simple.dom.impl.SimpleObjects;
@@ -48,13 +48,11 @@ public enum SimpleObject_persona implements PersonaWithBuilderScript<SimpleObjec
 
     private final String name;
 
-//    @Override
     public SimpleObjectBuilder builder() {
         return new SimpleObjectBuilder().setName(name);
     }
 
-    //@Override
-    public SimpleObject findUsing(final ServiceRegistry2 serviceRegistry) {
+    public SimpleObject findUsing(final ServiceRegistry serviceRegistry) {
         SimpleObjects simpleObjects = serviceRegistry.lookupService(SimpleObjects.class);
         return simpleObjects.findByNameExact(name);
     }
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java
index 43180a2..c56ae78 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java
@@ -19,16 +19,17 @@
  */
 package domainapp.modules.simple.dom.impl;
 
-import org.junit.Before;
-import org.junit.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 public class SimpleObject_Test {
 
     SimpleObject simpleObject;
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         simpleObject = new SimpleObject("Foobar");
     }
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
index d9cbb30..3dc7fe2 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
@@ -31,7 +31,6 @@ import org.jmock.auto.Mock;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.core.unittestsupport.jmocking.JMockActions;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -39,18 +38,14 @@ import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+//TODO [ahuber] this test is still on JUnit 4 because it uses org.junit.Rule, 
+//which no longer exists with JUnit 5
 public class SimpleObjects_Test {
 
     @Rule
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
     @Mock
-<<<<<<< HEAD:example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
-=======
-    ServiceRegistry mockServiceRegistry;
-    
-    @Mock
->>>>>>> dev/2.0.0-M1:example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository_Test.java
     RepositoryService mockRepositoryService;
 
     SimpleObjects simpleObjects;
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
index c76df94..c1c6bd3 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
@@ -21,14 +21,14 @@
  */
 package domainapp.modules.simple.integtests;
 
-import org.apache.isis.core.integtestsupport.IntegrationTestAbstract3;
+import org.apache.isis.core.integtestsupport.IntegrationTestJupiter;
 
 import domainapp.modules.simple.SimpleModule;
 
-public abstract class SimpleModuleIntegTestAbstract extends IntegrationTestAbstract3 {
+public abstract class SimpleModuleIntegTestAbstract extends IntegrationTestJupiter {
 
     public SimpleModuleIntegTestAbstract() {
-        super(new SimpleModule().withConfigurationProperty("isis.objects.editing","false"));
+        super(new SimpleModule().withConfigurationProperty("isis.objects.editing", "false"));
     }
 
 
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjectMenu_IntegTest.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjectMenu_IntegTest.java
index 3cca49d..d9c7d9b 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjectMenu_IntegTest.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjectMenu_IntegTest.java
@@ -21,23 +21,26 @@
  */
 package domainapp.modules.simple.integtests.tests;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 import java.sql.SQLIntegrityConstraintViolationException;
 import java.util.List;
 
 import javax.inject.Inject;
 
-import com.google.common.base.Throwables;
-
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
+import org.hamcrest.MatcherAssert;
 import org.hamcrest.TypeSafeMatcher;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import com.google.common.base.Throwables;
 
 import domainapp.modules.simple.dom.impl.SimpleObject;
 import domainapp.modules.simple.dom.impl.SimpleObjects;
 import domainapp.modules.simple.fixture.SimpleObject_persona;
 import domainapp.modules.simple.integtests.SimpleModuleIntegTestAbstract;
-import static org.assertj.core.api.Assertions.assertThat;
 
 public class SimpleObjectMenu_IntegTest extends SimpleModuleIntegTestAbstract {
 
@@ -87,15 +90,22 @@ public class SimpleObjectMenu_IntegTest extends SimpleModuleIntegTestAbstract {
             fixtureScripts.runBuilderScript(SimpleObject_persona.FIZZ.builder());
             transactionService.nextTransaction();
 
-            // then
-            expectedExceptions.expectCause(causalChainContains(SQLIntegrityConstraintViolationException.class));
+            // expect
+        	Throwable cause = assertThrows(Throwable.class, ()->{
+            
+                // when
+                wrap(menu).create("Fizz");
+                transactionService.nextTransaction();
+            	
+            });
+        	
+        	// also expect
+        	MatcherAssert.assertThat(cause, 
+        			causalChainContains(SQLIntegrityConstraintViolationException.class));
 
-            // when
-            wrap(menu).create("Fizz");
-            transactionService.nextTransaction();
         }
 
-        private static Matcher<? extends Throwable> causalChainContains(final Class<?> cls) {
+        private static Matcher<Throwable> causalChainContains(final Class<?> cls) {
             return new TypeSafeMatcher<Throwable>() {
                 @Override
                 protected boolean matchesSafely(Throwable item) {
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
index 1ede0b1..16500f1 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
@@ -25,25 +25,29 @@ import java.sql.Timestamp;
 
 import javax.inject.Inject;
 
-import org.junit.Before;
-import org.junit.Test;
-
+import org.junit.Assert;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.apache.isis.applib.services.title.TitleService;
 import org.apache.isis.applib.services.wrapper.DisabledException;
 import org.apache.isis.applib.services.wrapper.InvalidException;
 import org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong;
 import org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp;
+import org.hamcrest.CoreMatchers;
 
 import domainapp.modules.simple.dom.impl.SimpleObject;
 import domainapp.modules.simple.fixture.SimpleObject_persona;
 import domainapp.modules.simple.integtests.SimpleModuleIntegTestAbstract;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.junit.Assert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class SimpleObject_IntegTest extends SimpleModuleIntegTestAbstract {
 
     SimpleObject simpleObject;
 
-    @Before
+    @BeforeEach
     public void setUp() {
         // given
         simpleObject = fixtureScripts.runBuilderScript(SimpleObject_persona.FOO.builder());
@@ -62,11 +66,14 @@ public class SimpleObject_IntegTest extends SimpleModuleIntegTestAbstract {
 
         @Test
         public void not_editable() {
-            // expect
-            expectedExceptions.expect(DisabledException.class);
-
-            // when
-            wrap(simpleObject).setName("new name");
+        	
+        	// expect
+            assertThrows(DisabledException.class, ()->{
+            
+            	// when
+            	wrap(simpleObject).setName("new name");
+            	
+            });
         }
 
     }
@@ -87,12 +94,17 @@ public class SimpleObject_IntegTest extends SimpleModuleIntegTestAbstract {
         @Test
         public void failsValidation() {
 
-            // expect
-            expectedExceptions.expect(InvalidException.class);
-            expectedExceptions.expectMessage("Exclamation mark is not allowed");
-
-            // when
-            wrap(simpleObject).updateName("new name!");
+        	// expect
+        	InvalidException cause = assertThrows(InvalidException.class, ()->{
+            
+            	// when
+        		wrap(simpleObject).updateName("new name!");
+            	
+            });
+        	
+        	// also expect
+        	assertThat(cause.getMessage(), containsString("Exclamation mark is not allowed."));
+        	
         }
     }
 
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
index 9cb7c87..82cb502 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
@@ -23,7 +23,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"POT-Creation-Date: 2018-03-10 13:40:53+\n"
+"POT-Creation-Date: 2018-07-16 23:31:07+\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -40,12 +40,12 @@ msgid ".pot file name"
 msgstr ""
 
 
+#: org.apache.isis.applib.mixins.dto.Dto_downloadXml#act()
+#: org.apache.isis.applib.mixins.dto.Dto_downloadXsd#act()
+#: org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act()
+#: org.apache.isis.applib.mixins.layout.Object_openRestApi#act()
+#: org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel#act()
 #: org.apache.isis.applib.services.bookmark.BookmarkHolder_lookup#act()
-#: org.apache.isis.applib.services.dto.Dto_downloadXml#act()
-#: org.apache.isis.applib.services.dto.Dto_downloadXsd#act()
-#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#act()
-#: org.apache.isis.applib.services.layout.Object_openRestApi#act()
-#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel#act()
 #: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#act()
 msgid "Act"
 msgstr ""
@@ -56,6 +56,15 @@ msgid "Action"
 msgstr ""
 
 
+#: java.lang.Class#addEventListener()
+#: java.util.function.Consumer#addEventListener()
+#: org.apache.isis.applib.services.eventbus.EventBusService#addEventListener()
+#: org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault#addEventListener()
+#: org.apache.isis.objectstore.jdo.datanucleus.service.eventbus.EventBusServiceJdo#addEventListener()
+msgid "Add Event Listener"
+msgstr ""
+
+
 #: org.apache.isis.applib.services.xactn.TransactionService$Policy#ALWAYS
 msgid "Always"
 msgstr ""
@@ -66,6 +75,11 @@ msgid "Are you sure?"
 msgstr ""
 
 
+#: org.apache.isis.core.integtestsupport.components.HeadlessTransactionSupportDefault#beginTransaction()
+msgid "Begin Transaction"
+msgstr ""
+
+
 #: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
 msgid "Cancel"
 msgstr ""
@@ -123,12 +137,17 @@ msgstr ""
 
 #: domainapp.modules.simple.dom.impl.SimpleObject#downloadLayoutXml()
 #: java.io.Serializable#downloadLayoutXml()
+#: java.lang.Class#downloadLayoutXml()
 #: java.lang.Comparable#downloadLayoutXml()
 #: java.lang.Iterable#downloadLayoutXml()
 #: java.lang.Object#downloadLayoutXml()
+#: java.lang.reflect.AnnotatedElement#downloadLayoutXml()
+#: java.lang.reflect.GenericDeclaration#downloadLayoutXml()
+#: java.lang.reflect.Type#downloadLayoutXml()
 #: java.util.Collection#downloadLayoutXml()
 #: java.util.List#downloadLayoutXml()
 #: java.util.Set#downloadLayoutXml()
+#: java.util.function.Consumer#downloadLayoutXml()
 #: javax.jdo.listener.InstanceLifecycleListener#downloadLayoutXml()
 #: javax.jdo.listener.LoadLifecycleListener#downloadLayoutXml()
 #: javax.jdo.listener.StoreLifecycleListener#downloadLayoutXml()
@@ -147,7 +166,6 @@ msgstr ""
 #: org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository#downloadLayoutXml()
 #: org.apache.isis.applib.services.audit.AuditerService#downloadLayoutXml()
 #: org.apache.isis.applib.services.background.BackgroundService#downloadLayoutXml()
-#: org.apache.isis.applib.services.background.BackgroundService2#downloadLayoutXml()
 #: org.apache.isis.applib.services.bookmark.BookmarkService#downloadLayoutXml()
 #: org.apache.isis.applib.services.classdiscovery.ClassDiscoveryService#downloadLayoutXml()
 #: org.apache.isis.applib.services.command.Command#downloadLayoutXml()
@@ -168,11 +186,10 @@ msgstr ""
 #: org.apache.isis.applib.services.i18n.TranslationService#downloadLayoutXml()
 #: org.apache.isis.applib.services.jaxb.JaxbService#downloadLayoutXml()
 #: org.apache.isis.applib.services.jaxb.JaxbService$Simple#downloadLayoutXml()
-#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport0#downloadLayoutXml()
+#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport#downloadLayoutXml()
 #: org.apache.isis.applib.services.jdosupport.IsisJdoSupport_v3_2#downloadLayoutXml()
 #: org.apache.isis.applib.services.layout.LayoutService#downloadLayoutXml()
 #: org.apache.isis.applib.services.layout.LayoutService2#downloadLayoutXml()
-#: org.apache.isis.applib.services.memento.MementoService#downloadLayoutXml()
 #: org.apache.isis.applib.services.menu.MenuBarsLoaderService#downloadLayoutXml()
 #: org.apache.isis.applib.services.menu.MenuBarsService#downloadLayoutXml()
 #: org.apache.isis.applib.services.message.MessageService#downloadLayoutXml()
@@ -198,11 +215,12 @@ msgstr ""
 #: org.apache.isis.applib.services.xactn.TransactionService#downloadLayoutXml()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService#downloadLayoutXml()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotServiceAbstract#downloadLayoutXml()
+#: org.apache.isis.commons.internal.memento._Mementos$EncoderDecoder#downloadLayoutXml()
+#: org.apache.isis.commons.internal.memento._Mementos$SerializingAdapter#downloadLayoutXml()
 #: org.apache.isis.core.commons.authentication.AuthenticationSessionProvider#downloadLayoutXml()
 #: org.apache.isis.core.commons.components.ApplicationScopedComponent#downloadLayoutXml()
 #: org.apache.isis.core.commons.components.Component#downloadLayoutXml()
 #: org.apache.isis.core.commons.config.IsisConfiguration#downloadLayoutXml()
-#: org.apache.isis.core.commons.config.IsisConfigurationDefault#downloadLayoutXml()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManager#downloadLayoutXml()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerBase#downloadLayoutXml()
 #: org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider#downloadLayoutXml()
@@ -217,9 +235,11 @@ msgstr ""
 #: org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal#downloadLayoutXml()
 #: org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal#downloadLayoutXml()
 #: org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal#downloadLayoutXml()
+#: org.apache.isis.core.plugins.eventbus.EventBusPlugin$EventListener#downloadLayoutXml()
 #: org.apache.isis.core.runtime.authentication.AuthenticationManager#downloadLayoutXml()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManager#downloadLayoutXml()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManagerAbstract#downloadLayoutXml()
+#: org.apache.isis.core.runtime.headless.HeadlessTransactionSupport#downloadLayoutXml()
 #: org.apache.isis.core.runtime.persistence.FixturesInstalledFlag#downloadLayoutXml()
 #: org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault#downloadLayoutXml()
 #: org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory#downloadLayoutXml()
@@ -256,9 +276,8 @@ msgid "Download Translations"
 msgstr ""
 
 
-#: domainapp.modules.simple.dom.impl.SimpleObject#updateName()
-#: domainapp.modules.simple.dom.impl.SimpleObject#updateName(java.lang.String)
-msgid "Exclamation mark is not allowed"
+#: org.apache.isis.core.integtestsupport.components.HeadlessTransactionSupportDefault#endTransaction()
+msgid "End Transaction"
 msgstr ""
 
 
@@ -273,10 +292,10 @@ msgid "Fallback"
 msgstr ""
 
 
-#: org.apache.isis.applib.services.dto.Dto_downloadXml#act(java.lang.String)
-#: org.apache.isis.applib.services.dto.Dto_downloadXsd#act(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.mixins.dto.Dto_downloadXml#act(java.lang.String)
+#: org.apache.isis.applib.mixins.dto.Dto_downloadXsd#act(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
 #: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadMenuBarsLayout(java.lang.String,org.apache.isis.applib.services.menu.MenuBarsService$Type)
-#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
 #: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#act(java.lang.String)
 msgid "File name"
 msgstr ""
@@ -373,7 +392,7 @@ msgid "New Application Feature"
 msgstr ""
 
 
-#: org.apache.isis.core.metamodel.services.xactn.TransactionServiceDefault#nextTransaction()
+#: org.apache.isis.core.runtime.services.xactn.TransactionServiceDefault#nextTransaction()
 msgid "Next Transaction"
 msgstr ""
 
@@ -405,12 +424,17 @@ msgstr ""
 
 #: domainapp.modules.simple.dom.impl.SimpleObject#openRestApi()
 #: java.io.Serializable#openRestApi()
+#: java.lang.Class#openRestApi()
 #: java.lang.Comparable#openRestApi()
 #: java.lang.Iterable#openRestApi()
 #: java.lang.Object#openRestApi()
+#: java.lang.reflect.AnnotatedElement#openRestApi()
+#: java.lang.reflect.GenericDeclaration#openRestApi()
+#: java.lang.reflect.Type#openRestApi()
 #: java.util.Collection#openRestApi()
 #: java.util.List#openRestApi()
 #: java.util.Set#openRestApi()
+#: java.util.function.Consumer#openRestApi()
 #: javax.jdo.listener.InstanceLifecycleListener#openRestApi()
 #: javax.jdo.listener.LoadLifecycleListener#openRestApi()
 #: javax.jdo.listener.StoreLifecycleListener#openRestApi()
@@ -429,7 +453,6 @@ msgstr ""
 #: org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository#openRestApi()
 #: org.apache.isis.applib.services.audit.AuditerService#openRestApi()
 #: org.apache.isis.applib.services.background.BackgroundService#openRestApi()
-#: org.apache.isis.applib.services.background.BackgroundService2#openRestApi()
 #: org.apache.isis.applib.services.bookmark.BookmarkService#openRestApi()
 #: org.apache.isis.applib.services.classdiscovery.ClassDiscoveryService#openRestApi()
 #: org.apache.isis.applib.services.command.Command#openRestApi()
@@ -450,11 +473,10 @@ msgstr ""
 #: org.apache.isis.applib.services.i18n.TranslationService#openRestApi()
 #: org.apache.isis.applib.services.jaxb.JaxbService#openRestApi()
 #: org.apache.isis.applib.services.jaxb.JaxbService$Simple#openRestApi()
-#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport0#openRestApi()
+#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport#openRestApi()
 #: org.apache.isis.applib.services.jdosupport.IsisJdoSupport_v3_2#openRestApi()
 #: org.apache.isis.applib.services.layout.LayoutService#openRestApi()
 #: org.apache.isis.applib.services.layout.LayoutService2#openRestApi()
-#: org.apache.isis.applib.services.memento.MementoService#openRestApi()
 #: org.apache.isis.applib.services.menu.MenuBarsLoaderService#openRestApi()
 #: org.apache.isis.applib.services.menu.MenuBarsService#openRestApi()
 #: org.apache.isis.applib.services.message.MessageService#openRestApi()
@@ -481,11 +503,12 @@ msgstr ""
 #: org.apache.isis.applib.services.xactn.TransactionService#openRestApi()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService#openRestApi()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotServiceAbstract#openRestApi()
+#: org.apache.isis.commons.internal.memento._Mementos$EncoderDecoder#openRestApi()
+#: org.apache.isis.commons.internal.memento._Mementos$SerializingAdapter#openRestApi()
 #: org.apache.isis.core.commons.authentication.AuthenticationSessionProvider#openRestApi()
 #: org.apache.isis.core.commons.components.ApplicationScopedComponent#openRestApi()
 #: org.apache.isis.core.commons.components.Component#openRestApi()
 #: org.apache.isis.core.commons.config.IsisConfiguration#openRestApi()
-#: org.apache.isis.core.commons.config.IsisConfigurationDefault#openRestApi()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManager#openRestApi()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerBase#openRestApi()
 #: org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider#openRestApi()
@@ -500,9 +523,11 @@ msgstr ""
 #: org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal#openRestApi()
 #: org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal#openRestApi()
 #: org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal#openRestApi()
+#: org.apache.isis.core.plugins.eventbus.EventBusPlugin$EventListener#openRestApi()
 #: org.apache.isis.core.runtime.authentication.AuthenticationManager#openRestApi()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManager#openRestApi()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManagerAbstract#openRestApi()
+#: org.apache.isis.core.runtime.headless.HeadlessTransactionSupport#openRestApi()
 #: org.apache.isis.core.runtime.persistence.FixturesInstalledFlag#openRestApi()
 #: org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault#openRestApi()
 #: org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory#openRestApi()
@@ -561,14 +586,24 @@ msgid "Public"
 msgstr ""
 
 
+#: org.apache.isis.core.metamodel.services.bookmarks.BookmarkServiceInternalDefault#read()
+msgid "Read"
+msgstr ""
+
+
 #: domainapp.modules.simple.dom.impl.SimpleObject#rebuildMetamodel()
 #: java.io.Serializable#rebuildMetamodel()
+#: java.lang.Class#rebuildMetamodel()
 #: java.lang.Comparable#rebuildMetamodel()
 #: java.lang.Iterable#rebuildMetamodel()
 #: java.lang.Object#rebuildMetamodel()
+#: java.lang.reflect.AnnotatedElement#rebuildMetamodel()
+#: java.lang.reflect.GenericDeclaration#rebuildMetamodel()
+#: java.lang.reflect.Type#rebuildMetamodel()
 #: java.util.Collection#rebuildMetamodel()
 #: java.util.List#rebuildMetamodel()
 #: java.util.Set#rebuildMetamodel()
+#: java.util.function.Consumer#rebuildMetamodel()
 #: javax.jdo.listener.InstanceLifecycleListener#rebuildMetamodel()
 #: javax.jdo.listener.LoadLifecycleListener#rebuildMetamodel()
 #: javax.jdo.listener.StoreLifecycleListener#rebuildMetamodel()
@@ -587,7 +622,6 @@ msgstr ""
 #: org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository#rebuildMetamodel()
 #: org.apache.isis.applib.services.audit.AuditerService#rebuildMetamodel()
 #: org.apache.isis.applib.services.background.BackgroundService#rebuildMetamodel()
-#: org.apache.isis.applib.services.background.BackgroundService2#rebuildMetamodel()
 #: org.apache.isis.applib.services.bookmark.BookmarkService#rebuildMetamodel()
 #: org.apache.isis.applib.services.classdiscovery.ClassDiscoveryService#rebuildMetamodel()
 #: org.apache.isis.applib.services.command.Command#rebuildMetamodel()
@@ -608,11 +642,10 @@ msgstr ""
 #: org.apache.isis.applib.services.i18n.TranslationService#rebuildMetamodel()
 #: org.apache.isis.applib.services.jaxb.JaxbService#rebuildMetamodel()
 #: org.apache.isis.applib.services.jaxb.JaxbService$Simple#rebuildMetamodel()
-#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport0#rebuildMetamodel()
+#: org.apache.isis.applib.services.jdosupport.IsisJdoSupport#rebuildMetamodel()
 #: org.apache.isis.applib.services.jdosupport.IsisJdoSupport_v3_2#rebuildMetamodel()
 #: org.apache.isis.applib.services.layout.LayoutService#rebuildMetamodel()
 #: org.apache.isis.applib.services.layout.LayoutService2#rebuildMetamodel()
-#: org.apache.isis.applib.services.memento.MementoService#rebuildMetamodel()
 #: org.apache.isis.applib.services.menu.MenuBarsLoaderService#rebuildMetamodel()
 #: org.apache.isis.applib.services.menu.MenuBarsService#rebuildMetamodel()
 #: org.apache.isis.applib.services.message.MessageService#rebuildMetamodel()
@@ -638,11 +671,12 @@ msgstr ""
 #: org.apache.isis.applib.services.xactn.TransactionService#rebuildMetamodel()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService#rebuildMetamodel()
 #: org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotServiceAbstract#rebuildMetamodel()
+#: org.apache.isis.commons.internal.memento._Mementos$EncoderDecoder#rebuildMetamodel()
+#: org.apache.isis.commons.internal.memento._Mementos$SerializingAdapter#rebuildMetamodel()
 #: org.apache.isis.core.commons.authentication.AuthenticationSessionProvider#rebuildMetamodel()
 #: org.apache.isis.core.commons.components.ApplicationScopedComponent#rebuildMetamodel()
 #: org.apache.isis.core.commons.components.Component#rebuildMetamodel()
 #: org.apache.isis.core.commons.config.IsisConfiguration#rebuildMetamodel()
-#: org.apache.isis.core.commons.config.IsisConfigurationDefault#rebuildMetamodel()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManager#rebuildMetamodel()
 #: org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerBase#rebuildMetamodel()
 #: org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider#rebuildMetamodel()
@@ -657,9 +691,11 @@ msgstr ""
 #: org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal#rebuildMetamodel()
 #: org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal#rebuildMetamodel()
 #: org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal#rebuildMetamodel()
+#: org.apache.isis.core.plugins.eventbus.EventBusPlugin$EventListener#rebuildMetamodel()
 #: org.apache.isis.core.runtime.authentication.AuthenticationManager#rebuildMetamodel()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManager#rebuildMetamodel()
 #: org.apache.isis.core.runtime.authorization.AuthorizationManagerAbstract#rebuildMetamodel()
+#: org.apache.isis.core.runtime.headless.HeadlessTransactionSupport#rebuildMetamodel()
 #: org.apache.isis.core.runtime.persistence.FixturesInstalledFlag#rebuildMetamodel()
 #: org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault#rebuildMetamodel()
 #: org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory#rebuildMetamodel()
@@ -676,6 +712,14 @@ msgid "Recreate Objects And Return First"
 msgstr ""
 
 
+#: org.apache.isis.applib.services.eventbus.EventBusService#removeEventListener()
+#: org.apache.isis.core.plugins.eventbus.EventBusPlugin$EventListener#removeEventListener()
+#: org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault#removeEventListener()
+#: org.apache.isis.objectstore.jdo.datanucleus.service.eventbus.EventBusServiceJdo#removeEventListener()
+msgid "Remove Event Listener"
+msgstr ""
+
+
 #: org.apache.isis.applib.fixturescripts.FixtureResult#object
 msgid "Result"
 msgstr ""
@@ -758,14 +802,19 @@ msgid "Version"
 msgstr ""
 
 
+#: org.apache.isis.core.metamodel.services.bookmarks.BookmarkServiceInternalDefault#write()
+msgid "Write"
+msgstr ""
+
+
 #: org.apache.isis.applib.services.swagger.SwaggerService$Format#YAML
 msgid "Yaml"
 msgstr ""
 
 
-#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml
-#: org.apache.isis.applib.services.layout.Object_openRestApi
-#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel
+#: org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml
+#: org.apache.isis.applib.mixins.layout.Object_openRestApi
+#: org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel
 #: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata
 msgid "datanucleusIdLong"
 msgstr ""
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
index cfe5d95..6a7e5dc 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
@@ -16,157 +16,143 @@
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.incode</groupId>
-        <artifactId>incode-build</artifactId>
-        <version>2.3</version>
-    </parent>
-
-    <groupId>${groupId}</groupId>
-    <artifactId>${artifactId}</artifactId>
-    <version>${version}</version>
-
-    <name>SimpleApp Parent</name>
-
-    <packaging>pom</packaging>
-
-    <properties>
-        <revision>1.16.3-SNAPSHOT</revision>
-	
-        <isis.version>1.16.2</isis.version>
-
-        <lombok.version>1.18.0</lombok.version>
-
-        <compiler-plugin.source>1.8</compiler-plugin.source>
-        <compiler-plugin.target>1.8</compiler-plugin.target>
-        <compiler-plugin.compilerArgument>-parameters</compiler-plugin.compilerArgument>
-
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-    </properties>
-
-    <build>
-        <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>standard</artifactId>
-                        </mixin>
-                    </mixins>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>flatten-maven-plugin</artifactId>
-                <version>1.0.0</version>
-                <configuration>
-                    <updatePomFile>true</updatePomFile>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>flatten</id>
-                        <phase>process-resources</phase>
-                        <goals>
-                            <goal>flatten</goal>
-                        </goals>
-                    </execution>
-                    <execution>
-                        <id>flatten.clean</id>
-                        <phase>clean</phase>
-                        <goals>
-                            <goal>clean</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-    <dependencyManagement>
-        <dependencies>
-
-            <dependency>
-                <groupId>org.apache.isis.core</groupId>
-                <artifactId>isis</artifactId>
-                <version>${isis.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-
-            <!-- this project's own modules -->
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>${rootArtifactId}-module-simple</artifactId>
-                <version>${version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>${rootArtifactId}-module-simple</artifactId>
-                <version>${version}</version>
-                <type>test-jar</type>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>${rootArtifactId}-application</artifactId>
-                <version>${version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>${rootArtifactId}-webapp</artifactId>
-                <version>${version}</version>
-            </dependency>
-
-            <!-- lombok -->
-            <dependency>
-                <groupId>org.projectlombok</groupId>
-                <artifactId>lombok</artifactId>
-                <version>${lombok.version}</version>
-                <scope>provided</scope>
-            </dependency>
-
-        </dependencies>
-    </dependencyManagement>
-
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.incode</groupId>
+    <artifactId>incode-build</artifactId>
+    <version>7</version>
+  </parent>
+  <groupId>${groupId}</groupId>
+  <artifactId>${artifactId}</artifactId>
+  <version>${version}</version>
+  <name>Apache Isis App - SimpleApp Parent</name>
+  <packaging>pom</packaging>
+  <properties>
+    <revision>0.0.1-SNAPSHOT</revision>
+    <isis.version>2.0.0-M1</isis.version>
+    <lombok.version>[1.18,)</lombok.version>
+    <compiler-plugin.source>1.8</compiler-plugin.source>
+    <compiler-plugin.target>1.8</compiler-plugin.target>
+    <compiler-plugin.compilerArgument>-parameters</compiler-plugin.compilerArgument>
+    <datanucleus-core.version>5.1.6</datanucleus-core.version>
+    <hsqldb.version>2.3.4</hsqldb.version>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+  </properties>
+  <build>
+    <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>standard</artifactId>
+            </mixin>
+          </mixins>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>flatten-maven-plugin</artifactId>
+        <version>1.0.0</version>
+        <configuration>
+          <updatePomFile>true</updatePomFile>
+          <pomElements>
+            <dependencyManagement>resolve</dependencyManagement>
+            <dependencies>resolve</dependencies>
+          </pomElements>
+        </configuration>
+        <executions>
+          <execution>
+            <id>flatten</id>
+            <phase>process-resources</phase>
+            <goals>
+              <goal>flatten</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>flatten.clean</id>
+            <phase>clean</phase>
+            <goals>
+              <goal>clean</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencyManagement>
     <dependencies>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <scope>provided</scope>
-        </dependency>
+      <dependency>
+        <groupId>org.apache.isis.core</groupId>
+        <artifactId>isis</artifactId>
+        <version>${isis.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}-module-simple</artifactId>
+        <version>${version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}-module-simple</artifactId>
+        <version>${version}</version>
+        <type>test-jar</type>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}-application</artifactId>
+        <version>${version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}-webapp</artifactId>
+        <version>${version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.projectlombok</groupId>
+        <artifactId>lombok</artifactId>
+        <version>${lombok.version}</version>
+        <scope>provided</scope>
+      </dependency>
     </dependencies>
-
-    <profiles>
-        <profile>
-            <id>m2e</id>
-            <activation>
-                <property>
-                    <name>m2e.version</name>
-                </property>
-            </activation>
-            <build>
-                <directory>target-ide</directory>
-                <plugins>
-                    <!-- eclipse doesn't seem to support maven mixins config, so repeat here -->
-                    <plugin>
-                        <artifactId>maven-compiler-plugin</artifactId>
-                        <configuration>
-                            <source>${compiler-plugin.source}</source>
-                            <target>${compiler-plugin.target}</target>
-                            <compilerArgument>${compiler-plugin.compilerArgument}</compilerArgument>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
+  </dependencyManagement>
+  <dependencies>
+    <dependency>
+      <groupId>org.projectlombok</groupId>
+      <artifactId>lombok</artifactId>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+  <profiles>
+    <profile>
+      <id>m2e</id>
+      <activation>
+        <property>
+          <name>m2e.version</name>
+        </property>
+      </activation>
+      <build>
+        <directory>target-ide</directory>
+        <plugins>
+          <plugin>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <configuration>
+              <source>${compiler-plugin.source}</source>
+              <target>${compiler-plugin.target}</target>
+              <compilerArgument>${compiler-plugin.compilerArgument}</compilerArgument>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/pom.xml
index abb92ad..b60b51e 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/pom.xml
@@ -26,7 +26,7 @@
     </parent>
 
     <artifactId>${artifactId}</artifactId>
-    <name>SimpleApp Webapp</name>
+    <name>Apache Isis App - SimpleApp Webapp</name>
 
     <description>This assemblies and runs both the Wicket viewer and the Restfulobjects viewer in a single webapp configured to run using the datanucleus object store.</description>
 
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/logging.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/logging.properties
index c2ca289..a26a781 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/logging.properties
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/logging.properties
@@ -234,5 +234,5 @@ log4j.additivity.dom.simple.SimpleObject=false
 
 
 ${symbol_pound} ERROR to suppress the WARNings we get as of 1.15.0
-log4j.logger.org.apache.wicket.page.XmlPartialPageUpdate=ERROR,Console
-log4j.additivity.org.apache.wicket.page.XmlPartialPageUpdate=false
+log4j.logger.org.apache.wicket.page.PartialPageUpdate=ERROR,Console
+log4j.additivity.org.apache.wicket.page.PartialPageUpdate=false
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/web.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/web.xml
index afc3bb2..fb6da08 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/web.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/web.xml
@@ -20,9 +20,10 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<web-app id="WebApp_ID" version="2.4"
-    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
+	id="WebApp_ID" version="3.1">    
 
     <display-name>Simple app</display-name>
 
diff --git a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
index b17380e..3c2332a 100644
--- a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Thu Mar 15 01:10:47 GMT 2018
+#Thu Jul 19 00:37:12 CEST 2018
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it


[isis] 02/05: ISIS-1810: disables doclint if building on JDK 8+

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 a9220531b9a9e55cb478bc1ac2be45581eeedfbd
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Jul 18 08:14:16 2018 +0200

    ISIS-1810: disables doclint if building on JDK 8+
---
 core/pom.xml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/core/pom.xml b/core/pom.xml
index 9dd1c05..9e9210d 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -748,6 +748,9 @@
                         <!-- http://jira.codehaus.org/browse/MJAVADOC-268 
                             and http://jira.codehaus.org/browse/MJAVADOC-284 -->
                         <detectOfflineLinks>false</detectOfflineLinks>
+                        <additionalparam>
+                            -Xdoclint:none
+                        </additionalparam>
                     </configuration>
                     <!-- goal:aggregate (for aggregator modules) has no binding;
                         explicitly bound in profiles -->


[isis] 01/05: ISIS-1810: allows gpg passphrase to be specified on command line

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 a009d314f96486d4f29a139d2711887bc4bbc515
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Jul 18 08:06:36 2018 +0200

    ISIS-1810: allows gpg passphrase to be specified on command line
    
    while performing a release
---
 core/pom.xml | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/core/pom.xml b/core/pom.xml
index 2226784..9dd1c05 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -2445,6 +2445,45 @@ ${license.additional-notes}
                 </plugins>
             </build>
         </profile>
+        <profile>
+            <!--
+            as per https://stackoverflow.com/a/28860520/56880
+            allows -Dgpg.passphrase= to be used rather than gpg.useagent
+            inherited from parent.
+            Note that this requires gpg v2.1+
+            -->
+            <id>gpg</id>
+            <activation>
+                <property>
+                    <name>gpg.passphrase</name>
+                </property>
+            </activation>
+            <properties>
+                <gpg.useagent>false</gpg.useagent>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>sign-release-artifacts</id>
+                                <goals>
+                                    <goal>sign</goal>
+                                </goals>
+                                <configuration>
+                                    <gpgArguments>
+                                        <arg>--pinentry-mode</arg>
+                                        <arg>loopback</arg>
+                                    </gpgArguments>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
     </profiles>
 
     <modules>


[isis] 05/05: ISIS-1810: recreating simpleapp archetype

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 85cb362e08811fe76db61d5948fa3d4344b98fcf
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jul 19 00:48:49 2018 +0200

    ISIS-1810: recreating simpleapp archetype
---
 .../simpleapp/src/main/resources/archetype-resources/pom.xml  |  4 ++--
 .../src/test/resources/projects/basic/archetype.properties    |  2 +-
 scripts/updateGeneratedArchetypeSources.groovy                | 11 ++++++++++-
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
index 6a7e5dc..2404a4b 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
@@ -26,11 +26,11 @@
   </parent>
   <groupId>${groupId}</groupId>
   <artifactId>${artifactId}</artifactId>
-  <version>${version}</version>
+  <version>${revision}</version>
   <name>Apache Isis App - SimpleApp Parent</name>
   <packaging>pom</packaging>
   <properties>
-    <revision>0.0.1-SNAPSHOT</revision>
+    <revision>${version}</revision>
     <isis.version>2.0.0-M1</isis.version>
     <lombok.version>[1.18,)</lombok.version>
     <compiler-plugin.source>1.8</compiler-plugin.source>
diff --git a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
index 3c2332a..1ec5147 100644
--- a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Thu Jul 19 00:37:12 CEST 2018
+#Thu Jul 19 00:48:43 CEST 2018
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it
diff --git a/scripts/updateGeneratedArchetypeSources.groovy b/scripts/updateGeneratedArchetypeSources.groovy
index 357af14..b4018dc 100644
--- a/scripts/updateGeneratedArchetypeSources.groovy
+++ b/scripts/updateGeneratedArchetypeSources.groovy
@@ -122,7 +122,16 @@ println "updating ${resourcePomXmlFile.path}"
 
 def resourcePomXml = new XmlSlurper(false,false).parseText(resourcePomXmlFile.text)
 
-resourcePomXml.properties.revision='0.0.1-SNAPSHOT'
+
+// this looks weird, but trust me, it's correct
+
+// version is set to the (in-effect) hard-coded string '${revision}'.  This is resolved when the app generated
+// from the archetype is built, eg with mvn -Drevision=...; it will fall back to the properties/revision.
+resourcePomXml.version='${revision}'
+// the properties.revision, meanwhile, is set to the version that is prompted for when the
+// app is first generated from the archetype
+resourcePomXml.properties.revision='${version}'
+
 resourcePomXml.properties['isis.version']=isis_version
 
 resourcePomXmlFile.text = withLicense(resourcePomXml)


[isis] 03/05: ISIS-1810: updates script to recreate archetypes

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 003b3c5f27b9f8ca10593d41c9054b3c64f18324
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Jul 18 23:16:41 2018 +0200

    ISIS-1810: updates script to recreate archetypes
    
    pass in -Drevision=...
    overwrite revision and isis.version properties in the archetype-resources/pom.xml
    simplify groovy
---
 scripts/recreate-archetype.sh                  |   6 +-
 scripts/updateGeneratedArchetypeSources.groovy | 160 ++++++++-----------------
 2 files changed, 52 insertions(+), 114 deletions(-)

diff --git a/scripts/recreate-archetype.sh b/scripts/recreate-archetype.sh
index e58ea51..9c382b2 100755
--- a/scripts/recreate-archetype.sh
+++ b/scripts/recreate-archetype.sh
@@ -63,8 +63,8 @@ for a in .project .classpath .settings bin .idea neo4j_DB target-ide; do /bin/fi
 /bin/find . -name "*.log" -exec rm {} \;
 /bin/find . -name "pom.xml.*" -exec rm {} \;
 
-echo "mvn archetype:create-from-project ..."
-mvn org.apache.maven.plugins:maven-archetype-plugin:3.0.1:create-from-project
+echo "mvn -Drevision=$ISISREL archetype:create-from-project ..."
+mvn -Drevision=$ISISREL org.apache.maven.plugins:maven-archetype-plugin:3.0.1:create-from-project
 
 echo "copy over Dockerfile since seems to be excluded for some reason ... "
 mkdir -p target/generated-sources/archetype/src/main/resources/archetype-resources/webapp/src/main/resources/docker
@@ -91,4 +91,4 @@ git commit -m "$JIRA: recreating $ISISCPN archetype"
 
 echo "building the newly created archetype ..."
 cd ../../archetype/$ISISCPN
-mvn clean install
+mvn -Drevision=$ISISREL clean install
diff --git a/scripts/updateGeneratedArchetypeSources.groovy b/scripts/updateGeneratedArchetypeSources.groovy
index 275f426..357af14 100644
--- a/scripts/updateGeneratedArchetypeSources.groovy
+++ b/scripts/updateGeneratedArchetypeSources.groovy
@@ -16,15 +16,6 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-import groovy.xml.XmlUtil
-
-import javax.xml.transform.OutputKeys
-import javax.xml.transform.Transformer
-import javax.xml.transform.TransformerFactory
-import javax.xml.transform.stream.StreamResult
-import javax.xml.transform.stream.StreamSource
-
-
 def cli = new CliBuilder(usage: 'updateGeneratedArchetypeSources.groovy -n [name] -v [version]')
 cli.with {
     n(longOpt: 'name', args: 1, required: true, argName: 'name', 'Application name (eg \'simpleapp\' or \'helloworld\')')
@@ -41,26 +32,6 @@ cli.with {
 def BASE="target/generated-sources/archetype/"
 def ROOT=BASE + "src/main/resources/"
 
-def license_using_xml_comments="""<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-"""
 
 def supplemental_models_text="""<?xml version="1.0" encoding="UTF-8"?>
 <!--
@@ -104,6 +75,8 @@ if (!options) {
 application_name=options.n
 isis_version=options.v
 
+println "isis_version = ${isis_version}"
+
 /////////////////////////////////////////////////////
 //
 // update archetype's own pom.xml's groupId
@@ -114,10 +87,8 @@ def pomFile=new File(BASE+"pom.xml")
 
 println "updating ${pomFile.path}"
 
-// read file, ignoring XML pragma
-def pomFileText = stripXmlPragma(pomFile)
+def pomXml = new XmlSlurper(false,false).parseText(pomFile.text)
 
-def pomXml = new XmlSlurper(false,true).parseText(pomFileText)
 pomXml.appendNode {
   parent {
     groupId("org.apache.isis.core")
@@ -128,62 +99,33 @@ pomXml.appendNode {
 }
 pomXml.groupId='org.apache.isis.archetype'
 
-def fragmentToAdd = new XmlSlurper( false, true ).parseText( '''<properties>
+def fragmentToAdd = new XmlSlurper( false, false ).parseText( '''<properties>
     <archetype.test.skip>true</archetype.test.skip>
 </properties>''' )
 pomXml.appendNode(fragmentToAdd)
 
-def pomSmb = new groovy.xml.StreamingMarkupBuilder().bind {
-    mkp.declareNamespace("":"http://maven.apache.org/POM/4.0.0")
-    mkp.yield(pomXml)
-}
 
+pomFile.text = withLicense(pomXml)
 
-def pomTempFile = File.createTempFile("temp",".xml")
-def indentedXml = indentXml(pomSmb.toString())
-pomTempFile.text = indentedXml
-def pomXmlText = stripXmlPragma(pomTempFile)
 
 
-pomFile.text = 
-    license_using_xml_comments + 
-    pomXmlText
+/////////////////////////////////////////////////////
+//
+// update archetype's resource's pom.xml's
+// <revision> and <isis.version>
+//
+/////////////////////////////////////////////////////
 
+def resourcePomXmlFile=new File(BASE+"src/main/resources/archetype-resources/pom.xml")
 
+println "updating ${resourcePomXmlFile.path}"
 
-///////////////////////////////////////////////////////
-////
-//// update archetype's resource's dom/pom.xml's activeByDefault=true
-////
-///////////////////////////////////////////////////////
-//
-//def pomDomFile=new File(BASE+"src/main/resources/archetype-resources/dom/pom.xml")
-//
-//println "updating ${pomDomFile.path}"
-//
-//// read file, ignoring XML pragma
-//def pomDomFileText = stripXmlPragma(pomDomFile)
-//
-//def pomDomXml = new XmlSlurper(false,true).parseText(pomDomFileText)
-//
-//pomDomXml.profiles.profile.activation.activeByDefault='true'
-//
-//def pomDomSmb = new groovy.xml.StreamingMarkupBuilder().bind {
-//     mkp.declareNamespace("":"http://maven.apache.org/POM/4.0.0")
-//     mkp.yield(pomDomXml)
-//}
-//
-//
-//def pomDomTempFile = File.createTempFile("temp",".xml")
-//def indentedDomXml = indentXml(pomDomSmb.toString())
-//pomDomTempFile.text = indentedDomXml
-//def pomDomXmlText = stripXmlPragma(pomDomTempFile)
-//
-//
-//pomDomFile.text = 
-//    license_using_xml_comments + 
-//    pomDomXmlText
+def resourcePomXml = new XmlSlurper(false,false).parseText(resourcePomXmlFile.text)
 
+resourcePomXml.properties.revision='0.0.1-SNAPSHOT'
+resourcePomXml.properties['isis.version']=isis_version
+
+resourcePomXmlFile.text = withLicense(resourcePomXml)
 
 
 /////////////////////////////////////////////////////
@@ -197,31 +139,16 @@ def metaDataFile=new File(ROOT+"META-INF/maven/archetype-metadata.xml")
 
 println "updating ${metaDataFile.path}"
 
+def metaDataXml = new XmlSlurper(false,false).parseText(metaDataFile.text)
 
-// read file, ignoring XML pragma
-def metaDataFileText = stripXmlPragma(metaDataFile)
-
-def metaDataXml = new XmlSlurper().parseText(metaDataFileText)
 metaDataXml.modules.module.fileSets.fileSet.each { fileSet ->
     if(fileSet.directory=='ide/eclipse') {
         fileSet.@filtered='true'
     }
 }
 
-def metaDataSmb = new groovy.xml.StreamingMarkupBuilder().bind {
-    mkp.xmlDeclaration()
-    mkp.declareNamespace("":"http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0")
-    mkp.yield(metaDataXml)
-}
-
-def tempFile = File.createTempFile("temp",".xml")
-tempFile.text = indentXml(metaDataSmb.toString())
-def metaDataXmlText = stripXmlPragma(tempFile)
 
-
-metaDataFile.text = 
-    license_using_xml_comments + 
-    metaDataXmlText
+metaDataFile.text = withLicense(metaDataXml)
 
 
 /////////////////////////////////////////////////////
@@ -230,13 +157,13 @@ metaDataFile.text =
 //
 /////////////////////////////////////////////////////
 
-new File(ROOT+"archetype-resources/").eachDirRecurse() { dir ->  
+new File(ROOT+"archetype-resources/").eachDirRecurse() { dir ->
 
-    dir.eachFileMatch(~/.*[.]launch/) { launchFile ->  
+    dir.eachFileMatch(~/.*[.]launch/) { launchFile ->
 
         println "updating ${launchFile.path}"
 
-        def launchXml = new XmlSlurper().parseText(launchFile.text)
+        def launchXml = new XmlSlurper(false,false).parseText(launchFile.text)
         def projectAttr = launchXml.stringAttribute.find { it.@key=="org.eclipse.jdt.launching.PROJECT_ATTR" }
         String oldValue=projectAttr.@value
         def newValue = oldValue.replaceAll("${application_name}[^-]*-","\\\${rootArtifactId}-")
@@ -247,7 +174,7 @@ new File(ROOT+"archetype-resources/").eachDirRecurse() { dir ->
 #set( \$symbol_escape = '\\' )
 """
         launchFile.append(XmlUtil.serialize(launchXml))
-     }  
+     }
 }
 
 
@@ -270,20 +197,31 @@ supplementalModelsFile.text = supplemental_models_text
 //
 ///////////////////////////////////////////////////
 
-String indentXml(xml) {
-    def factory = TransformerFactory.newInstance()
-    factory.setAttribute("indent-number", 4);
 
-    Transformer transformer = factory.newTransformer()
-    transformer.setOutputProperty(OutputKeys.INDENT, 'yes')
-    StreamResult result = new StreamResult(new StringWriter())
-    transformer.transform(new StreamSource(new ByteArrayInputStream(xml.toString().bytes)), result)
-    return result.writer.toString().replaceAll("\\?><", "\\?>\n<")
-}
+String withLicense(pomXml) {
 
-String stripXmlPragma(File file) {
-    def sw = new StringWriter()
-    file.filterLine(sw) { ! (it =~ /^\<\?xml/ ) }
-    return sw.toString()
-}
+    def license_using_xml_comments="""<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+"""
 
+    return license_using_xml_comments +
+            groovy.xml.XmlUtil.serialize(pomXml).replaceFirst("<\\?xml version=\"1.0\".*\\?>", "")
+
+}