You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2023/03/28 06:37:44 UTC

[causeway] branch master updated: CAUSEWAY-2485: simplifies demo for @DomainObject#entityChangePublishing

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 3e9c01c95e CAUSEWAY-2485: simplifies demo for @DomainObject#entityChangePublishing
3e9c01c95e is described below

commit 3e9c01c95edf8c5b6a6cfac7521bafffdb8d38cf
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Mar 28 07:36:47 2023 +0100

    CAUSEWAY-2485: simplifies demo for @DomainObject#entityChangePublishing
---
 .../src/main/java/demoapp/dom/DemoModuleJpa.java   |  25 ++---
 .../dom/_infra/values/ValueHolderRepository.java   |   6 ++
 .../editing/DomainObjectEditingVm-description.adoc |   4 +-
 .../jpa/DomainObjectEditingJpa-description.adoc    |   2 +
 ...DomainObjectEntityChangePublishingSeeding.java} |   8 +-
 ...ObjectEntityChangePublishingVm-description.adoc |  58 ++++-------
 ...DomainObjectEntityChangePublishingVm.layout.xml |  23 ++---
 ...omainObjectEntityChangePublishingVm_create.java |  99 ------------------
 ...omainObjectEntityChangePublishingVm_delete.java | 112 ---------------------
 ...omainObjectEntityChangePublishingVm_modify.java |  85 ++++++++++++++++
 ...ainObjectEntityChangePublishingVm_objects.java} |  11 +-
 ...inObjectEntityChangePublishingVm_updateAll.java | 100 ------------------
 ...ObjectEntityChangePublishingDisabledEntity.java |  32 ------
 ...bjectEntityChangePublishingDisabledSeeding.java |  38 -------
 ...hingVm_publishingDisabledAnnotatedEntities.java |  47 ---------
 ...ityChangePublishingDisabledJdo-description.adoc |   9 --
 ...ainObjectEntityChangePublishingDisabledJdo.java |  73 --------------
 ...tEntityChangePublishingDisabledJdoEntities.java |  40 --------
 ...ityChangePublishingDisabledJpa-description.adoc |   9 --
 ...ainObjectEntityChangePublishingDisabledJpa.java |  85 ----------------
 ...tEntityChangePublishingDisabledJpaEntities.java |  40 --------
 ...nObjectEntityChangePublishingEnabledEntity.java |  32 ------
 ...jectEntityChangePublishingJdo-description.adoc} |   4 +-
 .../DomainObjectEntityChangePublishingJdo.java}    |  26 ++---
 ...inObjectEntityChangePublishingJdoEntities.java} |  16 +--
 ...jectEntityChangePublishingJpa-description.adoc} |   4 +-
 .../DomainObjectEntityChangePublishingJpa.java}    |  36 +++----
 ...inObjectEntityChangePublishingJpaEntities.java} |  16 +--
 ...ntityChangePublishingEnabledMetaAnnotation.java |  40 --------
 ...ChangePublishingEnabledMetaAnnotatedEntity.java |  32 ------
 ...hangePublishingEnabledMetaAnnotatedSeeding.java |  38 -------
 ...gVm_publishingEnabledMetaAnnotatedEntities.java |  47 ---------
 ...lishingEnabledMetaAnnotatedJdo-description.adoc |  21 ----
 ...ityChangePublishingEnabledMetaAnnotatedJdo.java |  73 --------------
 ...ePublishingEnabledMetaAnnotatedJdoEntities.java |  40 --------
 ...lishingEnabledMetaAnnotatedJpa-description.adoc |  21 ----
 ...ityChangePublishingEnabledMetaAnnotatedJpa.java |  86 ----------------
 ...ePublishingEnabledMetaAnnotatedJpaEntities.java |  40 --------
 ...tityChangePublishingDisabledMetaAnnotation.java |  40 --------
 ...PublishingEnabledMetaAnnotOverriddenEntity.java |  32 ------
 ...ublishingEnabledMetaAnnotOverriddenSeeding.java |  38 -------
 ...blishingEnabledMetaAnnotOverriddenEntities.java |  47 ---------
 ...gEnabledMetaAnnotOverriddenJdo-description.adoc |  24 -----
 ...ngePublishingEnabledMetaAnnotOverriddenJdo.java |  77 --------------
 ...shingEnabledMetaAnnotOverriddenJdoEntities.java |  40 --------
 ...gEnabledMetaAnnotOverriddenJpa-description.adoc |  24 -----
 ...ngePublishingEnabledMetaAnnotOverriddenJpa.java |  89 ----------------
 ...shingEnabledMetaAnnotOverriddenJpaEntities.java |  40 --------
 .../demo/domain/src/main/resources/application.yml |   9 +-
 49 files changed, 189 insertions(+), 1749 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/DemoModuleJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/DemoModuleJpa.java
index b0e66514c1..11bd677eef 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/DemoModuleJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/DemoModuleJpa.java
@@ -18,24 +18,13 @@
  */
 package demoapp.dom;
 
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Profile;
-
-import org.apache.causeway.extensions.commandlog.jpa.CausewayModuleExtCommandLogPersistenceJpa;
-import org.apache.causeway.persistence.jpa.eclipselink.CausewayModulePersistenceJpaEclipselink;
-
 import demoapp.dom.domain.actions.Action.commandPublishing.jpa.ActionCommandPublishingJpa;
 import demoapp.dom.domain.actions.Action.executionPublishing.jpa.ActionExecutionPublishingJpa;
 import demoapp.dom.domain.objects.DomainObject.aliased.jpa.DomainObjectAliasedJpa;
 import demoapp.dom.domain.objects.DomainObject.autoComplete.jpa.DomainObjectAutoCompleteJpa;
 import demoapp.dom.domain.objects.DomainObject.bounded.jpa.DomainObjectBoundingJpa;
 import demoapp.dom.domain.objects.DomainObject.editing.jpa.DomainObjectEditingJpa;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.jpa.DomainObjectEntityChangePublishingDisabledJpa;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.jpa.DomainObjectEntityChangePublishingEnabledJpa;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.jpa.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.jpa.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa;
+import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.jpa.DomainObjectEntityChangePublishingJpa;
 import demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.jpa.JaxbRefJpa;
 import demoapp.dom.domain.objects.other.embedded.jpa.NumberConstantJpa;
 import demoapp.dom.domain.properties.Property.commandPublishing.jpa.PropertyCommandPublishingJpa;
@@ -86,6 +75,13 @@ import demoapp.dom.types.primitive.ints.jpa.PrimitiveIntJpa;
 import demoapp.dom.types.primitive.longs.jpa.PrimitiveLongJpa;
 import demoapp.dom.types.primitive.shorts.jpa.PrimitiveShortJpa;
 
+import org.apache.causeway.extensions.commandlog.jpa.CausewayModuleExtCommandLogPersistenceJpa;
+import org.apache.causeway.persistence.jpa.eclipselink.CausewayModulePersistenceJpaEclipselink;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.context.annotation.Profile;
+
 @Configuration
 @Profile("demo-jpa")
 @Import({
@@ -99,6 +95,7 @@ import demoapp.dom.types.primitive.shorts.jpa.PrimitiveShortJpa;
         DomainObjectAutoCompleteJpa.class,
         DomainObjectBoundingJpa.class,
         DomainObjectEditingJpa.class,
+        DomainObjectEntityChangePublishingJpa.class,
 
         CausewayBlobJpa.class,
         CausewayClobJpa.class,
@@ -151,10 +148,6 @@ import demoapp.dom.types.primitive.shorts.jpa.PrimitiveShortJpa;
         TenantedJpa.class,
         WrapperFactoryJpa.class,
 
-        DomainObjectEntityChangePublishingDisabledJpa.class,
-        DomainObjectEntityChangePublishingEnabledJpa.class,
-        DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa.class,
-        DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa.class,
         ActionCommandPublishingJpa.class,
         ActionExecutionPublishingJpa.class,
         PropertyCommandPublishingJpa.class,
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolderRepository.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolderRepository.java
index 1404af6011..eb12c63e47 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolderRepository.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolderRepository.java
@@ -18,6 +18,7 @@
  */
 package demoapp.dom._infra.values;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -58,6 +59,11 @@ public abstract class ValueHolderRepository<T, E extends ValueHolder<T>> {
         return all().stream().findFirst();
     }
 
+    public List<E> firstAsList() {
+        List<E> all = all();
+        return all.isEmpty() ? Collections.emptyList() : Collections.singletonList(all.get(0));
+    }
+
     public void remove(Object entity) {
         repositoryService.removeAndFlush(entity);
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/DomainObjectEditingVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/DomainObjectEditingVm-description.adoc
index 59396d9809..71902b325d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/DomainObjectEditingVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/DomainObjectEditingVm-description.adoc
@@ -11,10 +11,10 @@ causeway:
   applib:
     annotation:
       domain-object:
-        editing: false
+        editing: false    # false | true
 ----
 
-This demo application is configured in this way.
+This demo application is configured in this recommended way, with property editing disabled by default.
 
 The link:https://causeway.apache.org/refguide/2.0.0-RC1/applib/index/annotation/DomainObject.html#editing[@DomainObject#editing] annotation can be used to override the default for a specific object, so that all of its properties can be edited.
 It's also possible to override the class-level default on a per-property basis, using the link:https://causeway.apache.org/refguide/2.0.0-RC1/applib/index/annotation/Property.html#editing[@Property#editing] attribute.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/jpa/DomainObjectEditingJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/jpa/DomainObjectEditingJpa-description.adoc
index 022c59a5c7..4742981c55 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/jpa/DomainObjectEditingJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/jpa/DomainObjectEditingJpa-description.adoc
@@ -1,5 +1,7 @@
 :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 [...]
 
+In this demo app, property editing has been disabled by default, but has been explicitly enabled for this class:
+
 [source,java,indent=0]
 .DomainObjectEditingJpa.java
 ----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingEnabledSeeding.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingSeeding.java
similarity index 86%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingEnabledSeeding.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingSeeding.java
index 95d2e89b7f..d6c3802f76 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingEnabledSeeding.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingSeeding.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled;
+package demoapp.dom.domain.objects.DomainObject.entityChangePublishing;
 
 import javax.inject.Inject;
 
@@ -26,12 +26,12 @@ import demoapp.dom._infra.seed.SeedServiceAbstract;
 import demoapp.dom._infra.values.ValueHolderRepository;
 
 @Service
-public class DomainObjectEntityChangePublishingEnabledSeeding
+public class DomainObjectEntityChangePublishingSeeding
 extends SeedServiceAbstract {
 
     @Inject
-    public DomainObjectEntityChangePublishingEnabledSeeding(
-            ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledEntity> entities) {
+    public DomainObjectEntityChangePublishingSeeding(
+            ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEntity> entities) {
         super(entities);
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm-description.adoc
index a5db42ced6..d47bc445a2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm-description.adoc
@@ -1,55 +1,41 @@
 :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 [...]
 
-The `entityChangePublishing` element for a domain object means that all registered implementation(s) of the link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/EntityChangesSubscriber.html#spi[EntityChangesSubscriber] SPI will be notified of the identity and nature of the change (created/updated/deleted) to each modified domain objects.
-This is provided in the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/schema/chg.html[ChangesDto], obtained from the  link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/EntityChanges.html[`EntityChanges`] parameter of the callback.
-
-This notification is done only once per interaction, so will include _all_ domain objects that were changed.
-The event object can be converted to type .
+Entity change publishing allows the application to subscribe to events that indicate which entities have been created/updated/deleted, as provided by the link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/EntityChangesSubscriber.html#spi[EntityChangesSubscriber] SPI.
+The details are provided in the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/schema/chg.html[ChangesDto], obtained from the  link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/EntityChanges.html[`EntityChanges`] parameter of the callback.
+This callback is done only at the end of the interaction.
 
 Common use cases are to replicate data to another system, or for gathering metrics ("which objects change the most?").
 A typical SPI implementation could publish the event over the network, or perhaps store in a database.
 
-The element can be specified using either the `@DomainObject` annotation, or through a meta-annotation.
-
 NOTE: Publishing of domain objects is only supported for domain entities, not view models.
 
+Entity change publishing can be enabled or disabled globally using a configuration property:
 
-=== How this demo works
-
-This current page is a view model which has four collections of entities, each a different annotations:
-
-* annotated using `@DomainObject(entityChangePublishing=...)` as enabled
-
-* annotated using `@DomainObject(entityChangePublishing=...)` as disabled
+[source,yaml]
+.application.yml
+----
+causeway:
+  applib:
+    annotation:
+      domain-object:
+        entity-change-publishing: 'none'    # 'none' | 'all'
+----
 
-* meta-annotated as enabled
+This demo app has entity change publishing disabled by default.
 
-* meta-annotated as disabled, but then overridden
+Entity change publishing can also be enabled on a case by case basis using the link:https://causeway.apache.org/refguide/2.0.0-SNAPSHOT/applib/index/annotation/DomainObject.html#entitychangepublishing[@DomainObject#entitychangepublishing] attribute.
 
-Navigate into each of the domain entities to see the code examples.
 
-Using this view model, you can use the `create` action to create an instance for each of the four variations.
-With the `update all` action, you can update each of the instances.
-Or, with the `delete` action you can delete the first entity in each collection.
-You can also update an individual entity by drilling through to it and invoking its action.
 
-The demo includes an implementation of link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/EntityChangesSubscriber.html#spi[EntityChangesSubscriber] that captures changes and simply holds them in-memory.
-To observe these captured changes that have been made, just scroll down on this page and inspect the "changes" collection.
-(There will be some anyway from the fixture scripts run when the application first bootstraps.)
+=== How this demo works
 
+The collection on the left shows a set of entity instances, which have `@DomainObject#entityChangePublishing` to enable the publishing of any changes to their state.
 
-== Configuration
+Using this view model, you can use the actions to create new instances of the entity, update them or to delete them.
 
-By default, publishing of changes to domain objects is disabled.
-It is enabled as follows:
+Meanwhile, at the bottom of this page is a collection that simply lists all of the changes that have been received.
+This uses an implementation of link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/EntityChangesSubscriber.html#spi[EntityChangesSubscriber] that captures changes and simply holds them in-memory.
 
-[source,yaml]
-.application.yml
-----
-causeway:
-  applib:
-    annotation:
-      domain-object:
-        entity-change-publishing: all
-----
+NOTE: there will always be some listed from the fixture scripts run when the application first bootstraps.)
 
+Navigate into each of the domain entities to see the code examples.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.layout.xml
index 682c6e278f..2af21bdf97 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.layout.xml
@@ -18,9 +18,6 @@
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
-			<cpt:action id="create"/>
-			<cpt:action id="updateAll"/>
-			<cpt:action id="delete"/>
 		</bs3:col>
 		<bs3:col span="2">
 			<cpt:fieldSet name="" id="sources" />
@@ -29,20 +26,10 @@
 
 	<bs3:row>
 		<bs3:col span="6">
-			<bs3:row>
-				<bs3:col span="12">
-					<cpt:collection id="publishingEnabledAnnotatedEntities"/>
-					<cpt:collection id="publishingDisabledAnnotatedEntities"/>
-					<cpt:collection id="publishingEnabledMetaAnnotatedEntities"/>
-					<cpt:collection id="publishingEnabledMetaAnnotOverriddenEntities"/>
-					<cpt:collection id="publishedObjects"/>
-				</bs3:col>
-			</bs3:row>
-			<bs3:row>
-				<bs3:col span="12">
-					<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-				</bs3:col>
-			</bs3:row>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+			<cpt:collection id="objects">
+				<cpt:action id="modify"/>
+			</cpt:collection>
 		</bs3:col>
 		<bs3:col span="6">
 			<cpt:fieldSet name="Description" id="description" >
@@ -52,6 +39,8 @@
 				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
                 <cpt:action id="recentCommands"  position="PANEL_DROPDOWN"/>
+                <cpt:action id="recentExecutions"  position="PANEL_DROPDOWN"/>
+                <cpt:action id="recentAuditTrailEntries"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
 				<cpt:property id="description"/>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java
deleted file mode 100644
index d20742fd47..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing;
-
-import javax.inject.Inject;
-
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.ActionLayout;
-import org.apache.causeway.applib.annotation.MemberSupport;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-
-import demoapp.dom._infra.samples.NameSamples;
-import demoapp.dom._infra.values.ValueHolderRepository;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledEntity;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectEntityChangePublishingEnabledEntity;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity;
-
-//tag::class[]
-@Action(semantics = SemanticsOf.NON_IDEMPOTENT)
-@ActionLayout(
-        describedAs = "Creates one publishing enabled entity and one publishing disabled entity",
-        sequence = "1.0")
-public class DomainObjectEntityChangePublishingVm_create {
-
-    private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
-    public DomainObjectEntityChangePublishingVm_create(final DomainObjectEntityChangePublishingVm domainObjectAuditingVm) {
-        this.domainObjectAuditingVm = domainObjectAuditingVm;
-    }
-
-    @MemberSupport public DomainObjectEntityChangePublishingVm act(
-            final String newValue
-            , final boolean publishingEnabled
-            , final boolean publishingDisabled
-            , final boolean publishingEnabledMetaAnnotated
-            , final boolean publishingEnabledMetaAnnotOverridden
-    ) {
-        if(publishingEnabled) {
-            publishingEnabledEntities.create(newValue);
-        }
-        if(publishingDisabled) {
-            publishingDisabledEntities.create(newValue);
-        }
-        if(publishingEnabledMetaAnnotated) {
-            publishingEnabledMetaAnnotatedEntities.create(newValue);
-        }
-        if(publishingEnabledMetaAnnotOverridden) {
-            publishingEnabledMetaAnnotOverriddenEntities.create(newValue);
-        }
-        return domainObjectAuditingVm;
-    }
-    @MemberSupport public String default0Act() {
-        return nameSamples.random();
-    }
-    @MemberSupport public boolean default1Act() {
-        return true;
-    }
-    @MemberSupport public boolean default2Act() {
-        return true;
-    }
-    @MemberSupport public boolean default3Act() {
-        return true;
-    }
-    @MemberSupport public boolean default4Act() {
-        return true;
-    }
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledEntity> publishingEnabledEntities;
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingDisabledEntity> publishingDisabledEntities;
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity> publishingEnabledMetaAnnotatedEntities;
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity> publishingEnabledMetaAnnotOverriddenEntities;
-
-    @Inject
-    NameSamples nameSamples;
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
deleted file mode 100644
index 6ba70532db..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing;
-
-import java.util.Collections;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.springframework.lang.Nullable;
-
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.ActionLayout;
-import org.apache.causeway.applib.annotation.MemberSupport;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledEntity;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectEntityChangePublishingEnabledEntity;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity;
-import lombok.RequiredArgsConstructor;
-
-//tag::class[]
-@Action(semantics = SemanticsOf.IDEMPOTENT)
-@ActionLayout(
-    describedAs = "Deletes one publishing enabled entity and one publishing disabled entity",
-    sequence = "3.0")
-@RequiredArgsConstructor
-public class DomainObjectEntityChangePublishingVm_delete {
-
-    private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
-
-    @MemberSupport public DomainObjectEntityChangePublishingVm act(
-            @Nullable final DomainObjectEntityChangePublishingEnabledEntity enabledEntity
-            , @Nullable final DomainObjectEntityChangePublishingDisabledEntity disabledEntity
-            , @Nullable final DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity metaAnnotatedEntity
-            , @Nullable final DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity metaAnnotOverriddenEntity
-            ) {
-        if(enabledEntity != null) {
-            publishingEnabledEntities.remove(enabledEntity);
-        }
-        if(disabledEntity != null) {
-            publishingDisabledEntities.remove(disabledEntity);
-        }
-        if(metaAnnotatedEntity != null) {
-            publishingEnabledMetaAnnotatedEntities.remove(metaAnnotatedEntity);
-        }
-        if(metaAnnotOverriddenEntity != null) {
-            publishingEnabledMetaAnnotOverriddenEntities.remove(metaAnnotOverriddenEntity);
-        }
-        return domainObjectAuditingVm;
-    }
-    @MemberSupport public DomainObjectEntityChangePublishingEnabledEntity default0Act() {
-        return publishingEnabledEntities.first().orElse(null);
-    }
-    @MemberSupport public List<? extends DomainObjectEntityChangePublishingEnabledEntity> choices0Act() {
-        return listOf(default0Act());
-    }
-    @MemberSupport public DomainObjectEntityChangePublishingDisabledEntity default1Act() {
-        return publishingDisabledEntities.first().orElse(null);
-    }
-    @MemberSupport public List<? extends DomainObjectEntityChangePublishingDisabledEntity> choices1Act() {
-        return listOf(default1Act());
-    }
-    @MemberSupport public DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity default2Act() {
-        return publishingEnabledMetaAnnotatedEntities.first().orElse(null);
-    }
-    @MemberSupport public List<? extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity> choices2Act() {
-        return listOf(default2Act());
-    }
-    @MemberSupport public DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity default3Act() {
-        return publishingEnabledMetaAnnotOverriddenEntities.first().orElse(null);
-    }
-    @MemberSupport public List<? extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity> choices3Act() {
-        return listOf(default3Act());
-    }
-    @MemberSupport public String disableAct() {
-        if(publishingEnabledEntities.first().isEmpty()) { return "No Enabled entity to delete"; }
-        if(publishingDisabledEntities.first().isEmpty()) { return "No Disabled entity to delete"; }
-        if(publishingEnabledMetaAnnotatedEntities.first().isEmpty()) { return "No MetaAnnotated entity to delete"; }
-        if(publishingEnabledMetaAnnotOverriddenEntities.first().isEmpty()) { return "No MetaAnnotated But Overridden entity to delete"; }
-        return null;
-    }
-
-    private static <T> List<? extends T> listOf(final T t) {
-        return t == null ? Collections.emptyList() : Collections.singletonList(t);
-    }
-
-    @Inject ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledEntity> publishingEnabledEntities;
-    @Inject ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingDisabledEntity> publishingDisabledEntities;
-    @Inject ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity> publishingEnabledMetaAnnotatedEntities;
-    @Inject ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity> publishingEnabledMetaAnnotOverriddenEntities;
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_modify.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_modify.java
new file mode 100644
index 0000000000..9112749048
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_modify.java
@@ -0,0 +1,85 @@
+/*
+ *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing;
+
+import demoapp.dom._infra.samples.NameSamples;
+import demoapp.dom._infra.values.ValueHolderRepository;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.inject.Inject;
+
+import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.MemberSupport;
+import org.apache.causeway.applib.annotation.SemanticsOf;
+import org.apache.causeway.applib.services.repository.RepositoryService;
+
+//tag::class[]
+@Action(semantics = SemanticsOf.NON_IDEMPOTENT)
+public class DomainObjectEntityChangePublishingVm_modify {
+
+    private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
+    public DomainObjectEntityChangePublishingVm_modify(final DomainObjectEntityChangePublishingVm domainObjectAuditingVm) {
+        this.domainObjectAuditingVm = domainObjectAuditingVm;
+    }
+
+    @MemberSupport public DomainObjectEntityChangePublishingVm act(
+            final Integer howManyToCreate,
+            final List<? extends DomainObjectEntityChangePublishingEntity> toUpdate,
+            final List<? extends DomainObjectEntityChangePublishingEntity> toDelete
+    ) {
+        for(int i = 0; i < howManyToCreate; i++) {
+            publishingEntities.create(nameSamples.random());
+        }
+        toUpdate.forEach(x -> x.setPropertyUpdatedByAction("Object #" + renumber.incrementAndGet()));
+        toDelete.forEach(x -> repositoryService.remove(x));
+        return domainObjectAuditingVm;
+    }
+    @MemberSupport public Integer default0Act() {
+        return 1;
+    }
+    @MemberSupport public List<Integer> choices0Act() {
+        return Arrays.asList(1, 2, 3, 4, 5);
+    }
+
+    @MemberSupport public List<? extends DomainObjectEntityChangePublishingEntity> default1Act() {
+        return publishingEntities.firstAsList();
+    }
+    @MemberSupport public List<? extends DomainObjectEntityChangePublishingEntity> choices1Act() {
+        return publishingEntities.all();
+    }
+
+    @MemberSupport public List<? extends DomainObjectEntityChangePublishingEntity> default2Act() {
+        return publishingEntities.firstAsList();
+    }
+    @MemberSupport public List<? extends DomainObjectEntityChangePublishingEntity> choices2Act() {
+        return publishingEntities.all();
+    }
+
+
+    final static AtomicInteger renumber = new AtomicInteger(0);
+
+    @Inject ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEntity> publishingEntities;
+    @Inject NameSamples nameSamples;
+    @Inject RepositoryService repositoryService;
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_objects.java
similarity index 79%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_objects.java
index 9a1e904ea1..0d2d35ce0f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_objects.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled;
+package demoapp.dom.domain.objects.DomainObject.entityChangePublishing;
 
 import java.util.List;
 
@@ -27,23 +27,22 @@ import org.apache.causeway.applib.annotation.CollectionLayout;
 import org.apache.causeway.applib.annotation.MemberSupport;
 
 import demoapp.dom._infra.values.ValueHolderRepository;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingVm;
 import lombok.RequiredArgsConstructor;
 
 @Collection()
-@CollectionLayout(paged = 3)
+@CollectionLayout()
 @RequiredArgsConstructor
-public class DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities {
+public class DomainObjectEntityChangePublishingVm_objects {
 
     @SuppressWarnings("unused")
     private final DomainObjectEntityChangePublishingVm mixee;
 
     @MemberSupport
-    public List<? extends DomainObjectEntityChangePublishingEnabledEntity> coll() {
+    public List<? extends DomainObjectEntityChangePublishingEntity> coll() {
         return publishingEnabledEntities.all();
     }
 
     @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledEntity> publishingEnabledEntities;
+    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEntity> publishingEnabledEntities;
 
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java
deleted file mode 100644
index f96dd0275f..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing;
-
-import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import javax.inject.Inject;
-
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.ActionLayout;
-import org.apache.causeway.applib.annotation.MemberSupport;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledEntity;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectEntityChangePublishingEnabledEntity;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity;
-import lombok.RequiredArgsConstructor;
-
-//tag::class[]
-@Action(semantics = SemanticsOf.IDEMPOTENT)
-@ActionLayout(
-    describedAs = "Updates all publishing enabled entities and all publishing disabled entities",
-    sequence = "2.0")
-@RequiredArgsConstructor
-public class DomainObjectEntityChangePublishingVm_updateAll {
-
-    private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
-
-    @MemberSupport public DomainObjectEntityChangePublishingVm act(
-            final boolean publishingEnabled
-            , final boolean publishingDisabled
-            , final boolean publishingEnabledMetaAnnotated
-            , final boolean publishingEnabledMetaAnnotOverridden) {
-
-        if(publishingEnabled) {
-            renumber((List)publishingEnabledEntities.all());
-        }
-        if(publishingDisabled) {
-            renumber((List)publishingDisabledEntities.all());
-        }
-        if(publishingEnabledMetaAnnotated) {
-            renumber((List)publishingEnabledMetaAnnotatedEntities.all());
-        }
-        if(publishingEnabledMetaAnnotOverridden) {
-            renumber((List)publishingEnabledMetaAnnotOverriddenEntities.all());
-        }
-
-        return domainObjectAuditingVm;
-    }
-    @MemberSupport public boolean default0Act() {
-        return true;
-    }
-    @MemberSupport public boolean default1Act() {
-        return true;
-    }
-    @MemberSupport public boolean default2Act() {
-        return true;
-    }
-    @MemberSupport public boolean default3Act() {
-        return true;
-    }
-
-    final static AtomicInteger counter = new AtomicInteger(0);
-    private static void renumber(final List<DomainObjectEntityChangePublishingEntity> all) {
-        all.forEach(x -> x.setPropertyUpdatedByAction("Object #" + counter.incrementAndGet()));
-    }
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledEntity> publishingEnabledEntities;
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingDisabledEntity> publishingDisabledEntities;
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity> publishingEnabledMetaAnnotatedEntities;
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity> publishingEnabledMetaAnnotOverriddenEntities;
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingDisabledEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingDisabledEntity.java
deleted file mode 100644
index 3549846113..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingDisabledEntity.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled;
-
-import javax.inject.Named;
-
-import org.apache.causeway.applib.annotation.DomainObject;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingEntity;
-
-@Named("demo.DomainObjectEntityChangePublishingDisabledEntity") // shared permissions with concrete sub class
-@DomainObject
-public abstract class DomainObjectEntityChangePublishingDisabledEntity
-extends DomainObjectEntityChangePublishingEntity {
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingDisabledSeeding.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingDisabledSeeding.java
deleted file mode 100644
index 8aa8920aff..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingDisabledSeeding.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled;
-
-import javax.inject.Inject;
-
-import org.springframework.stereotype.Service;
-
-import demoapp.dom._infra.seed.SeedServiceAbstract;
-import demoapp.dom._infra.values.ValueHolderRepository;
-
-@Service
-public class DomainObjectEntityChangePublishingDisabledSeeding
-extends SeedServiceAbstract {
-
-    @Inject
-    public DomainObjectEntityChangePublishingDisabledSeeding(
-            ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingDisabledEntity> entities) {
-        super(entities);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingVm_publishingDisabledAnnotatedEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingVm_publishingDisabledAnnotatedEntities.java
deleted file mode 100644
index b1efc1ce53..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingVm_publishingDisabledAnnotatedEntities.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled;
-
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.apache.causeway.applib.annotation.Collection;
-import org.apache.causeway.applib.annotation.CollectionLayout;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingVm;
-import lombok.RequiredArgsConstructor;
-
-@Collection()
-@CollectionLayout(paged = 3)
-@RequiredArgsConstructor
-public class DomainObjectEntityChangePublishingVm_publishingDisabledAnnotatedEntities {
-
-    @SuppressWarnings("unused")
-    private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
-
-    public List<? extends DomainObjectEntityChangePublishingDisabledEntity> coll() {
-        return publishingDisabledEntities.all();
-    }
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingDisabledEntity> publishingDisabledEntities;
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdo-description.adoc
deleted file mode 100644
index 509de0df4a..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdo-description.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-: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 [...]
-
-If entityChangePublishing has been enabled by default, then it can also be disabled on a per-class basis:
-
-[source,java,indent=0]
-----
-include::DomainObjectEntityChangePublishingDisabledJdo.java[tags=class]
-----
-<.> explicitly specifies that modifying the domain object should _not_ be published.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdo.java
deleted file mode 100644
index 3405ee6e52..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdo.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.jdo;
-
-import javax.inject.Named;
-import javax.jdo.annotations.DatastoreIdentity;
-import javax.jdo.annotations.IdGeneratorStrategy;
-import javax.jdo.annotations.IdentityType;
-import javax.jdo.annotations.PersistenceCapable;
-
-import org.springframework.context.annotation.Profile;
-
-import org.apache.causeway.applib.annotation.Bounding;
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.DomainObjectLayout;
-import org.apache.causeway.applib.annotation.Nature;
-import org.apache.causeway.applib.annotation.Publishing;
-import org.apache.causeway.applib.annotation.Title;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledEntity;
-import lombok.Getter;
-import lombok.Setter;
-
-@Profile("demo-jdo")
-//tag::class[]
-@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
-@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
-@Named("demo.DomainObjectEntityChangePublishingDisabledEntity")
-@DomainObject(
-    nature=Nature.ENTITY
-    , entityChangePublishing = Publishing.DISABLED           // <.>
-    , bounding = Bounding.BOUNDED
-)
-@DomainObjectLayout(
-    describedAs = "@DomainObject(entityChangePublishing=DISABLED)"
-)
-public class DomainObjectEntityChangePublishingDisabledJdo
-                extends DomainObjectEntityChangePublishingDisabledEntity {
-    // ...
-//end::class[]
-
-    public DomainObjectEntityChangePublishingDisabledJdo(final String initialValue) {
-        this.property = initialValue;
-        this.propertyUpdatedByAction = initialValue;
-    }
-
-    @Title(sequence = "1.0")
-    @Getter @Setter
-    private String property;
-
-    @Getter @Setter
-    @Title(sequence = "2.0", prepend = " / ")
-    private String propertyUpdatedByAction;
-
-//tag::class[]
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdoEntities.java
deleted file mode 100644
index 3558252b32..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdoEntities.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.jdo;
-
-import org.springframework.context.annotation.Profile;
-import org.springframework.stereotype.Service;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-
-@Profile("demo-jdo")
-@Service
-public class DomainObjectEntityChangePublishingDisabledJdoEntities
-extends ValueHolderRepository<String, DomainObjectEntityChangePublishingDisabledJdo> {
-
-    protected DomainObjectEntityChangePublishingDisabledJdoEntities() {
-        super(DomainObjectEntityChangePublishingDisabledJdo.class);
-    }
-
-    @Override
-    protected DomainObjectEntityChangePublishingDisabledJdo newDetachedEntity(String value) {
-        return new DomainObjectEntityChangePublishingDisabledJdo(value);
-    }
-
-}
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpa-description.adoc
deleted file mode 100644
index 1452a3ebed..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpa-description.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-: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 [...]
-
-If entityChangePublishing has been enabled by default, then it can also be disabled on a per-class basis:
-
-[source,java,indent=0]
-----
-include::DomainObjectEntityChangePublishingDisabledJpa.java[tags=class]
-----
-<.> explicitly specifies that modifying the domain object should _not_ be published.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpa.java
deleted file mode 100644
index a6d7b2e68e..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpa.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.jpa;
-
-import javax.inject.Named;
-import javax.persistence.Entity;
-import javax.persistence.EntityListeners;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import org.springframework.context.annotation.Profile;
-
-import org.apache.causeway.applib.annotation.Bounding;
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.DomainObjectLayout;
-import org.apache.causeway.applib.annotation.Nature;
-import org.apache.causeway.applib.annotation.Publishing;
-import org.apache.causeway.applib.annotation.Title;
-import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledEntity;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-@Profile("demo-jpa")
-//tag::class[]
-@Entity
-@Table(
-    schema = "demo",
-    name = "DomainObjectEntityChangePublishingDisabledJpa"
-)
-@EntityListeners(CausewayEntityListener.class)
-@Named("demo.DomainObjectEntityChangePublishingDisabledEntity")
-@DomainObject(
-        nature=Nature.ENTITY
-        , entityChangePublishing = Publishing.DISABLED           // <.>
-        , bounding = Bounding.BOUNDED
-    )
-    @DomainObjectLayout(
-        describedAs = "@DomainObject(entityChangePublishing=DISABLED)"
-    )
-@NoArgsConstructor
-public class DomainObjectEntityChangePublishingDisabledJpa
-                extends DomainObjectEntityChangePublishingDisabledEntity {
-    // ...
-//end::class[]
-
-    public DomainObjectEntityChangePublishingDisabledJpa(final String initialValue) {
-        this.property = initialValue;
-        this.propertyUpdatedByAction = initialValue;
-    }
-
-    @Id
-    @GeneratedValue
-    private Long id;
-
-    @Title(sequence = "1.0")
-    @Getter @Setter
-    private String property;
-
-    @Getter @Setter
-    @Title(sequence = "2.0", prepend = " / ")
-    private String propertyUpdatedByAction;
-
-//tag::class[]
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpaEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpaEntities.java
deleted file mode 100644
index 39bf6b924b..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpaEntities.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.jpa;
-
-import org.springframework.context.annotation.Profile;
-import org.springframework.stereotype.Service;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-
-@Profile("demo-jpa")
-@Service
-public class DomainObjectEntityChangePublishingDisabledJpaEntities
-extends ValueHolderRepository<String, DomainObjectEntityChangePublishingDisabledJpa> {
-
-    protected DomainObjectEntityChangePublishingDisabledJpaEntities() {
-        super(DomainObjectEntityChangePublishingDisabledJpa.class);
-    }
-
-    @Override
-    protected DomainObjectEntityChangePublishingDisabledJpa newDetachedEntity(String value) {
-        return new DomainObjectEntityChangePublishingDisabledJpa(value);
-    }
-
-}
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingEnabledEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingEnabledEntity.java
deleted file mode 100644
index 75010b3730..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingEnabledEntity.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled;
-
-import javax.inject.Named;
-
-import org.apache.causeway.applib.annotation.DomainObject;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingEntity;
-
-@Named("demo.DomainObjectEntityChangePublishingEnabledEntity") // shared permissions with concrete sub class
-@DomainObject
-public abstract class DomainObjectEntityChangePublishingEnabledEntity
-extends DomainObjectEntityChangePublishingEntity {
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jdo/DomainObjectEntityChangePublishingJdo-description.adoc
similarity index 82%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdo-description.adoc
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jdo/DomainObjectEntityChangePublishingJdo-description.adoc
index f31d2d3910..95252c89dc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jdo/DomainObjectEntityChangePublishingJdo-description.adoc
@@ -1,10 +1,10 @@
 :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 [...]
 
-If entityChangePublishing has been disabled by default, then it can also be enabled on a per-class basis:
+In this demo app, entityChangePublishing has been disabled by default, but has been explicitly enabled on this class:
 
 [source,java,indent=0]
 ----
-include::DomainObjectEntityChangePublishingEnabledJdo.java[tags=class]
+include::DomainObjectEntityChangePublishingJdo.java[tags=class]
 ----
 <.> explicitly specifies that modifying the domain object should be published.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jdo/DomainObjectEntityChangePublishingJdo.java
similarity index 73%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdo.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jdo/DomainObjectEntityChangePublishingJdo.java
index dafe9cbe73..472683729d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jdo/DomainObjectEntityChangePublishingJdo.java
@@ -16,7 +16,11 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.jdo;
+package demoapp.dom.domain.objects.DomainObject.entityChangePublishing.jdo;
+
+import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingEntity;
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.inject.Named;
 import javax.jdo.annotations.DatastoreIdentity;
@@ -24,24 +28,14 @@ import javax.jdo.annotations.IdGeneratorStrategy;
 import javax.jdo.annotations.IdentityType;
 import javax.jdo.annotations.PersistenceCapable;
 
+import org.apache.causeway.applib.annotation.*;
 import org.springframework.context.annotation.Profile;
 
-import org.apache.causeway.applib.annotation.Bounding;
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.DomainObjectLayout;
-import org.apache.causeway.applib.annotation.Nature;
-import org.apache.causeway.applib.annotation.Publishing;
-import org.apache.causeway.applib.annotation.Title;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectEntityChangePublishingEnabledEntity;
-import lombok.Getter;
-import lombok.Setter;
-
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
 @DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
-@Named("demo.DomainObjectEntityChangePublishingEnabledEntity")
+@Named("demo.DomainObjectEntityChangePublishingEntity")
 @DomainObject(
     nature=Nature.ENTITY
     , entityChangePublishing = Publishing.ENABLED            // <.>
@@ -50,12 +44,12 @@ import lombok.Setter;
 @DomainObjectLayout(
     describedAs = "@DomainObject(entityChangePublishing=ENABLED)"
 )
-public class DomainObjectEntityChangePublishingEnabledJdo
-                extends DomainObjectEntityChangePublishingEnabledEntity {
+public class DomainObjectEntityChangePublishingJdo
+                extends DomainObjectEntityChangePublishingEntity {
     // ...
 //end::class[]
 
-    public DomainObjectEntityChangePublishingEnabledJdo(final String initialValue) {
+    public DomainObjectEntityChangePublishingJdo(final String initialValue) {
         this.property = initialValue;
         this.propertyUpdatedByAction = initialValue;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jdo/DomainObjectEntityChangePublishingJdoEntities.java
similarity index 73%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdoEntities.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jdo/DomainObjectEntityChangePublishingJdoEntities.java
index 3cc8c99c2d..396f44e24a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdoEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jdo/DomainObjectEntityChangePublishingJdoEntities.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.jdo;
+package demoapp.dom.domain.objects.DomainObject.entityChangePublishing.jdo;
 
 import org.springframework.context.annotation.Profile;
 import org.springframework.stereotype.Service;
@@ -25,16 +25,16 @@ import demoapp.dom._infra.values.ValueHolderRepository;
 
 @Profile("demo-jdo")
 @Service
-public class DomainObjectEntityChangePublishingEnabledJdoEntities
-extends ValueHolderRepository<String, DomainObjectEntityChangePublishingEnabledJdo> {
+public class DomainObjectEntityChangePublishingJdoEntities
+extends ValueHolderRepository<String, DomainObjectEntityChangePublishingJdo> {
 
-    protected DomainObjectEntityChangePublishingEnabledJdoEntities() {
-        super(DomainObjectEntityChangePublishingEnabledJdo.class);
+    protected DomainObjectEntityChangePublishingJdoEntities() {
+        super(DomainObjectEntityChangePublishingJdo.class);
     }
 
     @Override
-    protected DomainObjectEntityChangePublishingEnabledJdo newDetachedEntity(String value) {
-        return new DomainObjectEntityChangePublishingEnabledJdo(value);
+    protected DomainObjectEntityChangePublishingJdo newDetachedEntity(String value) {
+        return new DomainObjectEntityChangePublishingJdo(value);
     }
 
-}
\ No newline at end of file
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jpa/DomainObjectEntityChangePublishingJpa-description.adoc
similarity index 82%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpa-description.adoc
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jpa/DomainObjectEntityChangePublishingJpa-description.adoc
index cd56928862..3a8b760a11 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jpa/DomainObjectEntityChangePublishingJpa-description.adoc
@@ -1,10 +1,10 @@
 :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 [...]
 
-If entityChangePublishing has been disabled by default, then it can also be enabled on a per-class basis:
+In this demo app, entityChangePublishing has been disabled by default, but has been explicitly enabled on this class:
 
 [source,java,indent=0]
 ----
-include::DomainObjectEntityChangePublishingEnabledJpa.java[tags=class]
+include::DomainObjectEntityChangePublishingJpa.java[tags=class]
 ----
 <.> explicitly specifies that modifying the domain object should be published.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jpa/DomainObjectEntityChangePublishingJpa.java
similarity index 69%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpa.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jpa/DomainObjectEntityChangePublishingJpa.java
index e4b8c77a1f..4c5b46eaf1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jpa/DomainObjectEntityChangePublishingJpa.java
@@ -16,30 +16,20 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.jpa;
+package demoapp.dom.domain.objects.DomainObject.entityChangePublishing.jpa;
 
-import javax.inject.Named;
-import javax.persistence.Entity;
-import javax.persistence.EntityListeners;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import org.springframework.context.annotation.Profile;
-
-import org.apache.causeway.applib.annotation.Bounding;
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.DomainObjectLayout;
-import org.apache.causeway.applib.annotation.Nature;
-import org.apache.causeway.applib.annotation.Publishing;
-import org.apache.causeway.applib.annotation.Title;
-import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectEntityChangePublishingEnabledEntity;
+import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingEntity;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import javax.inject.Named;
+import javax.persistence.*;
+
+import org.apache.causeway.applib.annotation.*;
+import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
+import org.springframework.context.annotation.Profile;
+
 @Profile("demo-jpa")
 //tag::class[]
 @Entity
@@ -48,7 +38,7 @@ import lombok.Setter;
     name = "DomainObjectEntityChangePublishingEnabledJpa"
 )
 @EntityListeners(CausewayEntityListener.class)
-@Named("demo.DomainObjectEntityChangePublishingEnabledEntity")
+@Named("demo.DomainObjectEntityChangePublishingEntity")
 @DomainObject(
         nature=Nature.ENTITY
         , entityChangePublishing = Publishing.ENABLED            // <.>
@@ -58,12 +48,12 @@ import lombok.Setter;
         describedAs = "@DomainObject(entityChangePublishing=ENABLED)"
     )
 @NoArgsConstructor
-public class DomainObjectEntityChangePublishingEnabledJpa
-                extends DomainObjectEntityChangePublishingEnabledEntity {
+public class DomainObjectEntityChangePublishingJpa
+                extends DomainObjectEntityChangePublishingEntity {
     // ...
 //end::class[]
 
-    public DomainObjectEntityChangePublishingEnabledJpa(final String initialValue) {
+    public DomainObjectEntityChangePublishingJpa(final String initialValue) {
         this.property = initialValue;
         this.propertyUpdatedByAction = initialValue;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpaEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jpa/DomainObjectEntityChangePublishingJpaEntities.java
similarity index 73%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpaEntities.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jpa/DomainObjectEntityChangePublishingJpaEntities.java
index 6ea28998a5..1974f0fc12 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpaEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/jpa/DomainObjectEntityChangePublishingJpaEntities.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.jpa;
+package demoapp.dom.domain.objects.DomainObject.entityChangePublishing.jpa;
 
 import org.springframework.context.annotation.Profile;
 import org.springframework.stereotype.Service;
@@ -25,16 +25,16 @@ import demoapp.dom._infra.values.ValueHolderRepository;
 
 @Profile("demo-jpa")
 @Service
-public class DomainObjectEntityChangePublishingEnabledJpaEntities
-extends ValueHolderRepository<String, DomainObjectEntityChangePublishingEnabledJpa> {
+public class DomainObjectEntityChangePublishingJpaEntities
+extends ValueHolderRepository<String, DomainObjectEntityChangePublishingJpa> {
 
-    protected DomainObjectEntityChangePublishingEnabledJpaEntities() {
-        super(DomainObjectEntityChangePublishingEnabledJpa.class);
+    protected DomainObjectEntityChangePublishingJpaEntities() {
+        super(DomainObjectEntityChangePublishingJpa.class);
     }
 
     @Override
-    protected DomainObjectEntityChangePublishingEnabledJpa newDetachedEntity(String value) {
-        return new DomainObjectEntityChangePublishingEnabledJpa(value);
+    protected DomainObjectEntityChangePublishingJpa newDetachedEntity(String value) {
+        return new DomainObjectEntityChangePublishingJpa(value);
     }
 
-}
\ No newline at end of file
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/DomainObjectEntityChangePublishingEnabledMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/DomainObjectEntityChangePublishingEnabledMetaAnnotation.java
deleted file mode 100644
index cfdd46b846..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/DomainObjectEntityChangePublishingEnabledMetaAnnotation.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.Publishing;
-
-//tag::class[]
-@DomainObject(entityChangePublishing = Publishing.ENABLED)    // <.>
-@Inherited
-@Target({
-        ElementType.TYPE, ElementType.ANNOTATION_TYPE         // <.>
-})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface DomainObjectEntityChangePublishingEnabledMetaAnnotation {
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity.java
deleted file mode 100644
index 755f7d9e6f..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled;
-
-import javax.inject.Named;
-
-import org.apache.causeway.applib.annotation.DomainObject;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingEntity;
-
-@Named("demo.DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity") // shared permissions with concrete sub class
-@DomainObject
-public abstract class DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity
-extends DomainObjectEntityChangePublishingEntity {
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotatedSeeding.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotatedSeeding.java
deleted file mode 100644
index e351f79be4..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotatedSeeding.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled;
-
-import javax.inject.Inject;
-
-import org.springframework.stereotype.Service;
-
-import demoapp.dom._infra.seed.SeedServiceAbstract;
-import demoapp.dom._infra.values.ValueHolderRepository;
-
-@Service
-public class DomainObjectEntityChangePublishingEnabledMetaAnnotatedSeeding
-extends SeedServiceAbstract {
-
-    @Inject
-    public DomainObjectEntityChangePublishingEnabledMetaAnnotatedSeeding(
-            ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity> entities) {
-        super(entities);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotatedEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotatedEntities.java
deleted file mode 100644
index d44373f8a7..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotatedEntities.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled;
-
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.apache.causeway.applib.annotation.Collection;
-import org.apache.causeway.applib.annotation.CollectionLayout;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingVm;
-import lombok.RequiredArgsConstructor;
-
-@Collection()
-@CollectionLayout(paged = 3)
-@RequiredArgsConstructor
-public class DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotatedEntities {
-
-    @SuppressWarnings("unused")
-    private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
-
-    public List<? extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity> coll() {
-        return publishingEnabledMetaAnnotatedEntities.all();
-    }
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity> publishingEnabledMetaAnnotatedEntities;
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo-description.adoc
deleted file mode 100644
index aea9fcd574..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo-description.adoc
+++ /dev/null
@@ -1,21 +0,0 @@
-: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 [...]
-
-
-The `entityChangePublishing` element can be specified using a custom meta-annotation:
-
-* with a meta-annotation defined as:
-+
-[source,java]
-----
-include::../../DomainObjectEntityChangePublishingEnabledMetaAnnotation.java[tags=class]
-----
-<.> annotated for a domain object
-<.> annotation can be applied to the type or a further meta-annotation type only
-
-* it can be applied to a domain object:
-+
-[source,java,indent=0]
-----
-include::DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo.java[tags=class]
-----
-<.> semantic is inherited from the meta-annotation
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo.java
deleted file mode 100644
index d3119401fe..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.jdo;
-
-import javax.inject.Named;
-import javax.jdo.annotations.DatastoreIdentity;
-import javax.jdo.annotations.IdGeneratorStrategy;
-import javax.jdo.annotations.IdentityType;
-import javax.jdo.annotations.PersistenceCapable;
-
-import org.springframework.context.annotation.Profile;
-
-import org.apache.causeway.applib.annotation.Bounding;
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.DomainObjectLayout;
-import org.apache.causeway.applib.annotation.Nature;
-import org.apache.causeway.applib.annotation.Title;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.DomainObjectEntityChangePublishingEnabledMetaAnnotation;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity;
-import lombok.Getter;
-import lombok.Setter;
-
-@Profile("demo-jdo")
-//tag::class[]
-@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
-@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
-@DomainObjectEntityChangePublishingEnabledMetaAnnotation                    // <.>
-@Named("demo.DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity")
-@DomainObject(
-    nature=Nature.ENTITY
-    , bounding = Bounding.BOUNDED
-)
-@DomainObjectLayout(
-    describedAs = "@DomainObjectAuditingEnabledMetaAnnotation"
-)
-public class DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo
-                extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity {
-    // ...
-//end::class[]
-
-    public DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo(final String initialValue) {
-        this.property = initialValue;
-        this.propertyUpdatedByAction = initialValue;
-    }
-
-    @Title(sequence = "1.0")
-    @Getter @Setter
-    private String property;
-
-    @Getter @Setter
-    @Title(sequence = "2.0", prepend = " / ")
-    private String propertyUpdatedByAction;
-
-//tag::class[]
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities.java
deleted file mode 100644
index c153c9cfac..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.jdo;
-
-import org.springframework.context.annotation.Profile;
-import org.springframework.stereotype.Service;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-
-@Profile("demo-jdo")
-@Service
-public class DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities
-extends ValueHolderRepository<String, DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo> {
-
-    protected DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities() {
-        super(DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo.class);
-    }
-
-    @Override
-    protected DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo newDetachedEntity(String value) {
-        return new DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo(value);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa-description.adoc
deleted file mode 100644
index 0523e2378f..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa-description.adoc
+++ /dev/null
@@ -1,21 +0,0 @@
-: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 [...]
-
-
-The `entityChangePublishing` element can be specified using a custom meta-annotation:
-
-* with a meta-annotation defined as:
-+
-[source,java]
-----
-include::../../DomainObjectEntityChangePublishingEnabledMetaAnnotation.java[tags=class]
-----
-<.> annotated for a domain object
-<.> annotation can be applied to the type or a further meta-annotation type only
-
-* it can be applied to a domain object:
-+
-[source,java,indent=0]
-----
-include::DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa.java[tags=class]
-----
-<.> semantic is inherited from the meta-annotation
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa.java
deleted file mode 100644
index 1e9a1bd9dd..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.jpa;
-
-import javax.inject.Named;
-import javax.persistence.Entity;
-import javax.persistence.EntityListeners;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import org.springframework.context.annotation.Profile;
-
-import org.apache.causeway.applib.annotation.Bounding;
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.DomainObjectLayout;
-import org.apache.causeway.applib.annotation.Nature;
-import org.apache.causeway.applib.annotation.Title;
-import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.DomainObjectEntityChangePublishingEnabledMetaAnnotation;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-@Profile("demo-jpa")
-//tag::class[]
-@Entity
-@Table(
-    schema = "demo",
-    name = "DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa"
-)
-@EntityListeners(CausewayEntityListener.class)
-@DomainObjectEntityChangePublishingEnabledMetaAnnotation                    // <.>
-@Named("demo.DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity")
-@DomainObject(
-    nature=Nature.ENTITY
-    , bounding = Bounding.BOUNDED
-)
-@DomainObjectLayout(
-    describedAs = "@DomainObjectAuditingEnabledMetaAnnotation"
-)
-@NoArgsConstructor
-
-public class DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa
-                extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity {
-    // ...
-//end::class[]
-
-    public DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa(final String initialValue) {
-        this.property = initialValue;
-        this.propertyUpdatedByAction = initialValue;
-    }
-
-    @Id
-    @GeneratedValue
-    private Long id;
-
-    @Title(sequence = "1.0")
-    @Getter @Setter
-    private String property;
-
-    @Getter @Setter
-    @Title(sequence = "2.0", prepend = " / ")
-    private String propertyUpdatedByAction;
-
-//tag::class[]
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpaEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpaEntities.java
deleted file mode 100644
index 340f8e64f0..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpaEntities.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.jpa;
-
-import org.springframework.context.annotation.Profile;
-import org.springframework.stereotype.Service;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-
-@Profile("demo-jpa")
-@Service
-public class DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpaEntities
-extends ValueHolderRepository<String, DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa> {
-
-    protected DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpaEntities() {
-        super(DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa.class);
-    }
-
-    @Override
-    protected DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa newDetachedEntity(String value) {
-        return new DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa(value);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/DomainObjectEntityChangePublishingDisabledMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/DomainObjectEntityChangePublishingDisabledMetaAnnotation.java
deleted file mode 100644
index 64db75d68b..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/DomainObjectEntityChangePublishingDisabledMetaAnnotation.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.Publishing;
-
-//tag::class[]
-@DomainObject(entityChangePublishing = Publishing.DISABLED)    // <.>
-@Inherited
-@Target({
-        ElementType.TYPE, ElementType.ANNOTATION_TYPE          // <.>
-})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface DomainObjectEntityChangePublishingDisabledMetaAnnotation {
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity.java
deleted file mode 100644
index 9189125ac2..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled;
-
-import javax.inject.Named;
-
-import org.apache.causeway.applib.annotation.DomainObject;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingEntity;
-
-@Named("demo.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity") // shared permissions with concrete sub class
-@DomainObject
-public abstract class DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity
-extends DomainObjectEntityChangePublishingEntity {
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenSeeding.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenSeeding.java
deleted file mode 100644
index 0c62082c85..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenSeeding.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled;
-
-import javax.inject.Inject;
-
-import org.springframework.stereotype.Service;
-
-import demoapp.dom._infra.seed.SeedServiceAbstract;
-import demoapp.dom._infra.values.ValueHolderRepository;
-
-@Service
-public class DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenSeeding
-extends SeedServiceAbstract {
-
-    @Inject
-    public DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenSeeding(
-            ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity> entities) {
-        super(entities);
-    }
-
-}
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotOverriddenEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotOverriddenEntities.java
deleted file mode 100644
index 1a392d1376..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotOverriddenEntities.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled;
-
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.apache.causeway.applib.annotation.Collection;
-import org.apache.causeway.applib.annotation.CollectionLayout;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingVm;
-import lombok.RequiredArgsConstructor;
-
-@Collection()
-@CollectionLayout(paged = 3)
-@RequiredArgsConstructor
-public class DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotOverriddenEntities {
-
-    @SuppressWarnings("unused")
-    private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
-
-    public List<? extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity> coll() {
-        return publishingEnabledMetaAnnotOverriddenEntities.all();
-    }
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity> publishingEnabledMetaAnnotOverriddenEntities;
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo-description.adoc
deleted file mode 100644
index 8fba151bc3..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo-description.adoc
+++ /dev/null
@@ -1,24 +0,0 @@
-: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 [...]
-
-If the `entityChangePublishing` element has been specified using a custom meta-annotation, for example as disabled, it can still be overridden on a per-class basis.
-
-This would be useful if you used a common meta-annotation for a bunch of semantics, but wanted to override just this `entityChangePublishing` semantic for a particular class.
-
-* So, with a meta-annotation is defined as:
-+
-[source,java]
-----
-include::../../DomainObjectEntityChangePublishingDisabledMetaAnnotation.java[tags=class]
-----
-<.> disables the `entityChangePublishing` for all domain object that it is applied to
-<.> annotation can be applied to the type or a further meta-annotation type only
-
-* it can be overridden at the domain class:
-+
-[source,java,indent=0]
-----
-include::DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo.java[tags=class]
-----
-<.> the `entityChangePublishing` semantic is inherited from the meta-annotation, however...
-<.> it is overridden at the domain class level
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo.java
deleted file mode 100644
index db29129d02..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.jdo;
-
-import javax.inject.Named;
-import javax.jdo.annotations.DatastoreIdentity;
-import javax.jdo.annotations.IdGeneratorStrategy;
-import javax.jdo.annotations.IdentityType;
-import javax.jdo.annotations.PersistenceCapable;
-
-import org.springframework.context.annotation.Profile;
-
-import org.apache.causeway.applib.annotation.Bounding;
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.DomainObjectLayout;
-import org.apache.causeway.applib.annotation.Nature;
-import org.apache.causeway.applib.annotation.Publishing;
-import org.apache.causeway.applib.annotation.Title;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.DomainObjectEntityChangePublishingDisabledMetaAnnotation;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity;
-import lombok.Getter;
-import lombok.Setter;
-
-@Profile("demo-jdo")
-//tag::class[]
-@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
-@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
-@DomainObjectEntityChangePublishingDisabledMetaAnnotation                   // <.>
-@Named("demo.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity")
-@DomainObject(
-        nature=Nature.ENTITY
-        , entityChangePublishing = Publishing.ENABLED         // <.>
-        , bounding = Bounding.BOUNDED
-)
-@DomainObjectLayout(
-    describedAs =
-        "@DomainObjectAuditingDisabledMetaAnnotation " +
-        "@DomainObject(entityChangePublishing=ENABLED)"
-)
-public class DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo
-        extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity {
-    // ...
-//end::class[]
-
-    public DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo(final String initialValue) {
-        this.property = initialValue;
-        this.propertyUpdatedByAction = initialValue;
-    }
-
-    @Title(sequence = "1.0")
-    @Getter @Setter
-    private String property;
-
-    @Getter @Setter
-    @Title(sequence = "2.0", prepend = " / ")
-    private String propertyUpdatedByAction;
-
-//tag::class[]
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoEntities.java
deleted file mode 100644
index ace8fdbe34..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoEntities.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.jdo;
-
-import org.springframework.context.annotation.Profile;
-import org.springframework.stereotype.Service;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-
-@Profile("demo-jdo")
-@Service
-public class DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoEntities
-extends ValueHolderRepository<String, DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo> {
-
-    protected DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoEntities() {
-        super(DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo.class);
-    }
-
-    @Override
-    protected DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo newDetachedEntity(String value) {
-        return new DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo(value);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa-description.adoc
deleted file mode 100644
index 46cb2fa9dc..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa-description.adoc
+++ /dev/null
@@ -1,24 +0,0 @@
-: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 [...]
-
-If the `entityChangePublishing` element has been specified using a custom meta-annotation, for example as disabled, it can still be overridden on a per-class basis.
-
-This would be useful if you used a common meta-annotation for a bunch of semantics, but wanted to override just this `entityChangePublishing` semantic for a particular class.
-
-* So, with a meta-annotation is defined as:
-+
-[source,java]
-----
-include::../../DomainObjectEntityChangePublishingDisabledMetaAnnotation.java[tags=class]
-----
-<.> disables the `entityChangePublishing` for all domain object that it is applied to
-<.> annotation can be applied to the type or a further meta-annotation type only
-
-* it can be overridden at the domain class:
-+
-[source,java,indent=0]
-----
-include::DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa.java[tags=class]
-----
-<.> the `entityChangePublishing` semantic is inherited from the meta-annotation, however...
-<.> it is overridden at the domain class level
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa.java
deleted file mode 100644
index 8f69beea30..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.jpa;
-
-import javax.inject.Named;
-import javax.persistence.Entity;
-import javax.persistence.EntityListeners;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import org.springframework.context.annotation.Profile;
-
-import org.apache.causeway.applib.annotation.Bounding;
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.DomainObjectLayout;
-import org.apache.causeway.applib.annotation.Nature;
-import org.apache.causeway.applib.annotation.Publishing;
-import org.apache.causeway.applib.annotation.Title;
-import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
-
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.DomainObjectEntityChangePublishingDisabledMetaAnnotation;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-@Profile("demo-jpa")
-//tag::class[]
-@Entity
-@Table(
-    schema = "demo",
-    name = "DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa"
-)
-@EntityListeners(CausewayEntityListener.class)
-@DomainObjectEntityChangePublishingDisabledMetaAnnotation                   // <.>
-@Named("demo.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity")
-@DomainObject(
-        nature=Nature.ENTITY
-        , entityChangePublishing = Publishing.ENABLED         // <.>
-        , bounding = Bounding.BOUNDED
-)
-@DomainObjectLayout(
-    describedAs =
-        "@DomainObjectAuditingDisabledMetaAnnotation " +
-        "@DomainObject(entityChangePublishing=ENABLED)"
-)
-@NoArgsConstructor
-public class DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa
-        extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity {
-    // ...
-//end::class[]
-
-    public DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa(final String initialValue) {
-        this.property = initialValue;
-        this.propertyUpdatedByAction = initialValue;
-    }
-
-    @Id
-    @GeneratedValue
-    private Long id;
-
-    @Title(sequence = "1.0")
-    @Getter @Setter
-    private String property;
-
-    @Getter @Setter
-    @Title(sequence = "2.0", prepend = " / ")
-    private String propertyUpdatedByAction;
-
-//tag::class[]
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpaEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpaEntities.java
deleted file mode 100644
index 5a301dc3cd..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpaEntities.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  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 demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.jpa;
-
-import org.springframework.context.annotation.Profile;
-import org.springframework.stereotype.Service;
-
-import demoapp.dom._infra.values.ValueHolderRepository;
-
-@Profile("demo-jpa")
-@Service
-public class DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpaEntities
-extends ValueHolderRepository<String, DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa> {
-
-    protected DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpaEntities() {
-        super(DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa.class);
-    }
-
-    @Override
-    protected DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa newDetachedEntity(String value) {
-        return new DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa(value);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/resources/application.yml b/examples/demo/domain/src/main/resources/application.yml
index 538e448135..87d55189aa 100644
--- a/examples/demo/domain/src/main/resources/application.yml
+++ b/examples/demo/domain/src/main/resources/application.yml
@@ -22,8 +22,8 @@ causeway:
   applib:
     annotation:
       action:
-        command: ignore_safe
-        publishing: none
+        execution-publishing: none
+        command-publishing: none
       action-layout:
         css-class-fa:
           patterns:
@@ -42,10 +42,11 @@ causeway:
             delete.*:btn-danger
       domain-object:
         editing: false
-        publishing: none
+        entity-change-publishing: none
       property:
         command: all
-        publishing: none
+        command-publishing: none
+        execution-publishing: none
       property-layout:
         label-position: LEFT
       parameter-layout: