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/30 09:06:45 UTC
[isis] branch master updated: ISIS-2573: fixes entity change
publishing to happen during pre-commit
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 ff89c30 ISIS-2573: fixes entity change publishing to happen during pre-commit
ff89c30 is described below
commit ff89c305f6bae9bdf2a41a591304ba8a2ca9acaf
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Mar 30 11:06:29 2021 +0200
ISIS-2573: fixes entity change publishing to happen during pre-commit
---
.../org/apache/isis/core/runtime/events/_Xray.java | 5 ++--
.../changetracking/EntityChangeTrackerDefault.java | 11 ++++-----
.../applayer/ApplicationLayerTestFactory.java | 28 ++++++----------------
3 files changed, 15 insertions(+), 29 deletions(-)
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/_Xray.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/events/_Xray.java
index 0fa69d5..b411521 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/_Xray.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/events/_Xray.java
@@ -76,7 +76,8 @@ final class _Xray {
seq.ifPresent(sequence->{
val sequenceData = sequence.getData();
- sequenceData.enter("thread", "tx", "before completion");
+ sequenceData.alias("evb", "EventBus");
+ sequenceData.enter("tx", "evb", "tx: before completion");
});
});
@@ -111,7 +112,7 @@ final class _Xray {
seq.ifPresent(sequence->{
val sequenceData = sequence.getData();
- sequenceData.exit("tx", "thread", txInfo);
+ sequenceData.enter("tx", "evb", txInfo);
});
});
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 0c6545f..711a0ac 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
@@ -31,9 +31,9 @@ import javax.inject.Provider;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Primary;
+import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.event.TransactionalEventListener;
import org.apache.isis.applib.annotation.EntityChangeKind;
import org.apache.isis.applib.annotation.InteractionScope;
@@ -174,12 +174,11 @@ implements
}
/**
- * @apiNote intended to be called during pre-commit of a transaction by the framework internally
+ * TRANSACTION END BOUNDARY
+ * @apiNote intended to be called during before transaction completion by the framework internally
*/
-
- /** TRANSACTION END BOUNDARY */
- @TransactionalEventListener(TransactionBeforeCompletionEvent.class)
- public void onPreCommit(TransactionBeforeCompletionEvent event) {
+ @EventListener(value = TransactionBeforeCompletionEvent.class)
+ public void onTransactionCompleting(TransactionBeforeCompletionEvent event) {
whilePublishing();
postPublishing();
}
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java
index 0f9f1a9..62d9bcb 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java
@@ -18,6 +18,12 @@
*/
package org.apache.isis.testdomain.applayer;
+import static org.apache.isis.applib.services.wrapper.control.AsyncControl.returningVoid;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.DynamicTest.dynamicTest;
+
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
@@ -28,7 +34,6 @@ import java.util.function.Consumer;
import javax.inject.Inject;
import javax.inject.Named;
-import javax.inject.Provider;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;
@@ -39,11 +44,6 @@ import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.fail;
-import static org.junit.jupiter.api.DynamicTest.dynamicTest;
-
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.services.repository.RepositoryService;
@@ -63,7 +63,6 @@ import org.apache.isis.core.metamodel.interactions.managed.PropertyInteraction;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.runtime.util.XrayUtil;
-import org.apache.isis.core.transaction.changetracking.EntityChangeTrackerDefault;
import org.apache.isis.core.transaction.events.TransactionBeforeCompletionEvent;
import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
import org.apache.isis.testdomain.jdo.entities.JdoBook;
@@ -71,14 +70,11 @@ import org.apache.isis.testdomain.jdo.entities.JdoInventory;
import org.apache.isis.testdomain.jdo.entities.JdoProduct;
import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
-import static org.apache.isis.applib.services.wrapper.control.AsyncControl.returningVoid;
-
+import io.smallrye.common.constraint.Assert;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.val;
-import io.smallrye.common.constraint.Assert;
-
@Component
@Import({
ApplicationLayerTestFactory.PreCommitListener.class
@@ -94,7 +90,6 @@ public class ApplicationLayerTestFactory {
private final PreCommitListener preCommitListener;
private final InteractionFactory interactionFactory;
private final InteractionTracker interactionTracker;
- private final Provider<EntityChangeTrackerDefault> entityChangeTrackerProvider;
@Named("transaction-aware-pmf-proxy")
private final PersistenceManagerFactory pmf;
@@ -228,9 +223,6 @@ public class ApplicationLayerTestFactory {
book.setName("Book #2");
repository.persist(book);
- // trigger publishing of entity changes (flush queue)
- entityChangeTrackerProvider.get().onPreCommit(null);
-
});
preCommitListener.setVerifier(null);
@@ -441,9 +433,6 @@ public class ApplicationLayerTestFactory {
pm.flush();
- // trigger publishing of entity changes (flush queue)
- entityChangeTrackerProvider.get().onPreCommit(null);
-
});
}
@@ -455,9 +444,6 @@ public class ApplicationLayerTestFactory {
val book = repository.allInstances(JdoBook.class).listIterator().next();
transactionalBookConsumer.accept(book);
- //FIXME ... should not be required explicitly here
- // trigger publishing of entity changes (flush queue)
- entityChangeTrackerProvider.get().onPreCommit(null);
})
.optionalElseFail();