You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/03/05 18:39:54 UTC
[isis] branch master updated: ISIS-2567: fixes command preparation
happening too late
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new b5a3605 ISIS-2567: fixes command preparation happening too late
b5a3605 is described below
commit b5a3605201abe92d42849522b3bb396ea84b1426
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Mar 5 19:39:40 2021 +0100
ISIS-2567: fixes command preparation happening too late
---
.../changetracking/EntityChangeTrackerDefault.java | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java
index 274ea55..3a49411 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java
@@ -20,6 +20,7 @@ package org.apache.isis.core.transaction.changetracking;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.LongAdder;
import java.util.function.Function;
import java.util.stream.Stream;
@@ -162,6 +163,7 @@ implements
}
entityChangeEventCount.increment();
+ enableCommandPublishing();
if(!EntityChangePublishingFacet.isPublishingEnabled(adapter.getSpecification())) {
return false; // ignore entities that are not enabled for entity change publishing
@@ -180,10 +182,9 @@ implements
whilePublishing();
postPublishing();
}
-
+
private void whilePublishing() {
log.debug("about to publish entity changes");
- prepareCommandPublishing();
entityPropertyChangePublisher.publishChangedProperties(this);
entityChangesPublisher.publishChangingEntities(this);
}
@@ -197,11 +198,12 @@ implements
numberEntitiesLoaded.reset();
}
- private void prepareCommandPublishing() {
- val command = currentInteraction().getCommand();
- command.updater().setSystemStateChanged(
- command.isSystemStateChanged()
- || entityChangeEventCount.longValue() > 0L);
+ private void enableCommandPublishing() {
+ val alreadySet = persitentChangesEncountered.getAndSet(true);
+ if(!alreadySet) {
+ val command = currentInteraction().getCommand();
+ command.updater().setSystemStateChanged(true);
+ }
}
@Override
@@ -376,6 +378,7 @@ implements
private final LongAdder numberEntitiesLoaded = new LongAdder();
private final LongAdder entityChangeEventCount = new LongAdder();
+ private final AtomicBoolean persitentChangesEncountered = new AtomicBoolean();
// -- HELPER