This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch ISIS-3110 in repository https://gitbox.apache.org/repos/asf/isis.git
commit 9ab261e757a8d5a14feb2c37a353dbcb2398024e Author: Dan Haywood <[email protected]> AuthorDate: Thu Aug 4 08:08:22 2022 +0100 ISIS-3110: fixes up integ test issues --- .../changetracking/EntityChangeTrackerDefault.java | 14 ++++++++++++-- .../testdomain/persistence/jpa/JpaBootstrappingTest.java | 3 ++- .../JpaExceptionTranslationTest_usingTransactional.java | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/persistence/commons/src/main/java/org/apache/isis/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java b/persistence/commons/src/main/java/org/apache/isis/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java index 8c9450a0c8..620f5c96ec 100644 --- a/persistence/commons/src/main/java/org/apache/isis/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java +++ b/persistence/commons/src/main/java/org/apache/isis/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java @@ -37,11 +37,11 @@ import org.springframework.core.annotation.Order; import org.springframework.lang.Nullable; import org.springframework.stereotype.Service; +import org.apache.isis.applib.annotation.DomainObject; import org.apache.isis.applib.annotation.EntityChangeKind; import org.apache.isis.applib.annotation.InteractionScope; import org.apache.isis.applib.annotation.PriorityPrecedence; import org.apache.isis.applib.services.bookmark.Bookmark; -import org.apache.isis.applib.services.eventbus.EventBusService; import org.apache.isis.applib.services.iactn.Interaction; import org.apache.isis.applib.services.iactn.InteractionProvider; import org.apache.isis.applib.services.metrics.MetricsService; @@ -75,13 +75,23 @@ import lombok.val; import lombok.extern.log4j.Log4j2; /** + * This service keeps track of all of the changes within a transactoin, for entities for which entity property change + * publishing is enabled (typically using the + * {@link DomainObject#entityChangePublishing() @DomainObject(entityChangePublishing=)} annotation attribute. + * + * <p> + * The service is {@link InteractionScope}d. In theory this could happen multiple times per interaction, so the + * data structures are cleared on each commit for potential reuse within the same interaction. (Of course, because the + * service <i>is</i> interaction-scoped, a new instance of the service is created for each interaction, and so the + * data held in this service is private to each user's interaction. + * </p> * @since 2.0 {@index} */ @Service @Named("isis.persistence.commons.EntityChangeTrackerDefault") @Priority(PriorityPrecedence.EARLY) @Qualifier("default") -@InteractionScope +@InteractionScope // see note above regarding this @RequiredArgsConstructor(onConstructor_ = {@Inject}) @Log4j2 public class EntityChangeTrackerDefault diff --git a/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaBootstrappingTest.java b/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaBootstrappingTest.java index 26ff00f9da..aea9fc23cc 100644 --- a/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaBootstrappingTest.java +++ b/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaBootstrappingTest.java @@ -29,6 +29,7 @@ import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.TestPropertySource; import org.springframework.transaction.PlatformTransactionManager; @@ -59,7 +60,7 @@ import lombok.val; }) @TestPropertySource(IsisPresets.UseLog4j2Test) @Transactional @TestMethodOrder(MethodOrderer.OrderAnnotation.class) -//@DirtiesContext + @DirtiesContext // doesn't seem to tidy up correctly ... I see InteractionService still injected into entities in the _next_ tests run (JpaExceptionTranslationTest_usingTransactional) class JpaBootstrappingTest extends IsisIntegrationTestAbstract { @Inject private Optional<PlatformTransactionManager> platformTransactionManager; diff --git a/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest_usingTransactional.java b/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest_usingTransactional.java index 371bc9cd0a..9ac3e2f1ce 100644 --- a/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest_usingTransactional.java +++ b/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest_usingTransactional.java @@ -30,6 +30,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.TestPropertySources;
