You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/11/27 15:21:22 UTC

[isis] 01/02: ISIS-1784: generalises, instead FixtureScriptWithMultipleExecutionStrategy

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

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 7775b04a5d6b04e1504d632ccd943551573c634b
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Nov 27 13:36:42 2017 +0000

    ISIS-1784: generalises, instead FixtureScriptWithMultipleExecutionStrategy
---
 .../isis/applib/fixturescripts/FixtureScript.java     | 19 ++++++++++++++-----
 ...t.java => FixtureScriptWithExecutionStrategy.java} | 10 +++++++---
 .../fixturespec/FixtureScriptsSpecification.java      |  6 +++---
 3 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
index 80b6e66..7e25720 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
@@ -599,12 +599,8 @@ public abstract class FixtureScript
 
         private <T extends FixtureScript> T executeChildIfNotAlready(final T childFixtureScript) {
 
-            if(childFixtureScript instanceof ValueFixtureScript) {
-                return executeChildIfNotAlreadyWithValueSemantics(childFixtureScript);
-            }
-
             final FixtureScripts.MultipleExecutionStrategy executionStrategy =
-                    fixtureScripts.getMultipleExecutionStrategy();
+                    determineExecutionStrategy(childFixtureScript);
 
             final FixtureScript previouslyExecutedScript;
             switch (executionStrategy) {
@@ -637,6 +633,19 @@ public abstract class FixtureScript
             }
         }
 
+        private <T extends FixtureScript> FixtureScripts.MultipleExecutionStrategy determineExecutionStrategy(final T childFixtureScript) {
+            final FixtureScripts.MultipleExecutionStrategy executionStrategy;
+
+            if(childFixtureScript instanceof FixtureScriptWithExecutionStrategy) {
+                final FixtureScriptWithExecutionStrategy fixtureScriptWithExecutionStrategy =
+                        (FixtureScriptWithExecutionStrategy) childFixtureScript;
+                executionStrategy = fixtureScriptWithExecutionStrategy.getMultipleExecutionStrategy();
+            } else {
+                executionStrategy = fixtureScripts.getMultipleExecutionStrategy();
+            }
+            return executionStrategy;
+        }
+
         private <T extends FixtureScript> T executeChildIfNotAlreadyWithValueSemantics(final T childFixtureScript) {
             final FixtureScript previouslyExecutedScript;
             previouslyExecutedScript = fixtureScriptByValue.get(childFixtureScript);
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/ValueFixtureScript.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScriptWithExecutionStrategy.java
similarity index 79%
rename from core/applib/src/main/java/org/apache/isis/applib/fixturescripts/ValueFixtureScript.java
rename to core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScriptWithExecutionStrategy.java
index db81ca0..7f58757 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/ValueFixtureScript.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScriptWithExecutionStrategy.java
@@ -18,11 +18,15 @@
  */
 package org.apache.isis.applib.fixturescripts;
 
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.fixturespec.FixtureScriptsSpecification;
 
 /**
  * Overrides the {@link FixtureScriptsSpecification#getMultipleExecutionStrategy() globally-defined}
- * {@link FixtureScripts.MultipleExecutionStrategy} strategy, allowing individual fixtures to indicate that they have
- * value semantics (ie be executed as per {@link FixtureScripts.MultipleExecutionStrategy#EXECUTE_ONCE_BY_VALUE}.
+ * {@link FixtureScripts.MultipleExecutionStrategy} strategy, allowing individual fixtures to indicate that they have their own execution strategy.
  */
-public interface ValueFixtureScript {}
+public interface FixtureScriptWithExecutionStrategy {
+
+    @Programmatic
+    FixtureScripts.MultipleExecutionStrategy getMultipleExecutionStrategy();
+}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/fixturespec/FixtureScriptsSpecification.java b/core/applib/src/main/java/org/apache/isis/applib/services/fixturespec/FixtureScriptsSpecification.java
index b30047e..9ddbbde 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/fixturespec/FixtureScriptsSpecification.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/fixturespec/FixtureScriptsSpecification.java
@@ -20,7 +20,7 @@ import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.fixturescripts.FixtureResultList;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.applib.fixturescripts.FixtureScripts;
-import org.apache.isis.applib.fixturescripts.ValueFixtureScript;
+import org.apache.isis.applib.fixturescripts.FixtureScriptWithExecutionStrategy;
 
 /**
  * Pulls together the various state that influences the behaviour of {@link FixtureScripts} service.
@@ -91,7 +91,7 @@ public class FixtureScriptsSpecification {
 
     /**
      * Note that this can be overridden on a fixture-by-fixture basis if the fixture implements
-     * {@link ValueFixtureScript}.
+     * {@link FixtureScriptWithExecutionStrategy}.
      */
     @Programmatic
     public FixtureScripts.MultipleExecutionStrategy getMultipleExecutionStrategy() {
@@ -135,7 +135,7 @@ public class FixtureScriptsSpecification {
 
         /**
          * Note that this can be overridden on a fixture-by-fixture basis if the fixture implements
-         * {@link ValueFixtureScript}.
+         * {@link FixtureScriptWithExecutionStrategy}.
          */
         public Builder with(FixtureScripts.MultipleExecutionStrategy multipleExecutionStrategy) {
             this.multipleExecutionStrategy = multipleExecutionStrategy;

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.