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>.