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/09/14 16:11:41 UTC

[isis] branch v2 updated (41e2e32 -> cb2c7ae)

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

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


    from 41e2e32  ISIS-1979: add missing license header
     new a3f0f82  ISIS-1811: minor updates for docs.  Also skip git by default when building
     new de6aade  ISIS-1974: forward ports improvements in ThreadPoolSupport from 'master' into 'v2'
     new d937199  ISIS-1811: updates parent pom.xml's to -M2
     add c1600b1  ISIS-1810: backported update to documentation.adoc
     add 14c6b11  ISIS-1974: removes SpecificationLoader from RegisterEntities as not used as a property.
     add bd20faa  ISIS-1974: overloads createDataNucleusApplicationComponents in PersistenceSessionFactory
     add a3d002b  ISIS-1974: makes catalogNamedQueries (the method that populates SpecificatoinLoader) static.
     add d09937b  ISIS-1974: moves catalogNamedQueries out of DataNucleusApplicatoinComponents, and into its caller, PersistenceSessoinFactory
     add a96e0fa  ISIS-1974: removes SpecificatoinLoader from the construtor of DataNucleusApplicationComponents
     add b57533a  ISIS-1974: moves the responsibility for calling catalogNamedQueries
     add 6dc5282  ISIS-1974: initializes the Isis metamodel and DN in parallel.
     add b3eb20c  ISIS-1974: introspects in parallel
     add f6d218d  ISIS-1974: workaround for gitlab CI issue
     add 188ae32  ISIS-1974: adds logging and larger queue for ThreadPoolSupport
     add d096480  ISIS-1977: moves flattening plugin into a profile
     add 36e738f  ISIS-1965: reworks the flatten maven plugin
     add 351e496  ISIS-1965: reworks the flatten maven plugin - fixes typo
     add 904197c  ISIS-1965: disables gitlab ci again for simplepp.
     add 2e5c6cb  ISSI-1965: trivial edit, for testing
     add f0b0e09  ISIS-1965: replaces ${revision} for ${isis.version} within dependencyManagement section
     add 4ed6db4  ISIS-1965: trivial edits for testing ci
     add 2fbcbf7  ISIS-1985: fixes mm validation
     add d6160a7  Merge pull request #125 from apache/ISIS-1985-mm-validation
     add 6d53380  ISIS-1974: backports Andi's v2 improvements on ThreadPoolSupport into 'master' branch
     add 634854b  ISIS-1810: updates docs from v2 back to master.  Also skip git by default when building
     new 2d67505  ISIS-1974, ISIS-1985 : Merge branch 'master' into v2
     new 5400a32  merge - fixes up issues in pom files (version)
     new b282694  merge - fixes compile issues in SpecificationLoader
     new 62526b2  merge (ISIS-1965 & ISIS-1977) - adds flatten plugin for new v2-only modules
     new bdf734a  merge (ISIS-1965 & ISIS-1977) - always run flatten plugin, even if -Drevision is not specified (forward port from master)
     new 3d0d765  merge - minor tidy-up on pom.xml (from comparing with master branch)
     new b88eeae  merge (ISIS-1965 & ISIS-1977) - always run flatten plugin, even if -Drevision is not specified (forward port from master)
     new cb6ee0b  merge - minor tidy-up on pom.xml (from comparing with master branch)
     new 3214c81  merge - overrides incode-build props for DN for helloworld and simpleapp
     new a9d3ae3  merge - fixes trivial typo in .adoc
     new c8ce9ca  ISIS-1969: tiny improvement on the packaging directive within helloworld.
     new 9046eba  ISIS-1811: moves validate into a profile (for simpleapp)
     new 0bd9821  ISIS-1974: fixes unit test for SpecificationLoader, need to shutdown after each test
     new 84a8d5d  ISIS-1974: needs to initialize DN eagerly, alongside SpecLoader doing its thing
     add e14c41a  ISIS-1899: reconcile pom files with v2 branch, backport improvements.
     add d59b5fb  ISIS-1986: backports skinnywar from v2.
     add f5b9a65  ISIS-1965: enable flatten plugin always
     add 6eca409  Typo fix in docs (#119) - backported from v2 to master
     new 85f2669  Merge master (6eca40987c939fe967fe323cbf671bd9b31c3f69) into v2
     new cb2c7ae  ISIS-1895: updates simpleapp and helloworld so can boot

The 19 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:
 .gitlab-ci.yml                                     |  72 +++--
 CONTRIBUTING.md => CONTRIBUTING.adoc               |   2 +-
 adocs/documentation/pom-pdf.xml                    |   2 +-
 adocs/documentation/pom.xml                        |   4 +-
 .../src/main/asciidoc/documentation.adoc           |   3 +
 .../src/main/asciidoc/guides/cgcom/__versions.adoc |   3 +
 .../guides/cgcom/_cgcom_applying-patches.adoc      |   1 +
 .../cgcom/_cgcom_asciidoc-publish-procedure.adoc   |   2 +-
 .../guides/cgcom/_cgcom_cutting-a-release.adoc     | 115 ++++----
 .../cgcom/_cgcom_post-release-successful.adoc      |  11 +-
 .../cgcom/_cgcom_post-release-unsuccessful.adoc    |   1 +
 ...cgcom_release-process-for-interim-releases.adoc |   1 +
 .../_cgcom_release-process-for-snapshots.adoc      |   1 +
 .../cgcom/_cgcom_release-process-prereqs.adoc      |   1 +
 .../guides/cgcom/_cgcom_verifying-releases.adoc    |   9 +-
 .../guides/rgant/_rgant-Action_publishing.adoc     |  16 +-
 .../_rgant-DomainObjectLayout_cssClassUiEvent.adoc |   3 +-
 .../_rgant-DomainObjectLayout_titleUiEvent.adoc    |  22 +-
 .../guides/rgant/_rgant-DomainObject_auditing.adoc |   7 +-
 ..._rgant-DomainObject_autoCompleteRepository.adoc |   6 +-
 .../_rgant-DomainObject_loadedLifecycleEvent.adoc  |  37 +--
 .../rgant/_rgant-DomainObject_objectType.adoc      |   4 +-
 ...rgant-DomainObject_persistedLifecycleEvent.adoc |  24 +-
 ...gant-DomainObject_persistingLifecycleEvent.adoc |  32 +-
 .../rgant/_rgant-DomainObject_publishing.adoc      |   9 +-
 ..._rgant-DomainObject_removingLifecycleEvent.adoc |  25 +-
 .../_rgant-DomainObject_updatedLifecycleEvent.adoc |  16 +-
 ..._rgant-DomainObject_updatingLifecycleEvent.adoc |  17 +-
 .../rgant/_rgant-ParameterLayout_describedAs.adoc  |   8 +-
 .../asciidoc/guides/rgant/_rgant-PrimaryKey.adoc   |   2 +-
 .../guides/rgant/_rgant-Property_publishing.adoc   |   9 +-
 .../guides/rgant/_rgant-ViewModel_objectType.adoc  |   2 +-
 .../main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc |   2 +-
 .../guides/rgcfg/_rgcfg_configuring-core.adoc      |   1 -
 ..._classes_lifecycleevent_ObjectCreatedEvent.adoc |   3 +-
 .../guides/rgcms/_rgcms_classes_mixins_Dto.adoc    |   2 +-
 .../_rgcms_classes_super_AbstractService.adoc      |   2 +-
 .../_rgcms_classes_super_AbstractViewModel.adoc    |   2 +-
 .../rgcms/_rgcms_methods_reserved_disable.adoc     |   3 +-
 ..._persistence-layer_AuditingServiceInternal.adoc |   2 +-
 ...stence-layer_ChangedObjectsServiceInternal.adoc |   2 +-
 ...ersistence-layer_PublishingServiceInternal.adoc |   4 +-
 ...esentation-layer_ContentNegotiationService.adoc |  11 +-
 ...s_presentation-layer_RepresentationService.adoc |   2 +-
 ...rgsvc_application-layer-api_CommandContext.adoc |   2 +-
 ...c_application-layer-api_InteractionContext.adoc |   3 +-
 ...rgsvc_application-layer-spi_CommandService.adoc |   3 +-
 ...vc_bootstrapping-spi_ClassDiscoveryService.adoc |   2 +-
 .../_rgsvc_core-domain-api_FactoryService.adoc     |   6 +-
 .../main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc   |  11 +-
 .../rgsvc/_rgsvc_metadata-api_SwaggerService.adoc  |   2 +-
 ...vc_persistence-layer-api_QueryResultsCache.adoc |   5 +-
 ...rgsvc_persistence-layer-spi_AuditerService.adoc |  25 +-
 ...svc_persistence-layer-spi_PublisherService.adoc |  25 +-
 ...ntation-layer-spi_EmailNotificationService.adoc |   3 +-
 ...presentation-layer-spi_ExceptionRecognizer.adoc |   3 +-
 ...gsvc_presentation-layer-spi_RoutingService.adoc |   3 +-
 ..._presentation-layer-spi_UrlEncodingService.adoc |   5 +-
 ..._replacing-default-service-implementations.adoc |   3 +-
 ...ugfun_building-blocks_events_domain-events.adoc |   1 +
 .../ugfun/_ugfun_programming-model_actions.adoc    |   5 -
 .../_ugvw_extending_replacing-page-elements.adoc   |   3 +-
 .../main/asciidoc/guides/ugvw/_ugvw_features.adoc  |   2 -
 .../guides/ugvw/_ugvw_layout_file-based.adoc       |   2 +-
 adocs/documentation/src/main/asciidoc/index.html   |  18 +-
 .../_migration-notes_1.7.0-to-1.8.0.adoc           |  16 +-
 .../_migration-notes_1.9.0-to-1.10.0.adoc          |   5 +-
 core/applib/pom.xml                                |  47 ++-
 core/commons/pom.xml                               |  45 +++
 core/integtestsupport/pom.xml                      |  46 +++
 core/legacy/applib-legacy/pom.xml                  |  45 +++
 core/legacy/integtestsupport-legacy/pom.xml        |  46 +++
 core/legacy/metamodel-legacy/pom.xml               |  45 +++
 core/legacy/runtime-legacy/pom.xml                 |  43 +++
 core/legacy/transition-1-2/pom.xml                 |  44 +++
 core/legacy/unittestsupport-legacy/pom.xml         |  45 +++
 core/legacy/viewer-wicket-ui-legacy/pom.xml        |  46 +++
 core/log4j/pom.xml                                 |  56 +++-
 core/maven-plugin/pom.xml                          |  45 +++
 core/mavendeps/intellij/pom.xml                    |  42 ++-
 core/mavendeps/testing/pom.xml                     |  43 ++-
 core/mavendeps/webapp/pom.xml                      |  43 ++-
 core/metamodel/pom.xml                             |  46 +++
 .../metamodel/specloader/SpecificationLoader.java  |  86 +++++-
 .../core/runtime/threadpool/ThreadPoolSupport.java | 122 +++++++-
 ...DerivedFromJdoColumnAnnotationFacetFactory.java |   2 +-
 ...ndatoryFromJdoColumnAnnotationFacetFactory.java |   2 +-
 ...DerivedFromJdoColumnAnnotationFacetFactory.java |   2 +-
 .../dflt/ProgrammingModelForObjectSpecIdFacet.java |  45 +++
 .../SpecificationLoaderTestAbstract.java           |  15 +-
 core/plugins/codegen-bytebuddy/pom.xml             |  45 +++
 core/plugins/codegen-javassist/pom.xml             |  46 +++
 core/plugins/discovery-reflections/pom.xml         |  45 +++
 core/plugins/eventbus-axon/pom.xml                 |  46 +++
 core/plugins/eventbus-guava/pom.xml                |  45 +++
 core/plugins/jaxrs-resteasy-3/pom.xml              |  45 +++
 core/plugins/jaxrs-resteasy-4/pom.xml              |  45 +++
 core/plugins/jdo-datanucleus-4/pom.xml             |  45 +++
 .../DataNucleusApplicationComponents4.java         |  10 +
 .../persistence/PersistenceSessionFactory4.java    |  29 +-
 core/plugins/jdo-datanucleus-5/pom.xml             |  45 +++
 .../DataNucleusApplicationComponents5.java         |  31 +-
 .../persistence/PersistenceSessionFactory5.java    |  19 +-
 core/pom.xml                                       | 170 +++++------
 core/runtime/pom.xml                               |  80 +++--
 .../changes/ChangedObjectsServiceInternal.java     |   4 +-
 .../persistence/PersistenceSessionFactory.java     |   3 +
 .../system/session/IsisSessionFactoryBuilder.java  | 111 +++++--
 .../objectstore/jdo/service/RegisterEntities.java  |   2 +-
 core/schema/pom.xml                                |  43 +++
 core/security-shiro/pom.xml                        |  53 +++-
 core/security/pom.xml                              |  47 +++
 core/specsupport/pom.xml                           |  45 +++
 core/unittestsupport-test/pom.xml                  |  45 +++
 core/unittestsupport/pom.xml                       | 112 +++++--
 core/viewer-restfulobjects-applib/pom.xml          |  52 +++-
 core/viewer-restfulobjects-rendering/pom.xml       |  47 +++
 core/viewer-restfulobjects-server/pom.xml          |  47 +++
 core/viewer-wicket-applib/pom.xml                  |  47 +++
 core/viewer-wicket-impl/pom.xml                    |  47 +++
 .../wicket/viewer/IsisWicketApplication.java       |  20 +-
 core/viewer-wicket-model/pom.xml                   |  47 +++
 core/viewer-wicket-ui/pom.xml                      |  55 +++-
 core/webdocker/pom.xml                             |  42 +++
 core/webserver/pom.xml                             |  55 +++-
 core/wrapper/pom.xml                               |  47 +++
 example/application/helloworld/pom.xml             |  42 ++-
 .../src/main/webapp/WEB-INF/logging.properties     |  17 +-
 .../helloworld/src/main/webapp/WEB-INF/web.xml     | 307 +------------------
 .../application/simpleapp/module-simple/pom.xml    |  85 +++---
 example/application/simpleapp/pom.xml              |  11 +-
 .../src/main/webapp/WEB-INF/logging.properties     |  17 +-
 .../webapp/src/main/webapp/WEB-INF/web.xml         | 327 +--------------------
 pom.xml                                            |   2 +-
 recreate_archetype_RELEASE.sh                      |   6 +-
 recreate_archetype_SNAPSHOT.sh                     |   6 +-
 136 files changed, 2900 insertions(+), 1294 deletions(-)
 rename CONTRIBUTING.md => CONTRIBUTING.adoc (58%)
 create mode 100644 adocs/documentation/src/main/asciidoc/guides/cgcom/__versions.adoc
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelForObjectSpecIdFacet.java


[isis] 03/19: ISIS-1811: updates parent pom.xml's to -M2

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

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

commit d937199e0bb4b5b8765baede7b4515617d0824c9
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 11:52:46 2018 +0100

    ISIS-1811: updates parent pom.xml's to -M2
---
 adocs/documentation/pom-pdf.xml | 2 +-
 adocs/documentation/pom.xml     | 2 +-
 pom.xml                         | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/adocs/documentation/pom-pdf.xml b/adocs/documentation/pom-pdf.xml
index 81ab8c2..a8fcd49 100644
--- a/adocs/documentation/pom-pdf.xml
+++ b/adocs/documentation/pom-pdf.xml
@@ -29,7 +29,7 @@
 
     <groupId>org.apache.isis.docs</groupId>
     <artifactId>isis-documentation-pdf</artifactId>
-    <version>2.0.0-M1-SNAPSHOT</version>
+    <version>2.0.0-M2-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache Isis Docs</name>
diff --git a/adocs/documentation/pom.xml b/adocs/documentation/pom.xml
index fa4418b..268a367 100644
--- a/adocs/documentation/pom.xml
+++ b/adocs/documentation/pom.xml
@@ -29,7 +29,7 @@
 
     <groupId>org.apache.isis.docs</groupId>
     <artifactId>isis-documentation</artifactId>
-    <version>2.0.0-M1-SNAPSHOT</version>
+    <version>2.0.0-M2-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache Isis Docs</name>
diff --git a/pom.xml b/pom.xml
index 2b56198..ec8aa19 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
 
     <groupId>org.apache.isis</groupId>
     <artifactId>isis-all</artifactId>
-    <version>2.0.0-M1-SNAPSHOT</version>
+    <version>2.0.0-M2-SNAPSHOT</version>
 
     <packaging>pom</packaging>
 


[isis] 04/19: ISIS-1974, ISIS-1985 : Merge branch 'master' into v2

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

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

commit 2d6750538537bc35e442f74e87b9135034b134a2
Merge: d937199 634854b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 12:34:35 2018 +0100

    ISIS-1974, ISIS-1985 : Merge branch 'master' into v2

 .gitlab-ci.yml                                     |  72 +++++++----
 CONTRIBUTING.md => CONTRIBUTING.adoc               |   2 +-
 .../src/main/asciidoc/guides/cgcom/__versions.adoc |   2 +-
 core/applib/pom.xml                                |  45 +++++++
 core/integtestsupport/pom.xml                      |  46 +++++++
 core/log4j/pom.xml                                 |  46 +++++++
 core/maven-plugin/pom.xml                          |  45 +++++++
 core/mavendeps/intellij/pom.xml                    |  42 +++++-
 core/mavendeps/testing/pom.xml                     |  43 ++++++-
 core/mavendeps/webapp/pom.xml                      |  43 ++++++-
 core/metamodel/pom.xml                             |  46 +++++++
 .../metamodel/specloader/SpecificationLoader.java  |  89 +++++++++++--
 ...DerivedFromJdoColumnAnnotationFacetFactory.java |   2 +-
 ...ndatoryFromJdoColumnAnnotationFacetFactory.java |   2 +-
 ...DerivedFromJdoColumnAnnotationFacetFactory.java |   2 +-
 .../dflt/ProgrammingModelForObjectSpecIdFacet.java |  45 +++++++
 .../persistence/PersistenceSessionFactory4.java    |  25 +++-
 .../DataNucleusApplicationComponents5.java         |  21 +--
 .../persistence/PersistenceSessionFactory5.java    |  13 ++
 core/pom.xml                                       | 142 +++++++++++----------
 core/runtime/pom.xml                               |  47 +++++++
 .../changes/ChangedObjectsServiceInternal.java     |   4 +-
 .../persistence/PersistenceSessionFactory.java     |   3 +
 .../system/session/IsisSessionFactoryBuilder.java  | 111 +++++++++++-----
 core/schema/pom.xml                                |  43 +++++++
 core/security-shiro/pom.xml                        |  46 +++++++
 core/security/pom.xml                              |  47 +++++++
 core/specsupport/pom.xml                           |  45 +++++++
 core/unittestsupport/pom.xml                       |  46 +++++++
 core/viewer-restfulobjects-applib/pom.xml          |  45 +++++++
 core/viewer-restfulobjects-rendering/pom.xml       |  47 +++++++
 core/viewer-restfulobjects-server/pom.xml          |  47 +++++++
 core/viewer-wicket-applib/pom.xml                  |  47 +++++++
 core/viewer-wicket-impl/pom.xml                    |  47 +++++++
 .../wicket/viewer/IsisWicketApplication.java       |  15 +--
 core/viewer-wicket-model/pom.xml                   |  47 +++++++
 core/viewer-wicket-ui/pom.xml                      |  47 +++++++
 core/webserver/pom.xml                             |  46 +++++++
 core/wrapper/pom.xml                               |  47 +++++++
 .../src/main/webapp/WEB-INF/logging.properties     |  13 +-
 .../src/main/webapp/WEB-INF/logging.properties     |  13 +-
 41 files changed, 1453 insertions(+), 173 deletions(-)

diff --cc adocs/documentation/src/main/asciidoc/guides/cgcom/__versions.adoc
index 67e0598,e68b825..443d440
--- a/adocs/documentation/src/main/asciidoc/guides/cgcom/__versions.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/__versions.adoc
@@@ -1,3 -1,3 +1,3 @@@
 -:isisprev: 1.16.2
 -:isisrel: 1.16.3
 -:isisdev: {isisrel}-SNAPSHOT
 +:isisprev: 2.0.0-M1
 +:isisrel: 2.0.0-M2
- :isisdev: {isisrel}-SNAPSHOT
++:isisdev: {isisrel}-SNAPSHOT
diff --cc core/applib/pom.xml
index c5d2360,3054ac2..40bfe2e
--- a/core/applib/pom.xml
+++ b/core/applib/pom.xml
@@@ -91,19 -151,59 +91,64 @@@
              <groupId>org.apache.isis.core</groupId>
              <artifactId>isis-core-unittestsupport</artifactId>
              <scope>test</scope>
 +            <exclusions>
 +            	<!-- whatever unittestsupport is dependent on, it should not be transitive  -->
 +            	<exclusion>
 +                    <groupId>org.reflections</groupId>
 +                    <artifactId>reflections</artifactId>
 +            	</exclusion>
 +            	<exclusion>
 +                    <groupId>com.google.guava</groupId>
 +                    <artifactId>guava</artifactId>
 +            	</exclusion>
 +            </exclusions>
          </dependency>
 -
 -        <!-- as used by ClassDiscoveryServiceUsingReflections -->
 -        <dependency>
 -            <groupId>org.reflections</groupId>
 -            <artifactId>reflections</artifactId>
 -        </dependency>
 -
 +        
      </dependencies>
  
+     <profiles>
+         <profile>
+             <id>flatten</id>
+             <activation>
+                 <property>
+                     <name>revision</name>
+                 </property>
+             </activation>
+             <build>
+                 <plugins>
+                     <plugin>
+                         <groupId>org.codehaus.mojo</groupId>
+                         <artifactId>flatten-maven-plugin</artifactId>
+                         <version>1.0.0</version>
+                         <executions>
+                             <execution>
+                                 <id>flatten</id>
+                                 <phase>process-resources</phase>
+                                 <goals>
+                                     <goal>flatten</goal>
+                                 </goals>
+                                 <configuration>
+                                     <flattenMode>defaults</flattenMode>
+                                     <updatePomFile>true</updatePomFile>
+                                     <pomElements>
+                                         <name>resolve</name>
+                                         <description>resolve</description>
+                                         <dependencies>resolve</dependencies>
+                                     </pomElements>
+                                 </configuration>
+                             </execution>
+                             <execution>
+                                 <id>flatten.clean</id>
+                                 <phase>clean</phase>
+                                 <goals>
+                                     <goal>clean</goal>
+                                 </goals>
+                             </execution>
+                         </executions>
+                     </plugin>
+                 </plugins>
+             </build>
+         </profile>
+     </profiles>
+ 
  </project>
diff --cc core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index a8d2cda,7e52cf6..543bcb8
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@@ -40,8 -43,10 +43,9 @@@ import org.apache.isis.core.commons.exc
  import org.apache.isis.core.commons.lang.ClassUtil;
  import org.apache.isis.core.metamodel.facetapi.Facet;
  import org.apache.isis.core.metamodel.facets.FacetFactory;
+ import org.apache.isis.core.metamodel.facets.MethodRemoverConstants;
  import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
  import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 -import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
  import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
  import org.apache.isis.core.metamodel.services.ServicesInjector;
  import org.apache.isis.core.metamodel.services.configinternal.ConfigurationServiceInternal;
@@@ -97,8 -106,16 +105,15 @@@ public class SpecificationLoader implem
  
      private final MetaModelValidator metaModelValidator;
      private final SpecificationCacheDefault cache = new SpecificationCacheDefault();
 -    private final List<LayoutMetadataReader> layoutMetadataReaders;
      private final PostProcessor postProcessor;
  
+     enum State {
+         NOT_INITIALIZED,
+         CACHING,
+         INTROSPECTING
+     }
+ 
+ 
      public SpecificationLoader(
              final IsisConfiguration configuration,
              final ProgrammingModel programmingModel,
@@@ -113,11 -131,25 +128,13 @@@
  
          this.facetProcessor = new FacetProcessor(programmingModel);
          this.postProcessor = new PostProcessor(programmingModel, servicesInjector);
+ 
 -        this.layoutMetadataReaders = layoutMetadataReaders;
 -
+         this.state = State.NOT_INITIALIZED;
      }
  
 -    @Override
 -    protected void finalize() throws Throwable {
 -        super.finalize();
 -        LOG.info("finalizing reflector factory", this);
 -    }
 -
 -
 -    //endregion
 -
 -
 -    //region > init
 +    // -- init
  
-     private boolean initialized = false;
+     private State state;
  
      /**
       * Initializes and wires up, and primes the cache based on any service
@@@ -132,10 -164,24 +149,21 @@@
  
          // wire subcomponents into each other
          facetProcessor.setServicesInjector(servicesInjector);
 -        for (final LayoutMetadataReader layoutMetadataReader : layoutMetadataReaders) {
 -            servicesInjector.injectInto(layoutMetadataReader);
 -        }
  
          // initialize subcomponents
-         programmingModel.init();
+         this.programmingModel.init();
          facetProcessor.init();
+ 
+         ProgrammingModel programmingModelForObjectSpecId = new ProgrammingModelForObjectSpecIdFacet(configuration);
+         facetProcessorObjectSpecId = new FacetProcessor(programmingModelForObjectSpecId) {
+             @Override
+             public void injectDependenciesInto(final FacetFactory factory) {
+                 // no-op... otherwise hit an exception in the other thread, but don't (yet) know why.
+             }
+         };
+         programmingModelForObjectSpecId.init();
+         facetProcessorObjectSpecId.init();
+ 
          postProcessor.init();
          metaModelValidator.init(this);
  
@@@ -178,12 -263,11 +245,8 @@@
          cache.setCacheBySpecId(specById);
      }
  
-     @Programmatic
-     public boolean isInitialized() {
-         return initialized;
-     }
  
 -
 -    //endregion
 -
 -    //region > shutdown
 +    // -- shutdown
  
      @Programmatic
      public void shutdown() {
diff --cc core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
index 5adc667,c4e54c2..4296932
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
@@@ -124,15 -123,15 +124,15 @@@ public class BigDecimalDerivedFromJdoCo
                  if(pcFacet==null || pcFacet.getIdentityType() == IdentityType.NONDURABLE) {
                      return;
                  }
 -                
 -                final List<ObjectAssociation> associations = objectSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES);
 +
 +                final List<ObjectAssociation> associations = objectSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Predicates.PROPERTIES);
                  for (ObjectAssociation association : associations) {
 -                    
 +
                      // skip checks if annotated with JDO @NotPersistent
                      if(association.containsDoOpFacet(JdoNotPersistentFacet.class)) {
-                         return;
+                         continue;
                      }
 -                    
 +
                      validateBigDecimalValueFacet(association, validationFailures);
                  }
              }
diff --cc core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
index 2e9519f,b9199cd..3b85972
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
@@@ -134,15 -138,15 +134,15 @@@ public class MandatoryFromJdoColumnAnno
                  if(pcFacet==null || pcFacet.getIdentityType() == IdentityType.NONDURABLE) {
                      return;
                  }
 -                
 -                final List<ObjectAssociation> associations = objectSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES);
 +
 +                final List<ObjectAssociation> associations = objectSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Predicates.PROPERTIES);
                  for (ObjectAssociation association : associations) {
 -                    
 +
                      // skip checks if annotated with JDO @NotPersistent
                      if(association.containsDoOpFacet(JdoNotPersistentFacet.class)) {
-                         return;
+                         continue;
                      }
 -                    
 +
                      validateMandatoryFacet(association, validationFailures);
                  }
              }
diff --cc core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MaxLengthDerivedFromJdoColumnAnnotationFacetFactory.java
index 2e9b32f,5b23bbe..4bafb83
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MaxLengthDerivedFromJdoColumnAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MaxLengthDerivedFromJdoColumnAnnotationFacetFactory.java
@@@ -111,15 -106,15 +111,15 @@@ public class MaxLengthDerivedFromJdoCol
                  if(pcFacet==null || pcFacet.getIdentityType() == IdentityType.NONDURABLE) {
                      return;
                  }
 -                
 -                final List<ObjectAssociation> associations = objectSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES);
 +
 +                final List<ObjectAssociation> associations = objectSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Predicates.PROPERTIES);
                  for (ObjectAssociation association : associations) {
 -                    
 +
                      // skip checks if annotated with JDO @NotPersistent
                      if(association.containsDoOpFacet(JdoNotPersistentFacet.class)) {
-                         return;
+                         continue;
                      }
 -                    
 +
                      MaxLengthFacet facet = association.getFacet(MaxLengthFacet.class);
  
                      MaxLengthFacet underlying = (MaxLengthFacet) facet.getUnderlyingFacet();
diff --cc core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory4.java
index 004fc50,0000000..1bd9df9
mode 100644,000000..100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory4.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory4.java
@@@ -1,218 -1,0 +1,231 @@@
 +/*
 + *  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 org.apache.isis.core.runtime.system.persistence;
 +
 +import java.util.Map;
 +import java.util.Objects;
 +import java.util.Set;
 +
 +import javax.jdo.PersistenceManagerFactory;
 +
 +import org.datanucleus.PropertyNames;
 +import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
 +import org.apache.isis.applib.annotation.Programmatic;
 +import org.apache.isis.commons.internal.base._Lazy;
 +import org.apache.isis.core.commons.authentication.AuthenticationSession;
 +import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 +import org.apache.isis.core.commons.config.IsisConfiguration;
 +import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 +import org.apache.isis.core.metamodel.services.ServicesInjector;
++import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 +import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
 +import org.apache.isis.objectstore.jdo.datanucleus.JDOStateManagerForIsis;
 +import org.apache.isis.objectstore.jdo.service.RegisterEntities;
 +
 +/**
 + *
 + * Factory for {@link PersistenceSession}.
 + *
 + * <p>
 + * Implementing class is added to {@link ServicesInjector} as an (internal) domain service; all public methods
 + * must be annotated using {@link Programmatic}.
 + * </p>
 + */
 +public class PersistenceSessionFactory4 implements
 +PersistenceSessionFactory, ApplicationScopedComponent, FixturesInstalledFlag {
 +
 +    private static final Logger LOG = LoggerFactory.getLogger(PersistenceSessionFactory4.class);
 +
 +    public static final String JDO_OBJECTSTORE_CONFIG_PREFIX = "isis.persistor.datanucleus";  // specific to the JDO objectstore
 +    public static final String DATANUCLEUS_CONFIG_PREFIX = "isis.persistor.datanucleus.impl"; // reserved for datanucleus' own config props
 +
 +
 +    private final _Lazy<DataNucleusApplicationComponents4> applicationComponents = 
 +            _Lazy.threadSafe(this::createDataNucleusApplicationComponents);
 +
 +    private IsisConfiguration configuration;
 +
 +    @Programmatic
 +    @Override
 +    public void init(final IsisConfigurationDefault configuration) {
 +        this.configuration = configuration;
 +    }
 +
 +    @Programmatic
 +    @Override
 +    public boolean isInitialized() {
 +        return this.configuration != null;
 +    }
 +
 +    private DataNucleusApplicationComponents4 createDataNucleusApplicationComponents() {
 +
 +        final RegisterEntities registerEntities = new RegisterEntities();
 +        final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
 +        
-             final IsisConfiguration jdoObjectstoreConfig = configuration.createSubset(
-                     JDO_OBJECTSTORE_CONFIG_PREFIX);
++        final IsisConfiguration jdoObjectstoreConfig = configuration.createSubset(
++                JDO_OBJECTSTORE_CONFIG_PREFIX);
 +
-             final IsisConfiguration dataNucleusConfig = configuration.createSubset(DATANUCLEUS_CONFIG_PREFIX);
-             final Map<String, String> datanucleusProps = dataNucleusConfig.asMap();
-             addDataNucleusPropertiesIfRequired(datanucleusProps);
++        final IsisConfiguration dataNucleusConfig = configuration.createSubset(DATANUCLEUS_CONFIG_PREFIX);
++        final Map<String, String> datanucleusProps = dataNucleusConfig.asMap();
++        addDataNucleusPropertiesIfRequired(datanucleusProps);
 +
 +        return new DataNucleusApplicationComponents4(jdoObjectstoreConfig,
 +                            datanucleusProps, classesToBePersisted);
 +    }
-     
++
++    @Override
++    @Programmatic
++    public void catalogNamedQueries(final SpecificationLoader specificationLoader) {
++        final RegisterEntities registerEntities = new RegisterEntities();
++        final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
++        DataNucleusApplicationComponents4.catalogNamedQueries(classesToBePersisted, specificationLoader);
++    }
++
++    private boolean shouldCreate(final DataNucleusApplicationComponents4 applicationComponents) {
++        return applicationComponents == null || applicationComponents.isStale();
++    }
++
 +    private static void addDataNucleusPropertiesIfRequired(
 +            final Map<String, String> props) {
 +
 +        // new feature in DN 3.2.3; enables dependency injection into entities
 +        putIfNotPresent(props, PropertyNames.PROPERTY_OBJECT_PROVIDER_CLASS_NAME, JDOStateManagerForIsis.class.getName());
 +
 +        putIfNotPresent(props, "javax.jdo.PersistenceManagerFactoryClass", JDOPersistenceManagerFactory.class.getName());
 +
 +        // previously we defaulted this property to "true", but that could cause the target database to be modified
 +        putIfNotPresent(props, PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_SCHEMA, Boolean.FALSE.toString());
 +
 +        putIfNotPresent(props, PropertyNames.PROPERTY_SCHEMA_VALIDATE_ALL, Boolean.TRUE.toString());
 +        putIfNotPresent(props, PropertyNames.PROPERTY_CACHE_L2_TYPE, "none");
 +
 +        putIfNotPresent(props, PropertyNames.PROPERTY_PERSISTENCE_UNIT_LOAD_CLASSES, Boolean.TRUE.toString());
 +
 +        String connectionFactoryName = props.get(PropertyNames.PROPERTY_CONNECTION_FACTORY_NAME);
 +        if(connectionFactoryName != null) {
 +            String connectionFactory2Name = props.get(PropertyNames.PROPERTY_CONNECTION_FACTORY2_NAME);
 +            String transactionType = props.get("javax.jdo.option.TransactionType");
 +            // extended logging
 +            if(transactionType == null) {
 +                LOG.info("found config properties to use non-JTA JNDI datasource ({})", connectionFactoryName);
 +                if(connectionFactory2Name != null) {
 +                    LOG.warn("found config properties to use non-JTA JNDI datasource ({}); second '-nontx' JNDI datasource also configured but will not be used ({})", connectionFactoryName, connectionFactory2Name);
 +                }
 +            } else {
 +                LOG.info("found config properties to use JTA JNDI datasource ({})", connectionFactoryName);
 +            }
 +            if(connectionFactory2Name == null) {
 +                // JDO/DN itself will (probably) throw an exception
 +                LOG.error("found config properties to use JTA JNDI datasource ({}) but config properties for second '-nontx' JNDI datasource were *not* found", connectionFactoryName);
 +            } else {
 +                LOG.info("... and config properties for second '-nontx' JNDI datasource also found; {}", connectionFactory2Name);
 +            }
 +            // nothing further to do
 +            return;
 +        } else {
 +            // use JDBC connection properties; put if not present
 +            LOG.info("did *not* find config properties to use JNDI datasource; will use JDBC");
 +
 +            putIfNotPresent(props, "javax.jdo.option.ConnectionDriverName", "org.hsqldb.jdbcDriver");
 +            putIfNotPresent(props, "javax.jdo.option.ConnectionURL", "jdbc:hsqldb:mem:test");
 +            putIfNotPresent(props, "javax.jdo.option.ConnectionUserName", "sa");
 +            putIfNotPresent(props, "javax.jdo.option.ConnectionPassword", "");
 +        }
 +    }
 +
 +    private static void putIfNotPresent(
 +            final Map<String, String> props,
 +            String key,
 +            String value) {
 +        if(!props.containsKey(key)) {
 +            props.put(key, value);
 +        }
 +    }
 +
 +    @Programmatic
 +    @Override
 +    public final void shutdown() {
 +        if(!isInitialized()) {
 +            return;
 +        }
 +        if(applicationComponents.isMemoized()) {
 +            applicationComponents.get().shutdown();
 +            applicationComponents.clear();
 +        }
 +        this.configuration = null;
 +    }
 +
 +    /**
 +     * Called by {@link org.apache.isis.core.runtime.system.session.IsisSessionFactory#openSession(AuthenticationSession)}.
 +     */
 +    @Programmatic
 +    @Override
 +    public PersistenceSession4 createPersistenceSession(
 +            final ServicesInjector servicesInjector,
 +            final AuthenticationSession authenticationSession) {
 +
 +        Objects.requireNonNull(applicationComponents, "PersistenceSession5 requires initialization. "+this.hashCode());
 +        
 +        final FixturesInstalledFlag fixturesInstalledFlag = this;
 +        
 +        //[ahuber] if stale force recreate
 +        guardAgainstStaleState();
 +        
 +        final PersistenceManagerFactory persistenceManagerFactory =
 +                applicationComponents.get().getPersistenceManagerFactory();
 +
 +        return new PersistenceSession4(
 +                servicesInjector,
 +                authenticationSession, persistenceManagerFactory,
 +                fixturesInstalledFlag);
 +    }
 +
 +    private Boolean fixturesInstalled;
 +
 +    @Programmatic
 +    @Override
 +    public Boolean isFixturesInstalled() {
 +        return fixturesInstalled;
 +    }
 +
 +    @Programmatic
 +    @Override
 +    public void setFixturesInstalled(final Boolean fixturesInstalled) {
 +        this.fixturesInstalled = fixturesInstalled;
 +    }
 +
 +    // [ahuber] JRebel support, not tested at all
 +    private void guardAgainstStaleState() {
 +        if(applicationComponents.get().isStale()) {
 +            try {
 +                applicationComponents.get().shutdown();
 +            } catch (Exception e) {
 +                // ignore
 +            }
 +            applicationComponents.clear();
 +        }
 +    }
 +
 +
 +}
 +
diff --cc core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents5.java
index 56265dd,0000000..26cf114
mode 100644,000000..100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents5.java
@@@ -1,267 -1,0 +1,268 @@@
 +/*
 + *  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 org.apache.isis.core.runtime.system.persistence;
 +
 +import java.util.Map;
 +import java.util.Properties;
 +import java.util.Set;
 +
 +import javax.jdo.JDOHelper;
 +import javax.jdo.PersistenceManagerFactory;
 +
++import com.google.common.base.Joiner;
++import com.google.common.collect.Maps;
++
++import org.datanucleus.PersistenceNucleusContext;
++import org.datanucleus.PropertyNames;
++import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
++import org.datanucleus.metadata.MetaDataListener;
++import org.datanucleus.metadata.MetaDataManager;
++import org.datanucleus.store.StoreManager;
++import org.datanucleus.store.schema.SchemaAwareStoreManager;
++
 +import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 +import org.apache.isis.core.commons.config.IsisConfiguration;
 +import org.apache.isis.core.commons.factory.InstanceUtil;
 +import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 +import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 +import org.apache.isis.core.runtime.system.context.IsisContext;
 +import org.apache.isis.objectstore.jdo.datanucleus.CreateSchemaObjectFromClassMetadata;
 +import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusLifeCycleHelper;
 +import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPropertiesAware;
 +import org.apache.isis.objectstore.jdo.metamodel.facets.object.query.JdoNamedQuery;
 +import org.apache.isis.objectstore.jdo.metamodel.facets.object.query.JdoQueryFacet;
- import org.datanucleus.PersistenceNucleusContext;
- import org.datanucleus.PropertyNames;
- import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
- import org.datanucleus.metadata.MetaDataListener;
- import org.datanucleus.metadata.MetaDataManager;
- import org.datanucleus.store.StoreManager;
- import org.datanucleus.store.schema.SchemaAwareStoreManager;
- 
- import com.google.common.base.Joiner;
- import com.google.common.collect.Maps;
 +
 +public class DataNucleusApplicationComponents5 implements ApplicationScopedComponent {
 +
 +    public static final String CLASS_METADATA_LOADED_LISTENER_KEY = "classMetadataLoadedListener";
 +    static final String CLASS_METADATA_LOADED_LISTENER_DEFAULT = CreateSchemaObjectFromClassMetadata.class.getName();
 +
 +    ///////////////////////////////////////////////////////////////////////////
 +    // JRebel support
 +    ///////////////////////////////////////////////////////////////////////////
 +
 +    private static DataNucleusApplicationComponents5 instance;
 +
 +    /**
 +     * For JRebel plugin
 +     */
 +    public static MetaDataManager getMetaDataManager() {
 +        return instance != null
 +                ? ((JDOPersistenceManagerFactory)instance.persistenceManagerFactory).getNucleusContext().getMetaDataManager()
 +                        : null;
 +    }
 +
 +    public static void markAsStale() {
 +        if(instance != null) {
 +            instance.stale = true;
 +        }
 +    }
 +
 +    private boolean stale = false;
 +    public boolean isStale() {
 +        return stale;
 +    }
 +
 +    ///////////////////////////////////////////////////////////////////////////
 +
 +    private final Set<String> persistableClassNameSet;
 +    private final IsisConfiguration jdoObjectstoreConfig;
 +    private final Map<String, String> datanucleusProps;
 +
 +    private PersistenceManagerFactory persistenceManagerFactory;
 +
 +    public DataNucleusApplicationComponents5(
 +            final IsisConfiguration configuration,
 +            final Map<String, String> datanucleusProps,
 +            final Set<String> persistableClassNameSet) {
 +
 +        this.datanucleusProps = datanucleusProps;
 +        this.persistableClassNameSet = persistableClassNameSet;
 +        this.jdoObjectstoreConfig = configuration;
 +
 +        persistenceManagerFactory = createPmfAndSchemaIfRequired(this.persistableClassNameSet, this.datanucleusProps);
 +
 +        // for JRebel plugin
 +        instance = this;
 +    }
 +
 +    /**
 +     * Marks the end of DataNucleus' life-cycle. Purges any state associated with DN.
 +     * Subsequent calls have no effect.
 +     *
 +     * @since 2.0.0
 +     */
 +    public void shutdown() {
 +        instance = null;
 +        if(persistenceManagerFactory != null) {
 +            DataNucleusLifeCycleHelper.cleanUp(persistenceManagerFactory);
 +            persistenceManagerFactory = null;
 +        }
 +    }
 +
 +    private static PersistenceManagerFactory newPersistenceManagerFactory(Map<String, String> datanucleusProps) {
 +        return JDOHelper.getPersistenceManagerFactory(datanucleusProps, IsisContext.getClassLoader());
 +    }
 +
 +    private static boolean isSchemaAwareStoreManager(Map<String,String> datanucleusProps) {
 +
 +        // we create a throw-away instance of PMF so that we can probe whether DN has
 +        // been configured with a schema-aware store manager or not.
 +        final JDOPersistenceManagerFactory probePmf =
 +                (JDOPersistenceManagerFactory) newPersistenceManagerFactory(datanucleusProps);
 +
 +        try {
 +            final PersistenceNucleusContext nucleusContext = probePmf.getNucleusContext();
 +            final StoreManager storeManager = nucleusContext.getStoreManager();
 +            return storeManager instanceof SchemaAwareStoreManager;
 +        } finally {
 +            probePmf.close();
 +        }
 +    }
 +
 +    // REF: http://www.datanucleus.org/products/datanucleus/jdo/schema.html
 +    private PersistenceManagerFactory createPmfAndSchemaIfRequired(final Set<String> persistableClassNameSet, final Map<String, String> datanucleusProps) {
 +
 +        PersistenceManagerFactory persistenceManagerFactory;
 +        if(isSchemaAwareStoreManager(datanucleusProps)) {
 +
 +            // rather than reinvent too much of the wheel, we reuse the same property that DN would check
 +            // for if it were doing the auto-creation itself (read from isis.properties)
 +            final boolean createSchema = isSet(datanucleusProps, PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_ALL);
 +
 +            if(createSchema) {
 +
 +                // we *don't* use DN's eager loading (autoStart), because doing so means that it attempts to
 +                // create the table before the schema (for any entities annotated @PersistenceCapable(schema=...)
 +                //
 +                // instead, we manually create the schema ourselves
 +                // (if the configured StoreMgr supports it, and if requested in isis.properties)
 +                //
 +                datanucleusProps.put(PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_ALL, "false"); // turn off, cos want to do the schema object ourselves...
 +                datanucleusProps.put(PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_DATABASE, "false");
 +                datanucleusProps.put(PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_TABLES, "true"); // but have DN do everything else...
 +                datanucleusProps.put(PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_COLUMNS, "true");
 +                datanucleusProps.put(PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_CONSTRAINTS, "true");
 +
 +                persistenceManagerFactory = newPersistenceManagerFactory(datanucleusProps);
 +                createSchema(persistenceManagerFactory, persistableClassNameSet, datanucleusProps);
 +
 +            } else {
 +                persistenceManagerFactory = newPersistenceManagerFactory(datanucleusProps);
 +            }
 +
 +        } else {
 +
 +            // we *DO* use DN's eager loading (autoStart), because it seems that DN requires this (for neo4j at least)
 +            // otherwise NPEs occur later.
 +
 +            configureAutoStart(persistableClassNameSet, datanucleusProps);
 +            persistenceManagerFactory = newPersistenceManagerFactory(this.datanucleusProps);
 +        }
 +
 +        return persistenceManagerFactory;
 +
 +    }
 +
 +    private void configureAutoStart(final Set<String> persistableClassNameSet, final Map<String, String> datanucleusProps) {
 +        final String persistableClassNames = Joiner.on(',').join(persistableClassNameSet);
 +
 +        // ref: http://www.datanucleus.org/products/datanucleus/jdo/autostart.html
 +        datanucleusProps.put(PropertyNames.PROPERTY_AUTOSTART_MECHANISM, "Classes");
 +        datanucleusProps.put(PropertyNames.PROPERTY_AUTOSTART_MODE, "Checked");
 +        datanucleusProps.put(PropertyNames.PROPERTY_AUTOSTART_CLASSNAMES, persistableClassNames);
 +    }
 +
 +    private void createSchema(
 +            final PersistenceManagerFactory persistenceManagerFactory,
 +            final Set<String> persistableClassNameSet,
 +            final Map<String, String> datanucleusProps) {
 +
 +        JDOPersistenceManagerFactory jdopmf = (JDOPersistenceManagerFactory) persistenceManagerFactory;
 +        final PersistenceNucleusContext nucleusContext = jdopmf.getNucleusContext();
 +        final SchemaAwareStoreManager schemaAwareStoreManager = (SchemaAwareStoreManager)nucleusContext.getStoreManager();
 +
 +        final MetaDataManager metaDataManager = nucleusContext.getMetaDataManager();
 +
 +        registerMetadataListener(metaDataManager, datanucleusProps);
 +
 +        schemaAwareStoreManager.createSchemaForClasses(persistableClassNameSet, asProperties(datanucleusProps));
 +    }
 +
 +    private boolean isSet(final Map<String, String> props, final String key) {
 +        return Boolean.parseBoolean( props.get(key) );
 +    }
 +
 +    private void registerMetadataListener(
 +            final MetaDataManager metaDataManager,
 +            final Map<String, String> datanucleusProps) {
 +        final MetaDataListener listener = createMetaDataListener();
 +        if(listener == null) {
 +            return;
 +        }
 +
 +        if(listener instanceof DataNucleusPropertiesAware) {
 +            ((DataNucleusPropertiesAware) listener).setDataNucleusProperties(datanucleusProps);
 +        }
 +
 +
 +        // and install the listener for any classes that are lazily loaded subsequently
 +        // (shouldn't be any, this is mostly backwards compatibility with previous design).
 +        metaDataManager.registerListener(listener);
 +    }
 +
 +    private MetaDataListener createMetaDataListener() {
 +        final String classMetadataListenerClassName = jdoObjectstoreConfig.getString(
 +                CLASS_METADATA_LOADED_LISTENER_KEY,
 +                CLASS_METADATA_LOADED_LISTENER_DEFAULT);
 +        return classMetadataListenerClassName != null
 +                ? InstanceUtil.createInstance(classMetadataListenerClassName, MetaDataListener.class)
 +                        : null;
 +    }
 +
 +
 +    private static Properties asProperties(final Map<String, String> props) {
 +        final Properties properties = new Properties();
 +        properties.putAll(props);
 +        return properties;
 +    }
 +
 +    static Map<String, JdoNamedQuery> catalogNamedQueries(
 +            Set<String> persistableClassNames, final SpecificationLoader specificationLoader) {
 +        final Map<String, JdoNamedQuery> namedQueryByName = Maps.newHashMap();
 +        for (final String persistableClassName: persistableClassNames) {
 +            final ObjectSpecification spec = specificationLoader.loadSpecification(persistableClassName);
 +            final JdoQueryFacet facet = spec.getFacet(JdoQueryFacet.class);
 +            if (facet == null) {
 +                continue;
 +            }
 +            for (final JdoNamedQuery namedQuery : facet.getNamedQueries()) {
 +                namedQueryByName.put(namedQuery.getName(), namedQuery);
 +            }
 +        }
 +        return namedQueryByName;
 +    }
 +
 +    public PersistenceManagerFactory getPersistenceManagerFactory() {
 +        return persistenceManagerFactory;
 +    }
 +
 +
 +
 +}
diff --cc core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory5.java
index 423ba06,0000000..bb12c9e
mode 100644,000000..100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory5.java
@@@ -1,217 -1,0 +1,230 @@@
 +/*
 + *  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 org.apache.isis.core.runtime.system.persistence;
 +
 +import java.util.Map;
 +import java.util.Objects;
 +import java.util.Set;
 +
 +import javax.jdo.PersistenceManagerFactory;
 +
 +import org.datanucleus.PropertyNames;
 +import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
 +import org.apache.isis.applib.annotation.Programmatic;
 +import org.apache.isis.commons.internal.base._Lazy;
 +import org.apache.isis.core.commons.authentication.AuthenticationSession;
 +import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 +import org.apache.isis.core.commons.config.IsisConfiguration;
 +import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 +import org.apache.isis.core.metamodel.services.ServicesInjector;
++import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 +import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
 +import org.apache.isis.objectstore.jdo.datanucleus.JDOStateManagerForIsis;
 +import org.apache.isis.objectstore.jdo.service.RegisterEntities;
 +
 +/**
 + *
 + * Factory for {@link PersistenceSession}.
 + *
 + * <p>
 + * Implementing class is added to {@link ServicesInjector} as an (internal) domain service; all public methods
 + * must be annotated using {@link Programmatic}.
 + * </p>
 + */
 +public class PersistenceSessionFactory5
 +implements PersistenceSessionFactory, ApplicationScopedComponent, FixturesInstalledFlag {
 +
 +    private static final Logger LOG = LoggerFactory.getLogger(PersistenceSessionFactory5.class);
 +
 +    public static final String JDO_OBJECTSTORE_CONFIG_PREFIX = "isis.persistor.datanucleus";  // specific to the JDO objectstore
 +    public static final String DATANUCLEUS_CONFIG_PREFIX = "isis.persistor.datanucleus.impl"; // reserved for datanucleus' own config props
 +
 +
 +    private final _Lazy<DataNucleusApplicationComponents5> applicationComponents = 
 +            _Lazy.threadSafe(this::createDataNucleusApplicationComponents);
 +
 +    private IsisConfiguration configuration;
 +    
 +    @Programmatic
 +    @Override
 +    public void init(final IsisConfigurationDefault configuration) {
 +        this.configuration = configuration;
 +    }
 +
 +    @Programmatic
 +    @Override
 +    public boolean isInitialized() {
 +        return this.configuration != null;
 +    }
 +
 +    private DataNucleusApplicationComponents5 createDataNucleusApplicationComponents() {
 +
 +        final RegisterEntities registerEntities = new RegisterEntities();
 +        final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
 +        
 +        final IsisConfiguration jdoObjectstoreConfig = configuration.createSubset(
 +                JDO_OBJECTSTORE_CONFIG_PREFIX);
 +
 +        final IsisConfiguration dataNucleusConfig = configuration.createSubset(DATANUCLEUS_CONFIG_PREFIX);
 +        final Map<String, String> datanucleusProps = dataNucleusConfig.asMap();
 +        addDataNucleusPropertiesIfRequired(datanucleusProps);
 +
 +        return new DataNucleusApplicationComponents5(jdoObjectstoreConfig,
 +                        datanucleusProps, classesToBePersisted);
 +    }
 +
++    @Override
++    @Programmatic
++    public void catalogNamedQueries(final SpecificationLoader specificationLoader) {
++        final RegisterEntities registerEntities = new RegisterEntities();
++        final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
++        DataNucleusApplicationComponents5.catalogNamedQueries(classesToBePersisted, specificationLoader);
++    }
++
++    private boolean shouldCreate(final DataNucleusApplicationComponents5 applicationComponents) {
++        return applicationComponents == null || applicationComponents.isStale();
++    }
++
 +    private static void addDataNucleusPropertiesIfRequired(
 +            final Map<String, String> props) {
 +
 +        // new feature in DN 3.2.3; enables dependency injection into entities
 +        putIfNotPresent(props, PropertyNames.PROPERTY_OBJECT_PROVIDER_CLASS_NAME, JDOStateManagerForIsis.class.getName());
 +
 +        putIfNotPresent(props, "javax.jdo.PersistenceManagerFactoryClass", JDOPersistenceManagerFactory.class.getName());
 +
 +        // previously we defaulted this property to "true", but that could cause the target database to be modified
 +        putIfNotPresent(props, PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_DATABASE, Boolean.FALSE.toString());
 +
 +        putIfNotPresent(props, PropertyNames.PROPERTY_SCHEMA_VALIDATE_ALL, Boolean.TRUE.toString());
 +        putIfNotPresent(props, PropertyNames.PROPERTY_CACHE_L2_TYPE, "none");
 +
 +        putIfNotPresent(props, PropertyNames.PROPERTY_PERSISTENCE_UNIT_LOAD_CLASSES, Boolean.TRUE.toString());
 +
 +        String connectionFactoryName = props.get(PropertyNames.PROPERTY_CONNECTION_FACTORY_NAME);
 +        if(connectionFactoryName != null) {
 +            String connectionFactory2Name = props.get(PropertyNames.PROPERTY_CONNECTION_FACTORY2_NAME);
 +            String transactionType = props.get("javax.jdo.option.TransactionType");
 +            // extended logging
 +            if(transactionType == null) {
 +                LOG.info("found config properties to use non-JTA JNDI datasource ({})", connectionFactoryName);
 +                if(connectionFactory2Name != null) {
 +                    LOG.warn("found config properties to use non-JTA JNDI datasource ({}); second '-nontx' JNDI datasource also configured but will not be used ({})", connectionFactoryName, connectionFactory2Name);
 +                }
 +            } else {
 +                LOG.info("found config properties to use JTA JNDI datasource ({})", connectionFactoryName);
 +            }
 +            if(connectionFactory2Name == null) {
 +                // JDO/DN itself will (probably) throw an exception
 +                LOG.error("found config properties to use JTA JNDI datasource ({}) but config properties for second '-nontx' JNDI datasource were *not* found", connectionFactoryName);
 +            } else {
 +                LOG.info("... and config properties for second '-nontx' JNDI datasource also found; {}", connectionFactory2Name);
 +            }
 +            // nothing further to do
 +            return;
 +        } else {
 +            // use JDBC connection properties; put if not present
 +            LOG.info("did *not* find config properties to use JNDI datasource; will use JDBC");
 +
 +            putIfNotPresent(props, "javax.jdo.option.ConnectionDriverName", "org.hsqldb.jdbcDriver");
 +            putIfNotPresent(props, "javax.jdo.option.ConnectionURL", "jdbc:hsqldb:mem:test");
 +            putIfNotPresent(props, "javax.jdo.option.ConnectionUserName", "sa");
 +            putIfNotPresent(props, "javax.jdo.option.ConnectionPassword", "");
 +        }
 +    }
 +
 +    private static void putIfNotPresent(
 +            final Map<String, String> props,
 +            String key,
 +            String value) {
 +        if(!props.containsKey(key)) {
 +            props.put(key, value);
 +        }
 +    }
 +
 +    @Programmatic
 +    @Override
 +    public final void shutdown() {
 +        if(!isInitialized()) {
 +            return;
 +        }
 +        if(applicationComponents.isMemoized()) {
 +            applicationComponents.get().shutdown();
 +            applicationComponents.clear();
 +        }
 +        this.configuration = null;
 +    }
 +
 +    /**
 +     * Called by {@link org.apache.isis.core.runtime.system.session.IsisSessionFactory#openSession(AuthenticationSession)}.
 +     */
 +    @Programmatic
 +    @Override
 +    public PersistenceSession5 createPersistenceSession(
 +            final ServicesInjector servicesInjector,
 +            final AuthenticationSession authenticationSession) {
 +
 +        Objects.requireNonNull(applicationComponents, "PersistenceSession5 requires initialization. "+this.hashCode());
 +        
 +        final FixturesInstalledFlag fixturesInstalledFlag = this;
 +        
 +        //[ahuber] if stale force recreate
 +        guardAgainstStaleState();
 +        
 +        final PersistenceManagerFactory persistenceManagerFactory =
 +                applicationComponents.get().getPersistenceManagerFactory();
 +
 +        return new PersistenceSession5(
 +                servicesInjector,
 +                authenticationSession, persistenceManagerFactory,
 +                fixturesInstalledFlag);
 +    }
 +
 +    private Boolean fixturesInstalled;
 +
 +    @Programmatic
 +    @Override
 +    public Boolean isFixturesInstalled() {
 +        return fixturesInstalled;
 +    }
 +
 +    @Programmatic
 +    @Override
 +    public void setFixturesInstalled(final Boolean fixturesInstalled) {
 +        this.fixturesInstalled = fixturesInstalled;
 +    }
 +    
 +    // [ahuber] JRebel support, not tested at all
 +    private void guardAgainstStaleState() {
 +        if(applicationComponents.get().isStale()) {
 +            try {
 +                applicationComponents.get().shutdown();
 +            } catch (Exception e) {
 +                // ignore
 +            }
 +            applicationComponents.clear();
 +        }
 +    }
 +
 +
 +}
diff --cc core/pom.xml
index e24e970,6e9e138..09d4134
--- a/core/pom.xml
+++ b/core/pom.xml
@@@ -46,7 -46,8 +46,12 @@@
      <inceptionYear>2010</inceptionYear>
  
      <properties>
++<<<<<<< HEAD
 +        <revision>2.0.0-M2-SNAPSHOT</revision>
++=======
+         <revision>1.16.3-SNAPSHOT</revision>
+         <isis.version>${revision}</isis.version>
++>>>>>>> master
  
          <jar-plugin.automaticModuleName>org.apache.isis.core</jar-plugin.automaticModuleName>
          <git-plugin.propertiesDir>org/apache/isis/core</git-plugin.propertiesDir>
@@@ -1363,15 -1234,8 +1338,15 @@@ ${license.additional-notes
              <dependency>
                  <groupId>org.apache.isis.core</groupId>
                  <artifactId>isis-core-wrapper</artifactId>
-                 <version>${revision}</version>
+                 <version>${isis.version}</version>
              </dependency>
 +			<dependency>
 +                <groupId>org.apache.isis.core</groupId>
 +                <artifactId>isis-core-wrapper</artifactId>
 +                <version>${revision}</version>
 +                <type>test-jar</type>
 +                <scope>test</scope>
 +            </dependency>
  
              <!-- webserver -->
              <dependency>
@@@ -1441,66 -1305,10 +1416,66 @@@
              <dependency>
                  <groupId>org.apache.isis.core</groupId>
                  <artifactId>isis-core-security-shiro</artifactId>
-                 <version>${revision}</version>
+                 <version>${isis.version}</version>
              </dependency>
  
 +            <!-- core plugins -->
              
 +            <dependency>
 +                <groupId>org.apache.isis.core</groupId>
 +                <artifactId>isis-core-plugins-codegen-bytebuddy</artifactId>
 +                <version>${revision}</version>
 +            </dependency>
 +            
 +            <dependency>
 +                <groupId>org.apache.isis.core</groupId>
 +                <artifactId>isis-core-plugins-codegen-javassist</artifactId>
 +                <version>${revision}</version>
 +            </dependency>
 +            
 +            <dependency>
 +                <groupId>org.apache.isis.core</groupId>
 +                <artifactId>isis-core-plugins-discovery-reflections</artifactId>
 +                <version>${revision}</version>
 +            </dependency>
 +
 +            <dependency>
 +                <groupId>org.apache.isis.core</groupId>
 +                <artifactId>isis-core-plugins-jdo-datanucleus-4</artifactId>
 +                <version>${revision}</version>
 +            </dependency>
 +
 +            <dependency>
 +                <groupId>org.apache.isis.core</groupId>
 +                <artifactId>isis-core-plugins-jdo-datanucleus-5</artifactId>
 +                <version>${revision}</version>
 +            </dependency>
 +
 +            <dependency>
 +                <groupId>org.apache.isis.core</groupId>
 +                <artifactId>isis-core-plugins-eventbus-guava</artifactId>
 +                <version>${revision}</version>
 +            </dependency>
 +
 +            <dependency>
 +                <groupId>org.apache.isis.core</groupId>
 +                <artifactId>isis-core-plugins-eventbus-axon</artifactId>
 +                <version>${revision}</version>
 +            </dependency>
 +
 +            <dependency>
 +                <groupId>org.apache.isis.core</groupId>
 +                <artifactId>isis-core-plugins-jaxrs-resteasy-3</artifactId>
 +                <version>${revision}</version>
 +            </dependency>
 +
 +            <dependency>
 +                <groupId>org.apache.isis.core</groupId>
 +                <artifactId>isis-core-plugins-jaxrs-resteasy-4</artifactId>
 +                <version>${revision}</version>
 +            </dependency>
 +
 +
              <!-- also for benefit of application developers, using scope=import -->
              <dependency>
                  <groupId>org.apache.isis.core</groupId>
@@@ -2435,39 -2352,40 +2410,76 @@@
              </build>
          </profile>
          <profile>
++<<<<<<< HEAD
 +            <!--
 +            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>
++=======
+             <id>flatten</id>
+             <activation>
+                 <property>
+                     <name>revision</name>
+                 </property>
+             </activation>
+             <build>
+                 <plugins>
+                     <plugin>
+                         <groupId>org.codehaus.mojo</groupId>
+                         <artifactId>flatten-maven-plugin</artifactId>
+                         <version>1.0.0</version>
+                         <executions>
+                             <execution>
+                                 <id>flatten</id>
+                                 <phase>process-resources</phase>
+                                 <goals>
+                                     <goal>flatten</goal>
+                                 </goals>
+                                 <configuration>
+                                     <flattenMode>bom</flattenMode>
+                                     <updatePomFile>true</updatePomFile>
+                                     <pomElements>
+                                         <parent>resolve</parent>
+                                     </pomElements>
+                                 </configuration>
+                             </execution>
+                             <execution>
+                                 <id>flatten.clean</id>
+                                 <phase>clean</phase>
+                                 <goals>
+                                     <goal>clean</goal>
+                                 </goals>
+                             </execution>
++>>>>>>> master
                          </executions>
                      </plugin>
                  </plugins>
diff --cc core/runtime/pom.xml
index bc63e32,0bfb4c5..7d60684
--- a/core/runtime/pom.xml
+++ b/core/runtime/pom.xml
@@@ -152,8 -165,70 +152,55 @@@
                          </exclusion>
                      </exclusions>
                  </dependency>
 -                <dependency>
 -                    <groupId>javax.activation</groupId>
 -                    <artifactId>activation</artifactId>
 -                    <version>1.1.1</version>
 -                </dependency>
 -            </dependencies>
 -        </profile>
 -        <profile>
 -            <id>axon-event-bus</id>
 -            <activation>
 -                <property>
 -                    <name>!skip.axon-event-bus</name>
 -                </property>
 -            </activation>
 -            <dependencies>
 -                <dependency>
 -                    <groupId>org.axonframework</groupId>
 -                    <artifactId>axon-core</artifactId>
 -                    <version>${axon-core.version}</version>
 -                </dependency>
              </dependencies>
          </profile>
++<<<<<<< HEAD
 +
 +	</profiles>
++=======
+         <profile>
+             <id>flatten</id>
+             <activation>
+                 <property>
+                     <name>revision</name>
+                 </property>
+             </activation>
+             <build>
+                 <plugins>
+                     <plugin>
+                         <groupId>org.codehaus.mojo</groupId>
+                         <artifactId>flatten-maven-plugin</artifactId>
+                         <version>1.0.0</version>
+                         <executions>
+                             <execution>
+                                 <id>flatten</id>
+                                 <phase>process-resources</phase>
+                                 <goals>
+                                     <goal>flatten</goal>
+                                 </goals>
+                                 <configuration>
+                                     <flattenMode>defaults</flattenMode>
+                                     <updatePomFile>true</updatePomFile>
+                                     <pomElements>
+                                         <name>resolve</name>
+                                         <description>resolve</description>
+                                         <dependencies>resolve</dependencies>
+                                     </pomElements>
+                                 </configuration>
+                             </execution>
+                             <execution>
+                                 <id>flatten.clean</id>
+                                 <phase>clean</phase>
+                                 <goals>
+                                     <goal>clean</goal>
+                                 </goals>
+                             </execution>
+                         </executions>
+                     </plugin>
+                 </plugins>
+             </build>
+         </profile>
+     </profiles>
+ 
++>>>>>>> master
  </project>
diff --cc core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index 4ec2de2,2466c89..37a6cf8
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@@ -1,44 -1,221 +1,47 @@@
  /*
 - *  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
 + *  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
 + *     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.
 + *  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 org.apache.isis.core.runtime.system.persistence;
  
 -import java.util.Map;
 -import java.util.Set;
 -
 -import javax.jdo.PersistenceManagerFactory;
 -
 -import org.datanucleus.PropertyNames;
 -import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
 -import org.slf4j.Logger;
 -import org.slf4j.LoggerFactory;
 -
 -import org.apache.isis.applib.annotation.Programmatic;
  import org.apache.isis.core.commons.authentication.AuthenticationSession;
 -import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 -import org.apache.isis.core.commons.config.IsisConfiguration;
  import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 +import org.apache.isis.core.metamodel.IsisJdoRuntimePlugin;
  import org.apache.isis.core.metamodel.services.ServicesInjector;
+ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 -import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
 -import org.apache.isis.objectstore.jdo.datanucleus.JDOStateManagerForIsis;
 -import org.apache.isis.objectstore.jdo.service.RegisterEntities;
 -
 -/**
 - *
 - * Factory for {@link PersistenceSession}.
 - *
 - * <p>
 - * Implementing class is added to {@link ServicesInjector} as an (internal) domain service; all public methods
 - * must be annotated using {@link Programmatic}.
 - * </p>
 - */
 -public class PersistenceSessionFactory implements ApplicationScopedComponent, FixturesInstalledFlag {
 -
 -    private static final Logger LOG = LoggerFactory.getLogger(PersistenceSessionFactory.class);
 -
 -    //region > constructor
 -
 -    private final IsisConfigurationDefault configuration;
 -
 -    public PersistenceSessionFactory(final IsisConfigurationDefault isisConfiguration) {
 -        this.configuration = isisConfiguration;
 -    }
  
 -    //endregion
 +public interface PersistenceSessionFactory {
  
 -    //region > init, createDataNucleusApplicationComponents
 +    // -- INTERFACE
  
 -    public static final String JDO_OBJECTSTORE_CONFIG_PREFIX = "isis.persistor.datanucleus";  // specific to the JDO objectstore
 -    public static final String DATANUCLEUS_CONFIG_PREFIX = "isis.persistor.datanucleus.impl"; // reserved for datanucleus' own config props
 +    PersistenceSession createPersistenceSession(ServicesInjector servicesInjector,
 +            AuthenticationSession authenticationSession);
  
 +    void init(IsisConfigurationDefault configuration);
  
 -    private DataNucleusApplicationComponents applicationComponents;
++    void catalogNamedQueries(final SpecificationLoader specificationLoader);
+ 
 -    @Programmatic
 -    public void init(final IsisConfigurationDefault configuration) {
 -        final RegisterEntities registerEntities = new RegisterEntities(configuration.asMap());
 -        final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
 +    boolean isInitialized();
  
 -        if (shouldCreate(this.applicationComponents)) {
 +    void shutdown();
  
 -            final IsisConfiguration jdoObjectstoreConfig = this.configuration.createSubset(JDO_OBJECTSTORE_CONFIG_PREFIX);
 -            final IsisConfiguration dataNucleusConfig = this.configuration.createSubset(DATANUCLEUS_CONFIG_PREFIX);
 -            final Map<String, String> datanucleusProps = dataNucleusConfig.asMap();
 -            addDataNucleusPropertiesIfRequired(datanucleusProps);
 +    // -- FACTORY
  
 -            DataNucleusApplicationComponents applicationComponents1 = new DataNucleusApplicationComponents(
 -                    jdoObjectstoreConfig,
 -                    datanucleusProps, classesToBePersisted);
 -
 -            this.applicationComponents = applicationComponents1;
 -
 -        }
 -    }
 -
 -    @Programmatic
 -    public void catalogNamedQueries(final SpecificationLoader specificationLoader) {
 -        final RegisterEntities registerEntities = new RegisterEntities(configuration.asMap());
 -        final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
 -        DataNucleusApplicationComponents.catalogNamedQueries(classesToBePersisted, specificationLoader);
 +    static PersistenceSessionFactory of(/*ConfigurationServiceInternal configuration*/) {
 +        return IsisJdoRuntimePlugin.get().getPersistenceSessionFactory(/*configuration*/);
      }
  
 -    @Programmatic
 -    public boolean isInitialized() {
 -        return this.applicationComponents != null;
 -    }
 -
 -    private boolean shouldCreate(final DataNucleusApplicationComponents applicationComponents) {
 -        return applicationComponents == null || applicationComponents.isStale();
 -    }
 -
 -    private static void addDataNucleusPropertiesIfRequired(
 -            final Map<String, String> props) {
 -
 -        // new feature in DN 3.2.3; enables dependency injection into entities
 -        putIfNotPresent(props, PropertyNames.PROPERTY_OBJECT_PROVIDER_CLASS_NAME, JDOStateManagerForIsis.class.getName());
 -
 -        putIfNotPresent(props, "javax.jdo.PersistenceManagerFactoryClass", JDOPersistenceManagerFactory.class.getName());
 -
 -        // previously we defaulted this property to "true", but that could cause the target database to be modified
 -        putIfNotPresent(props, PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_SCHEMA, Boolean.FALSE.toString());
 -
 -        putIfNotPresent(props, PropertyNames.PROPERTY_SCHEMA_VALIDATE_ALL, Boolean.TRUE.toString());
 -        putIfNotPresent(props, PropertyNames.PROPERTY_CACHE_L2_TYPE, "none");
 -
 -        putIfNotPresent(props, PropertyNames.PROPERTY_PERSISTENCE_UNIT_LOAD_CLASSES, Boolean.TRUE.toString());
 -
 -        String connectionFactoryName = props.get(PropertyNames.PROPERTY_CONNECTION_FACTORY_NAME);
 -        if(connectionFactoryName != null) {
 -            String connectionFactory2Name = props.get(PropertyNames.PROPERTY_CONNECTION_FACTORY2_NAME);
 -            String transactionType = props.get("javax.jdo.option.TransactionType");
 -            // extended logging
 -            if(transactionType == null) {
 -                LOG.info("found config properties to use non-JTA JNDI datasource ({})", connectionFactoryName);
 -                if(connectionFactory2Name != null) {
 -                    LOG.warn("found config properties to use non-JTA JNDI datasource ({}); second '-nontx' JNDI datasource also configured but will not be used ({})", connectionFactoryName, connectionFactory2Name);
 -                }
 -            } else {
 -                LOG.info("found config properties to use JTA JNDI datasource ({})", connectionFactoryName);
 -            }
 -            if(connectionFactory2Name == null) {
 -                // JDO/DN itself will (probably) throw an exception
 -                LOG.error("found config properties to use JTA JNDI datasource ({}) but config properties for second '-nontx' JNDI datasource were *not* found", connectionFactoryName);
 -            } else {
 -                LOG.info("... and config properties for second '-nontx' JNDI datasource also found; {}", connectionFactory2Name);
 -            }
 -            // nothing further to do
 -            return;
 -        } else {
 -            // use JDBC connection properties; put if not present
 -            LOG.info("did *not* find config properties to use JNDI datasource; will use JDBC");
 -
 -            putIfNotPresent(props, "javax.jdo.option.ConnectionDriverName", "org.hsqldb.jdbcDriver");
 -            putIfNotPresent(props, "javax.jdo.option.ConnectionURL", "jdbc:hsqldb:mem:test");
 -            putIfNotPresent(props, "javax.jdo.option.ConnectionUserName", "sa");
 -            putIfNotPresent(props, "javax.jdo.option.ConnectionPassword", "");
 -        }
 -    }
 -
 -    private static void putIfNotPresent(
 -            final Map<String, String> props,
 -            String key,
 -            String value) {
 -        if(!props.containsKey(key)) {
 -            props.put(key, value);
 -        }
 -    }
 -    //endregion
 -
 -    //region > shutdown
 -    @Programmatic
 -    public final void shutdown() {
 -        // no-op
 -    }
 -
 -    //endregion
 -
 -
 -    //region > createPersistenceSession
 -
 -    /**
 -     * Called by {@link org.apache.isis.core.runtime.system.session.IsisSessionFactory#openSession(AuthenticationSession)}.
 -     */
 -    @Programmatic
 -    public PersistenceSession createPersistenceSession(
 -            final ServicesInjector servicesInjector,
 -            final AuthenticationSession authenticationSession) {
 -
 -        final FixturesInstalledFlag fixturesInstalledFlag = this;
 -        final PersistenceManagerFactory persistenceManagerFactory =
 -                applicationComponents.getPersistenceManagerFactory();
 -
 -        return new PersistenceSession(
 -                servicesInjector,
 -                authenticationSession, persistenceManagerFactory,
 -                fixturesInstalledFlag);
 -    }
 -
 -
 -
 -    //endregion
 -
 -    //region > FixturesInstalledFlag impl
 -
 -    private Boolean fixturesInstalled;
 -
 -    @Programmatic
 -    @Override
 -    public Boolean isFixturesInstalled() {
 -        return fixturesInstalled;
 -    }
 -
 -    @Programmatic
 -    @Override
 -    public void setFixturesInstalled(final Boolean fixturesInstalled) {
 -        this.fixturesInstalled = fixturesInstalled;
 -    }
 -
 -    //endregion
 -
  
  }
diff --cc core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
index 32bac23,802f407..30ac450
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
@@@ -34,8 -34,6 +34,7 @@@ import org.apache.isis.applib.clock.Clo
  import org.apache.isis.applib.fixtures.FixtureClock;
  import org.apache.isis.applib.fixturescripts.FixtureScripts;
  import org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault;
- import org.apache.isis.commons.internal.collections._Lists;
 +import org.apache.isis.commons.internal.context._Context;
  import org.apache.isis.core.commons.config.IsisConfigurationDefault;
  import org.apache.isis.core.commons.lang.ListExtensions;
  import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
@@@ -57,7 -55,10 +56,11 @@@ import org.apache.isis.core.runtime.sys
  import org.apache.isis.core.runtime.systemusinginstallers.IsisComponentProvider;
  import org.apache.isis.core.runtime.systemusinginstallers.IsisComponentProviderDefault2;
  import org.apache.isis.core.runtime.threadpool.ThreadPoolSupport;
+ import org.apache.isis.schema.utils.ChangesDtoUtils;
+ import org.apache.isis.schema.utils.CommandDtoUtils;
+ import org.apache.isis.schema.utils.InteractionDtoUtils;
+ 
 +
  public class IsisSessionFactoryBuilder {
  
      public static final Logger LOG = LoggerFactory.getLogger(IsisSessionFactoryBuilder.class);
@@@ -179,45 -179,89 +181,90 @@@
              // finally, wire up components and components into services...
              servicesInjector.autowire();
  
 -
              // ... and make IsisSessionFactory available via the IsisContext static for those places where we cannot
              // yet inject.
 -            IsisContext.setSessionFactory(isisSessionFactory);
+ 
 +            _Context.putSingleton(IsisSessionFactory.class, isisSessionFactory);
  
-             final List<Callable<Object>> tasks = _Lists.of(
-                     ()->{
-                         // time to initialize...
-                         specificationLoader.init();
-                         // we need to do this before checking if the metamodel is valid.
-                         //
-                         // eg ActionChoicesForCollectionParameterFacetFactory metamodel validator requires a runtime...
-                         // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionContributee.getServiceAdapter(ObjectActionContributee.java:287)
-                         // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionContributee.determineParameters(ObjectActionContributee.java:138)
-                         // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionDefault.getParameters(ObjectActionDefault.java:182)
-                         // at o.a.i.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory$1.validate(ActionChoicesForCollectionParameterFacetFactory.java:85)
-                         // at o.a.i.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory$1.visit(ActionChoicesForCollectionParameterFacetFactory.java:76)
-                         // at o.a.i.core.metamodel.specloader.validator.MetaModelValidatorVisiting.validate(MetaModelValidatorVisiting.java:47)
-                         //
-                         // also, required so that can still call isisSessionFactory#doInSession
-                         //
-                         // eg todoapp has a custom UserSettingsThemeProvider that is called when rendering any page
-                         // (including the metamodel invalid page)
-                         // at o.a.i.core.runtime.system.session.IsisSessionFactory.doInSession(IsisSessionFactory.java:327)
-                         // at todoapp.webapp.UserSettingsThemeProvider.getActiveTheme(UserSettingsThemeProvider.java:36)
-                         authenticationManager.init(deploymentCategory);
-                         authorizationManager.init(deploymentCategory);
-                         return null;
++            // execute tasks using a threadpool
+             final List<Future<Object>> futures = ThreadPoolSupport.getInstance().invokeAll(
+                     new Callable<Object>() {
+                         @Override
+                         public Object call() {
+ 
+                             // time to initialize...
+                             specificationLoader.init();
+ 
+                             // we need to do this before checking if the metamodel is valid.
+                             //
+                             // eg ActionChoicesForCollectionParameterFacetFactory metamodel validator requires a runtime...
+                             // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionContributee.getServiceAdapter(ObjectActionContributee.java:287)
+                             // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionContributee.determineParameters(ObjectActionContributee.java:138)
+                             // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionDefault.getParameters(ObjectActionDefault.java:182)
+                             // at o.a.i.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory$1.validate(ActionChoicesForCollectionParameterFacetFactory.java:85)
+                             // at o.a.i.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory$1.visit(ActionChoicesForCollectionParameterFacetFactory.java:76)
+                             // at o.a.i.core.metamodel.specloader.validator.MetaModelValidatorVisiting.validate(MetaModelValidatorVisiting.java:47)
+                             //
+                             // also, required so that can still call isisSessionFactory#doInSession
+                             //
+                             // eg todoapp has a custom UserSettingsThemeProvider that is called when rendering any page
+                             // (including the metamodel invalid page)
+                             // at o.a.i.core.runtime.system.session.IsisSessionFactory.doInSession(IsisSessionFactory.java:327)
+                             // at todoapp.webapp.UserSettingsThemeProvider.getActiveTheme(UserSettingsThemeProvider.java:36)
+ 
+                             authenticationManager.init(deploymentCategory);
+                             authorizationManager.init(deploymentCategory);
+ 
+                             return null;
+                         }
+                         public String toString() {
+                             return "SpecificationLoader#init()";
+                         }
+ 
+                     },
+                     new Callable<Object>() {
+                         @Override public Object call() {
+                             persistenceSessionFactory.init(configuration);
+                             return null;
+                         }
+                         public String toString() {
+                             return "persistenceSessionFactory#init(...)";
+                         }
                      },
-                     ()->{
-                         persistenceSessionFactory.init(configuration);
-                         return null;
+                     new Callable<Object>() {
+                         @Override public Object call() throws Exception {
+                             ChangesDtoUtils.init();
+                             return null;
+                         }
+                         public String toString() {
+                             return "ChangesDtoUtils.init()";
+                         }
+                     },
+                     new Callable<Object>() {
+                         @Override public Object call() throws Exception {
+                             InteractionDtoUtils.init();
+                             return null;
+                         }
+                         public String toString() {
+                             return "InteractionDtoUtils.init()";
+                         }
+                     },
+                     new Callable<Object>() {
+                         @Override public Object call() throws Exception {
+                             CommandDtoUtils.init();
+                             return null;
+                         }
+                         public String toString() {
+                             return "CommandDtoUtils.init()";
+                         }
                      }
 +                ); 
  
-             // execute tasks using a threadpool
-             final List<Future<Object>> futures = ThreadPoolSupport.getInstance().invokeAll(tasks);
-             
 -            );
+ 
 +            // wait on this thread for tasks to complete
-             ThreadPoolSupport.getInstance().join(futures);
+             ThreadPoolSupport.getInstance().joinGatherFailures(futures);
+ 
+             persistenceSessionFactory.catalogNamedQueries(specificationLoader);
  
              isisSessionFactory.constructServices();
  
diff --cc core/security-shiro/pom.xml
index 31a2e83,b7e301f..fc335f9
--- a/core/security-shiro/pom.xml
+++ b/core/security-shiro/pom.xml
@@@ -107,12 -107,57 +107,58 @@@
              <artifactId>shiro-web</artifactId>
          </dependency>
  
 -        <dependency>
 -            <groupId>org.apache.geronimo.specs</groupId>
 -            <artifactId>geronimo-servlet_3.0_spec</artifactId>
 -            <scope>provided</scope>
 -        </dependency>
 +<!-- replaced by javaee-api -->
 +<!--    <dependency> -->
 +<!--        <groupId>org.apache.geronimo.specs</groupId> -->
 +<!--        <artifactId>geronimo-servlet_3.0_spec</artifactId> -->
 +<!--        <scope>provided</scope> -->
 +<!--    </dependency> -->
  
      </dependencies>
+ 
+     <profiles>
+         <profile>
+             <id>flatten</id>
+             <activation>
+                 <property>
+                     <name>revision</name>
+                 </property>
+             </activation>
+             <build>
+                 <plugins>
+                     <plugin>
+                         <groupId>org.codehaus.mojo</groupId>
+                         <artifactId>flatten-maven-plugin</artifactId>
+                         <version>1.0.0</version>
+                         <executions>
+                             <execution>
+                                 <id>flatten</id>
+                                 <phase>process-resources</phase>
+                                 <goals>
+                                     <goal>flatten</goal>
+                                 </goals>
+                                 <configuration>
+                                     <flattenMode>defaults</flattenMode>
+                                     <updatePomFile>true</updatePomFile>
+                                     <pomElements>
+                                         <name>resolve</name>
+                                         <description>resolve</description>
+                                         <dependencies>resolve</dependencies>
+                                     </pomElements>
+                                 </configuration>
+                             </execution>
+                             <execution>
+                                 <id>flatten.clean</id>
+                                 <phase>clean</phase>
+                                 <goals>
+                                     <goal>clean</goal>
+                                 </goals>
+                             </execution>
+                         </executions>
+                     </plugin>
+                 </plugins>
+             </build>
+         </profile>
+     </profiles>
+ 
  </project>
diff --cc core/unittestsupport/pom.xml
index 0c80396,0ba97f1..36b2302
--- a/core/unittestsupport/pom.xml
+++ b/core/unittestsupport/pom.xml
@@@ -32,75 -38,107 +32,121 @@@
          Support for writing unit tests; should be added as a dependency with scope=test only
      </description>
  
 -    <dependencies>
 -        <dependency>
 -            <groupId>junit</groupId>
 -            <artifactId>junit</artifactId>
 -        </dependency>
 +	<dependencies>
  
 -        <dependency>
 -            <groupId>org.picocontainer</groupId>
 -            <artifactId>picocontainer</artifactId>
 -        </dependency>
 +		<!-- core plugin loading -->
 +		<dependency>
 +			<groupId>org.apache.isis.core</groupId>
 +			<artifactId>isis-core-commons</artifactId>
 +		</dependency>
  
 -        <dependency>
 -            <groupId>org.jmock</groupId>
 -            <artifactId>jmock</artifactId>
 -        </dependency>
 +		<!-- framework default core-codegen-plugin for tests -->
 +		<dependency>
 +			<groupId>org.apache.isis.core</groupId>
 +			<artifactId>isis-core-plugins-codegen-bytebuddy</artifactId>
 +		</dependency>
  
 -        <dependency>
 -            <groupId>org.jmock</groupId>
 -            <artifactId>jmock-junit4</artifactId>
 -        </dependency>
 +		<!-- JUPITER -->
 +		<dependency>
 +			<!-- JUnit API for writing tests and extensions -->
 +			<groupId>org.junit.jupiter</groupId>
 +			<artifactId>junit-jupiter-api</artifactId>
 +		</dependency>
 +		<dependency>
 +			<!-- implementation of the JUnit Jupiter test engine -->
 +			<groupId>org.junit.jupiter</groupId>
 +			<artifactId>junit-jupiter-engine</artifactId>
 +		</dependency>
 +		<dependency>
 +			<!-- support for unit tests that use JUnit 4 or JUnit 3 -->
 +			<groupId>org.junit.vintage</groupId>
 +			<artifactId>junit-vintage-engine</artifactId>
 +		</dependency>
 +		<dependency>
 +			<!-- JUnit 4 compile dependency in unittestsupport's src/main/java folder, 
 +				non-transitive -->
 +			<groupId>junit</groupId>
 +			<artifactId>junit</artifactId>
 +			<version>4.12</version>
 +			<scope>compile</scope>
 +			<optional>true</optional>
 +		</dependency>
  
 -        <dependency>
 -            <groupId>javax.jdo</groupId>
 -            <artifactId>jdo-api</artifactId>
 -            <version>${jdo-api.version}</version>
 -            <optional>true</optional>
 -        </dependency>
 +		<dependency>
 +			<groupId>org.hamcrest</groupId>
 +			<artifactId>hamcrest-library</artifactId>
 +			<scope>compile</scope>
 +		</dependency>
  
 -        <dependency>
 -            <groupId>org.javassist</groupId>
 -            <artifactId>javassist</artifactId>
 -        </dependency>
 +		<dependency>
 +			<groupId>org.picocontainer</groupId>
 +			<artifactId>picocontainer</artifactId>
 +		</dependency>
  
 -        <dependency>
 -            <groupId>org.objenesis</groupId>
 -            <artifactId>objenesis</artifactId>
 -            <!--<version>1.4</version>-->
 -        </dependency>
 +		<dependency>
 +			<groupId>org.jmock</groupId>
 +			<artifactId>jmock</artifactId>
 +		</dependency>
  
 -        <dependency>
 -            <groupId>org.reflections</groupId>
 -            <artifactId>reflections</artifactId>
 -            <exclusions>
 -                <exclusion>
 -                    <!--
 -                    part of JDK 6+
 -                    the version here does not provide getUserData(), setUserData(),
 -                    as needed by xmlsnapshot functionality in isis-core-runtime.
 -                    -->
 -                    <groupId>xml-apis</groupId>
 -                    <artifactId>xml-apis</artifactId>
 -                </exclusion>
 -            </exclusions>
 -        </dependency>
 +		<dependency>
 +			<groupId>org.jmock</groupId>
 +			<artifactId>jmock-junit4</artifactId>
 +		</dependency>
  
 -    </dependencies>
 +		<!-- JDO API (non transient, provided by plugin) -->
 +		<dependency>
 +			<groupId>javax.jdo</groupId>
 +			<artifactId>jdo-api</artifactId>
 +			<version>${jdo-api.version}</version>
 +			<!-- provided by plugins -->
 +			<scope>provided</scope>
 +		</dependency>
 +	</dependencies>
  
+     <profiles>
+         <profile>
+             <id>flatten</id>
+             <activation>
+                 <property>
+                     <name>revision</name>
+                 </property>
+             </activation>
+             <build>
+                 <plugins>
+                     <plugin>
+                         <groupId>org.codehaus.mojo</groupId>
+                         <artifactId>flatten-maven-plugin</artifactId>
+                         <version>1.0.0</version>
+                         <executions>
+                             <execution>
+                                 <id>flatten</id>
+                                 <phase>process-resources</phase>
+                                 <goals>
+                                     <goal>flatten</goal>
+                                 </goals>
+                                 <configuration>
+                                     <flattenMode>defaults</flattenMode>
+                                     <updatePomFile>true</updatePomFile>
+                                     <pomElements>
+                                         <name>resolve</name>
+                                         <description>resolve</description>
+                                         <dependencies>resolve</dependencies>
+                                     </pomElements>
+                                 </configuration>
+                             </execution>
+                             <execution>
+                                 <id>flatten.clean</id>
+                                 <phase>clean</phase>
+                                 <goals>
+                                     <goal>clean</goal>
+                                 </goals>
+                             </execution>
+                         </executions>
+                     </plugin>
+                 </plugins>
+             </build>
+         </profile>
+     </profiles>
+ 
+ 
  </project>
diff --cc core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index 73b6c17,895f6f4..004a01c
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@@ -26,12 -26,14 +26,11 @@@ import java.util.List
  import java.util.ServiceLoader;
  import java.util.Set;
  import java.util.UUID;
--import java.util.concurrent.Callable;
 +import java.util.concurrent.Executors;
  import java.util.concurrent.Future;
 +import java.util.function.Function;
  
 -import com.google.common.base.Function;
  import com.google.common.base.Joiner;
 -import com.google.common.collect.Lists;
 -import com.google.common.collect.Sets;
  import com.google.common.io.Resources;
  import com.google.inject.Guice;
  import com.google.inject.Injector;
@@@ -72,8 -76,6 +71,7 @@@ import org.slf4j.Logger
  import org.slf4j.LoggerFactory;
  import org.wicketstuff.select2.ApplicationSettings;
  
- import org.apache.isis.commons.internal.collections._Lists;
 +import org.apache.isis.commons.internal.context._Context;
  import org.apache.isis.core.commons.authentication.AuthenticationSession;
  import org.apache.isis.core.commons.config.IsisConfiguration;
  import org.apache.isis.core.commons.config.IsisConfigurationDefault;
@@@ -87,10 -89,8 +85,7 @@@ import org.apache.isis.core.runtime.sys
  import org.apache.isis.core.runtime.system.context.IsisContext;
  import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
  import org.apache.isis.core.runtime.threadpool.ThreadPoolSupport;
 -import org.apache.isis.core.webapp.IsisWebAppBootstrapper;
 -import org.apache.isis.core.webapp.WebAppConstants;
 +import org.apache.isis.core.webapp.IsisWebAppConfigProvider;
- import org.apache.isis.schema.utils.ChangesDtoUtils;
- import org.apache.isis.schema.utils.CommandDtoUtils;
- import org.apache.isis.schema.utils.InteractionDtoUtils;
  import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
  import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettingsAccessor;
  import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
@@@ -403,17 -436,40 +398,13 @@@ implements ComponentFactoryRegistryAcce
              ThreadPoolSupport.getInstance().join(futures);
          }
      }
 -
 +    
      protected List<Future<Object>> startBackgroundInitializationThreads() {
-         return ThreadPoolSupport.getInstance().invokeAll(_Lists.<Callable<Object>>of(
- 
+         return ThreadPoolSupport.getInstance().invokeAll(
 -                new Callable<Object>() {
 -                    @Override
 -                    public Object call() throws Exception {
 -                        configureWebJars();
 -                        return null;
 -                    }
 -                    public String toString() {
 -                        return "configureWebJars()";
 -                    }
 -                },
 -                new Callable<Object>() {
 -                    @Override
 -                    public Object call() throws Exception {
 -                        configureWicketBootstrap();
 -                        return null;
 -                    }
 -                    public String toString() {
 -                        return "configureWicketBootstrap()";
 -                    }
 -                },
 -                new Callable<Object>() {
 -                    @Override
 -                    public Object call() throws Exception {
 -                        configureWicketSelect2();
 -                        return null;
 -                    }
 -                    public String toString() {
 -                        return "configureWicketSelect2()";
 -                    }
 -                }
 -        );
 +                Executors.callable(this::configureWebJars),
 +                Executors.callable(this::configureWicketBootstrap),
-                 Executors.callable(this::configureWicketSelect2),
-                 Executors.callable(ChangesDtoUtils::init),
-                 Executors.callable(InteractionDtoUtils::init),
-                 Executors.callable(CommandDtoUtils::init)
-                 ));
++                Executors.callable(this::configureWicketSelect2)
++            );
      }
  
      /**
diff --cc core/webserver/pom.xml
index 7da4c3d,94069b9..f08139e
--- a/core/webserver/pom.xml
+++ b/core/webserver/pom.xml
@@@ -56,7 -53,52 +56,53 @@@
              <artifactId>geronimo-servlet_3.0_spec</artifactId>
              <scope>provided</scope>
          </dependency>
 +-->		
      </dependencies>
  
+     <profiles>
+         <profile>
+             <id>flatten</id>
+             <activation>
+                 <property>
+                     <name>revision</name>
+                 </property>
+             </activation>
+             <build>
+                 <plugins>
+                     <plugin>
+                         <groupId>org.codehaus.mojo</groupId>
+                         <artifactId>flatten-maven-plugin</artifactId>
+                         <version>1.0.0</version>
+                         <executions>
+                             <execution>
+                                 <id>flatten</id>
+                                 <phase>process-resources</phase>
+                                 <goals>
+                                     <goal>flatten</goal>
+                                 </goals>
+                                 <configuration>
+                                     <flattenMode>defaults</flattenMode>
+                                     <updatePomFile>true</updatePomFile>
+                                     <pomElements>
+                                         <name>resolve</name>
+                                         <description>resolve</description>
+                                         <dependencies>resolve</dependencies>
+                                     </pomElements>
+                                 </configuration>
+                             </execution>
+                             <execution>
+                                 <id>flatten.clean</id>
+                                 <phase>clean</phase>
+                                 <goals>
+                                     <goal>clean</goal>
+                                 </goals>
+                             </execution>
+                         </executions>
+                     </plugin>
+                 </plugins>
+             </build>
+         </profile>
+     </profiles>
+ 
+ 
  </project>


[isis] 15/19: ISIS-1811: moves validate into a profile (for simpleapp)

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

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

commit 9046ebaa92f14da54c1585f48dd2bd8d9723d57c
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:36:16 2018 +0100

    ISIS-1811: moves validate into a profile (for simpleapp)
---
 .../application/simpleapp/module-simple/pom.xml    | 86 +++++++++++++---------
 1 file changed, 51 insertions(+), 35 deletions(-)

diff --git a/example/application/simpleapp/module-simple/pom.xml b/example/application/simpleapp/module-simple/pom.xml
index f8e2647..40d5839 100644
--- a/example/application/simpleapp/module-simple/pom.xml
+++ b/example/application/simpleapp/module-simple/pom.xml
@@ -106,34 +106,6 @@
                     </mixins>
                 </configuration>
             </plugin>
-            <plugin>
-                <groupId>org.apache.isis.tool</groupId>
-                <artifactId>isis-maven-plugin</artifactId>
-                <version>${isis.version}</version>
-                <executions>
-                    <execution>
-                        <phase>test</phase>
-                        <goals>
-                            <goal>validate</goal>
-                        </goals>
-                        <configuration>
-                            <appManifest>${isis-maven-plugin.validate.appManifest}</appManifest>
-                        </configuration>
-                    </execution>
-                </executions>
-                <dependencies>
-                    <dependency>
-                        <groupId>${project.groupId}</groupId>
-                        <artifactId>${project.artifactId}</artifactId>
-                        <version>${project.version}</version>
-                    </dependency>
-                    <dependency>
-                        <groupId>org.hsqldb</groupId>
-                        <artifactId>hsqldb</artifactId>
-                        <version>2.3.1</version>
-                    </dependency>
-                </dependencies>
-            </plugin>
         </plugins>
     </build>
 
@@ -147,27 +119,27 @@
         </dependency>
         
         <!-- ISIS CORE PLUGINS -->
-        
+
         <dependency>
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-plugins-eventbus-axon</artifactId>
         </dependency>
-        
+
         <dependency>
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-plugins-codegen-bytebuddy</artifactId>
         </dependency>
-    
-      	<dependency>
+        
+        <dependency>
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-plugins-discovery-reflections</artifactId>
         </dependency>
-        
-        <dependency>
+    
+      	<dependency>
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-plugins-jdo-datanucleus-5</artifactId>
         </dependency>
-    
+        
 
     	<dependency>
             <groupId>org.apache.isis.core</groupId>
@@ -190,4 +162,48 @@
         </dependency>
     </dependencies>
 
+
+    <profiles>
+        <profile>
+            <id>isis-validate</id>
+            <activation>
+                <property>
+                    <name>!skip.isis-validate</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.isis.tool</groupId>
+                        <artifactId>isis-maven-plugin</artifactId>
+                        <version>${isis.version}</version>
+                        <executions>
+                            <execution>
+                                <phase>test</phase>
+                                <goals>
+                                    <goal>validate</goal>
+                                </goals>
+                                <configuration>
+                                    <appManifest>${isis-maven-plugin.validate.appManifest}</appManifest>
+                                </configuration>
+                            </execution>
+                        </executions>
+                        <dependencies>
+                            <dependency>
+                                <groupId>${project.groupId}</groupId>
+                                <artifactId>${project.artifactId}</artifactId>
+                                <version>${project.version}</version>
+                            </dependency>
+                            <dependency>
+                                <groupId>org.hsqldb</groupId>
+                                <artifactId>hsqldb</artifactId>
+                                <version>2.3.1</version>
+                            </dependency>
+                        </dependencies>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
 </project>


[isis] 11/19: merge - minor tidy-up on pom.xml (from comparing with master branch)

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

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

commit cb6ee0b18945bf30b047fec2e3da08e17dfe93b4
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:30:36 2018 +0100

    merge - minor tidy-up on pom.xml (from comparing with master branch)
---
 core/pom.xml | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index 72e8435..26a7f68 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -89,7 +89,7 @@
 
         <!-- JDO API -->
         <jdo-api.version>3.1</jdo-api.version>
-        
+
         <!-- Isis Datanucleus JDO Plugin dn5 -->
 	    <dn5-jdo-api.version>3.2.0-m8</dn5-jdo-api.version>
         <dn5-core.version>5.1.11</dn5-core.version>
@@ -399,15 +399,6 @@
                 <enabled>true</enabled>
             </snapshots>
         </repository>
-        
-        <!--
-        <repository>
-            <id>datanucleus-nightly</id>
-            <url>http://www.datanucleus.org/downloads/maven2-nightly/</url>
-            <snapshots>
-              <enabled>true</enabled>
-            </snapshots>
-        </repository>-->
 
         <!-- required for RestEasy -->
         <repository>


[isis] 01/19: ISIS-1811: minor updates for docs. Also skip git by default when building

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

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

commit a3f0f822c0774e8efc057b8c9714a2dc0192ecd0
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 11:47:46 2018 +0100

    ISIS-1811: minor updates for docs.  Also skip git by default when building
---
 .../src/main/asciidoc/documentation.adoc           |   3 +
 .../src/main/asciidoc/guides/cgcom/__versions.adoc |   3 +
 .../guides/cgcom/_cgcom_applying-patches.adoc      |   1 +
 .../cgcom/_cgcom_asciidoc-publish-procedure.adoc   |   2 +-
 .../guides/cgcom/_cgcom_cutting-a-release.adoc     | 115 +++++++++++----------
 .../cgcom/_cgcom_post-release-successful.adoc      |  11 +-
 .../cgcom/_cgcom_post-release-unsuccessful.adoc    |   1 +
 ...cgcom_release-process-for-interim-releases.adoc |   1 +
 .../_cgcom_release-process-for-snapshots.adoc      |   1 +
 .../cgcom/_cgcom_release-process-prereqs.adoc      |   1 +
 .../guides/cgcom/_cgcom_verifying-releases.adoc    |   9 +-
 .../guides/rgant/_rgant-Action_publishing.adoc     |  16 +--
 .../_rgant-DomainObjectLayout_cssClassUiEvent.adoc |   3 +-
 .../_rgant-DomainObjectLayout_titleUiEvent.adoc    |  22 ++--
 .../guides/rgant/_rgant-DomainObject_auditing.adoc |   7 +-
 ..._rgant-DomainObject_autoCompleteRepository.adoc |   6 +-
 .../_rgant-DomainObject_loadedLifecycleEvent.adoc  |  37 +++----
 .../rgant/_rgant-DomainObject_objectType.adoc      |   4 +-
 ...rgant-DomainObject_persistedLifecycleEvent.adoc |  24 ++---
 ...gant-DomainObject_persistingLifecycleEvent.adoc |  32 +++---
 .../rgant/_rgant-DomainObject_publishing.adoc      |   9 +-
 ..._rgant-DomainObject_removingLifecycleEvent.adoc |  25 ++---
 .../_rgant-DomainObject_updatedLifecycleEvent.adoc |  16 ++-
 ..._rgant-DomainObject_updatingLifecycleEvent.adoc |  17 ++-
 .../rgant/_rgant-ParameterLayout_describedAs.adoc  |   8 +-
 .../asciidoc/guides/rgant/_rgant-PrimaryKey.adoc   |   2 +-
 .../guides/rgant/_rgant-Property_publishing.adoc   |   9 +-
 .../guides/rgant/_rgant-ViewModel_objectType.adoc  |   2 +-
 .../main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc |   2 +-
 .../guides/rgcfg/_rgcfg_configuring-core.adoc      |   1 -
 ..._classes_lifecycleevent_ObjectCreatedEvent.adoc |   3 +-
 .../guides/rgcms/_rgcms_classes_mixins_Dto.adoc    |   2 +-
 .../_rgcms_classes_super_AbstractService.adoc      |   2 +-
 .../_rgcms_classes_super_AbstractViewModel.adoc    |   2 +-
 .../rgcms/_rgcms_methods_reserved_disable.adoc     |   3 +-
 ..._persistence-layer_AuditingServiceInternal.adoc |   2 +-
 ...stence-layer_ChangedObjectsServiceInternal.adoc |   2 +-
 ...ersistence-layer_PublishingServiceInternal.adoc |   4 +-
 ...esentation-layer_ContentNegotiationService.adoc |  11 +-
 ...s_presentation-layer_RepresentationService.adoc |   2 +-
 ...rgsvc_application-layer-api_CommandContext.adoc |   2 +-
 ...c_application-layer-api_InteractionContext.adoc |   3 +-
 ...rgsvc_application-layer-spi_CommandService.adoc |   3 +-
 ...vc_bootstrapping-spi_ClassDiscoveryService.adoc |   2 +-
 .../_rgsvc_core-domain-api_FactoryService.adoc     |   6 +-
 .../main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc   |  11 +-
 .../rgsvc/_rgsvc_metadata-api_SwaggerService.adoc  |   2 +-
 ...vc_persistence-layer-api_QueryResultsCache.adoc |   5 +-
 ...rgsvc_persistence-layer-spi_AuditerService.adoc |  25 +++--
 ...svc_persistence-layer-spi_PublisherService.adoc |  25 +++--
 ...ntation-layer-spi_EmailNotificationService.adoc |   3 +-
 ...presentation-layer-spi_ExceptionRecognizer.adoc |   3 +-
 ...gsvc_presentation-layer-spi_RoutingService.adoc |   3 +-
 ..._presentation-layer-spi_UrlEncodingService.adoc |   5 +-
 ..._replacing-default-service-implementations.adoc |   3 +-
 ...ugfun_building-blocks_events_domain-events.adoc |   1 +
 .../ugfun/_ugfun_programming-model_actions.adoc    |   5 -
 .../_ugvw_extending_replacing-page-elements.adoc   |   3 +-
 .../main/asciidoc/guides/ugvw/_ugvw_features.adoc  |   2 -
 .../guides/ugvw/_ugvw_layout_file-based.adoc       |   2 +-
 adocs/documentation/src/main/asciidoc/index.html   |  18 ++--
 .../_migration-notes_1.7.0-to-1.8.0.adoc           |  16 ++-
 .../_migration-notes_1.9.0-to-1.10.0.adoc          |   5 +-
 core/pom.xml                                       |   2 +-
 64 files changed, 253 insertions(+), 325 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/documentation.adoc b/adocs/documentation/src/main/asciidoc/documentation.adoc
index 12304ae..b673e8b 100644
--- a/adocs/documentation/src/main/asciidoc/documentation.adoc
+++ b/adocs/documentation/src/main/asciidoc/documentation.adoc
@@ -66,6 +66,7 @@
 * *link:guides/dg/dg.html[Developers' Guide^]*
 ** link:guides/dg/dg.html#_dg_ide_intellij[IntelliJ^] & link:guides/dg/dg.html#_dg_ide_eclipse[Eclipse^]
 ** link:guides/dg/dg.html#_dg_contributing[Pull requests^]
+** link:guides/dg/dg.html#_dg_asciidoc-syntax[Asciidoc syntax^]
 
 * link:guides/cgcom/cgcom.html[Committers' Guide^]
 ** link:guides/cgcom/cgcom.html#_cgcom_cutting-a-release[Cutting^] & link:guides/cgcom/cgcom.html#_cgcom_verifying-releases[Verifying^]
@@ -111,6 +112,8 @@
 
 * https://github.com/isisaddons/isis-app-neoapp[Neo4J Example^] footnoteref:[ASF]
 * https://github.com/isisaddons/isis-app-simpledsl[Isis DSL Example^] footnoteref:[ASF]
+* https://github.com/andi-huber/isis-2-demo[Demo Showcase]footnoteref:[ASF]
+
 |====
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/cgcom/__versions.adoc b/adocs/documentation/src/main/asciidoc/guides/cgcom/__versions.adoc
new file mode 100644
index 0000000..67e0598
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/__versions.adoc
@@ -0,0 +1,3 @@
+:isisprev: 2.0.0-M1
+:isisrel: 2.0.0-M2
+:isisdev: {isisrel}-SNAPSHOT
diff --git a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_applying-patches.adoc b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_applying-patches.adoc
index a605202..77dae72 100644
--- a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_applying-patches.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_applying-patches.adoc
@@ -4,6 +4,7 @@
 :_basedir: ../../
 :_imagesdir: images/
 :toc: right
+include::__versions.adoc[]
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_asciidoc-publish-procedure.adoc b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_asciidoc-publish-procedure.adoc
index e2e151f..217f243 100644
--- a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_asciidoc-publish-procedure.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_asciidoc-publish-procedure.adoc
@@ -1,9 +1,9 @@
 [[_cgcom_asciidoc-publish-procedure]]
 = Publishing the Docs
-
 :notice: licensed to the apache software foundation (asf) under one or more contributor license agreements. see the notice file distributed with this work for additional information regarding copyright ownership. the asf licenses this file to you under the apache license, version 2.0 (the "license"); you may not use this file except in compliance with the license. you may obtain a copy of the license at. http://www.apache.org/licenses/license-2.0 . unless required by applicable law or ag [...]
 :_imagesdir: images/
 :toc: right
+include::__versions.adoc[]
 
 
 Apache Isis' documentation (meaning the website and the users' guide, the reference guide and this contributors' guide) is written using link:http://www.methods.co.nz/asciidoc/[Asciidoc], specifically the link:http://asciidoctor.org/[Asciidoctor] implementation.
diff --git a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_cutting-a-release.adoc b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_cutting-a-release.adoc
index 291ee95..c207fb5 100644
--- a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_cutting-a-release.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_cutting-a-release.adoc
@@ -4,7 +4,7 @@
 :_basedir: ../../
 :_imagesdir: images/
 :toc: right
-
+include::__versions.adoc[]
 
 The release process consists of:
 
@@ -51,11 +51,11 @@ In most cases a JIRA ticket will have been created at the beginning of the previ
 We use environment variables to parameterize as many of the steps as possible.
 For example:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 export ISISTMP=/c/tmp                               # <1>
-export ISISDEV=2.0.0-M2-SNAPSHOT
-export ISISREL=2.0.0-M1
+export ISISDEV={isisdev}
+export ISISREL={isisrel}
 export ISISRC=RC1
 export ISISBRANCH=release-$ISISREL-$ISISRC
 export ISISJIRA=ISIS-9999                           # <2>
@@ -72,7 +72,7 @@ Obviously, alter `$ISISDEV` and `$ISISREL` as required, and bump `$ISISRC` for r
 
 [IMPORTANT]
 ====
-Note that the branch name is intentionally *not* the same any of the eventual tag names (eg `isis-2.0.0-M1` or `simpleapp-archetype-2.0.0-M1`).
+Note that the branch name is intentionally *not* the same any of the eventual tag names (eg `isis-{isisrel}` or `simpleapp-archetype-{isisrel}`).
 ====
 
 
@@ -84,7 +84,7 @@ Set the HEAD of your local git repo to the commit to be released.
 This will usually be the tip of the origin's `master` branch.
 Then, create a release branch for the version number being released; eg:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 git checkout master
 git pull --ff-only
@@ -99,18 +99,18 @@ This will normally have been done already during earlier development; but confir
 If it has not, make the change.
 
 Double check that the version number of the core POM (`core/pom.xml`) should reflect the branch name that you are now on.
-For example, if releasing version `2.0.0-M1`, the POM should read:
+For example, if releasing version `{isisrel}`, the POM should read:
 
-[source,xml]
+[source,xml,subs="attributes+"]
 ----
 <groupId>org.apache.isis.core</groupId>
 <artifactId>isis</artifactId>
-<version>2.0.0-M1-SNAPSHOT</version>
+<version>{isisdev}</version>
 ----
 
 Also, check that there are no snapshot dependencies:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 grep SNAPSHOT `/bin/find . -name pom.xml | grep -v target | grep -v mothball | sort`
 ----
@@ -134,17 +134,17 @@ So, instead, we perform the edit of ${revision}` manually before.
 
 In the three `pom.xml` files (for `core` and the two archetypes) the property is defined:
 
-[source,xml]
+[source,xml,subs="attributes+"]
 ----
 <properties>
-    <revision>2.0.0-M1-SNAPSHOT</revision>
+    <revision>{isisdev}</revision>
     ...
 </properties>
 ----
 
 Change all of these to the release version, using:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 sed -i -E "s|<revision>[^<]+<|<revision>${ISISREL}<|g" core/pom.xml
 sed -i -E "s|<revision>[^<]+<|<revision>${ISISREL}<|g" example/application/simpleapp/pom.xml
@@ -162,7 +162,7 @@ After release, there is a xref:cgcom.adoc#__cgcom_cutting-a-release_bump-revisio
 First, we release `core`.
 Switch to the appropriate directory:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 cd core
 ----
@@ -172,7 +172,7 @@ cd core
 
 Set additional environment variables for the core "artifact":
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 export ISISART=isis
 export ISISCOR="Y"
@@ -190,7 +190,7 @@ The parent `pom.xml` of each releasable module specifies the RAT Maven plugin, w
 
 To run the RAT tool, use:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 mvn org.apache.rat:apache-rat-plugin:check -D rat.numUnapprovedLicenses=50 -o && \
 for a in `/bin/find . -name rat.txt -print`; do grep '!???' $a; done || \
@@ -236,7 +236,7 @@ This is stored in the `src/main/appended-resources/supplemental-models.xml` file
 
 To capture the missing license information, use:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 mvn license:download-licenses && \
 groovy ../scripts/checkmissinglicenses.groovy
@@ -247,7 +247,7 @@ The script then searches for these `licenses.xml` files, and compares them again
 
 For example, the output could be something like:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 licenses to add to supplemental-models.xml:
 
@@ -269,7 +269,7 @@ If any missing entries are listed or are spurious, then update `supplemental-mod
 
 Commit any changes from the preceding steps:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 git commit -am "$ISISJIRA: updates to pom.xml etc for release"
 ----
@@ -281,7 +281,7 @@ git commit -am "$ISISJIRA: updates to pom.xml etc for release"
 Perform one last sanity check on the codebase.
 Delete all Isis artifacts from your local Maven repo, then build using the `-o` offline flag:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 rm -rf ~/.m2/repository/org/apache/isis
 mvn clean install -o
@@ -298,10 +298,11 @@ We therefore just use `mvn deploy` directly, activating the (inherited) `apache-
 
 To build and deploy and tag, we use:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 mvn -P apache-release \
     clean deploy      \
+    -Dgit \
     -Dgpg.passphrase="this is not really my passphrase"
 
 git tag $ISISART-$ISISREL
@@ -338,7 +339,7 @@ The fix is simple: just copy `mvn.cmd` to `mvn.bat`.
 
 Switch to the directory containing the `simpleapp` example:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 cd ../example/application/simpleapp
 ----
@@ -348,7 +349,7 @@ cd ../example/application/simpleapp
 
 Set additional environment variables for the `simpleapp-archetype` artifact:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 export ISISART=simpleapp-archetype
 export ISISPAR=$ISISREL                 # <1>
@@ -369,7 +370,7 @@ Double check that the app:
 
 * builds:
 +
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 mvn clean install
 ----
@@ -381,14 +382,14 @@ mvn clean install
 
 * can be run using the mvn jetty plugin:
 +
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 mvn -pl webapp jetty:run
 ----
 
 * can be packaged and run using the mvn jetty-console plugin:
 +
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 mvn install -Dmavenmixin-jettyconsole
 mvn antrun:run -Dmavenmixin-jettyconsole
@@ -396,7 +397,7 @@ mvn antrun:run -Dmavenmixin-jettyconsole
 
 * can be deployed as a WAR
 +
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 cp webapp/target/simpleapp.war $CATALINA_HOME/webapps/ROOT.war
 pushd $CATALINA_HOME/bin
@@ -414,7 +415,7 @@ popd
 
 * can be packaged and run using Docker:
 +
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 mvn install -Dmavenmixin-docker -D docker-plugin.imageName=test/simpleapp
 docker container run -p 8080:8080 --name simpleapp -d test/simpleapp
@@ -449,7 +450,7 @@ The Kitematic UI tool is handy for viewing and interacting with running containe
 
 To tidy up, kill and remove the container:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 docker container kill simpleapp
 docker container rm simpleapp
@@ -470,7 +471,7 @@ env | grep ISIS | sort
 
 Then, run the script (which also builds the archetype once generated) and switch to the archetype's directory:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 sh ../../../scripts/recreate-archetype.sh $ISISJIRA
 cd `pwd|sed 's/application/archetype/'`
@@ -486,7 +487,7 @@ The script automatically commits changes; if you wish use `git log` and
 _In a different session_, create a new app from the archetype.
 First set up environment variables:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 export ISISTMP=/c/tmp    # or as required
 export ISISCPN=simpleapp
@@ -495,7 +496,7 @@ env | grep ISIS | sort
 
 Then generate a new app from the archetype:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 rm -rf $ISISTMP/test-$ISISCPN
 
@@ -533,7 +534,7 @@ We therefore now just use `mvn deploy` directly, activating the (inherited) `apa
 
 To build and deploy and tag, we use:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 mvn -P apache-release \
     clean deploy      \
@@ -561,7 +562,7 @@ We now repeat the archetype release procedure, this time for the `helloworld` ex
 
 Start by switching to the directory containing the `helloworld` example:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 cd ../../../example/application/helloworld
 ----
@@ -571,7 +572,7 @@ cd ../../../example/application/helloworld
 
 Update additional environment variables for the `helloworld-archetype` artifact:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 export ISISART=helloworld-archetype
 export ISISPAR=$ISISREL
@@ -609,7 +610,7 @@ mvn jetty:run
 
 * can be deployed as a WAR
 +
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 cp target/helloworld.war $CATALINA_HOME/webapps/ROOT.war
 pushd $CATALINA_HOME/bin
@@ -619,7 +620,7 @@ tail -f ../logs/catalina.out
 +
 quit using:
 +
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 sh shutdown.sh
 popd
@@ -637,7 +638,7 @@ Make sure you are in the correct directory and environment variables are correct
 
 To recreate the *helloworld* archetype:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 cd example/application/helloworld
 env | grep ISIS | sort
@@ -645,7 +646,7 @@ env | grep ISIS | sort
 
 Then, run the script (which also builds the archetype once generated) and then switch to the archetype's directory:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 sh ../../../scripts/recreate-archetype.sh $ISISJIRA
 cd `pwd|sed 's/application/archetype/'`
@@ -662,7 +663,7 @@ If you wish use `git log` and `git diff` (or a tool such as SourceTree) to revie
 _In a different session_, create a new app from the archetype.
 First set up environment variables:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 export ISISTMP=/c/tmp    # or as required
 export ISISCPN=helloworld
@@ -671,7 +672,7 @@ env | grep ISIS | sort
 
 Then generate a new app from the archetype:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 rm -rf $ISISTMP/test-$ISISCPN
 
@@ -687,7 +688,7 @@ mvn archetype:generate  \
 
 Build the newly generated app and test:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 cd myapp
 mvn clean install -o
@@ -701,7 +702,7 @@ Back in the original session, we upload (deploy) the archetype to the staging re
 
 To build and deploy and tag, we use:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 mvn -P apache-release \
     clean deploy      \
@@ -779,7 +780,7 @@ With the release now deployed we now need to bump the revision up to the next de
 
 In the root of the Apache Isis repo, we do this for all three ``pom.xml``s with:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 sed -i -E "s|<revision>[^<]+<|<revision>${ISISDEV}<|g" core/pom.xml
 sed -i -E "s|<revision>[^<]+<|<revision>${ISISDEV}<|g" example/application/simpleapp/pom.xml
@@ -793,14 +794,14 @@ git commit -am "${ISISJIRA}: bumps revision property across all pom.xml's to ${I
 
 Push the release branch to origin:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 git push -u origin $ISISBRANCH
 ----
 
 and also push tags for both core and the archetype:
 
-[source]
+[source,bash,subs="attributes+"]
 ----
 git push origin refs/tags/isis-$ISISREL:refs/tags/isis-$ISISREL-$ISISRC
 git push origin refs/tags/simpleapp-archetype-$ISISREL:refs/tags/simpleapp-archetype-$ISISREL-$ISISRC
@@ -832,30 +833,30 @@ Adapt as required:
 
 Use the following subject, eg:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
-[VOTE] Apache Isis Core release 2.0.0-M1 RC1
+[VOTE] Apache Isis Core release {isisrel} RC1
 ----
 
 And use the following body:
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 I've cut a release for Apache Isis Core and the two archetypes:
 
-* Core 2.0.0-M1
-* HelloWorld Archetype 2.0.0-M1
-* SimpleApp Archetype 2.0.0-M1
+* Core {isisrel}
+* HelloWorld Archetype {isisrel}
+* SimpleApp Archetype {isisrel}
 
 The source code artifacts have been uploaded to staging repositories on repository.apache.org:
 
-* http://repository.apache.org/content/repositories/orgapacheisis-10xx/org/apache/isis/core/isis/2.0.0-M1/isis-2.0.0-M1-source-release.zip
-* http://repository.apache.org/content/repositories/orgapacheisis-10xx/org/apache/isis/archetype/helloworld-archetype/2.0.0-M1/helloworld-archetype-2.0.0-M1-source-release.zip
-* http://repository.apache.org/content/repositories/orgapacheisis-10xx/org/apache/isis/archetype/simpleapp-archetype/2.0.0-M1/simpleapp-archetype-2.0.0-M1-source-release.zip
+* http://repository.apache.org/content/repositories/orgapacheisis-10xx/org/apache/isis/core/isis/{isisrel}/isis-{isisrel}-source-release.zip
+* http://repository.apache.org/content/repositories/orgapacheisis-10xx/org/apache/isis/archetype/helloworld-archetype/{isisrel}/helloworld-archetype-{isisrel}-source-release.zip
+* http://repository.apache.org/content/repositories/orgapacheisis-10xx/org/apache/isis/archetype/simpleapp-archetype/{isisrel}/simpleapp-archetype-{isisrel}-source-release.zip
 
 For each zip there is a corresponding signature file (append .asc to the zip's url).
 
-In the source code repo the code has been tagged as isis-2.0.0-M1-RC1, helloworld-archetype-2.0.0-M1-RC1 and simpleapp-archetype-2.0.0-M1-RC1; see https://github.com/apache/isis/tags
+In the source code repo the code has been tagged as isis-{isisrel}-RC1, helloworld-archetype-{isisrel}-RC1 and simpleapp-archetype-{isisrel}-RC1; see https://github.com/apache/isis/tags
 
 For instructions on how to verify the release (build from binaries and/or use in Maven directly), see https://isis.apache.org/guides/cgcom/cgcom.html#_cgcom_verifying-releases
 
@@ -868,7 +869,7 @@ Please verify the release and cast your vote.  The vote will be open for a minim
 
 Remember to update:
 
-* the version number (`2.0.0-M1` or whatever)
+* the version number (`{isisrel}` or whatever)
 * the release candidate number (`RC1` or whatever)
 * the repository id, as provided by Nexus earlier (`orgapacheisis-10xx` or whatever)
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_post-release-successful.adoc b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_post-release-successful.adoc
index 85c66a9..a8348f7 100644
--- a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_post-release-successful.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_post-release-successful.adoc
@@ -4,6 +4,7 @@
 :_basedir: ../../
 :_imagesdir: images/
 :toc: right
+include::__versions.adoc[]
 
 
 The release process consists of:
@@ -187,9 +188,9 @@ svn delete $fullname-$old_ver-$zip
 popd
 ----
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
-sh upd.sh 1.16.2 1.16.3
+sh upd.sh {isisprev} {isisrel}
 ----
 
 The script downloads the artifacts from the Nexus release repository, adds the artifacts to subversion and deletes the previous version.
@@ -199,14 +200,14 @@ The script downloads the artifacts from the Nexus release repository, adds the a
 Double check that the files are correct; there is sometimes a small delay in the files becoming available in the release repository.
 It should be sufficient to check just the `md5` or `.asc` files that these look valid (aren't HTML 404 error pages):
 
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 vi `find . -name *.md5`
 ----
 
 Assuming all is good, commit the changes:
 
-[source]
+[source,subs="attributes+"]
 ----
 svn commit -m "publishing isis source releases to dist.apache.org"
 ----
@@ -281,7 +282,7 @@ Now we need to publish the website.
 * locate `template/document.html.erb` file, and remove `-SNAPSHOT` from the navbar:
 
 +
-[source,html]
+[source,html,subs="attributes+"]
 ----
 <p class="nav navbar-text navbar-right small">v2.0.0-M1</p>
 ----
diff --git a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_post-release-unsuccessful.adoc b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_post-release-unsuccessful.adoc
index 2d56862..f440b5e 100644
--- a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_post-release-unsuccessful.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_post-release-unsuccessful.adoc
@@ -4,6 +4,7 @@
 :_basedir: ../../
 :_imagesdir: images/
 :toc: right
+include::__versions.adoc[]
 
 
 The release process consists of:
diff --git a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-interim-releases.adoc b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-interim-releases.adoc
index d59a787..9abffb9 100644
--- a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-interim-releases.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-interim-releases.adoc
@@ -4,6 +4,7 @@
 :_basedir: ../../
 :_imagesdir: images/
 :toc: right
+include::__versions.adoc[]
 
 
 The intent of an "interim" release is to allow a developer team to release their application based on a `-SNAPSHOT` version of the framework.
diff --git a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-snapshots.adoc b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-snapshots.adoc
index eded8d4..af6be3d 100644
--- a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-snapshots.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-snapshots.adoc
@@ -4,6 +4,7 @@
 :_basedir: ../../
 :_imagesdir: images/
 :toc: right
+include::__versions.adoc[]
 
 
 Snapshot releases allows the current `-SNAPSHOT` version of the `core` modules  of the framework to be released to the Maven snapshot repository maintained by Apache Software Foundation.
diff --git a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-prereqs.adoc b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-prereqs.adoc
index e54d9de..178b878 100644
--- a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-prereqs.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-prereqs.adoc
@@ -4,6 +4,7 @@
 :_basedir: ../../
 :_imagesdir: images/
 :toc: right
+include::__versions.adoc[]
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_verifying-releases.adoc b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_verifying-releases.adoc
index 88cfdab..eed2a8f 100644
--- a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_verifying-releases.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_verifying-releases.adoc
@@ -4,6 +4,7 @@
 :_basedir: ../../
 :_imagesdir: images/
 :toc: right
+include::__versions.adoc[]
 
 
 The release process consists of:
@@ -229,13 +230,13 @@ Assuming that everything builds ok, then test the archetypes (adjust version as
 
 * First the `helloworld` archetype: +
 +
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 mvn archetype:generate  \
     -D archetypeCatalog=local \
     -D archetypeGroupId=org.apache.isis.archetype \
     -D archetypeArtifactId=helloworld-archetype \
-    -D archetypeVersion=2.0.0-M1 \
+    -D archetypeVersion={isisrel} \
     -D groupId=com.mycompany \
     -D artifactId=myhelloworld \
     -D version=1.0-SNAPSHOT \
@@ -250,7 +251,7 @@ Adjust the version as necessary.
 
 * Next, the `simpleapp` archetype: +
 +
-[source,bash]
+[source,bash,subs="attributes+"]
 ----
 cd ..
 
@@ -258,7 +259,7 @@ mvn archetype:generate  \
     -D archetypeCatalog=local \
     -D archetypeGroupId=org.apache.isis.archetype \
     -D archetypeArtifactId=simpleapp-archetype \
-    -D archetypeVersion=2.0.0-M1 \
+    -D archetypeVersion={isisrel} \
     -D groupId=com.mycompany \
     -D artifactId=mysimpleapp \
     -D version=1.0-SNAPSHOT \
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action_publishing.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action_publishing.adoc
index 20f146f..7fced91 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action_publishing.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action_publishing.adoc
@@ -7,17 +7,11 @@
 
 
 
-The `publishing()` attribute determines whether and how an action invocation is published via the registered
-implementation of a xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`]) or
-xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`].  This attribute is also
-supported for xref:../rgant/rgant.adoc#_rgant-DomainObject_publishing[domain objects], where it controls whether changed objects
-are published as events, and for xref:../rgant/rgant.adoc#_rgant-Property_publishing[`@Property#publishing()`], where it controls
-whether property edits are published as events.
+The `publishing()` attribute determines whether and how an action invocation is published via the registered implementation of a xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`]) or xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`].
+This attribute is also supported for xref:../rgant/rgant.adoc#_rgant-DomainObject_publishing[domain objects], where it controls whether changed objects are published as events, and for xref:../rgant/rgant.adoc#_rgant-Property_publishing[`@Property#publishing()`], where it controls whether property edits are published as events.
 
 A common use case is to notify external "downstream" systems of changes in the state of the Isis application.
-The default value for the attribute is `AS_CONFIGURED`, meaning that the
-xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] `isis.services.publish.actions` is used to determine
-the whether the action is published:
+The default value for the attribute is `AS_CONFIGURED`, meaning that the xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] `isis.services.publish.actions` is used to determine the whether the action is published:
 
 * `all` +
 +
@@ -33,9 +27,7 @@ no action invocations are published
 
 If there is no configuration property in `isis.properties` then publishing is automatically enabled.
 
-This default can be overridden on an action-by-action basis; if `publishing()` is set to `ENABLED` then the action
-invocation is published irrespective of the configured value; if set to `DISABLED` then the action invocation is
-_not_ published, again irrespective of the configured value.
+This default can be overridden on an action-by-action basis; if `publishing()` is set to `ENABLED` then the action invocation is published irrespective of the configured value; if set to `DISABLED` then the action invocation is _not_ published, again irrespective of the configured value.
 
 For example:
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_cssClassUiEvent.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_cssClassUiEvent.adoc
index 86833c6..6cd44ad 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_cssClassUiEvent.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_cssClassUiEvent.adoc
@@ -101,8 +101,7 @@ If this is not required, then the `isis.reflector.facet.domainObjectLayoutAnnota
 On the other hand, if the `cssClassUiEvent` has been explicitly specified to some subclass, then an event will be posted.
 The framework provides `CssClassUiEvent.Doop` as such a subclass, so setting the `cssClassUiEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
 
-And, conversely, the framework also provides `CssClassUiEvent.Noop`; if `cssClassUiEvent` attribute is set to this class,
-then no event will be posted.
+And, conversely, the framework also provides `CssClassUiEvent.Noop`; if `cssClassUiEvent` attribute is set to this class, then no event will be posted.
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_titleUiEvent.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_titleUiEvent.adoc
index 8e4bc51..62e7aea 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_titleUiEvent.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_titleUiEvent.adoc
@@ -55,9 +55,8 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API
-or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured)
-using the link:http://www.axonframework.org/[Axon Framework] API.  The examples below use the Guava API.
+Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
+The examples below are compatible with both.
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -65,7 +64,8 @@ Subscribers can be either coarse-grained (if they subscribe to the top-level eve
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(TitleUiEvent ev) {
         if(ev.getSource() instanceof ToDoItemDto) { ... }
     }
@@ -78,7 +78,8 @@ or can be fine-grained (by subscribing to specific event subtypes):
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ToDoItemDto.TitleUiEvent ev) {
         ...
     }
@@ -89,11 +90,6 @@ The subscriber should then use either `TitleUiEvent#setTranslatableTitle(...)` o
 actually specify the title to be used.
 
 
-[TIP]
-====
-If the AxonFramework is being used, replace `@com.google.common.eventbus.Subscribe` with `@org.axonframework.eventhandling.annotation.EventHandler`.
-====
-
 
 
 == Default, Doop and Noop events
@@ -114,7 +110,5 @@ thn no event will be posted.
 
 == Raising events programmatically
 
-Normally events are only raised for interactions through the UI. However, events can be raised programmatically either
-by calling the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] API directly, or as a result
-of calling the xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_TitleService[`TitleService`]'s
-`titleOf(...)` method.
+Normally events are only raised for interactions through the UI.
+However, events can be raised programmatically either by calling the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] API directly, or as a result of calling the xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_TitleService[`TitleService`]'s `titleOf(...)` method.
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_auditing.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_auditing.adoc
index 2c2d464..c30ed06 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_auditing.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_auditing.adoc
@@ -5,12 +5,9 @@
 :_imagesdir: images/
 
 
-The `auditing()` attribute indicates that if the object is modified, then each of its changed properties should be
-submitted to the registered xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_AuditerService[`AuditerService`](s).
+The `auditing()` attribute indicates that if the object is modified, then each of its changed properties should be submitted to the registered xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_AuditerService[`AuditerService`](s).
 
-The default value for the attribute is `AS_CONFIGURED`, meaning that the
-xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] `isis.services.audit.objects` is used to determine the
-whether the action is audited:
+The default value for the attribute is `AS_CONFIGURED`, meaning that the xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] `isis.services.audit.objects` is used to determine the whether the action is audited:
 
 * `all` +
 +
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_autoCompleteRepository.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_autoCompleteRepository.adoc
index 35c707e..a221a92 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_autoCompleteRepository.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_autoCompleteRepository.adoc
@@ -6,10 +6,10 @@
 
 
 
-The `autoCompleteRepository()` attribute nominates a single method on a domain service as the fallback means for
-looking up instances of the domain object using a simple string.
+The `autoCompleteRepository()` attribute nominates a single method on a domain service as the fallback means for looking up instances of the domain object using a simple string.
 
-For example, this might search for a customer by their name or number.  Or it could search for a country based on its ISO-3 code or user-friendly name.
+For example, this might search for a customer by their name or number.
+Or it could search for a country based on its ISO-3 code or user-friendly name.
 
 
 [TIP]
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_loadedLifecycleEvent.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_loadedLifecycleEvent.adoc
index d13000c..89bdce3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_loadedLifecycleEvent.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_loadedLifecycleEvent.adoc
@@ -7,9 +7,8 @@
 
 Whenever a persistent domain object is loaded from the database, a "loaded" lifecycle event is fired.
 
-Subscribers subscribe through the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] and can
-use the event to obtain a reference to the domain object just loaded.  The subscriber could then, for example, update
-or default values on the object (eg to support on-the-fly migration scenarios).
+Subscribers subscribe through the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] and can use the event to obtain a reference to the domain object just loaded.
+The subscriber could then, for example, update or default values on the object (eg to support on-the-fly migration scenarios).
 
 By default the event raised is `ObjectLoadedEvent.Default`. For example:
 
@@ -21,8 +20,8 @@ public class ToDoItemDto {
 }
 ----
 
-The purpose of the `loadedLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.  A similar
-attribute is available for other lifecycle events.
+The purpose of the `loadedLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.
+A similar attribute is available for other lifecycle events.
 
 For example:
 
@@ -45,9 +44,8 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API
-or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured)
-using the link:http://www.axonframework.org/[Axon Framework] API.  The examples below use the Guava API.
+Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
+The examples below support both.
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -55,7 +53,8 @@ Subscribers can be either coarse-grained (if they subscribe to the top-level eve
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ObjectLoadedEvent ev) {
         if(ev.getSource() instanceof ToDoItem) { ... }
     }
@@ -68,7 +67,8 @@ or can be fine-grained (by subscribing to specific event subtypes):
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ToDoItem.ObjectLoadedEvent ev) {
         ...
     }
@@ -76,29 +76,20 @@ public class SomeSubscriber extends AbstractSubscriber {
 ----
 
 
-[TIP]
-====
-If the AxonFramework is being used, replace `@com.google.common.eventbus.Subscribe` with `@org.axonframework.eventhandling.annotation.EventHandler`.
-====
-
 
 
 
 
 == Default, Doop and Noop events
 
-If the `loadedLifecycleEvent` attribute is not explicitly specified (is left as its default value, `ObjectLoadedEvent.Default`),
-then the framework will, by default, post an event.
+If the `loadedLifecycleEvent` attribute is not explicitly specified (is left as its default value, `ObjectLoadedEvent.Default`), then the framework will, by default, post an event.
 
-If this is not required, then the `isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault`
-configuration property can be set to "false"; this will disable posting.
+If this is not required, then the `isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
 
 On the other hand, if the `loadedLifecycleEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `ObjectLoadedEvent.Doop` as such a subclass, so setting the `loadedLifecycleEvent` attribute to this class
-will ensure that the event to be posted, irrespective of the configuration property setting.
+The framework provides `ObjectLoadedEvent.Doop` as such a subclass, so setting the `loadedLifecycleEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
 
-And, conversely, the framework also provides `ObjectLoadedEvent.Noop`; if `loadedLifecycleEvent` attribute is set to this class,
-then no event will be posted.
+And, conversely, the framework also provides `ObjectLoadedEvent.Noop`; if `loadedLifecycleEvent` attribute is set to this class, then no event will be posted.
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_objectType.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_objectType.adoc
index 679d574..353090b 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_objectType.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_objectType.adoc
@@ -12,7 +12,7 @@ This can appear in several contexts, including:
 
 * as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
  (see xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_BookmarkService[`BookmarkService`])
- ** and thus in the "table-of-two-halves" pattern, as per the (non-ASF) link:http://platform.incode.org[Incode Platform^]'s poly module
+** and thus in the "table-of-two-halves" pattern, as per the (non-ASF) link:http://platform.incode.org[Incode Platform^]'s poly module
 * in the serialization of `OidDto` in the xref:../rgcms/rgcms.adoc#_rgcms_schema-cmd[command] and xref:../rgcms/rgcms.adoc#_rgcms_schema-ixn[interaction] schemas
 * in the URLs of the xref:../ugvro/ugvro.adoc#[RestfulObjects viewer]
 * in the URLs of the xref:../ugvw/ugvw.adoc#[Wicket viewer] (in general and in particular if xref:../ugvw/ugvw.adoc#_ugvw_features_hints-and-copy-url[copying URLs])
@@ -41,7 +41,7 @@ The rules of precedence are:
 
 1. xref:../rgant/rgant.adoc#_rgant_Discriminator[`@Discriminator`]
 2. `@DomainObject#objectType`
-3. xref:../rgant/rgant.adoc#_rgant_PersistenceCapable[`@PersistenceCapable`], if at least the `schema` attribute is defined.  +
+3. xref:../rgant/rgant.adoc#_rgant_PersistenceCapable[`@PersistenceCapable`], if at least the `schema` attribute is defined.
 +
 If both `schema` and `table` are defined, then the value is "`schema.table`".
 If only `schema` is defined, then the value is "`schema.className`".
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_persistedLifecycleEvent.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_persistedLifecycleEvent.adoc
index e7de07e..e0303c5 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_persistedLifecycleEvent.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_persistedLifecycleEvent.adoc
@@ -8,9 +8,8 @@
 Whenever a (just created, still transient) domain object has been saved (INSERTed in)to the database, a "persisted" lifecycle
 event is fired.
 
-Subscribers subscribe through the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] and can
-use the event to obtain a reference to the domain object.  The subscriber could then, for example, maintain an
-external datastore.
+Subscribers subscribe through the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] and can use the event to obtain a reference to the domain object.
+The subscriber could then, for example, maintain an external datastore.
 
 [WARNING]
 ====
@@ -27,8 +26,8 @@ public class ToDoItemDto {
 }
 ----
 
-The purpose of the `persistedLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.  A similar
-attribute is available for other lifecycle events.
+The purpose of the `persistedLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.
+A similar attribute is available for other lifecycle events.
 
 For example:
 
@@ -51,9 +50,8 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API
-or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured)
-using the link:http://www.axonframework.org/[Axon Framework] API.  The examples below use the Guava API.
+Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
+The examples below are compatible with both.
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -61,7 +59,8 @@ Subscribers can be either coarse-grained (if they subscribe to the top-level eve
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ObjectPersistedEvent ev) {
         if(ev.getSource() instanceof ToDoItem) { ... }
     }
@@ -74,7 +73,8 @@ or can be fine-grained (by subscribing to specific event subtypes):
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ToDoItem.ObjectPersistedEvent ev) {
         ...
     }
@@ -82,10 +82,6 @@ public class SomeSubscriber extends AbstractSubscriber {
 ----
 
 
-[TIP]
-====
-If the AxonFramework is being used, replace `@com.google.common.eventbus.Subscribe` with `@org.axonframework.eventhandling.annotation.EventHandler`.
-====
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_persistingLifecycleEvent.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_persistingLifecycleEvent.adoc
index 6a712d8..7260566 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_persistingLifecycleEvent.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_persistingLifecycleEvent.adoc
@@ -5,19 +5,16 @@
 :_imagesdir: images/
 
 
-Whenever a (just created, still transient) domain object is about to be saved (INSERTed in)to the database, a "persisting" lifecycle
-event is fired.
+Whenever a (just created, still transient) domain object is about to be saved (INSERTed in)to the database, a "persisting" lifecycle event is fired.
 
-Subscribers subscribe through the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] and can
-use the event to obtain a reference to the domain object.  The subscriber could then, for example, update the object,
-or it could use it maintain an external datastore.  One possible application is to maintain a full-text search database using
-link:https://lucene.apache.org/[Apache Lucene] or similar.
+Subscribers subscribe through the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] and can use the event to obtain a reference to the domain object.
+The subscriber could then, for example, update the object, or it could use it maintain an external datastore.
+One possible application is to maintain a full-text search database using link:https://lucene.apache.org/[Apache Lucene] or similar.
 
 [NOTE]
 ====
-Another use case is to maintain "last updated by"/"last updated at" properties.  While you can roll your own, note that
-the framework provides built-in support for this use case through the
-xref:../rgcms/rgcms.adoc#_rgcms_classes_roles_Timestampable[`Timestampable`] role interface.
+Another use case is to maintain "last updated by"/"last updated at" properties.
+While you can roll your own, note that the framework provides built-in support for this use case through the xref:../rgcms/rgcms.adoc#_rgcms_classes_roles_Timestampable[`Timestampable`] role interface.
 ====
 
 By default the event raised is `ObjectPersistingEvent.Default`. For example:
@@ -30,8 +27,8 @@ public class ToDoItemDto {
 }
 ----
 
-The purpose of the `persistingLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.  A similar
-attribute is available for other lifecycle events.
+The purpose of the `persistingLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.
+A similar attribute is available for other lifecycle events.
 
 For example:
 
@@ -54,9 +51,8 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API
-or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured)
-using the link:http://www.axonframework.org/[Axon Framework] API.  The examples below use the Guava API.
+Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
+The examples below are compatible with both.
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -77,7 +73,8 @@ or can be fine-grained (by subscribing to specific event subtypes):
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ToDoItem.ObjectPersistingEvent ev) {
         ...
     }
@@ -85,11 +82,6 @@ public class SomeSubscriber extends AbstractSubscriber {
 ----
 
 
-[TIP]
-====
-If the AxonFramework is being used, replace `@com.google.common.eventbus.Subscribe` with `@org.axonframework.eventhandling.annotation.EventHandler`.
-====
-
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_publishing.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_publishing.adoc
index 72d2e58..9d67e01 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_publishing.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_publishing.adoc
@@ -6,13 +6,8 @@
 
 
 
-The `publishing()` attribute determines whether and how a modified object instance is published via the registered
-implementation of
-xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`].
-This attribute is also supported
-for xref:../rgant/rgant.adoc#_rgant-Action_publishing[actions], where it controls whether action invocations are published as
-events, and for xref:../rgant/rgant.adoc#_rgant-Property_publishing[`@Property#publishing()`], where it controls whether
-property edits are published as events.
+The `publishing()` attribute determines whether and how a modified object instance is published via the registered implementation of xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`].
+This attribute is also supported for xref:../rgant/rgant.adoc#_rgant-Action_publishing[actions], where it controls whether action invocations are published as events, and for xref:../rgant/rgant.adoc#_rgant-Property_publishing[`@Property#publishing()`], where it controls whether property edits are published as events.
 
 A common use case is to notify external "downstream" systems of changes in the state of the Isis application.
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_removingLifecycleEvent.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_removingLifecycleEvent.adoc
index ec875fd..dbd2eb3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_removingLifecycleEvent.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_removingLifecycleEvent.adoc
@@ -5,13 +5,11 @@
 :_imagesdir: images/
 
 
-Whenever a (persistent) domain object is about to be removed (DELETEd) from the database, a "removing"
-lifecycle event is fired.
+Whenever a (persistent) domain object is about to be removed (DELETEd) from the database, a "removing" lifecycle event is fired.
 
-Subscribers subscribe through the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] and can
-use the event to obtain a reference to the domain object.  The subscriber could then, for example, could use it
-maintain an external datastore.  One possible application is to maintain a full-text search database
-using link:https://lucene.apache.org/[Apache Lucene] or similar.
+Subscribers subscribe through the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] and can use the event to obtain a reference to the domain object.
+The subscriber could then, for example, could use it maintain an external datastore.
+One possible application is to maintain a full-text search database using link:https://lucene.apache.org/[Apache Lucene] or similar.
 
 [NOTE]
 ====
@@ -54,9 +52,8 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API
-or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured)
-using the link:http://www.axonframework.org/[Axon Framework] API.  The examples below use the Guava API.
+Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
+The examples below are compatible with both.
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -64,7 +61,8 @@ Subscribers can be either coarse-grained (if they subscribe to the top-level eve
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ObjectRemovingEvent ev) {
         if(ev.getSource() instanceof ToDoItem) { ... }
     }
@@ -77,7 +75,8 @@ or can be fine-grained (by subscribing to specific event subtypes):
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ToDoItem.ObjectRemovingEvent ev) {
         ...
     }
@@ -85,10 +84,6 @@ public class SomeSubscriber extends AbstractSubscriber {
 ----
 
 
-[TIP]
-====
-If the AxonFramework is being used, replace `@com.google.common.eventbus.Subscribe` with `@org.axonframework.eventhandling.annotation.EventHandler`.
-====
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_updatedLifecycleEvent.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_updatedLifecycleEvent.adoc
index 950a5c2..e7dfe68 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_updatedLifecycleEvent.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_updatedLifecycleEvent.adoc
@@ -50,9 +50,8 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API
-or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured)
-using the link:http://www.axonframework.org/[Axon Framework] API.  The examples below use the Guava API.
+Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
+The examples below are compatible with both.
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -60,7 +59,8 @@ Subscribers can be either coarse-grained (if they subscribe to the top-level eve
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ObjectUpdatedEvent ev) {
         if(ev.getSource() instanceof ToDoItem) { ... }
     }
@@ -73,7 +73,8 @@ or can be fine-grained (by subscribing to specific event subtypes):
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ToDoItem.ObjectUpdatedEvent ev) {
         ...
     }
@@ -81,10 +82,7 @@ public class SomeSubscriber extends AbstractSubscriber {
 ----
 
 
-[TIP]
-====
-If the AxonFramework is being used, replace `@com.google.common.eventbus.Subscribe` with `@org.axonframework.eventhandling.annotation.EventHandler`.
-====
+
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_updatingLifecycleEvent.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_updatingLifecycleEvent.adoc
index 9b71f5e..42a3067 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_updatingLifecycleEvent.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_updatingLifecycleEvent.adoc
@@ -54,9 +54,8 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API
-or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured)
-using the link:http://www.axonframework.org/[Axon Framework] API.  The examples below use the Guava API.
+Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
+The examples below are compatible with both.
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -64,7 +63,8 @@ Subscribers can be either coarse-grained (if they subscribe to the top-level eve
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ObjectUpdatingEvent ev) {
         if(ev.getSource() instanceof ToDoItem) { ... }
     }
@@ -77,7 +77,8 @@ or can be fine-grained (by subscribing to specific event subtypes):
 ----
 @DomainService(nature=NatureOfService.DOMAIN)
 public class SomeSubscriber extends AbstractSubscriber {
-    @com.google.common.eventbus.Subscribe
+    @org.axonframework.eventhandling.annotation.EventHandler // if using axon
+    @com.google.common.eventbus.Subscribe                    // if using guava
     public void on(ToDoItem.ObjectUpdatingEvent ev) {
         ...
     }
@@ -85,12 +86,6 @@ public class SomeSubscriber extends AbstractSubscriber {
 ----
 
 
-[TIP]
-====
-If the AxonFramework is being used, replace `@com.google.common.eventbus.Subscribe` with `@org.axonframework.eventhandling.annotation.EventHandler`.
-====
-
-
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-ParameterLayout_describedAs.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-ParameterLayout_describedAs.adoc
index 5ec651e..ea731b7 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-ParameterLayout_describedAs.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-ParameterLayout_describedAs.adoc
@@ -7,13 +7,9 @@
 
 The `describedAs()` attribute is used to provide a short description of the action parameter to the user.  In the xref:../ugvw/ugvw.adoc#[Wicket viewer] it is displayed as a 'tool tip'.  The `describedAs()` attribute can also be specified for xref:../rgant/rgant.adoc#_rgant-CollectionLayout_describedAs[collections],  xref:../rgant/rgant.adoc#_rgant-PropertyLayout_describedAs[properties], xref:../rgant/rgant.adoc#_rgant-ActionLayout_describedAs[actions], xref:../rgant/rgant.adoc#_rgant-Do [...]
 
-Descriptions may be provided for objects, members (properties,
-collections and actions), and for individual parameters within an action
-method.
+Descriptions may be provided for objects, members (properties, collections and actions), and for individual parameters within an action method.
 
-To provide a description for an individual action parameter, use the
-`describedAs` attribute in-line i.e. immediately before the parameter
-declaration.
+To provide a description for an individual action parameter, use the `describedAs` attribute in-line i.e. immediately before the parameter declaration.
 
 For example:
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-PrimaryKey.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-PrimaryKey.adoc
index d8911bb..da46bc3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-PrimaryKey.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-PrimaryKey.adoc
@@ -12,7 +12,7 @@ Apache Isis also uses this annotation in a very minimal way: to ensure that the
 
 [NOTE]
 ====
-Isis parses the `@NotPersistent` annotation from the Java source code; it does not query the JDO metamodel.
+Apache Isis parses the `@NotPersistent` annotation from the Java source code; it does not query the JDO metamodel.
 This means that it the `@NotPersistent` annotation must be used rather than the equivalent `<field>` link:http://www.datanucleus.org/products/accessplatform_4_0/jdo/application_identity.html[XML metadata].
 
 Moreover, while JDO/DataNucleus will recognize annotations on either the field or the getter method, Apache Isis (currently) only inspects the getter method.
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Property_publishing.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Property_publishing.adoc
index 3c56ad3..ba0491b 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Property_publishing.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Property_publishing.adoc
@@ -7,13 +7,8 @@
 
 
 
-The `publishing()` attribute determines whether and how a property edit is published via the registered implementation
-of
-xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`].
-This attribute is also supported
-for xref:../rgant/rgant.adoc#_rgant-DomainObject_publishing[domain objects], where it controls whether changed objects are
-published as events, and for xref:../rgant/rgant.adoc#_rgant-Property_publishing[`@Property#publishing()`], where it controls
-whether property edits are published as events.
+The `publishing()` attribute determines whether and how a property edit is published via the registered implementation of xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`].
+This attribute is also supported for xref:../rgant/rgant.adoc#_rgant-DomainObject_publishing[domain objects], where it controls whether changed objects are published as events, and for xref:../rgant/rgant.adoc#_rgant-Property_publishing[`@Property#publishing()`], where it controls whether property edits are published as events.
 
 A common use case is to notify external "downstream" systems of changes in the state of the Isis application.
 The default value for the attribute is `AS_CONFIGURED`, meaning that the
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-ViewModel_objectType.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-ViewModel_objectType.adoc
index 341f70c..cf28409 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-ViewModel_objectType.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-ViewModel_objectType.adoc
@@ -41,7 +41,7 @@ The rules of precedence are:
 
 1. xref:../rgant/rgant.adoc#_rgant_Discriminator[`@Discriminator`]
 2. `@DomainObject#objectType`, or xref:../rgant/rgant.adoc#_rgant_ViewModel_objectType[`@ViewModel#objectType()`]
-3. xref:../rgant/rgant.adoc#_rgant_PersistenceCapable[`@PersistenceCapable`], if at least the `schema` attribute is defined.  +
+3. xref:../rgant/rgant.adoc#_rgant_PersistenceCapable[`@PersistenceCapable`], if at least the `schema` attribute is defined.
 +
 If both `schema` and `table` are defined, then the value is "`schema.table`".
 If only `schema` is defined, then the value is "`schema.className`".
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc
index ad03819..806fd46 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc
@@ -54,7 +54,7 @@ Note that the discriminator overrides the object type that may otherwise be infe
 
 |xref:../rgant/rgant.adoc#_rgant-PersistenceCapable[`@javax.jdo.annotations.` +
 `PersistenceCapable`]
-|Used to build Apache Isis' own internal identifier for objects.
+|Used to build Apache Isis' own internal identifier for objects. +
 
 If the `schema()` attribute is specified (and if xref:../rgant/rgant.adoc#\_rgant-Discriminator[`@Discriminator`] __hasn't__ been specified), is also used to derive the object type, as used in `Bookmark`s, URLs for xref:../ugvro/ugvro.adoc#[RestfulObjects viewer] and elsewhere.
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc b/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
index 10d0c88..f4fadc3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
@@ -575,7 +575,6 @@ Note that properties and collections are still implicitly inferred by virtue of
 (`true`)
 |Whether objects should be filtered for visibility. +
 
-
 See xref:../rgcfg/rgcfg.adoc#__rgcfg_configuring-core_filterVisibility[section below] for further discussion.
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_lifecycleevent_ObjectCreatedEvent.adoc b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_lifecycleevent_ObjectCreatedEvent.adoc
index 5fb4367..24dbeef 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_lifecycleevent_ObjectCreatedEvent.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_lifecycleevent_ObjectCreatedEvent.adoc
@@ -6,8 +6,7 @@
 
 
 
-Subclass of xref:../rgcms/rgcms.adoc#_rgcms_classes_lifecycleevent_AbstractLifecycleEvent[`AbstractLifecycleEvent`], broadcast when an object is first instantiated using the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_FactoryService[`FactoryServuce`]'s
-`#instantiate(...)` method.
+Subclass of xref:../rgcms/rgcms.adoc#_rgcms_classes_lifecycleevent_AbstractLifecycleEvent[`AbstractLifecycleEvent`], broadcast when an object is first instantiated using the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_FactoryService[`FactoryServuce`]'s `#instantiate(...)` method.
 
 `ObjectCreatedEvent.Default` is the implementation that is used by default, but this can be overridden using xref:../rgant/rgant.adoc#_rgant_DomainObject_createdLifecycleEvent[`@DomainObject#createdLifecycleEvent()`].
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins_Dto.adoc b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins_Dto.adoc
index 0129c64..8d799e3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins_Dto.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins_Dto.adoc
@@ -53,4 +53,4 @@ The `IsisSchemas` parameter to the action can be used to optionally ignore the c
 
 == Related Services
 
-The `Dto_downloadXml` and `Dto_downloadXsd` delegate to the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_JaxbService[`JaxbService`] to actually generate the XML/XSD.p
\ No newline at end of file
+The `Dto_downloadXml` and `Dto_downloadXsd` delegate to the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_JaxbService[`JaxbService`] to actually generate the XML/XSD.
\ No newline at end of file
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_super_AbstractService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_super_AbstractService.adoc
index 829afb6..9d1c35e 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_super_AbstractService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_super_AbstractService.adoc
@@ -7,4 +7,4 @@
 This class provides an implementation of the optional `getId()` method for domain services, based upon the classes name.
 
 In practice there is little to gain from subclassing.
-Instead annotated with xref:../rgant/rgant.adoc#_rgant_DomainService[`@DomainService`] and specify its xref:../rgant/rgant.adoc#_rgant_DomainService_objectType[`#objectType()`]
+Instead annotate with xref:../rgant/rgant.adoc#_rgant_DomainService[`@DomainService`] and specify its xref:../rgant/rgant.adoc#_rgant_DomainService_objectType[`#objectType()`]
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_super_AbstractViewModel.adoc b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_super_AbstractViewModel.adoc
index 509a67f..d6af155 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_super_AbstractViewModel.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_super_AbstractViewModel.adoc
@@ -10,6 +10,6 @@ In and of itself it provides no new behaviour.
 
 [TIP]
 ====
-As an alternative, consider simply annotating the view model class with {@link org.apache.isis.applib.annotation.ViewModel} annotation.
+As an alternative, consider simply annotating the view model class with the {@link org.apache.isis.applib.annotation.ViewModel} annotation.
 ====
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_reserved_disable.adoc b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_reserved_disable.adoc
index ec031d6..37a2438 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_reserved_disable.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_reserved_disable.adoc
@@ -39,7 +39,8 @@ See also the similar methods to xref:../rgcms/rgcms.adoc#_rgcms_methods_reserved
 An alternative design -- and one that could be easily argued is actually more flexible -- is to leverage domain events with vetoing subscribers.
 
 With this approach we define, for a given domain class, a base `PropertyDomainEvent`, `CollectionDomainEvent` and `ActionDomainEvent`.
-A good pattern is to make these nested static classes.  For example:
+A good pattern is to make these nested static classes.
+For example:
 
 [source,java]
 ----
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_AuditingServiceInternal.adoc b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_AuditingServiceInternal.adoc
index 67e3586..0c25e7b 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_AuditingServiceInternal.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_AuditingServiceInternal.adoc
@@ -31,7 +31,7 @@ The service implementation is `o.a.i.c.r.s.auditing.AuditingServiceInternal`.
 
 == Registering the Service
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default implementation of `AuditingServiceInternal` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
+Apache Isis' default implementation of `AuditingServiceInternal` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
 
 
 == Related Classes
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_ChangedObjectsServiceInternal.adoc b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_ChangedObjectsServiceInternal.adoc
index 612b823..f174be2 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_ChangedObjectsServiceInternal.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_ChangedObjectsServiceInternal.adoc
@@ -52,7 +52,7 @@ The service implementation is `o.a.i.c.r.s.changes.ChangedObjectsServiceInternal
 
 == Registering the Service
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default implementation of `ChangedObjectsServiceInternal` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
+Apache Isis' default implementation of `ChangedObjectsServiceInternal` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_PublishingServiceInternal.adoc b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_PublishingServiceInternal.adoc
index d118c6e..3c2a883 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_PublishingServiceInternal.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_persistence-layer_PublishingServiceInternal.adoc
@@ -39,7 +39,9 @@ The service implementation is `o.a.i.c.m.s.publishing.PublishingServiceInternal`
 
 == Registering the Service
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default implementation of `PublishingServiceInternal` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
+Apache Isis' default implementation of `PublishingServiceInternal` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
+
+To use an alternative implementation, use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Related Classes
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_presentation-layer_ContentNegotiationService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_presentation-layer_ContentNegotiationService.adoc
index e3d98de..da13dad 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_presentation-layer_ContentNegotiationService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_presentation-layer_ContentNegotiationService.adoc
@@ -194,14 +194,9 @@ If the property is not set, then the default depends on the xref:../rgcfg/rgcfg.
 
 == Registering the Services
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default
-implementations of `ContentNegotiationService` service are automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+Apache Isis' default implementations of `ContentNegotiationService` service are automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
+
+To use an alternative implementation, use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_presentation-layer_RepresentationService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_presentation-layer_RepresentationService.adoc
index e27e73a..9614d14 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_presentation-layer_RepresentationService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_presentation-layer_RepresentationService.adoc
@@ -86,7 +86,7 @@ To use an alternative implementation, use xref:../rgant/rgant.adoc#_rgant-Domain
 
 == Registering the Services
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default implementation of `RepresentationService` service is automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
+Apache Isis' default implementation of `RepresentationService` service is automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_CommandContext.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_CommandContext.adoc
index 053d1d8..af47565 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_CommandContext.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_CommandContext.adoc
@@ -166,7 +166,7 @@ One case however where a domain object might want to obtain the `Command` is to
 It can do this using the `getExecutedIn()` method:
 
 Although not often needed, this then allows the domain object to access the `Command` object through the `CommandContext` service.
-To expand th above example:
+To expand the above example:
 
 
 [source,java]
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_InteractionContext.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_InteractionContext.adoc
index 1e6d25e..bc907e9 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_InteractionContext.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_InteractionContext.adoc
@@ -168,8 +168,7 @@ public class PropertyEdit extends Execution {
 
 === Alternate Implementations
 
-Apache Isis' default
-implementation of `InteractionContext` class is automatically registered (it is annotated with `@DomainService`).
+Apache Isis' default implementation of `InteractionContext` class is automatically registered (it is annotated with `@DomainService`).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_CommandService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_CommandService.adoc
index 6dfe056..d52b0fb 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_CommandService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_CommandService.adoc
@@ -78,8 +78,7 @@ xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_CommandService[`Background
 
 All of these can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
 
-If contributions are not required in the UI, these can be suppressed either using security or by implementing a
-xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
+If contributions are not required in the UI, these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_bootstrapping-spi_ClassDiscoveryService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_bootstrapping-spi_ClassDiscoveryService.adoc
index 14d23e3..4fe927b 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_bootstrapping-spi_ClassDiscoveryService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_bootstrapping-spi_ClassDiscoveryService.adoc
@@ -33,7 +33,7 @@ public interface ClassDiscoveryService  {
 
 == Implementation
 
-Isis provides an implementation of this service, namely `o.a.i.applib.services.classdiscovery.ClassDiscoveryServiceUsingReflections`.
+Apache Isis provides an implementation of this service, namely `o.a.i.applib.services.classdiscovery.ClassDiscoveryServiceUsingReflections`.
 
 [NOTE]
 ====
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_FactoryService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_FactoryService.adoc
index 62737f8..7908b07 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_FactoryService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_FactoryService.adoc
@@ -20,8 +20,10 @@ public interface FactoryService {
     <T> T mixin(Class<T> mixinClass, Object mixedIn);  // <2>
 }
 ----
-<1> create a new non-persisted domain entity.  Any services will be automatically injected into the service.  The class must have a no-arg constructor.
-<2> programmatically instantiate a mixin, eg as annotated with xref:../rgant/rgant.adoc#_rgant-Mixin[`@Mixin`].  The class must have a 1-arg constructor of the appropriate type.
+<1> create a new non-persisted domain entity.  Any services will be automatically injected into the service.
+The class must have a no-arg constructor.
+<2> programmatically instantiate a mixin, for example as annotated with xref:../rgant/rgant.adoc#_rgant-Mixin[`@Mixin`].
+The class must have a 1-arg constructor of the appropriate type.
 
 
 The object is created in memory, but is not persisted.  The benefits of using this method (instead of simply using the Java `new` keyword) are:
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc
index f3416d0..78b0d6e 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc
@@ -17,8 +17,7 @@ The diagram below shows these categories:
 image::{_imagesdir}reference-services/categories.png[width="600px",link="{_imagesdir}reference-services/categories.png"]
 
 
-A small number of domain services can be considered both API and SPI; a good example is the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_EmailService[`EmailService`] that is of direct use for domain objects wishing to send out emails, but is also used by the framework to support the xref:../ugvw/ugvw.adoc#_ugvw_features_user-registration[user registration]
-functionality supported by the xref:../ugvw/ugvw.adoc#[Wicket viewer].
+A small number of domain services can be considered both API and SPI; a good example is the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_EmailService[`EmailService`] that is of direct use for domain objects wishing to send out emails, but is also used by the framework to support the xref:../ugvw/ugvw.adoc#_ugvw_features_user-registration[user registration] functionality supported by the xref:../ugvw/ugvw.adoc#[Wicket viewer].
 The same is true of the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`]; this can be used by domain objects to broadcast arbitrary events, but is also used by the framework to automatically emit events for
 xref:../rgant/rgant.adoc#_rgant-Action_domainEvent[`@Action#domainEvent()`] etc.
 
@@ -119,7 +118,7 @@ public class MyLocaleProvider implements LocaleProvider {
 <1> takes precedence over the default implementation.
 
 
-It's also quite common to want to decorate the existing implementation (ie have your own implementation delegate to the default); this is also possible and quite easy (if using `1.10.0` or later).
+It's also quite common to want to decorate the existing implementation (ie have your own implementation delegate to the default); this is also possible and quite easy.
 The idea is to have the framework inject all implementations of the service, and then to delegate to the first one that isn't "this" one:
 
 [source,java]
@@ -188,16 +187,14 @@ xref:../rgfis/rgfis.adoc#_rgfis_spi_PublisherServiceInternal[`PublisherServiceIn
 The internal service delegates in turn to any registered xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`]s (there may be more than one).
 
 * At the end of each transaction, details of all changed objects are published, again through the (internal) xref:../rgfis/rgfis.adoc#_rgfis_spi_PublisherServiceInternal[`PublisherServiceInternal`] to any registered `PublisherService` implementations.
-Only domain objects specified to be published with
-xref:../rgant/rgant.adoc#_rgant-DomainObject_publishing[`@DomainObject#publishing()`] are published. +
+Only domain objects specified to be published with xref:../rgant/rgant.adoc#_rgant-DomainObject_publishing[`@DomainObject#publishing()`] are published. +
 +
 [NOTE]
 ====
 Note that it's possible for there to be more than one transaction per top-level interaction, by virtue of the xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_TransactionService[`TransactionService`].
 ====
 
-* Also at the end of each transaction, details of all changed properties are passed to any registered
-xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_AuditerService[`AuditerService`](s) by way of the (internal) xref:../rgfis/rgfis.adoc#_rgfis_persistence-layer_AuditingServiceInternal[`AuditingServiceInternal`] domain service.
+* Also at the end of each transaction, details of all changed properties are passed to any registered xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_AuditerService[`AuditerService`](s) by way of the (internal) xref:../rgfis/rgfis.adoc#_rgfis_persistence-layer_AuditingServiceInternal[`AuditingServiceInternal`] domain service.
 
 Implementations of xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_CommandService[`CommandService`] can use the `Command#getMemento()` method to obtain a XML equivalent of that `Command`, reified using the xref:../rgcms/rgcms.adoc#_rgcms_schema-cmd[`cmd.xsd`] schema.
 This can be converted back into a `CommandDto` using the `CommandDtoUtils` utility class (part of the applib).
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_SwaggerService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_SwaggerService.adoc
index 08e2d57..fb5ac0a 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_SwaggerService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_SwaggerService.adoc
@@ -47,7 +47,7 @@ xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-mod
 
 == Implementation
 
-Isis provides a default implementation of the service, `o.a.i.core.metamodel.services.swagger.SwaggerServiceDefault`.
+Apache Isis provides a default implementation of the service, `o.a.i.core.metamodel.services.swagger.SwaggerServiceDefault`.
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_QueryResultsCache.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_QueryResultsCache.adoc
index d173184..c33d3ce 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_QueryResultsCache.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_QueryResultsCache.adoc
@@ -57,10 +57,7 @@ public class QueryResultsCache {
 
 This class (`o.a.i.applib.services.queryresultscache.QueryResultsCache`) is also the implementation.
 
-To use an alternative implementation, subclass `QueryResultsCache` and use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
-
+To use an alternative implementation, subclass `QueryResultsCache` and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_AuditerService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_AuditerService.adoc
index aa0652d..c6ff519 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_AuditerService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_AuditerService.adoc
@@ -67,6 +67,17 @@ log4j.additivity.org.apache.isis.applib.services.audit.AuditerServiceLogging=fal
 ----
 
 
+
+
+== Usage
+
+The typical way to indicate that an object should be audited is to annotate it with the xref:../rgant/rgant.adoc#_rgant-DomainObject_auditing[`@DomainObject#auditing()`] annotation.
+
+
+== Alternative Implementations
+
+The (non-ASF) link:http://platform.incode.org[Incode Platform^]'s audit module provides an implementation of this service (`AuditerService`), and also provides a number of related domain services (`AuditingServiceMenu`, `AuditingServiceRepository` and `AuditingServiceContributions`).
+
 The (non-ASF) link:http://platform.incode.org[Incode Platform^]'s audit module also provides an implementation, `org.isisaddons.module.audit.dom.AuditerServiceUsingJdo`.
 This creates an audit record for each changed property (ie every time that `AuditerService#audit(...)` is called.
 
@@ -78,7 +89,7 @@ the secondary menu bar.
 * `AuditingServiceRepository` service to to search for persisted `AuditEntry``s.
 None of its actions are visible in the user interface (they are all `@Programmatic`).
 
-* `AuditingServiceContributions` which contrbutes collections to the xref:../rgcms/rgcms.adoc#_rgcms_classes_mixins_HasTransactionId[ `HasTransactionId`] interface.
+* `AuditingServiceContributions` which contributes collections to the xref:../rgcms/rgcms.adoc#_rgcms_classes_mixins_HasTransactionId[ `HasTransactionId`] interface.
 This will therefore display all audit entries that occurred in a given request/transaction, in other words whenever a command, a published event or another audit entry is displayed.
 
 
@@ -88,18 +99,6 @@ If menu items or contributions are not required in the UI, these can be suppress
 
 
 
-== Usage
-
-The typical way to indicate that an object should be audited is to annotate it with the xref:../rgant/rgant.adoc#_rgant-DomainObject_auditing[`@DomainObject#auditing()`] annotation.
-
-
-== Alternative Implementations
-
-
-If menu items or contributions are not required in the UI, these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
-
-
-
 == Related Services
 
 The auditing service works very well with implementations of xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`] that persist the ``Interaction.Execution`` objects obtained from the xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_InteractionContext[`InteractionContext`] service.
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_PublisherService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_PublisherService.adoc
index 553e10e..445f668 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_PublisherService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_PublisherService.adoc
@@ -79,18 +79,6 @@ log4j.additivity.org.apache.isis.applib.services.publish.PublisherServiceLogging
 ----
 
 
-The (non-ASF) link:http://platform.incode.org[Incode Platform^]'s publishmq module also provides an implementation (`o.ia.m.publishmq.dom.servicespi.PublisherServiceUsingActiveMq`).
-This implementation:
-
-* publishes each member execution as an event on an link:http://activemq.apache.org[ActiveMQ] message queue.
-* persists each execution as a `PublishedEvent` entity, allowing the event to be republished if necessary.
-* provides the ability to log additional `StatusMessage` entities, correlated on the transactionId, useful for diagnosing and monitoring the activity of subscribers of said message queues.
-
-
-This service can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
-
-The module also provide services that contribute to the UI.
-If contributions are not required in the UI, these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
 
 == Usage
@@ -105,9 +93,19 @@ To indicate that:
 
 == Alternative Implementations
 
-The (non-ASF) link:http://platform.incode.org[Incode Platform^];s publishmq module provides an implementation of this service.
+The (non-ASF) link:http://platform.incode.org[Incode Platform^]'s publishmq module also provides an implementation (`o.ia.m.publishmq.dom.servicespi.PublisherServiceUsingActiveMq`).
+This implementation:
+
+* publishes each member execution as an event on an link:http://activemq.apache.org[ActiveMQ] message queue.
+* persists each execution as a `PublishedEvent` entity, allowing the event to be republished if necessary.
+* provides the ability to log additional `StatusMessage` entities, correlated on the transactionId, useful for diagnosing and monitoring the activity of subscribers of said message queues.
 
 
+This service can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
+
+The module also provide services that contribute to the UI.
+If contributions are not required in the UI, these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
+
 
 
 
@@ -116,6 +114,7 @@ The (non-ASF) link:http://platform.incode.org[Incode Platform^];s publishmq modu
 This service supports two main use cases:
 
 * coarse-grained publish/subscribe for system-to-system interactions, from Apache Isis to some other system.
+
 * profiling of interactions/transactions, eg to diagnose response/throughput issues.
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_EmailNotificationService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_EmailNotificationService.adoc
index 5c52319..71c5a83 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_EmailNotificationService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_EmailNotificationService.adoc
@@ -56,7 +56,8 @@ This implies a couple of additional constraints:
 
 * first, implementation class should also be annotated with `@com.google.inject.Singleton`
 
-* second, there may not be any Apache Isis session running. (If necessary, one can be created on the fly using `IsisContext.doInSession(...)`)
+* second, there may not be any Apache Isis session running.
+(If necessary, one can be created on the fly using `IsisContext.doInSession(...)`)
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ExceptionRecognizer.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ExceptionRecognizer.adoc
index 07587a0..de00334 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ExceptionRecognizer.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ExceptionRecognizer.adoc
@@ -99,8 +99,7 @@ It will also handle any application exceptions raised by the system (subclasses
 +
 which bundles up a number of more fine-grained implementations:
 +
-** `ExceptionRecognizerForSQLIntegrityConstraintViolationUnique
-OrIndexException`
+** `ExceptionRecognizerForSQLIntegrityConstraintViolationUniqueOrIndexException`
 ** `ExceptionRecognizerForJDOObjectNotFoundException`
 ** `ExceptionRecognizerForJDODataStoreException`
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_RoutingService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_RoutingService.adoc
index 16e6347..02ef214 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_RoutingService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_RoutingService.adoc
@@ -54,8 +54,7 @@ public interface RoutingService {
 
 == Implementation
 
-The framework provides a default implementation - `RoutingServiceDefault` - which will always return the original object provided, or the home page
-if a `null` or `void` was provided.
+The framework provides a default implementation - `RoutingServiceDefault` - which will always return the original object provided, or the home page if a `null` or `void` was provided.
 It uses the xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_HomePageProviderService[`HomePageProviderService`].
 
 There can be multiple implementations of `RoutingService` registered.
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_UrlEncodingService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_UrlEncodingService.adoc
index f0ce2bf..8ebc9f1 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_UrlEncodingService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_UrlEncodingService.adoc
@@ -42,9 +42,8 @@ public interface UrlEncodingService {
 
 == Implementation
 
-The framework provides a default implementation (`UrlEncodingServiceWithCompression`) that (also in the applib) that first (gzip) compresses the state and then uses `base-64` encoding of the resulting bytes.
-As already noted, be aware that the maximum length of a URL should not
-exceed 2083 characters.
+The framework provides a default implementation -- `UrlEncodingServiceWithCompression` (also in the applib) --that first (gzip) compresses the state and then uses `base-64` encoding of the resulting bytes.
+As already noted, be aware that the maximum length of a URL should not exceed 2083 characters.
 For large view models, there's the possibility that this limit could be exceeded; in such cases register an alternative implementation of this service.
 
 To use an alternative implementation, implement the `UrlEncodingService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_replacing-default-service-implementations.adoc b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_replacing-default-service-implementations.adoc
index 178ab55..645c2a6 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_replacing-default-service-implementations.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_replacing-default-service-implementations.adoc
@@ -6,7 +6,8 @@
 
 
 
-The framework provides default implementations for many of the xref:../rgsvc/rgsvc.adoc#[domain services].  This is convenient, but sometimes you will want to replace the default implementation with your own service implementation.
+The framework provides default implementations for many of the xref:../rgsvc/rgsvc.adoc#[domain services].
+This is convenient, but sometimes you will want to replace the default implementation with your own service implementation.
 
 For example, suppose you wanted to provide your own implementation of xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-layer-spi_LocaleProvider[`LocaleProvider`].
 The trick is to use the xref:../rgant/rgant.adoc#_rgant-DomainService_menuOrder[`@DomainService#menuOrder()`] attribute, specifying a low number (typically `"1"`).
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_events_domain-events.adoc b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_events_domain-events.adoc
index 06572e1..652ac05 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_events_domain-events.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_events_domain-events.adoc
@@ -13,6 +13,7 @@ Similarly, rendering a collection causes a `CollectionDomainEvent` to be fired,
 In fact, each event can be fired up to five times, with the event's `getEventPhase()` method indicating to the subscriber the phase:
 
 * *hide* phase allows the subscriber to hide the member
+
 * *disable* phase allows the subscriber to disable the member.
 +
 For a property this makes it read-only; for an action this makes it "greyed out".
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_programming-model_actions.adoc b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_programming-model_actions.adoc
index 693703e..f90b9fa 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_programming-model_actions.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_programming-model_actions.adoc
@@ -255,13 +255,8 @@ public Order updateDiscount(
     return this;
 }
 ----
-<<<<<<< HEAD
 <1> Specifies the property precision using xref:../rgant/rgant.adoc#_rgant_Column_scale[`@Column#scale()`]
 <2> Specifies the corresponding parameter precision using xref:../rgant/rgant.adoc#_rgant-Digits[`@Digits#fraction()`].
-=======
-<1> Specifies the property precision using xref:../rgant/rgant.adoc#_rgant-Column_scale[`@Column#scale()`]
-<2> Specifies the corresponding parameter precision using xref:../rgant/rgant.adoc#_rgant-Digits_fraction[`@Digits#fraction()`].
->>>>>>> maint-1.16.1
 
 See also xref:../ugfun/ugfun.adoc#_ugfun_programming-model_properties-vs-parameters[properties vs parameters].
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_extending_replacing-page-elements.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_extending_replacing-page-elements.adoc
index 56e1b9d..23ea48b 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_extending_replacing-page-elements.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_extending_replacing-page-elements.adoc
@@ -135,7 +135,8 @@ public class MyAppApplication extends IsisWicketApplication {
 As explained above, in most cases Apache Isis' Wicket viewer will search for the first `ComponentFactory` that can render an element, and use it.
 In the case of (either standalone or parented) collections, though, Apache Isis will show all available views.
 
-For example, out-of-the-box Apache Isis provides a table view, a summary view (totals/sums/averages of any data), and a collapsed view. These are selected by clicking on the toolbar by each collection.
+For example, out-of-the-box Apache Isis provides a table view, a summary view (totals/sums/averages of any data), and a collapsed view.
+These are selected by clicking on the toolbar by each collection.
 
 Additional views though could render the objects in the collection as a variety of ways.
 Indeed, some third-party implementations in the (non-ASF) link:http://platform.incode.org[Incode Platform^] already exist, including:
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features.adoc
index 4b71fbf..fab1069 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features.adoc
@@ -25,5 +25,3 @@ include::_ugvw_features_user-registration.adoc[leveloffset=+1]
 
 
 
-
-
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_file-based.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_file-based.adoc
index 38956fc..bdce4c5 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_file-based.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_file-based.adoc
@@ -364,7 +364,7 @@ There are four "styles":
 * minimal
 
 
-Ignorig the "current" style (which merely downloads the currently cached layout), the other three styles allow the developer to choose how much metadata is to be specified in the XML, and how much (if any) will be obtained from annotations in the metamodel.
+Ignoring the "current" style (which merely downloads the currently cached layout), the other three styles allow the developer to choose how much metadata is to be specified in the XML, and how much (if any) will be obtained from annotations in the metamodel.
 The table below summarises the choices:
 
 .Table caption
diff --git a/adocs/documentation/src/main/asciidoc/index.html b/adocs/documentation/src/main/asciidoc/index.html
index f70bd89..53e9685 100644
--- a/adocs/documentation/src/main/asciidoc/index.html
+++ b/adocs/documentation/src/main/asciidoc/index.html
@@ -744,31 +744,31 @@ mvn archetype:generate  \
          <div class="tutorial-carousel">
 
           <div>
-           <img src="images/index-screenshots/010-sign-in.png"></img>
+           <img src="images/index-screenshots/010-sign-in.png"/>
           </div>
           <div>
-           <img src="images/index-screenshots/020-object-layout.png"></img>
+           <img src="images/index-screenshots/020-object-layout.png"/>
           </div>
           <div>
-           <img src="images/index-screenshots/030-declarative-business-rules.png"></img>
+           <img src="images/index-screenshots/030-declarative-business-rules.png"/>
           </div>
           <div>
-           <img src="images/index-screenshots/040-imperative-business-rules.png"></img>
+           <img src="images/index-screenshots/040-imperative-business-rules.png"/>
           </div>
           <div>
-           <img src="images/index-screenshots/050-action-with-args.png"></img>
+           <img src="images/index-screenshots/050-action-with-args.png"/>
           </div>
           <div>
-           <img src="images/index-screenshots/060-action-with-args-autocomplete.png"></img>
+           <img src="images/index-screenshots/060-action-with-args-autocomplete.png"/>
           </div>
           <div>
-           <img src="images/index-screenshots/070-jdo.png"></img>
+           <img src="images/index-screenshots/070-jdo.png"/>
           </div>
           <div>
-           <img src="images/index-screenshots/080-rest-api.png"></img>
+           <img src="images/index-screenshots/080-rest-api.png"/>
           </div>
           <div>
-           <img src="images/index-screenshots/090-integtesting.png"></img>
+           <img src="images/index-screenshots/090-integtesting.png"/>
           </div>
          </div>
          <div>
diff --git a/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.7.0-to-1.8.0.adoc b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.7.0-to-1.8.0.adoc
index 933b15d..5f728c4 100644
--- a/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.7.0-to-1.8.0.adoc
+++ b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.7.0-to-1.8.0.adoc
@@ -7,20 +7,18 @@
 
 
 
-Existing projects written against v1.7.0 should run against v1.8.0 without any changes.  In particular (unlike 1.6.0 and
- 1.7.0) there should be no need to update `pom.xml` files of existing projects.  If you *do* encounter any difficulties
-then let us know via the link:https://isis.apache.org/versions/2.0.0-M1/support.html#[users mailing list], so we can support you and document issues here.
+Existing projects written against v1.7.0 should run against v1.8.0 without any changes.
+In particular (unlike 1.6.0 and 1.7.0) there should be no need to update `pom.xml` files of existing projects.
+If you *do* encounter any difficulties then let us know via the link:https://isis.apache.org/versions/2.0.0-M1/support.html#[users mailing list], so we can support you and document issues here.
 
-That said, many of the existing annotations have been deprecated in 1.8.0, replaced with a simplified and rationalized
- set of annotations; see link:https://isis.apache.org/versions/2.0.0-M1/guides/rgant/rgant.html#[here].  To help you migrate your application
- over to the new annotations, there is a new configuration property that can be set in `isis.properties`:
+That said, many of the existing annotations have been deprecated in 1.8.0, replaced with a simplified and rationalized  set of annotations; see link:https://isis.apache.org/versions/2.0.0-M1/guides/rgant/rgant.html#[here].
+To help you migrate your application over to the new annotations, there is a new configuration property that can be set in `isis.properties`:
 
 [source,ini]
 ----
 isis.reflector.validator.allowDeprecated=false
 ----
 
-If this flag is present and set to false, then metamodel validation errors will be thrown on startup if any deprecated
-annotations are encountered.  These can be viewed either in the console or by browsing to the app (an error page will
-be displayed).
+If this flag is present and set to false, then metamodel validation errors will be thrown on startup if any deprecated annotations are encountered.
+These can be viewed either in the console or by browsing to the app (an error page will be displayed).
 
diff --git a/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.9.0-to-1.10.0.adoc b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.9.0-to-1.10.0.adoc
index 6506234..917b805 100644
--- a/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.9.0-to-1.10.0.adoc
+++ b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.9.0-to-1.10.0.adoc
@@ -5,9 +5,8 @@
 :_imagesdir: images/
 
 
-Existing projects written against v1.9.0 should run against v1.10.0 with only a few minor changes.  If you *do* encounter
-any difficulties then let us know via the link:https://isis.apache.org/versions/1.10.0/support.html#[users mailing list], so we can support you and document
-issues here.
+Existing projects written against v1.9.0 should run against v1.10.0 with only a few minor changes.
+If you *do* encounter any difficulties then let us know via the link:https://isis.apache.org/versions/1.10.0/support.html#[users mailing list], so we can support you and document issues here.
 
 
 == Remove references to `isis-viewer-wicket` parent pom.
diff --git a/core/pom.xml b/core/pom.xml
index 842fb5a..e24e970 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -2422,7 +2422,7 @@ ${license.additional-notes}
             <id>git</id>
             <activation>
                 <property>
-                    <name>!skip.git</name>
+                    <name>git</name>
                 </property>
             </activation>
             <build>


[isis] 17/19: ISIS-1974: needs to initialize DN eagerly, alongside SpecLoader doing its thing

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

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

commit 84a8d5dfc77dc25e8bbf663bcbf372e045e22d5b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:37:34 2018 +0100

    ISIS-1974: needs to initialize DN eagerly, alongside SpecLoader doing its thing
---
 .../system/persistence/DataNucleusApplicationComponents4.java  | 10 ++++++++++
 .../runtime/system/persistence/PersistenceSessionFactory4.java |  4 ++++
 .../system/persistence/DataNucleusApplicationComponents5.java  | 10 ++++++++++
 .../runtime/system/persistence/PersistenceSessionFactory5.java |  6 +++++-
 .../apache/isis/objectstore/jdo/service/RegisterEntities.java  |  2 +-
 5 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents4.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents4.java
index fbe6318..f10f703 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents4.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents4.java
@@ -122,11 +122,21 @@ public class DataNucleusApplicationComponents4 implements ApplicationScopedCompo
 
     private static boolean isSchemaAwareStoreManager(Map<String,String> datanucleusProps) {
 
+        // this saves some time, but also avoids the (still undiagnosed) issue that instantiating the
+        // PMF can cause the ClassMetadata for the entity classes to be loaded in and cached prior to
+        // registering the CreateSchemaObjectFromClassData (to invoke 'create schema' first)
+        final String connectionUrl = datanucleusProps.get("javax.jdo.option.ConnectionURL");
+        if(connectionUrl != null) {
+            if (connectionUrl.startsWith("jdbc:hsqldb")) return true;
+            if (connectionUrl.startsWith("jdbc:sqlserver")) return true;
+        }
+
         // we create a throw-away instance of PMF so that we can probe whether DN has
         // been configured with a schema-aware store manager or not.
         final JDOPersistenceManagerFactory probePmf =
                 (JDOPersistenceManagerFactory) newPersistenceManagerFactory(datanucleusProps);
 
+
         try {
             final PersistenceNucleusContext nucleusContext = probePmf.getNucleusContext();
             final StoreManager storeManager = nucleusContext.getStoreManager();
diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory4.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory4.java
index 1bd9df9..5e6e6e3 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory4.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory4.java
@@ -69,6 +69,10 @@ PersistenceSessionFactory, ApplicationScopedComponent, FixturesInstalledFlag {
     @Override
     public void init(final IsisConfigurationDefault configuration) {
         this.configuration = configuration;
+        // need to eagerly build, ... must be completed before catalogNamedQueries().
+        // Why? because that method causes entity classes to be loaded which register with DN's EnhancementHelper,
+        // which are then cached in DN.  It results in our CreateSchema listener not firing.
+        createDataNucleusApplicationComponents();
     }
 
     @Programmatic
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents5.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents5.java
index 26cf114..0298cba 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents5.java
@@ -122,11 +122,21 @@ public class DataNucleusApplicationComponents5 implements ApplicationScopedCompo
 
     private static boolean isSchemaAwareStoreManager(Map<String,String> datanucleusProps) {
 
+        // this saves some time, but also avoids the (still undiagnosed) issue that instantiating the
+        // PMF can cause the ClassMetadata for the entity classes to be loaded in and cached prior to
+        // registering the CreateSchemaObjectFromClassData (to invoke 'create schema' first)
+        final String connectionUrl = datanucleusProps.get("javax.jdo.option.ConnectionURL");
+        if(connectionUrl != null) {
+            if (connectionUrl.startsWith("jdbc:hsqldb")) return true;
+            if (connectionUrl.startsWith("jdbc:sqlserver")) return true;
+        }
+
         // we create a throw-away instance of PMF so that we can probe whether DN has
         // been configured with a schema-aware store manager or not.
         final JDOPersistenceManagerFactory probePmf =
                 (JDOPersistenceManagerFactory) newPersistenceManagerFactory(datanucleusProps);
 
+
         try {
             final PersistenceNucleusContext nucleusContext = probePmf.getNucleusContext();
             final StoreManager storeManager = nucleusContext.getStoreManager();
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory5.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory5.java
index bb12c9e..12014b4 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory5.java
@@ -69,6 +69,10 @@ implements PersistenceSessionFactory, ApplicationScopedComponent, FixturesInstal
     @Override
     public void init(final IsisConfigurationDefault configuration) {
         this.configuration = configuration;
+        // need to eagerly build, ... must be completed before catalogNamedQueries().
+        // Why? because that method causes entity classes to be loaded which register with DN's EnhancementHelper,
+        // which are then cached in DN.  It results in our CreateSchema listener not firing.
+        createDataNucleusApplicationComponents();
     }
 
     @Programmatic
@@ -184,7 +188,7 @@ implements PersistenceSessionFactory, ApplicationScopedComponent, FixturesInstal
             final ServicesInjector servicesInjector,
             final AuthenticationSession authenticationSession) {
 
-        Objects.requireNonNull(applicationComponents, "PersistenceSession5 requires initialization. "+this.hashCode());
+        Objects.requireNonNull(applicationComponents.get(), "PersistenceSession5 requires initialization. "+this.hashCode());
         
         final FixturesInstalledFlag fixturesInstalledFlag = this;
         
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
index b9b8fd1..c2244be 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
@@ -55,7 +55,7 @@ public class RegisterEntities {
 
     private Set<String> findEntityTypes() {
         
-        Set<String> entityTypes = new LinkedHashSet<String>();
+        Set<String> entityTypes = new LinkedHashSet<>();
 
         Set<Class<?>> persistenceCapableTypes = AppManifest.Registry.instance().getPersistenceCapableTypes();
 


[isis] 02/19: ISIS-1974: forward ports improvements in ThreadPoolSupport from 'master' into 'v2'

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

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

commit de6aade6c0b04e6ea53a3682fbedbe9165304844
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 11:52:15 2018 +0100

    ISIS-1974: forward ports improvements in ThreadPoolSupport from 'master' into 'v2'
---
 .../core/runtime/threadpool/ThreadPoolSupport.java | 122 ++++++++++++++++++---
 .../system/session/IsisSessionFactoryBuilder.java  |   4 +-
 .../wicket/viewer/IsisWicketApplication.java       |   5 +-
 3 files changed, 110 insertions(+), 21 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/threadpool/ThreadPoolSupport.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/threadpool/ThreadPoolSupport.java
index 13f220a..a9f3d54 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/threadpool/ThreadPoolSupport.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/threadpool/ThreadPoolSupport.java
@@ -19,8 +19,8 @@
 
 package org.apache.isis.core.runtime.threadpool;
 
-import static org.apache.isis.commons.internal.base._NullSafe.isEmpty;
-
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.BlockingQueue;
@@ -32,9 +32,12 @@ import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Supplier;
+import java.util.stream.Collectors;
 
 import javax.annotation.Nullable;
 
+import com.google.common.collect.Lists;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -53,6 +56,9 @@ public final class ThreadPoolSupport implements AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(ThreadPoolSupport.class);
 
+    private final static int KEEP_ALIVE_TIME_SECS = 5;
+    private final static int QUEUE_CAPACITY = 5000;
+
     private final ThreadGroup group;
     private final ThreadPoolExecutor concurrentExecutor;
     private final ThreadPoolExecutor sequentialExecutor;
@@ -70,24 +76,26 @@ public final class ThreadPoolSupport implements AutoCloseable {
 
         final int corePoolSize = Runtime.getRuntime().availableProcessors();
         final int maximumPoolSize = Runtime.getRuntime().availableProcessors();
-        final int keepAliveTimeSecs = 5;
-        
+
         final ThreadFactory threadFactory = (Runnable r) -> new Thread(group, r);
 
-        final int queueCapacity = 25;
-        final Supplier<BlockingQueue<Runnable>> workQueueFactory = 
-                ()->new LinkedBlockingQueue<>(queueCapacity);
+        final Supplier<BlockingQueue<Runnable>> workQueueFactory =
+                ()->new LinkedBlockingQueue<>(QUEUE_CAPACITY);
         
         
         concurrentExecutor = new ThreadPoolExecutor(
                 corePoolSize,
                 maximumPoolSize,
-                keepAliveTimeSecs, TimeUnit.SECONDS,
+                KEEP_ALIVE_TIME_SECS,
+                TimeUnit.SECONDS,
                 workQueueFactory.get(),
                 threadFactory);
         
-        sequentialExecutor = new ThreadPoolExecutor(1, 1, // fixed size = 1
-                keepAliveTimeSecs, TimeUnit.MILLISECONDS,
+        sequentialExecutor = new ThreadPoolExecutor(
+                1,
+                1,
+                KEEP_ALIVE_TIME_SECS,
+                TimeUnit.SECONDS,
                 workQueueFactory.get(),
                 threadFactory);
         
@@ -117,6 +125,16 @@ public final class ThreadPoolSupport implements AutoCloseable {
     }
 
     /**
+     * Executes specified {@code callables} on the default executor.
+     * See {@link ThreadPoolExecutor#invokeAll(java.util.Collection)}
+     * @param callables nullable
+     * @return non-null
+     */
+    public List<Future<Object>> invokeAll(final Callable<Object>... callables) {
+        return invokeAll(Arrays.asList(callables));
+    }
+
+    /**
      * Executes specified {@code callables} on the sequential executor in sequence, one by one.
      * @param callables nullable
      * @return non-null
@@ -124,13 +142,23 @@ public final class ThreadPoolSupport implements AutoCloseable {
     public List<Future<Object>> invokeAllSequential(@Nullable final List<Callable<Object>> callables) {
         return invokeAll(sequentialExecutor, callables);
     }
-    
+
+    /**
+     * Executes specified {@code callables} on the sequential executor in sequence, one by one.
+     * @param callables nullable
+     * @return non-null
+     */
+    public List<Future<Object>> invokeAllSequential(final Callable<Object>... callables) {
+        return invokeAllSequential(Arrays.asList(callables));
+    }
+
+
     /**
      * Waits if necessary for the computation to complete. (Suppresses checked exceptions.)
      * @param futures
      * @return list of computation results.
      */
-    public static List<Object> join(@Nullable final List<Future<Object>> futures) {
+    public List<Object> join(@Nullable final List<Future<Object>> futures) {
         if (futures == null) {
             return null;
         }
@@ -148,31 +176,93 @@ public final class ThreadPoolSupport implements AutoCloseable {
         }
     }
 
+    public List<Object> joinGatherFailures(final List<Future<Object>> futures) {
+        if (futures == null) {
+            return null;
+        }
+
+        final long t0 = System.currentTimeMillis();
+        try{
+            final List<Object> returnValues = Lists.newArrayList();
+            for (Future<Object> future : futures) {
+                final Object result;
+                try {
+                    result = future.get();
+                } catch (InterruptedException | ExecutionException e) {
+                    throw new RuntimeException(e);
+                }
+                returnValues.add(result);
+            }
+            return returnValues;
+        } finally {
+            final long t1 = System.currentTimeMillis();
+            LOG.info("join'ing {} tasks: waited {} milliseconds ", futures.size(), (t1-t0));
+        }
+    }
+
+
     /**
      * Waits if necessary for the computation to complete. (Suppresses checked exceptions.)
      * @param future
      * @return the computation result
      */
-    public static Object join(final Future<Object> future) {
+    public Object join(final Future<Object> future) {
         try {
             return future.get();
         } catch (InterruptedException | ExecutionException e) {
             // ignore
+            return null;
         }
-        return null;
     }
 
-    // -- HELPER
+    // -- HELPERS
     
     private List<Future<Object>> invokeAll(ThreadPoolExecutor executor, @Nullable final List<Callable<Object>> callables) {
         if(isEmpty(callables)) {
             return Collections.emptyList();
         }
         try {
-            return executor.invokeAll(callables);
+            return executor.invokeAll(timed(executor, callables));
         } catch (InterruptedException e) {
             throw new RuntimeException(e);
         }
     }
 
+    private static List<Callable<Object>> timed(
+            final ThreadPoolExecutor executor,
+            final List<Callable<Object>> callables) {
+        final long queuedAt = System.currentTimeMillis();
+        return callables.stream()
+                .map(__ -> timed(__, executor.getQueue().size(), queuedAt))
+                .collect(Collectors.toList());
+    }
+
+    private static Callable<Object> timed(
+            final Callable<Object> callable,
+            final int queueSize,
+            final long queuedAt) {
+
+        return () -> {
+            final long startedAt = System.currentTimeMillis();
+            if(LOG.isDebugEnabled()) {
+                LOG.debug("START: workQueue.size: {}, waited for: {}ms, {}",
+                        queueSize,
+                        startedAt - queuedAt,
+                        callable.toString());
+            }
+            try {
+                return callable.call();
+            } finally {
+                final long completedAt = System.currentTimeMillis();
+                if(LOG.isDebugEnabled()) {
+                    LOG.debug("END: completed in: {}ms, {}",
+                            completedAt - startedAt,
+                            callable.toString());
+                }
+            }
+        };
+    }
+
+    private static boolean isEmpty(Collection<?> x) { return x==null || x.size() == 0; }
+
 }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
index 6b95018..32bac23 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
@@ -183,7 +183,7 @@ public class IsisSessionFactoryBuilder {
             // yet inject.
             _Context.putSingleton(IsisSessionFactory.class, isisSessionFactory);
 
-            final List<Callable<Object>> tasks = _Lists.<Callable<Object>>of(
+            final List<Callable<Object>> tasks = _Lists.of(
                     ()->{
                         // time to initialize...
                         specificationLoader.init();
@@ -217,7 +217,7 @@ public class IsisSessionFactoryBuilder {
             final List<Future<Object>> futures = ThreadPoolSupport.getInstance().invokeAll(tasks);
             
             // wait on this thread for tasks to complete
-            ThreadPoolSupport.join(futures); 
+            ThreadPoolSupport.getInstance().join(futures);
 
             isisSessionFactory.constructServices();
 
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index 7f64bcc..73b6c17 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.viewer.wicket.viewer;
 
-import static java.util.Objects.requireNonNull;
-
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.util.Collections;
@@ -126,6 +124,7 @@ import de.agilecoders.wicket.core.settings.IBootstrapSettings;
 import de.agilecoders.wicket.webjars.WicketWebjars;
 import de.agilecoders.wicket.webjars.settings.IWebjarsSettings;
 import de.agilecoders.wicket.webjars.settings.WebjarsSettings;
+import static java.util.Objects.requireNonNull;
 import net.ftlines.wicketsource.WicketSource;
 
 /**
@@ -401,7 +400,7 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketVi
             LOG.error("Failed to initialize", ex);
             throw ex;
         } finally {
-            ThreadPoolSupport.join(futures);
+            ThreadPoolSupport.getInstance().join(futures);
         }
     }
     


[isis] 16/19: ISIS-1974: fixes unit test for SpecificationLoader, need to shutdown after each test

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

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

commit 0bd9821059cf19ca4471e76747a4f222c482ca0c
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:36:51 2018 +0100

    ISIS-1974: fixes unit test for SpecificationLoader, need to shutdown after each test
---
 .../specloader/SpecificationLoaderTestAbstract.java       | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
index 2360cbe..dc7f298 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -23,6 +23,7 @@ import com.google.common.collect.Lists;
 
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
+import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Rule;
@@ -74,6 +75,8 @@ public abstract class SpecificationLoaderTestAbstract {
     // is loaded by subclasses
     protected ObjectSpecification specification;
 
+    SpecificationLoader specificationLoader;
+
 
     @Before
     public void setUp() throws Exception {
@@ -104,10 +107,9 @@ public abstract class SpecificationLoaderTestAbstract {
                         mockDeploymentCategoryProvider),
                     stubConfiguration);
 
-        final SpecificationLoader specificationLoader =
-                new SpecificationLoader(
-                        stubConfiguration, new ProgrammingModelFacetsJava5(stubConfiguration),
-                        new MetaModelValidatorDefault(), stubServicesInjector);
+        specificationLoader = new SpecificationLoader(
+                stubConfiguration, new ProgrammingModelFacetsJava5(stubConfiguration),
+                new MetaModelValidatorDefault(), stubServicesInjector);
 
         stubServicesInjector.addFallbackIfRequired(SpecificationLoader.class, specificationLoader);
 
@@ -116,6 +118,11 @@ public abstract class SpecificationLoaderTestAbstract {
         specification = loadSpecification(specificationLoader);
     }
 
+    @After
+    public void tearDown() throws Exception {
+        specificationLoader.shutdown();
+    }
+
     protected abstract ObjectSpecification loadSpecification(SpecificationLoader reflector);
 
     @Test


[isis] 07/19: merge (ISIS-1965 & ISIS-1977) - adds flatten plugin for new v2-only modules

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

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

commit 62526b20b0a06b59ffb039ae187be76593e1008e
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:24:27 2018 +0100

    merge (ISIS-1965 & ISIS-1977) - adds flatten plugin for new v2-only modules
---
 core/commons/pom.xml                        | 45 ++++++++++++++++++++++++++++
 core/legacy/applib-legacy/pom.xml           | 45 ++++++++++++++++++++++++++++
 core/legacy/integtestsupport-legacy/pom.xml | 46 +++++++++++++++++++++++++++++
 core/legacy/metamodel-legacy/pom.xml        | 45 ++++++++++++++++++++++++++++
 core/legacy/runtime-legacy/pom.xml          | 43 +++++++++++++++++++++++++++
 core/legacy/transition-1-2/pom.xml          | 44 +++++++++++++++++++++++++++
 core/legacy/unittestsupport-legacy/pom.xml  | 45 ++++++++++++++++++++++++++++
 core/legacy/viewer-wicket-ui-legacy/pom.xml | 46 +++++++++++++++++++++++++++++
 core/plugins/codegen-bytebuddy/pom.xml      | 45 ++++++++++++++++++++++++++++
 core/plugins/codegen-javassist/pom.xml      | 46 +++++++++++++++++++++++++++++
 core/plugins/discovery-reflections/pom.xml  | 45 ++++++++++++++++++++++++++++
 core/plugins/eventbus-axon/pom.xml          | 46 +++++++++++++++++++++++++++++
 core/plugins/eventbus-guava/pom.xml         | 45 ++++++++++++++++++++++++++++
 core/plugins/jaxrs-resteasy-3/pom.xml       | 45 ++++++++++++++++++++++++++++
 core/plugins/jaxrs-resteasy-4/pom.xml       | 45 ++++++++++++++++++++++++++++
 core/plugins/jdo-datanucleus-4/pom.xml      | 45 ++++++++++++++++++++++++++++
 core/plugins/jdo-datanucleus-5/pom.xml      | 45 ++++++++++++++++++++++++++++
 core/unittestsupport-test/pom.xml           | 45 ++++++++++++++++++++++++++++
 core/webdocker/pom.xml                      | 42 ++++++++++++++++++++++++++
 19 files changed, 853 insertions(+)

diff --git a/core/commons/pom.xml b/core/commons/pom.xml
index 9e69a91..5a2d3e6 100644
--- a/core/commons/pom.xml
+++ b/core/commons/pom.xml
@@ -73,4 +73,49 @@
         
     </dependencies>
 
+    <profiles>
+        <profile>
+            <id>flatten</id>
+            <activation>
+                <property>
+                    <name>!skip.flatten</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>flatten-maven-plugin</artifactId>
+                        <version>1.0.0</version>
+                        <executions>
+                            <execution>
+                                <id>flatten</id>
+                                <phase>process-resources</phase>
+                                <goals>
+                                    <goal>flatten</goal>
+                                </goals>
+                                <configuration>
+                                    <flattenMode>defaults</flattenMode>
+                                    <updatePomFile>true</updatePomFile>
+                                    <pomElements>
+                                        <name>resolve</name>
+                                        <description>resolve</description>
+                                        <dependencies>resolve</dependencies>
+                                    </pomElements>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>flatten.clean</id>
+                                <phase>clean</phase>
+                                <goals>
+                                    <goal>clean</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
 </project>
diff --git a/core/legacy/applib-legacy/pom.xml b/core/legacy/applib-legacy/pom.xml
index e09bd52..f50d511 100644
--- a/core/legacy/applib-legacy/pom.xml
+++ b/core/legacy/applib-legacy/pom.xml
@@ -106,5 +106,50 @@
 
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 
 </project>
\ No newline at end of file
diff --git a/core/legacy/integtestsupport-legacy/pom.xml b/core/legacy/integtestsupport-legacy/pom.xml
index 0b7470c..26cde05 100644
--- a/core/legacy/integtestsupport-legacy/pom.xml
+++ b/core/legacy/integtestsupport-legacy/pom.xml
@@ -118,4 +118,50 @@
         </dependency>
 
 	</dependencies>
+
+    <profiles>
+        <profile>
+            <id>flatten</id>
+            <activation>
+                <property>
+                    <name>!skip.flatten</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>flatten-maven-plugin</artifactId>
+                        <version>1.0.0</version>
+                        <executions>
+                            <execution>
+                                <id>flatten</id>
+                                <phase>process-resources</phase>
+                                <goals>
+                                    <goal>flatten</goal>
+                                </goals>
+                                <configuration>
+                                    <flattenMode>defaults</flattenMode>
+                                    <updatePomFile>true</updatePomFile>
+                                    <pomElements>
+                                        <name>resolve</name>
+                                        <description>resolve</description>
+                                        <dependencies>resolve</dependencies>
+                                    </pomElements>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>flatten.clean</id>
+                                <phase>clean</phase>
+                                <goals>
+                                    <goal>clean</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
 </project>
diff --git a/core/legacy/metamodel-legacy/pom.xml b/core/legacy/metamodel-legacy/pom.xml
index cb050db..66d010e 100644
--- a/core/legacy/metamodel-legacy/pom.xml
+++ b/core/legacy/metamodel-legacy/pom.xml
@@ -92,4 +92,49 @@
 
     </dependencies>
 
+    <profiles>
+        <profile>
+            <id>flatten</id>
+            <activation>
+                <property>
+                    <name>!skip.flatten</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>flatten-maven-plugin</artifactId>
+                        <version>1.0.0</version>
+                        <executions>
+                            <execution>
+                                <id>flatten</id>
+                                <phase>process-resources</phase>
+                                <goals>
+                                    <goal>flatten</goal>
+                                </goals>
+                                <configuration>
+                                    <flattenMode>defaults</flattenMode>
+                                    <updatePomFile>true</updatePomFile>
+                                    <pomElements>
+                                        <name>resolve</name>
+                                        <description>resolve</description>
+                                        <dependencies>resolve</dependencies>
+                                    </pomElements>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>flatten.clean</id>
+                                <phase>clean</phase>
+                                <goals>
+                                    <goal>clean</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
 </project>
diff --git a/core/legacy/runtime-legacy/pom.xml b/core/legacy/runtime-legacy/pom.xml
index cda80ee..d2753f9 100644
--- a/core/legacy/runtime-legacy/pom.xml
+++ b/core/legacy/runtime-legacy/pom.xml
@@ -154,5 +154,48 @@
             </dependencies>
         </profile>
 
+        <profile>
+            <id>flatten</id>
+            <activation>
+                <property>
+                    <name>!skip.flatten</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>flatten-maven-plugin</artifactId>
+                        <version>1.0.0</version>
+                        <executions>
+                            <execution>
+                                <id>flatten</id>
+                                <phase>process-resources</phase>
+                                <goals>
+                                    <goal>flatten</goal>
+                                </goals>
+                                <configuration>
+                                    <flattenMode>defaults</flattenMode>
+                                    <updatePomFile>true</updatePomFile>
+                                    <pomElements>
+                                        <name>resolve</name>
+                                        <description>resolve</description>
+                                        <dependencies>resolve</dependencies>
+                                    </pomElements>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>flatten.clean</id>
+                                <phase>clean</phase>
+                                <goals>
+                                    <goal>clean</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
     </profiles>
+
 </project>
diff --git a/core/legacy/transition-1-2/pom.xml b/core/legacy/transition-1-2/pom.xml
index aa673aa..57c987b 100644
--- a/core/legacy/transition-1-2/pom.xml
+++ b/core/legacy/transition-1-2/pom.xml
@@ -105,5 +105,49 @@
 
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
 
 </project>
\ No newline at end of file
diff --git a/core/legacy/unittestsupport-legacy/pom.xml b/core/legacy/unittestsupport-legacy/pom.xml
index 98f59e2..aaef39d 100644
--- a/core/legacy/unittestsupport-legacy/pom.xml
+++ b/core/legacy/unittestsupport-legacy/pom.xml
@@ -106,4 +106,49 @@
 
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 </project>
diff --git a/core/legacy/viewer-wicket-ui-legacy/pom.xml b/core/legacy/viewer-wicket-ui-legacy/pom.xml
index 3771f6b7..d4ee2bc 100644
--- a/core/legacy/viewer-wicket-ui-legacy/pom.xml
+++ b/core/legacy/viewer-wicket-ui-legacy/pom.xml
@@ -86,4 +86,50 @@
 		</dependency>
 
 	</dependencies>
+
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 </project>
diff --git a/core/plugins/codegen-bytebuddy/pom.xml b/core/plugins/codegen-bytebuddy/pom.xml
index 4d021f7..413ed6d 100644
--- a/core/plugins/codegen-bytebuddy/pom.xml
+++ b/core/plugins/codegen-bytebuddy/pom.xml
@@ -77,5 +77,50 @@
 
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 
 </project>
\ No newline at end of file
diff --git a/core/plugins/codegen-javassist/pom.xml b/core/plugins/codegen-javassist/pom.xml
index bbce5a7..7768755 100644
--- a/core/plugins/codegen-javassist/pom.xml
+++ b/core/plugins/codegen-javassist/pom.xml
@@ -80,4 +80,50 @@
 	</dependencies>
 
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
+
 </project>
\ No newline at end of file
diff --git a/core/plugins/discovery-reflections/pom.xml b/core/plugins/discovery-reflections/pom.xml
index 2bbab83..98883c0 100644
--- a/core/plugins/discovery-reflections/pom.xml
+++ b/core/plugins/discovery-reflections/pom.xml
@@ -86,5 +86,50 @@
 
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 
 </project>
\ No newline at end of file
diff --git a/core/plugins/eventbus-axon/pom.xml b/core/plugins/eventbus-axon/pom.xml
index bef0454..8b6e47d 100644
--- a/core/plugins/eventbus-axon/pom.xml
+++ b/core/plugins/eventbus-axon/pom.xml
@@ -89,4 +89,50 @@
 
 	</dependencies>
 
+
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 </project>
\ No newline at end of file
diff --git a/core/plugins/eventbus-guava/pom.xml b/core/plugins/eventbus-guava/pom.xml
index 8e7b4c4..4c02ee7 100644
--- a/core/plugins/eventbus-guava/pom.xml
+++ b/core/plugins/eventbus-guava/pom.xml
@@ -79,5 +79,50 @@
 
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 
 </project>
\ No newline at end of file
diff --git a/core/plugins/jaxrs-resteasy-3/pom.xml b/core/plugins/jaxrs-resteasy-3/pom.xml
index 397d1a1..735651b 100644
--- a/core/plugins/jaxrs-resteasy-3/pom.xml
+++ b/core/plugins/jaxrs-resteasy-3/pom.xml
@@ -158,5 +158,50 @@
 
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 
 </project>
\ No newline at end of file
diff --git a/core/plugins/jaxrs-resteasy-4/pom.xml b/core/plugins/jaxrs-resteasy-4/pom.xml
index 6f5488a..6a8ab39 100644
--- a/core/plugins/jaxrs-resteasy-4/pom.xml
+++ b/core/plugins/jaxrs-resteasy-4/pom.xml
@@ -158,5 +158,50 @@
 
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 
 </project>
\ No newline at end of file
diff --git a/core/plugins/jdo-datanucleus-4/pom.xml b/core/plugins/jdo-datanucleus-4/pom.xml
index 4fdb49b..ca44847 100644
--- a/core/plugins/jdo-datanucleus-4/pom.xml
+++ b/core/plugins/jdo-datanucleus-4/pom.xml
@@ -151,5 +151,50 @@
         
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 
 </project>
\ No newline at end of file
diff --git a/core/plugins/jdo-datanucleus-5/pom.xml b/core/plugins/jdo-datanucleus-5/pom.xml
index 3a67439..6b7895a 100644
--- a/core/plugins/jdo-datanucleus-5/pom.xml
+++ b/core/plugins/jdo-datanucleus-5/pom.xml
@@ -150,5 +150,50 @@
 
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 
 </project>
\ No newline at end of file
diff --git a/core/unittestsupport-test/pom.xml b/core/unittestsupport-test/pom.xml
index aa63136..55113ec 100644
--- a/core/unittestsupport-test/pom.xml
+++ b/core/unittestsupport-test/pom.xml
@@ -116,4 +116,49 @@
 
 	</dependencies>
 
+	<profiles>
+		<profile>
+			<id>flatten</id>
+			<activation>
+				<property>
+					<name>!skip.flatten</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>flatten-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>flatten</id>
+								<phase>process-resources</phase>
+								<goals>
+									<goal>flatten</goal>
+								</goals>
+								<configuration>
+									<flattenMode>defaults</flattenMode>
+									<updatePomFile>true</updatePomFile>
+									<pomElements>
+										<name>resolve</name>
+										<description>resolve</description>
+										<dependencies>resolve</dependencies>
+									</pomElements>
+								</configuration>
+							</execution>
+							<execution>
+								<id>flatten.clean</id>
+								<phase>clean</phase>
+								<goals>
+									<goal>clean</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
 </project>
diff --git a/core/webdocker/pom.xml b/core/webdocker/pom.xml
index 19e5366..92c2a32 100644
--- a/core/webdocker/pom.xml
+++ b/core/webdocker/pom.xml
@@ -261,6 +261,48 @@
             </build>
         </profile>
 
+        <profile>
+            <id>flatten</id>
+            <activation>
+                <property>
+                    <name>!skip.flatten</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>flatten-maven-plugin</artifactId>
+                        <version>1.0.0</version>
+                        <executions>
+                            <execution>
+                                <id>flatten</id>
+                                <phase>process-resources</phase>
+                                <goals>
+                                    <goal>flatten</goal>
+                                </goals>
+                                <configuration>
+                                    <flattenMode>defaults</flattenMode>
+                                    <updatePomFile>true</updatePomFile>
+                                    <pomElements>
+                                        <name>resolve</name>
+                                        <description>resolve</description>
+                                        <dependencies>resolve</dependencies>
+                                    </pomElements>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>flatten.clean</id>
+                                <phase>clean</phase>
+                                <goals>
+                                    <goal>clean</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
     </profiles>
 
 </project>


[isis] 13/19: merge - fixes trivial typo in .adoc

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

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

commit a9d3ae35d1c0786daf05a285667add2b682ed5d6
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:31:19 2018 +0100

    merge - fixes trivial typo in .adoc
---
 adocs/documentation/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/adocs/documentation/pom.xml b/adocs/documentation/pom.xml
index 268a367..467f33e 100644
--- a/adocs/documentation/pom.xml
+++ b/adocs/documentation/pom.xml
@@ -225,7 +225,7 @@
                                         <delete includeemptydirs="true">
                                             <fileset dir="${isis-site-latest.dir}" includes="**/*"/>
                                         </delete>
-p
+
                                         <echo message=""/>
                                         <echo message=""/>
                                         <mkdir 


[isis] 14/19: ISIS-1969: tiny improvement on the packaging directive within helloworld.

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

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

commit c8ce9ca9507272a7b43cc5513738d5783357bfad
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:35:33 2018 +0100

    ISIS-1969: tiny improvement on the packaging directive within helloworld.
---
 example/application/helloworld/pom.xml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/example/application/helloworld/pom.xml b/example/application/helloworld/pom.xml
index 041a85d..265d704 100644
--- a/example/application/helloworld/pom.xml
+++ b/example/application/helloworld/pom.xml
@@ -232,7 +232,9 @@
                         <version>${maven-war-plugin.version}</version>
                         <configuration>
                             <warName>${maven-war-plugin.warName}</warName>
-                            <packagingExcludes>%regex[WEB-INF/lib/(?!common-A|common-B).*.jar]</packagingExcludes>
+                            <packagingExcludes>
+                                %regex[WEB-INF/lib/(?!helloworld).*.jar]
+                            </packagingExcludes>
                             <archive>
                                 <manifest>
                                     <addClasspath>false</addClasspath>


[isis] 18/19: Merge master (6eca40987c939fe967fe323cbf671bd9b31c3f69) into v2

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

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

commit 85f266924689b0aba3a5d0778193ca3e1e56eb41
Merge: 84a8d5d 6eca409
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:38:59 2018 +0100

    Merge master (6eca40987c939fe967fe323cbf671bd9b31c3f69) into v2
    
    # Conflicts:
    #	adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_available-domain-services_framework-provided.adoc
    #	core/applib/pom.xml
    #	core/maven-plugin/pom.xml
    #	core/pom.xml
    #	core/webdocker/pom.xml
    #	example/application/simpleapp/module-simple/pom.xml
    #	example/application/simpleapp/pom.xml



[isis] 08/19: merge (ISIS-1965 & ISIS-1977) - always run flatten plugin, even if -Drevision is not specified (forward port from master)

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

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

commit bdf734a8ab784ec80657b5c64b172b22db732458
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:27:13 2018 +0100

    merge (ISIS-1965 & ISIS-1977) - always run flatten plugin, even if -Drevision is not specified (forward port from master)
---
 core/applib/pom.xml                          | 4 ++--
 core/integtestsupport/pom.xml                | 2 +-
 core/log4j/pom.xml                           | 2 +-
 core/maven-plugin/pom.xml                    | 2 +-
 core/mavendeps/intellij/pom.xml              | 2 +-
 core/mavendeps/testing/pom.xml               | 2 +-
 core/mavendeps/webapp/pom.xml                | 2 +-
 core/metamodel/pom.xml                       | 2 +-
 core/runtime/pom.xml                         | 2 +-
 core/schema/pom.xml                          | 2 +-
 core/security-shiro/pom.xml                  | 2 +-
 core/security/pom.xml                        | 2 +-
 core/specsupport/pom.xml                     | 2 +-
 core/unittestsupport/pom.xml                 | 2 +-
 core/viewer-restfulobjects-applib/pom.xml    | 2 +-
 core/viewer-restfulobjects-rendering/pom.xml | 2 +-
 core/viewer-restfulobjects-server/pom.xml    | 2 +-
 core/viewer-wicket-applib/pom.xml            | 2 +-
 core/viewer-wicket-impl/pom.xml              | 2 +-
 core/viewer-wicket-model/pom.xml             | 2 +-
 core/viewer-wicket-ui/pom.xml                | 2 +-
 core/webserver/pom.xml                       | 2 +-
 core/wrapper/pom.xml                         | 2 +-
 23 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/core/applib/pom.xml b/core/applib/pom.xml
index 40bfe2e..6e087af 100644
--- a/core/applib/pom.xml
+++ b/core/applib/pom.xml
@@ -103,7 +103,7 @@
             	</exclusion>
             </exclusions>
         </dependency>
-        
+
     </dependencies>
 
     <profiles>
@@ -111,7 +111,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/integtestsupport/pom.xml b/core/integtestsupport/pom.xml
index b57dca4..1a380c2 100644
--- a/core/integtestsupport/pom.xml
+++ b/core/integtestsupport/pom.xml
@@ -108,7 +108,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/log4j/pom.xml b/core/log4j/pom.xml
index 8cf4c55..511c5b2 100644
--- a/core/log4j/pom.xml
+++ b/core/log4j/pom.xml
@@ -66,7 +66,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/maven-plugin/pom.xml b/core/maven-plugin/pom.xml
index 93d6a31..48211e5 100644
--- a/core/maven-plugin/pom.xml
+++ b/core/maven-plugin/pom.xml
@@ -315,7 +315,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/mavendeps/intellij/pom.xml b/core/mavendeps/intellij/pom.xml
index e37cc5e..5296d29 100644
--- a/core/mavendeps/intellij/pom.xml
+++ b/core/mavendeps/intellij/pom.xml
@@ -43,7 +43,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/mavendeps/testing/pom.xml b/core/mavendeps/testing/pom.xml
index e8f9a15..addfa14 100644
--- a/core/mavendeps/testing/pom.xml
+++ b/core/mavendeps/testing/pom.xml
@@ -81,7 +81,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/mavendeps/webapp/pom.xml b/core/mavendeps/webapp/pom.xml
index 585ea0e..ad242af 100644
--- a/core/mavendeps/webapp/pom.xml
+++ b/core/mavendeps/webapp/pom.xml
@@ -98,7 +98,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/metamodel/pom.xml b/core/metamodel/pom.xml
index 9545a1d..2d4e5b1 100644
--- a/core/metamodel/pom.xml
+++ b/core/metamodel/pom.xml
@@ -112,7 +112,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/runtime/pom.xml b/core/runtime/pom.xml
index 7d60684..fc6cf25 100644
--- a/core/runtime/pom.xml
+++ b/core/runtime/pom.xml
@@ -162,7 +162,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/schema/pom.xml b/core/schema/pom.xml
index 1beefc5..ba702aa 100644
--- a/core/schema/pom.xml
+++ b/core/schema/pom.xml
@@ -137,7 +137,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/security-shiro/pom.xml b/core/security-shiro/pom.xml
index fc335f9..7f0a95e 100644
--- a/core/security-shiro/pom.xml
+++ b/core/security-shiro/pom.xml
@@ -121,7 +121,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/security/pom.xml b/core/security/pom.xml
index 0ce8138..80ee7ff 100644
--- a/core/security/pom.xml
+++ b/core/security/pom.xml
@@ -52,7 +52,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/specsupport/pom.xml b/core/specsupport/pom.xml
index ff3ee24..0fc2608 100644
--- a/core/specsupport/pom.xml
+++ b/core/specsupport/pom.xml
@@ -79,7 +79,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/unittestsupport/pom.xml b/core/unittestsupport/pom.xml
index 36b2302..1b9dfc2 100644
--- a/core/unittestsupport/pom.xml
+++ b/core/unittestsupport/pom.xml
@@ -108,7 +108,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/viewer-restfulobjects-applib/pom.xml b/core/viewer-restfulobjects-applib/pom.xml
index e703f03..46777a3 100644
--- a/core/viewer-restfulobjects-applib/pom.xml
+++ b/core/viewer-restfulobjects-applib/pom.xml
@@ -92,7 +92,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/viewer-restfulobjects-rendering/pom.xml b/core/viewer-restfulobjects-rendering/pom.xml
index 5dbd37c..1121a92 100644
--- a/core/viewer-restfulobjects-rendering/pom.xml
+++ b/core/viewer-restfulobjects-rendering/pom.xml
@@ -64,7 +64,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/viewer-restfulobjects-server/pom.xml b/core/viewer-restfulobjects-server/pom.xml
index c54a75b..b00d5e5 100644
--- a/core/viewer-restfulobjects-server/pom.xml
+++ b/core/viewer-restfulobjects-server/pom.xml
@@ -69,7 +69,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/viewer-wicket-applib/pom.xml b/core/viewer-wicket-applib/pom.xml
index 03cc160..9cf5b0a 100644
--- a/core/viewer-wicket-applib/pom.xml
+++ b/core/viewer-wicket-applib/pom.xml
@@ -90,7 +90,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/viewer-wicket-impl/pom.xml b/core/viewer-wicket-impl/pom.xml
index 5be4364..27cd303 100644
--- a/core/viewer-wicket-impl/pom.xml
+++ b/core/viewer-wicket-impl/pom.xml
@@ -107,7 +107,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/viewer-wicket-model/pom.xml b/core/viewer-wicket-model/pom.xml
index a9b0700..2bf2de2 100644
--- a/core/viewer-wicket-model/pom.xml
+++ b/core/viewer-wicket-model/pom.xml
@@ -74,7 +74,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/viewer-wicket-ui/pom.xml b/core/viewer-wicket-ui/pom.xml
index 673a3eb..e6a0eff 100644
--- a/core/viewer-wicket-ui/pom.xml
+++ b/core/viewer-wicket-ui/pom.xml
@@ -173,7 +173,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/webserver/pom.xml b/core/webserver/pom.xml
index f08139e..02175d1 100644
--- a/core/webserver/pom.xml
+++ b/core/webserver/pom.xml
@@ -64,7 +64,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>
diff --git a/core/wrapper/pom.xml b/core/wrapper/pom.xml
index 6e537a9..f7337ab 100644
--- a/core/wrapper/pom.xml
+++ b/core/wrapper/pom.xml
@@ -67,7 +67,7 @@
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>


[isis] 09/19: merge - minor tidy-up on pom.xml (from comparing with master branch)

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

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

commit 3d0d765094e7afa7a8625b4dcf28a146f7d67937
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:29:45 2018 +0100

    merge - minor tidy-up on pom.xml (from comparing with master branch)
---
 core/log4j/pom.xml                                 | 10 +--
 core/pom.xml                                       | 91 ++++++++++++----------
 core/runtime/pom.xml                               | 41 +++++-----
 core/security-shiro/pom.xml                        |  7 +-
 core/unittestsupport/pom.xml                       | 66 +++++++++-------
 core/viewer-restfulobjects-applib/pom.xml          |  7 +-
 core/viewer-wicket-ui/pom.xml                      |  8 --
 core/webserver/pom.xml                             |  9 ---
 .../application/simpleapp/module-simple/pom.xml    |  9 ++-
 9 files changed, 111 insertions(+), 137 deletions(-)

diff --git a/core/log4j/pom.xml b/core/log4j/pom.xml
index 511c5b2..06012af 100644
--- a/core/log4j/pom.xml
+++ b/core/log4j/pom.xml
@@ -42,16 +42,8 @@
             <artifactId>log4j</artifactId>
         </dependency>
 
-<!-- replaced by javaee-api -->        
-<!-- to resolve log4j's optional dependency on javax.mail:mail:1.4 -->
-<!--     <dependency> -->
-<!--         <groupId>org.apache.geronimo.specs</groupId> -->
-<!--         <artifactId>geronimo-javamail_1.4_spec</artifactId> -->
-<!--         <optional>true</optional> -->
-<!--         <scope>provided</scope> -->
-<!--     </dependency> -->
-        
         <!-- JEE API -->
+        <!-- (replaces org.apache.geronimo.specs:geronimo-javamail_1.4_spec for javax.mail:mail) -->
         <dependency>
             <groupId>javax</groupId>
             <artifactId>javaee-api</artifactId>
diff --git a/core/pom.xml b/core/pom.xml
index 0f7e3b8..0c95b1f 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -88,11 +88,9 @@
 [6] https://github.com/moment/moment/blob/develop/LICENSE</license.additional-notes>
 
         <!-- JDO API -->
-        
         <jdo-api.version>3.1</jdo-api.version>
         
         <!-- Isis Datanucleus JDO Plugin dn5 -->
-
 	    <dn5-jdo-api.version>3.2.0-m8</dn5-jdo-api.version>
         <dn5-core.version>5.1.11</dn5-core.version>
         <dn5-api-jdo.version>5.1.9</dn5-api-jdo.version>
@@ -2106,6 +2104,11 @@ ${license.additional-notes}
 
         <!-- TEST DEPENDENCIES -->
         <dependency>
+            <groupId>org.jmock</groupId>
+            <artifactId>jmock-junit4</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>hamcrest-library</artifactId>
             <scope>test</scope>
@@ -2128,11 +2131,6 @@ ${license.additional-notes}
             <artifactId>junit-vintage-engine</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.jmock</groupId>
-            <artifactId>jmock-junit4</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
 	<profiles>
@@ -2373,6 +2371,7 @@ ${license.additional-notes}
                 </plugins>
             </build>
         </profile>
+
         <profile>
             <id>src</id>
             <activation>
@@ -2389,6 +2388,7 @@ ${license.additional-notes}
                 </plugins>
             </build>
         </profile>
+
         <profile>
             <id>git</id>
             <activation>
@@ -2405,42 +2405,8 @@ ${license.additional-notes}
                 </plugins>
             </build>
         </profile>
+
         <profile>
-<<<<<<< HEAD
-            <!--
-            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>
-=======
             <id>flatten</id>
             <activation>
                 <property>
@@ -2475,7 +2441,46 @@ ${license.additional-notes}
                                     <goal>clean</goal>
                                 </goals>
                             </execution>
->>>>>>> master
+                        </executions>
+                    </plugin>
+                </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>
diff --git a/core/runtime/pom.xml b/core/runtime/pom.xml
index fc6cf25..ed66721 100644
--- a/core/runtime/pom.xml
+++ b/core/runtime/pom.xml
@@ -1,16 +1,23 @@
 <?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. -->
-<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">
+<!--
+  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.
+-->
+<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>
@@ -98,11 +105,6 @@
             <artifactId>isis-core-schema</artifactId>
         </dependency>
 
-<!--    <dependency> -->
-<!-- 	    <groupId>dom4j</groupId> -->
-<!--        <artifactId>dom4j</artifactId> -->
-<!--     </dependency> -->
-
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-log4j12</artifactId>
@@ -154,10 +156,6 @@
                 </dependency>
             </dependencies>
         </profile>
-<<<<<<< HEAD
-
-	</profiles>
-=======
         <profile>
             <id>flatten</id>
             <activation>
@@ -202,5 +200,4 @@
         </profile>
     </profiles>
 
->>>>>>> master
 </project>
diff --git a/core/security-shiro/pom.xml b/core/security-shiro/pom.xml
index 7f0a95e..76c0891 100644
--- a/core/security-shiro/pom.xml
+++ b/core/security-shiro/pom.xml
@@ -107,12 +107,7 @@
             <artifactId>shiro-web</artifactId>
         </dependency>
 
-<!-- replaced by javaee-api -->
-<!--    <dependency> -->
-<!--        <groupId>org.apache.geronimo.specs</groupId> -->
-<!--        <artifactId>geronimo-servlet_3.0_spec</artifactId> -->
-<!--        <scope>provided</scope> -->
-<!--    </dependency> -->
+
 
     </dependencies>
 
diff --git a/core/unittestsupport/pom.xml b/core/unittestsupport/pom.xml
index 1b9dfc2..5b6ccca 100644
--- a/core/unittestsupport/pom.xml
+++ b/core/unittestsupport/pom.xml
@@ -1,34 +1,40 @@
 <?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. -->
-<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.apache.isis.core</groupId>
-		<artifactId>isis</artifactId>
-		<version>${revision}</version>
-	</parent>
-
-	<artifactId>isis-core-unittestsupport</artifactId>
-	<name>Apache Isis Unit Test Support</name>
-
-	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.core.unittestsupport</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/core/unittestsupport</git-plugin.propertiesDir>
-	</properties>
-
-	<description>
+<!--
+  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.
+-->
+<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.apache.isis.core</groupId>
+        <artifactId>isis</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+    <artifactId>isis-core-unittestsupport</artifactId>
+    <name>Apache Isis Unit Test Support</name>
+
+    <properties>
+        <jar-plugin.automaticModuleName>org.apache.isis.core.unittestsupport</jar-plugin.automaticModuleName>
+        <git-plugin.propertiesDir>org/apache/isis/core/unittestsupport</git-plugin.propertiesDir>
+    </properties>
+
+    <description>
         Support for writing unit tests; should be added as a dependency with scope=test only
     </description>
 
diff --git a/core/viewer-restfulobjects-applib/pom.xml b/core/viewer-restfulobjects-applib/pom.xml
index 46777a3..325c6e0 100644
--- a/core/viewer-restfulobjects-applib/pom.xml
+++ b/core/viewer-restfulobjects-applib/pom.xml
@@ -51,16 +51,11 @@
             <artifactId>isis-core-applib</artifactId>
         </dependency>
 
-<!--    <dependency> -->
-<!--        <groupId>org.jdom</groupId> -->
-<!--        <artifactId>jdom</artifactId> -->
-<!--    </dependency> -->
-	    
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
         </dependency>
-	
+
         <!-- TEST DEPENDENCIES -->
         <dependency>
             <groupId>org.apache.isis.core</groupId>
diff --git a/core/viewer-wicket-ui/pom.xml b/core/viewer-wicket-ui/pom.xml
index e6a0eff..284933d 100644
--- a/core/viewer-wicket-ui/pom.xml
+++ b/core/viewer-wicket-ui/pom.xml
@@ -131,14 +131,6 @@
             <artifactId>wicket-bootstrap-themes</artifactId>
         </dependency>
 
-<!-- replaced by javaee-api -->
-<!--    
-        <dependency> 
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-servlet_3.0_spec</artifactId>
-            <scope>provided</scope>
-        </dependency>
--->		
 
         <!-- LOGGING DEPENDENCIES - LOG4J -->
 
diff --git a/core/webserver/pom.xml b/core/webserver/pom.xml
index 02175d1..7ad78e2 100644
--- a/core/webserver/pom.xml
+++ b/core/webserver/pom.xml
@@ -48,15 +48,6 @@
             <groupId>org.eclipse.jetty</groupId>
             <artifactId>jetty-webapp</artifactId>
         </dependency>
-	
-<!-- provided by JEE standard API -->		
-<!--
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-servlet_3.0_spec</artifactId>
-            <scope>provided</scope>
-        </dependency>
--->		
     </dependencies>
 
     <profiles>
diff --git a/example/application/simpleapp/module-simple/pom.xml b/example/application/simpleapp/module-simple/pom.xml
index dd1417d..f8e2647 100644
--- a/example/application/simpleapp/module-simple/pom.xml
+++ b/example/application/simpleapp/module-simple/pom.xml
@@ -150,24 +150,25 @@
         
         <dependency>
             <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-plugins-codegen-bytebuddy</artifactId>
+            <artifactId>isis-core-plugins-eventbus-axon</artifactId>
         </dependency>
         
         <dependency>
             <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-plugins-discovery-reflections</artifactId>
+            <artifactId>isis-core-plugins-codegen-bytebuddy</artifactId>
         </dependency>
     
       	<dependency>
             <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-plugins-jdo-datanucleus-5</artifactId>
+            <artifactId>isis-core-plugins-discovery-reflections</artifactId>
         </dependency>
         
         <dependency>
             <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-plugins-eventbus-guava</artifactId>
+            <artifactId>isis-core-plugins-jdo-datanucleus-5</artifactId>
         </dependency>
     
+
     	<dependency>
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-plugins-jaxrs-resteasy-3</artifactId>


[isis] 19/19: ISIS-1895: updates simpleapp and helloworld so can boot

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

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

commit cb2c7ae8fa7a82b7dc9dccdfacfbb775424acf22
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 17:11:09 2018 +0100

    ISIS-1895: updates simpleapp and helloworld so can boot
---
 example/application/helloworld/pom.xml             |  33 ++-
 .../src/main/webapp/WEB-INF/logging.properties     |   4 +-
 .../helloworld/src/main/webapp/WEB-INF/web.xml     | 307 +------------------
 example/application/simpleapp/pom.xml              |   7 +
 .../src/main/webapp/WEB-INF/logging.properties     |   4 +-
 .../webapp/src/main/webapp/WEB-INF/web.xml         | 327 +--------------------
 6 files changed, 63 insertions(+), 619 deletions(-)

diff --git a/example/application/helloworld/pom.xml b/example/application/helloworld/pom.xml
index 265d704..0341bc5 100644
--- a/example/application/helloworld/pom.xml
+++ b/example/application/helloworld/pom.xml
@@ -43,9 +43,17 @@
         <compiler-plugin.target>1.8</compiler-plugin.target>
         <compiler-plugin.compilerArgument>-parameters</compiler-plugin.compilerArgument>
 
+        <!-- override incode-build -->
+        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
+
         <!-- override incode-build (see dn5-xxx.version in isis-core-plugins-jdo-datanucleus-5) -->
         <datanucleus-api-jdo.version>5.1.9</datanucleus-api-jdo.version>
         <datanucleus-core.version>5.1.11</datanucleus-core.version>
+        <datanucleus-api-jdo.version>5.1.9</datanucleus-api-jdo.version>
+        <datanucleus-jodatime.version>5.1.0-release</datanucleus-jodatime.version>
+        <hsqldb.version>2.3.4</hsqldb.version>
+
+        <failOnMissingWebXml>false</failOnMissingWebXml>
 
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@@ -56,6 +64,13 @@
     <build>
         <resources>
             <resource>
+                <filtering>true</filtering>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+            </resource>
+            <resource>
                 <filtering>false</filtering>
                 <directory>src/main/java</directory>
                 <includes>
@@ -143,30 +158,30 @@
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-applib</artifactId>
         </dependency>
-        
-	
-        <!-- ISIS CORE PLUGINS -->      
+
+
+        <!-- ISIS CORE PLUGINS -->
         <dependency>
             <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>
+
+        <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-axon</artifactId>
         </dependency>
-    
-    	<dependency>
+
+        <dependency>
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-plugins-jaxrs-resteasy-3</artifactId>
         </dependency>
diff --git a/example/application/helloworld/src/main/webapp/WEB-INF/logging.properties b/example/application/helloworld/src/main/webapp/WEB-INF/logging.properties
index faa6dcf..573a664 100644
--- a/example/application/helloworld/src/main/webapp/WEB-INF/logging.properties
+++ b/example/application/helloworld/src/main/webapp/WEB-INF/logging.properties
@@ -240,5 +240,5 @@ log4j.additivity.dom.simple.SimpleObject=false
 
 
 # ERROR to suppress the WARNings we get as of 1.15.0
-log4j.logger.org.apache.wicket.page.PartialPageUpdate=ERROR,Console
-log4j.additivity.org.apache.wicket.page.PartialPageUpdate=false
+log4j.logger.org.apache.wicket.page.XmlPartialPageUpdate=ERROR,Console
+log4j.additivity.org.apache.wicket.page.XmlPartialPageUpdate=false
diff --git a/example/application/helloworld/src/main/webapp/WEB-INF/web.xml b/example/application/helloworld/src/main/webapp/WEB-INF/web.xml
index a6c042c..76d33f1 100644
--- a/example/application/helloworld/src/main/webapp/WEB-INF/web.xml
+++ b/example/application/helloworld/src/main/webapp/WEB-INF/web.xml
@@ -28,302 +28,25 @@
         <welcome-file>about/index.html</welcome-file>
     </welcome-file-list>
 
-    <!-- shiro security configuration -->
-    <listener>
-        <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
-    </listener>
-
-    <filter>
-        <filter-name>ShiroFilter</filter-name>
-        <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
-    </filter>
-
-    <filter-mapping>
-        <filter-name>ShiroFilter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-
-
-    <!-- which configuration directory to read overloaded property files from -->
-    <!-- 
-    By default the framework will read configuration properties from the WEB-INF
-    directory (where this web.xml file resides).
-
-    If you want to read configuration files from some other external directory,
-    and the location of that external directory is the same/standardized for all
-    locations where you intend to deploy the WAR file, you can uncomment the
-    'isis.config.dir' context parameter, below, and set it to that standardized
-    location, eg:
-
-    <context-param>
-        <param-name>isis.config.dir</param-name>
-        <param-value>/usr/local/conf</param-value>
-    </context-param>
-
-    If however the location of the external directory changes from one deployment
-    to another (eg system testing, UAT, production etc) then you should be
-    able to override the context parameter through the servlet container's own
-    (proprietary) configuration files.
-
-    For example, if deploying to Tomcat, you can edit $CATALINA_BASE/conf/context.xml,
-    and add:
-
-    <Parameter name="isis.config.dir"
-               value="/usr/local/conf/systest"
-               override="false"/>
-
-    For more detail see: http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Context_Parameters
-    -->
-
-
-    <!--
-    determines which additional configuration files to search for 
-     -->
-    <context-param>
-        <param-name>isis.viewers</param-name>
-        <param-value>wicket,restfulobjects</param-value>
-    </context-param>
-
-
-
-    <!-- 
-    for diagnostics
-    -->
-    <filter>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <filter-class>org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <url-pattern>/wicket/*</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <url-pattern>/restful/*</url-pattern>
-    </filter-mapping>
-
-
-
-    <!-- cache static resources for 1 day -->
-    <filter>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <filter-class>org.apache.isis.core.webapp.content.ResourceCachingFilter</filter-class>
-        <init-param>
-            <param-name>CacheTime</param-name>
-            <param-value>86400</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.css</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.png</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.jpg</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.jpeg</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.gif</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.svg</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.js</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.html</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.swf</url-pattern>
-    </filter-mapping>
-    
-    <servlet>
-        <servlet-name>Resource</servlet-name>
-        <servlet-class>org.apache.isis.core.webapp.content.ResourceServlet</servlet-class>
-    </servlet>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.css</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.png</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.jpg</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.jpeg</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.gif</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.svg</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.js</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.html</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.swf</url-pattern>
-    </servlet-mapping>
+    <!-- can be removed with axon >= 3.5 -->
+    <persistence-context-ref>
+        <persistence-context-ref-name>org.axonframework.common.jpa.ContainerManagedEntityManagerProvider/entityManager</persistence-context-ref-name>
+        <persistence-unit-name>noop</persistence-unit-name>
+    </persistence-context-ref>
 
-
-    <servlet>
-        <servlet-name>WebjarsServlet</servlet-name>
-        <servlet-class>org.webjars.servlet.WebjarsServlet</servlet-class>
-        <init-param>
-            <param-name>disableCache</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <load-on-startup>2</load-on-startup>
-    </servlet>
-    <servlet-mapping>
-        <servlet-name>WebjarsServlet</servlet-name>
-        <url-pattern>/webjars/*</url-pattern>
-    </servlet-mapping>
-
-
-
-    <!--
-    -
-    - config specific to the wicket-viewer
-    -
-    -->
-    <filter>
-        <filter-name>WicketFilter</filter-name>
-        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
-        <init-param>
-            <param-name>applicationClassName</param-name>
-            <param-value>domainapp.webapp.HelloWorldApplication</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>WicketFilter</filter-name>
-        <url-pattern>/wicket/*</url-pattern>
-    </filter-mapping>
-
-
-    <context-param>
-        <param-name>configuration</param-name>
-        <!-- 
-        <param-value>deployment</param-value>
-         -->
-        <param-value>development</param-value>
-    </context-param>
-    
-   
-    <!--
-    -
-    - config specific to the restfulobjects-viewer
-    -
-    -->
-
-    <!--
-    THE FOLLOWING CONFIGURATION IS NOT REQUIRED IF THE WICKET VIEWER IS IN USE.
-    IF THE WICKET VIEWER CONFIGURATION IS REMOVED, THEN UNCOMMENT
-    
     <listener>
-        <listener-class>org.apache.isis.core.webapp.IsisWebAppBootstrapper</listener-class>
+        <listener-class>org.apache.isis.core.webapp.IsisWebAppContextListener</listener-class>
     </listener>
 
     <context-param>
-        <param-name>deploymentType</param-name>
-        <param-value>SERVER_PROTOTYPE</param-value>
+        <param-name>isis.viewer.wicket.app</param-name>
+        <param-value>domainapp.webapp.HelloWorldApplication</param-value>
     </context-param>
-
-    <context-param>
-        <param-name>isis.viewers</param-name>
-        <param-value>restfulobjects</param-value>
-    </context-param>    
-    -->    
-    
-    <!-- bootstrap the RestEasy framework -->
-    <listener>
-        <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
-    </listener>
-
-    <!-- used by RestEasy to determine the JAX-RS resources and other related configuration -->
-    <context-param>
-        <param-name>javax.ws.rs.Application</param-name>
-        <param-value>org.apache.isis.viewer.restfulobjects.server.RestfulObjectsApplication</param-value>
-    </context-param>
-    
-    <context-param>
-        <param-name>resteasy.servlet.mapping.prefix</param-name>
-        <param-value>/restful/</param-value>
-    </context-param>
-    
-
-    <!-- authenticate user, set up an Isis session -->
-    <filter>
-        <filter-name>IsisSessionFilterForRestfulObjects</filter-name>
-        <filter-class>org.apache.isis.core.webapp.IsisSessionFilter</filter-class>
-        <!-- authentication required for REST -->
-        <init-param>
-            <param-name>authenticationSessionStrategy</param-name>
-            <param-value>org.apache.isis.viewer.restfulobjects.server.authentication.AuthenticationSessionStrategyBasicAuth</param-value>
-        </init-param>
-        <init-param>
-            <!-- what to do if no session was found... -->
-            <param-name>whenNoSession</param-name>
-            <!-- ... 401 and a basic authentication challenge if request originates from web browser -->
-            <param-value>auto</param-value>
-        </init-param>
-        <init-param>
-            <param-name>passThru</param-name>
-            <param-value>/restful/swagger</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <!-- this is mapped to the entire app; however the IsisSessionFilter will "notice" if the session filter has already been
-             executed for the request pipeline, and if so will do nothing -->
-        <filter-name>IsisSessionFilterForRestfulObjects</filter-name>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-    </filter-mapping>
-
-    <filter>
-        <filter-name>IsisTransactionFilterForRestfulObjects</filter-name>
-        <filter-class>org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>IsisTransactionFilterForRestfulObjects</filter-name>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-    </filter-mapping>
-
-
-    <servlet>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
-    </servlet>
-    <servlet-mapping>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-        <url-pattern>/restful/*</url-pattern>
-    </servlet-mapping>
-
-
+	
+    <!-- this config value wins over that provided via environment variable PROTOTYPING=true/false -->
+<!-- 	<context-param> -->
+<!-- 		<param-name>isis.viewer.wicket.mode</param-name> -->
+<!-- 		<param-value>development</param-value> -->
+<!-- 	</context-param> -->
+  
 </web-app>
diff --git a/example/application/simpleapp/pom.xml b/example/application/simpleapp/pom.xml
index d7d7878..1cbd1b9 100644
--- a/example/application/simpleapp/pom.xml
+++ b/example/application/simpleapp/pom.xml
@@ -45,11 +45,18 @@
         <compiler-plugin.target>1.8</compiler-plugin.target>
         <compiler-plugin.compilerArgument>-parameters</compiler-plugin.compilerArgument>
 
+        <!-- override incode-build -->
+        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
+
         <!-- override incode-build (see dn5-xxx.version in isis-core-plugins-jdo-datanucleus-5) -->
         <datanucleus-api-jdo.version>5.1.9</datanucleus-api-jdo.version>
         <datanucleus-core.version>5.1.11</datanucleus-core.version>
+        <datanucleus-api-jdo.version>5.1.9</datanucleus-api-jdo.version>
+        <datanucleus-jodatime.version>5.1.0-release</datanucleus-jodatime.version>
         <hsqldb.version>2.3.4</hsqldb.version>
 
+        <failOnMissingWebXml>false</failOnMissingWebXml>
+
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
     </properties>
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/logging.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/logging.properties
index faa6dcf..573a664 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/logging.properties
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/logging.properties
@@ -240,5 +240,5 @@ log4j.additivity.dom.simple.SimpleObject=false
 
 
 # ERROR to suppress the WARNings we get as of 1.15.0
-log4j.logger.org.apache.wicket.page.PartialPageUpdate=ERROR,Console
-log4j.additivity.org.apache.wicket.page.PartialPageUpdate=false
+log4j.logger.org.apache.wicket.page.XmlPartialPageUpdate=ERROR,Console
+log4j.additivity.org.apache.wicket.page.XmlPartialPageUpdate=false
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/web.xml b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/web.xml
index 885e0c9..e17f6ef 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/web.xml
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/web.xml
@@ -28,328 +28,27 @@
         <welcome-file>about/index.html</welcome-file>
     </welcome-file-list>
 
-    <!-- shiro security configuration -->
-    <listener>
-        <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
-    </listener>
-
-    <filter>
-        <filter-name>ShiroFilter</filter-name>
-        <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
-    </filter>
-
-    <filter-mapping>
-        <filter-name>ShiroFilter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-
-
-    <!-- which configuration directory to read overloaded property files from -->
-    <!-- 
-    By default the framework will read configuration properties from the WEB-INF
-    directory (where this web.xml file resides).
-
-    If you want to read configuration files from some other external directory,
-    and the location of that external directory is the same/standardized for all
-    locations where you intend to deploy the WAR file, you can uncomment the
-    'isis.config.dir' context parameter, below, and set it to that standardized
-    location, eg:
-
-    <context-param>
-        <param-name>isis.config.dir</param-name>
-        <param-value>/usr/local/conf</param-value>
-    </context-param>
-
-    If however the location of the external directory changes from one deployment
-    to another (eg system testing, UAT, production etc) then you should be
-    able to override the context parameter through the servlet container's own
-    (proprietary) configuration files.
-
-    For example, if deploying to Tomcat, you can edit $CATALINA_BASE/conf/context.xml,
-    and add:
-
-    <Parameter name="isis.config.dir"
-               value="/usr/local/conf/systest"
-               override="false"/>
-
-    For more detail see: http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Context_Parameters
-    -->
-
-
-    <!--
-    determines which additional configuration files to search for 
-     -->
-    <context-param>
-        <param-name>isis.viewers</param-name>
-        <param-value>wicket,restfulobjects</param-value>
-    </context-param>
-
-
-
-    <!-- 
-    for diagnostics
-    -->
-    <filter>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <filter-class>org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <url-pattern>/wicket/*</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <url-pattern>/restful/*</url-pattern>
-    </filter-mapping>
-
-
+    <!-- can be removed with axon >= 3.5 -->
+    <persistence-context-ref>
+        <persistence-context-ref-name>org.axonframework.common.jpa.ContainerManagedEntityManagerProvider/entityManager</persistence-context-ref-name>
+        <persistence-unit-name>noop</persistence-unit-name>
+    </persistence-context-ref>
 
-    <!-- cache static resources for 1 day -->
-    <filter>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <filter-class>org.apache.isis.core.webapp.content.ResourceCachingFilter</filter-class>
-        <init-param>
-            <param-name>CacheTime</param-name>
-            <param-value>86400</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.css</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.png</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.jpg</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.jpeg</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.gif</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.svg</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.js</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.html</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.swf</url-pattern>
-    </filter-mapping>
-    
-    <servlet>
-        <servlet-name>Resource</servlet-name>
-        <servlet-class>org.apache.isis.core.webapp.content.ResourceServlet</servlet-class>
-    </servlet>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.css</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.png</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.jpg</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.jpeg</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.gif</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.svg</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.js</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.html</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.swf</url-pattern>
-    </servlet-mapping>
-
-
-    <servlet>
-        <servlet-name>WebjarsServlet</servlet-name>
-        <servlet-class>org.webjars.servlet.WebjarsServlet</servlet-class>
-        <init-param>
-            <param-name>disableCache</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <load-on-startup>2</load-on-startup>
-    </servlet>
-    <servlet-mapping>
-        <servlet-name>WebjarsServlet</servlet-name>
-        <url-pattern>/webjars/*</url-pattern>
-    </servlet-mapping>
-
-
-
-    <!--
-    -
-    - config specific to the wicket-viewer
-    -
-    -->
-    <filter>
-        <filter-name>WicketFilter</filter-name>
-        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
-        <init-param>
-            <param-name>applicationClassName</param-name>
-            <param-value>domainapp.webapp.DomainApplication</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>WicketFilter</filter-name>
-        <url-pattern>/wicket/*</url-pattern>
-    </filter-mapping>
-
-
-    <context-param>
-        <param-name>configuration</param-name>
-        <!-- 
-        <param-value>deployment</param-value>
-         -->
-        <param-value>development</param-value>
-    </context-param>
-    
-   
-    <!--
-    -
-    - config specific to the restfulobjects-viewer
-    -
-    -->
-
-    <!--
-    THE FOLLOWING CONFIGURATION IS NOT REQUIRED IF THE WICKET VIEWER IS IN USE.
-    IF THE WICKET VIEWER CONFIGURATION IS REMOVED, THEN UNCOMMENT
-    
     <listener>
-        <listener-class>org.apache.isis.core.webapp.IsisWebAppBootstrapper</listener-class>
+        <listener-class>org.apache.isis.core.webapp.IsisWebAppContextListener</listener-class>
     </listener>
 
-    <context-param>
-        <param-name>deploymentType</param-name>
-        <param-value>SERVER_PROTOTYPE</param-value>
-    </context-param>
 
     <context-param>
-        <param-name>isis.viewers</param-name>
-        <param-value>restfulobjects</param-value>
-    </context-param>    
-    -->    
-    
-    <!-- bootstrap the RestEasy framework -->
-    <listener>
-        <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
-    </listener>
-
-    <!-- used by RestEasy to determine the JAX-RS resources and other related configuration -->
-    <context-param>
-        <param-name>javax.ws.rs.Application</param-name>
-        <param-value>org.apache.isis.viewer.restfulobjects.server.RestfulObjectsApplication</param-value>
-    </context-param>
-    
-    <context-param>
-        <param-name>resteasy.servlet.mapping.prefix</param-name>
-        <param-value>/restful/</param-value>
+        <param-name>isis.viewer.wicket.app</param-name>
+        <param-value>domainapp.webapp.DomainApplication</param-value>
     </context-param>
-    
-
-    <!-- authenticate user, set up an Isis session -->
-    <filter>
-        <filter-name>IsisSessionFilterForRestfulObjects</filter-name>
-        <filter-class>org.apache.isis.core.webapp.IsisSessionFilter</filter-class>
-        <!-- authentication required for REST -->
-        <init-param>
-            <param-name>authenticationSessionStrategy</param-name>
-            <param-value>org.apache.isis.viewer.restfulobjects.server.authentication.AuthenticationSessionStrategyBasicAuth</param-value>
-        </init-param>
-        <init-param>
-            <!-- what to do if no session was found... -->
-            <param-name>whenNoSession</param-name>
-            <!-- ... 401 and a basic authentication challenge if request originates from web browser -->
-            <param-value>auto</param-value>
-        </init-param>
-        <init-param>
-            <param-name>passThru</param-name>
-            <param-value>/restful/swagger</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <!-- this is mapped to the entire app; however the IsisSessionFilter will "notice" if the session filter has already been
-             executed for the request pipeline, and if so will do nothing -->
-        <filter-name>IsisSessionFilterForRestfulObjects</filter-name>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-    </filter-mapping>
-
-    <filter>
-        <filter-name>IsisTransactionFilterForRestfulObjects</filter-name>
-        <filter-class>org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>IsisTransactionFilterForRestfulObjects</filter-name>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-    </filter-mapping>
-
-
-    <servlet>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
-    </servlet>
-    <servlet-mapping>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-        <url-pattern>/restful/*</url-pattern>
-    </servlet-mapping>
-
 
-    <!-- 
-    uncomment to use container-managed datasource;
-    for both container-managed (JTA) and non-container-managed transactions
-     -->
-     <!-- 
-    <resource-ref>
-        <description>db</description>
-        <res-ref-name>jdbc/quickstart</res-ref-name>
-        <res-type>javax.sql.DataSource</res-type>
-        <res-auth>Container</res-auth>
-    </resource-ref>
-      -->
+    <!-- this config value wins over that provided via environment variable PROTOTYPING=true/false -->
+<!-- 	<context-param> -->
+<!-- 		<param-name>isis.viewer.wicket.mode</param-name> -->
+<!-- 		<param-value>development</param-value> -->
+<!-- 	</context-param> -->
 
-    <!--
-    uncomment to use container-managed datasource
-    with container-managed transactions (JTA).
-    -->
-    <!-- 
-    <resource-ref>
-        <description>db</description>
-        <res-ref-name>jdbc/quickstart-nontx</res-ref-name>
-        <res-type>javax.sql.DataSource</res-type>
-        <res-auth>Container</res-auth>
-    </resource-ref>
-     -->
 
 </web-app>


[isis] 06/19: merge - fixes compile issues in SpecificationLoader

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

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

commit b28269410f3c9bac22e2ac4988196d751b302b9c
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:20:30 2018 +0100

    merge - fixes compile issues in SpecificationLoader
---
 .../apache/isis/core/metamodel/specloader/SpecificationLoader.java | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index 543bcb8..59c8644 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -20,7 +20,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
@@ -201,7 +200,6 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     }
 
     private void loadSpecificationsForServices() {
-        final Properties metadataProperties = new Properties();
 
         List<Class<?>> classes = allServiceClasses();
         for (final Class<?> serviceClass : classes) {
@@ -211,13 +209,12 @@ public class SpecificationLoader implements ApplicationScopedComponent {
             ObjectSpecification objectSpecification = internalLoadSpecification(serviceClass, nature);
 
             facetProcessorObjectSpecId.process(
-                    serviceClass, metadataProperties,
+                    serviceClass,
                     MethodRemoverConstants.NULL, objectSpecification);
         }
     }
 
     private void loadSpecificationsForMixins() {
-        final Properties metadataProperties = new Properties();
 
         final Set<Class<?>> mixinTypes = AppManifest.Registry.instance().getMixinTypes();
         if(mixinTypes == null) {
@@ -226,7 +223,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
         for (final Class<?> mixinType : mixinTypes) {
             ObjectSpecification objectSpecification = internalLoadSpecification(mixinType);
             facetProcessorObjectSpecId.process(
-                    mixinType, metadataProperties,
+                    mixinType,
                     MethodRemoverConstants.NULL, objectSpecification);
 
         }


[isis] 10/19: merge (ISIS-1965 & ISIS-1977) - always run flatten plugin, even if -Drevision is not specified (forward port from master)

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

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

commit b88eeaed3a2f42cb3af482ff94dab10a7911d9dc
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:30:06 2018 +0100

    merge (ISIS-1965 & ISIS-1977) - always run flatten plugin, even if -Drevision is not specified (forward port from master)
---
 core/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/pom.xml b/core/pom.xml
index 0c95b1f..72e8435 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -2410,7 +2410,7 @@ ${license.additional-notes}
             <id>flatten</id>
             <activation>
                 <property>
-                    <name>revision</name>
+                    <name>!skip.flatten</name>
                 </property>
             </activation>
             <build>


[isis] 12/19: merge - overrides incode-build props for DN for helloworld and simpleapp

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

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

commit 3214c81631b1a83c4c9a7c51da39e9dce00e2e86
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:31:03 2018 +0100

    merge - overrides incode-build props for DN for helloworld and simpleapp
---
 example/application/helloworld/pom.xml | 5 +++--
 example/application/simpleapp/pom.xml  | 6 +++---
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/example/application/helloworld/pom.xml b/example/application/helloworld/pom.xml
index a695055..041a85d 100644
--- a/example/application/helloworld/pom.xml
+++ b/example/application/helloworld/pom.xml
@@ -43,8 +43,9 @@
         <compiler-plugin.target>1.8</compiler-plugin.target>
         <compiler-plugin.compilerArgument>-parameters</compiler-plugin.compilerArgument>
 
-        <!-- override incode-build -->
-        <datanucleus-core.version>5.1.6</datanucleus-core.version>
+        <!-- override incode-build (see dn5-xxx.version in isis-core-plugins-jdo-datanucleus-5) -->
+        <datanucleus-api-jdo.version>5.1.9</datanucleus-api-jdo.version>
+        <datanucleus-core.version>5.1.11</datanucleus-core.version>
 
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
diff --git a/example/application/simpleapp/pom.xml b/example/application/simpleapp/pom.xml
index f772538..d7d7878 100644
--- a/example/application/simpleapp/pom.xml
+++ b/example/application/simpleapp/pom.xml
@@ -45,9 +45,9 @@
         <compiler-plugin.target>1.8</compiler-plugin.target>
         <compiler-plugin.compilerArgument>-parameters</compiler-plugin.compilerArgument>
 
-        <!-- override incode-build -->
-        <datanucleus-core.version>5.1.6</datanucleus-core.version>
-
+        <!-- override incode-build (see dn5-xxx.version in isis-core-plugins-jdo-datanucleus-5) -->
+        <datanucleus-api-jdo.version>5.1.9</datanucleus-api-jdo.version>
+        <datanucleus-core.version>5.1.11</datanucleus-core.version>
         <hsqldb.version>2.3.4</hsqldb.version>
 
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>


[isis] 05/19: merge - fixes up issues in pom files (version)

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

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

commit 5400a32a35ed4a87a3f32abb0a94edee0f954a42
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Sep 14 16:17:23 2018 +0100

    merge - fixes up issues in pom files (version)
---
 core/pom.xml                           | 4 ----
 example/application/helloworld/pom.xml | 2 +-
 example/application/simpleapp/pom.xml  | 2 +-
 recreate_archetype_RELEASE.sh          | 6 +++---
 recreate_archetype_SNAPSHOT.sh         | 6 +++---
 5 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index 09d4134..0f7e3b8 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -46,12 +46,8 @@
     <inceptionYear>2010</inceptionYear>
 
     <properties>
-<<<<<<< HEAD
         <revision>2.0.0-M2-SNAPSHOT</revision>
-=======
-        <revision>1.16.3-SNAPSHOT</revision>
         <isis.version>${revision}</isis.version>
->>>>>>> master
 
         <jar-plugin.automaticModuleName>org.apache.isis.core</jar-plugin.automaticModuleName>
         <git-plugin.propertiesDir>org/apache/isis/core</git-plugin.propertiesDir>
diff --git a/example/application/helloworld/pom.xml b/example/application/helloworld/pom.xml
index 3c7a73a..a695055 100644
--- a/example/application/helloworld/pom.xml
+++ b/example/application/helloworld/pom.xml
@@ -36,7 +36,7 @@
     <packaging>war</packaging>
 
     <properties>
-        <revision>2.0.0-M1</revision>
+        <revision>2.0.0-M2-SNAPSHOT</revision>
         <isis.version>${revision}</isis.version>
 
         <compiler-plugin.source>1.8</compiler-plugin.source>
diff --git a/example/application/simpleapp/pom.xml b/example/application/simpleapp/pom.xml
index a50ad68..f772538 100644
--- a/example/application/simpleapp/pom.xml
+++ b/example/application/simpleapp/pom.xml
@@ -36,7 +36,7 @@
     <packaging>pom</packaging>
 
     <properties>
-        <revision>2.0.0-M1</revision>
+        <revision>2.0.0-M2-SNAPSHOT</revision>
         <isis.version>${revision}</isis.version>
 
         <lombok.version>[1.18,)</lombok.version>
diff --git a/recreate_archetype_RELEASE.sh b/recreate_archetype_RELEASE.sh
index 5113ba5..fd7d0ad 100644
--- a/recreate_archetype_RELEASE.sh
+++ b/recreate_archetype_RELEASE.sh
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
-export ISISREL=1.16.3
-export ISISDEV=1.16.4-SNAPSHOT
-export JIRA=ISIS-1916
+export ISISREL=2.0.0-M2
+export ISISDEV=2.0.0-M3-SNAPSHOT
+export JIRA=ISIS-1811
 
 export ISISTMP=/c/tmp   # or as required
 export ISISPAR=$ISISREL
diff --git a/recreate_archetype_SNAPSHOT.sh b/recreate_archetype_SNAPSHOT.sh
index 3ecd2fb..c4d9705 100644
--- a/recreate_archetype_SNAPSHOT.sh
+++ b/recreate_archetype_SNAPSHOT.sh
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
-export ISISREL=1.16.3-SNAPSHOT
-export ISISDEV=1.16.3-SNAPSHOT
-export JIRA=ISIS-1916
+export ISISREL=2.0.0-M2-SNAPSHOT
+export ISISDEV=2.0.0-M2-SNAPSHOT
+export JIRA=ISIS-1811
 
 export ISISTMP=/c/tmp   # or as required
 export ISISPAR=$ISISREL