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/03 18:36:01 UTC

[causeway] 01/01: CAUSEWAY-3367: removes config prop, always persist commands

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

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

commit 08d13b9133f2bf303fa542b7b6a5148ee21e2a48
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Mar 3 18:35:54 2023 +0000

    CAUSEWAY-3367: removes config prop, always persist commands
---
 .../ROOT/pages/2023/2.0.0-RC1/mignotes.adoc        | 14 ++++++---
 .../causeway/applib/services/command/Command.java  | 36 ----------------------
 .../services/publishing/log/CommandLogger.java     |  3 +-
 .../core/config/CausewayConfiguration.java         | 24 ---------------
 .../subscriber/CommandSubscriberForCommandLog.java |  6 ----
 .../changetracking/EntityChangeTrackerDefault.java |  1 -
 6 files changed, 11 insertions(+), 73 deletions(-)

diff --git a/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/mignotes.adoc b/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/mignotes.adoc
index 14478ae788..483c123893 100644
--- a/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/mignotes.adoc
+++ b/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/mignotes.adoc
@@ -6,8 +6,8 @@
 This page will be added to as development progresses.
 
 == Project Rename
-Any occurrences of `isis` within source code, including configuration resources,
-have been replaced with `causeway` while keeping variants:
+
+Any occurrences of `isis` within source code, including configuration resources, have been replaced with `causeway` while keeping variants:
 
 * lower-case `isis` -> `causeway`
 * upper-case `ISIS` -> `CAUSEWAY`
@@ -92,8 +92,7 @@ Adjust the locations in your `.layout.xml` files accordingly:
 
 The following configuration properties have been changed:
 
-[cols="2a,3a", options="header"]
-
+[cols="2m,3m", options="header"]
 |===
 
 | previously
@@ -116,6 +115,13 @@ The following configuration properties have been changed:
 
 |===
 
+The following configuration properties have been removed (with no replacement):
+
+* `causeway.extensions.command-log.publish-policy`
++
+As a result, commands for actions that do _not_ change state (eg queries) are now also persisted.
+
+
 == Maven Artifacts
 
 The following changed:
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/services/command/Command.java b/api/applib/src/main/java/org/apache/causeway/applib/services/command/Command.java
index 49e4828f88..f03d85f9ca 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/services/command/Command.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/services/command/Command.java
@@ -232,30 +232,6 @@ public class Command implements HasInteractionId, HasUsername, HasCommandDto {
     @Getter
     private Throwable exception;
 
-    /**
-     * Whether this command resulted in a change of state to the system.
-     *
-     * <p>
-     *     This can be used as a hint to decide whether to persist the command
-     *     to a datastore, for example for auditing (though
-     *     {@link org.apache.causeway.applib.services.publishing.spi.ExecutionSubscriber} is
-     *     an alternative for that use case) or so that it can be retrieved
-     *     and replayed on another system, eg for regression testing.
-     * </p>
-     *
-     * <p>
-     *     Note that this flag will only be accurate if the <i>Audit Trail</i> extension (or equivalent) is configured
-     *     to actually set it.
-     * </p>
-     *
-     * <p>
-     *     See also the <code>causeway.extensions.command-log.publish-policy</code> configuration property, that controls
-     *     whether the <i>Command Log</i> extension checks this flag or not.
-     * </p>
-     *
-     */
-    @Getter
-    private boolean systemStateChanged;
 
     public static enum CommandPublishingPhase {
         /** initial state: do not publish (yet) */
@@ -342,18 +318,6 @@ public class Command implements HasInteractionId, HasUsername, HasCommandDto {
             Command.this.exception = resultBookmark.getFailure().orElse(null);
         }
 
-        /**
-         * <b>NOT API</b>: intended to be called only by the framework.
-         *
-         * <p>
-         * Hint that this {@link Command} has resulted in a change of state to the system.
-         * Implementations can use this to persist the command, for example.
-         * </p>
-         */
-        public void setSystemStateChanged(final boolean systemStateChanged) {
-            Command.this.systemStateChanged = systemStateChanged;
-        }
-
         /**
          * <b>NOT API</b>: intended to be called only by the framework.
          */
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/services/publishing/log/CommandLogger.java b/api/applib/src/main/java/org/apache/causeway/applib/services/publishing/log/CommandLogger.java
index 9f58187d69..ce062b3c73 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/services/publishing/log/CommandLogger.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/services/publishing/log/CommandLogger.java
@@ -59,9 +59,8 @@ public class CommandLogger implements CommandSubscriber {
         val commandDto = command.getCommandDto();
         val xml = CommandDtoUtils.dtoMapper().toString(commandDto);
 
-        log.debug("completed: {}, systemStateChanged {} \n{}",
+        log.debug("completed: {} \n{}",
                 command.getLogicalMemberIdentifier(),
-                command.isSystemStateChanged(),
                 xml);
     }
 
diff --git a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
index 0b60c19814..b75de4f1e6 100644
--- a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
+++ b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
@@ -2942,30 +2942,6 @@ public class CausewayConfiguration {
              */
             private PersistPolicy persist = PersistPolicy.ENABLED;
 
-            public enum PublishPolicy {
-                ALWAYS,
-                ONLY_IF_SYSTEM_CHANGED,
-                ;
-                public boolean isAlways() { return this == ALWAYS; }
-                public boolean isOnlyIfSystemChanged() { return this == ONLY_IF_SYSTEM_CHANGED; }
-
-            }
-            /**
-             * Whether commands should be published always, or only if a change in the system's state has been detected.
-             *
-             * <p>
-             * In general, the default of {@link PublishPolicy#ALWAYS} should be used, <i>unless</i> the
-             * <i>Audit Trail</i> extension is also in use, which is able to advise on whether the systems state has
-             * changed.
-             * </p>
-             *
-             * <p>
-             *     Put another way, if this policy is set to {@link PublishPolicy#ONLY_IF_SYSTEM_CHANGED} but the
-             *     <i>Audit Trail</i> extension is <i>not</i> enabled, then nothing will be logged.
-             * </p>
-             */
-            private PublishPolicy publishPolicy = PublishPolicy.ALWAYS;
-
         }
 
         private final CommandReplay commandReplay = new CommandReplay();
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/subscriber/CommandSubscriberForCommandLog.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/subscriber/CommandSubscriberForCommandLog.java
index 931a44f35f..50f8c56a78 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/subscriber/CommandSubscriberForCommandLog.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/subscriber/CommandSubscriberForCommandLog.java
@@ -71,12 +71,6 @@ public class CommandSubscriberForCommandLog implements CommandSubscriber {
             return;
         }
 
-        // skip if no changes AND skipping is allowed
-        if (causewayConfiguration.getExtensions().getCommandLog().getPublishPolicy().isOnlyIfSystemChanged()
-                && !command.isSystemStateChanged()) {
-            return;
-        }
-
         val existingCommandLogEntryIfAny =
                 commandLogEntryRepository.findByInteractionId(command.getInteractionId());
         if(existingCommandLogEntryIfAny.isPresent()) {
diff --git a/persistence/commons/src/main/java/org/apache/causeway/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java b/persistence/commons/src/main/java/org/apache/causeway/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java
index 54ed0b64bb..a3c71b03f2 100644
--- a/persistence/commons/src/main/java/org/apache/causeway/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java
+++ b/persistence/commons/src/main/java/org/apache/causeway/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java
@@ -270,7 +270,6 @@ implements
         val alreadySet = persistentChangesEncountered.getAndSet(true);
         if(!alreadySet) {
             val command = currentInteraction().getCommand();
-            command.updater().setSystemStateChanged(true);
         }
     }