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 <[email protected]>
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

Reply via email to