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/04/05 09:32:36 UTC

[causeway] 01/01: CAUSEWAY-3412: reworks runPersonas to execute all in a single ExecutionContext

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

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

commit 7175a9bab47db7bc0a5102a39968e71f8ba88f45
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Apr 5 11:32:13 2023 +0200

    CAUSEWAY-3412: reworks runPersonas to execute all in a single ExecutionContext
---
 .../applib/fixturescripts/FixtureScripts.java      | 23 ++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/testing/fixtures/applib/src/main/java/org/apache/causeway/testing/fixtures/applib/fixturescripts/FixtureScripts.java b/testing/fixtures/applib/src/main/java/org/apache/causeway/testing/fixtures/applib/fixturescripts/FixtureScripts.java
index bafed10f24..e89160e3fb 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/causeway/testing/fixtures/applib/fixturescripts/FixtureScripts.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/causeway/testing/fixtures/applib/fixturescripts/FixtureScripts.java
@@ -439,14 +439,21 @@ public class FixtureScripts {
 
     @SafeVarargs
     @Programmatic
-    public final void runPersonas(final PersonaWithBuilderScript<?,? extends BuilderScriptAbstract<?>> ... personaScripts) {
-        for (val personaWithBuilderScript : personaScripts) {
-
-            val script = _Casts.<PersonaWithBuilderScript<Object,BuilderScriptAbstract<Object>>>
-                uncheckedCast(personaWithBuilderScript);
-
-            runPersona(script);
-        }
+    public final void runPersonas(final PersonaWithBuilderScript<?,? extends BuilderScriptAbstract<?>> ... personas) {
+        interactionService.callAnonymous(()->
+            transactionService.callWithinCurrentTransactionElseCreateNew(()->
+                runFixtureScript(new FixtureScript() {
+                    @Override
+                    protected void execute(final ExecutionContext executionContext) {
+                        for (val personaWithBuilderScript : personas) {
+                            val fixtureScript = personaWithBuilderScript.builder();
+                            executionContext.executeChild(this, fixtureScript);
+                        }
+                    }
+                }, null)
+            )
+        )
+        .ifFailureFail();
     }
 
     @Programmatic