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 2019/12/01 19:27:53 UTC
[isis] 03/07: ISIS-2188: simplifies FixtureScripts constructor +
init
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 245c7480ece9fca6ce3e737f7ba16fb4d7a259b6
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Dec 1 18:24:28 2019 +0000
ISIS-2188: simplifies FixtureScripts constructor + init
---
.../fixtures/fixturescripts/FixtureScripts.java | 84 ++++++----------------
.../FixtureScriptsSpecificationProvider.java | 1 -
2 files changed, 20 insertions(+), 65 deletions(-)
diff --git a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
index cd2ea85..e56c823 100644
--- a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
+++ b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
@@ -18,14 +18,13 @@
*/
package org.apache.isis.extensions.fixtures.fixturescripts;
-import java.io.PrintStream;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
import java.util.function.Predicate;
import java.util.stream.Collectors;
-import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.xml.bind.annotation.XmlRootElement;
@@ -52,7 +51,6 @@ import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.services.title.TitleService;
import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.exceptions._Exceptions;
@@ -63,6 +61,7 @@ import org.apache.isis.extensions.fixtures.fixturespec.FixtureScriptsSpecificati
import org.apache.isis.extensions.fixtures.fixturespec.FixtureScriptsSpecificationProvider;
import lombok.Getter;
+import lombok.Setter;
import lombok.val;
@@ -179,25 +178,19 @@ public class FixtureScripts extends AbstractService {
*/
public static final String PACKAGE_PREFIX = FixtureScripts.class.getPackage().getName();
- /**
- * @param specification - specifies how the service will find instances and execute them.
- */
- public FixtureScripts(final FixtureScriptsSpecification specification) {
- this.specification = specification;
- }
- public FixtureScripts() {
- this(FixtureScriptsSpecification.builder(PACKAGE_PREFIX)
- .build());
+ public FixtureScripts(Optional<FixtureScriptsSpecificationProvider> fixtureScriptsSpecificationProvider) {
+ this.specification = fixtureScriptsSpecificationProvider.orElse(() -> FixtureScriptsSpecification.builder(PACKAGE_PREFIX).build()).getSpecification();
}
+
// -- packagePrefix, nonPersistedObjectsStrategy, multipleExecutionStrategy
@Getter
private FixtureScriptsSpecification specification;
- public String getPackagePrefix() {
+ private String getPackagePrefix() {
return specification.getPackagePrefix();
}
public NonPersistedObjectsStrategy getNonPersistedObjectsStrategy() {
@@ -215,32 +208,25 @@ public class FixtureScripts extends AbstractService {
// -- init
- Can<FixtureScriptsSpecificationProvider> fixtureScriptsSpecificationProvider;
-
- @PostConstruct
- public void init() {
- if(fixtureScriptsSpecificationProvider == null) {
- fixtureScriptsSpecificationProvider =
- serviceRegistry.select(FixtureScriptsSpecificationProvider.class);
- }
- fixtureScriptsSpecificationProvider.getFirst().ifPresent(
- provider -> this.specification = provider.getSpecification()
- );
- }
+// @Inject List<FixtureScriptsSpecificationProvider> fixtureScriptsSpecificationProvider;
+//
+// @PostConstruct
+// public void init() {
+// fixtureScriptsSpecificationProvider.stream().findFirst().ifPresent(
+// provider -> this.specification = provider.getSpecification()
+// );
+// }
// -- fixtureScriptList (lazily built)
private List<FixtureScript> fixtureScriptList;
-
- @Programmatic
- public List<FixtureScript> getFixtureScriptList() {
+ private List<FixtureScript> getFixtureScriptList() {
if(fixtureScriptList == null) {
fixtureScriptList = findAndInstantiateFixtureScripts();
}
return fixtureScriptList;
}
-
private List<FixtureScript> findAndInstantiateFixtureScripts() {
val packagePrefix = getPackagePrefix();
return serviceRegistry.select(FixtureScript.class).stream()
@@ -255,21 +241,6 @@ public class FixtureScripts extends AbstractService {
- // -- fixtureTracing (thread-local)
-
- private final ThreadLocal<PrintStream> fixtureTracing = new ThreadLocal<PrintStream>(){{
- set(System.out);
- }};
-
- @Programmatic
- public PrintStream getFixtureTracing() {
- return fixtureTracing.get();
- }
-
- @Programmatic
- public void setFixtureTracing(PrintStream fixtureTracing) {
- this.fixtureTracing.set(fixtureTracing);
- }
// -- runFixtureScript (using choices as the drop-down policy)
@@ -297,7 +268,7 @@ public class FixtureScripts extends AbstractService {
// domain services are injected into the fixture script.
serviceInjector.injectServicesInto(fixtureScript);
- return fixtureScript.withTracing(fixtureTracing.get()).run(parameters);
+ return fixtureScript.run(parameters);
} finally {
eventBusService.post(new FixturesInstalledEvent(this));
}
@@ -419,7 +390,7 @@ public class FixtureScripts extends AbstractService {
// -- HELPER
private boolean hideIfPolicyNot(final FixtureScriptsSpecification.DropDownPolicy requiredPolicy) {
- return fixtureScriptsSpecificationProvider.isEmpty() || getSpecification().getRunScriptDropDownPolicy() != requiredPolicy;
+ return getSpecification().getRunScriptDropDownPolicy() != requiredPolicy;
}
// -- programmatic API
@@ -428,7 +399,7 @@ public class FixtureScripts extends AbstractService {
public void run(final FixtureScript... fixtureScriptList) {
val singleScript = toSingleScript(fixtureScriptList);
- val parameters = (String)null;
+ String parameters = null;
transactionService.executeWithinTransaction(()->{
runFixtureScript(singleScript, parameters);
@@ -503,29 +474,14 @@ public class FixtureScripts extends AbstractService {
return FixtureScript.ExecutionContext.create(executionParameters, this);
}
- // -- hooks
-
- /**
- * Optional hook.
- */
- protected FixtureScript findFixtureScriptFor(final String qualifiedName) {
- final List<FixtureScript> fixtureScripts = getFixtureScriptList();
- for (final FixtureScript fs : fixtureScripts) {
- if(fs.getQualifiedName().contains(qualifiedName)) {
- return fs;
- }
- }
- return null;
- }
// -- memento support for FixtureScript
- @XmlRootElement(name = "fixtureScript")
+ @XmlRootElement(name = "fixtureScriptMemento")
public static class FixtureScriptMemento {
+ @Getter @Setter
private String path;
- public String getPath() { return path; }
- public void setPath(String path) { this.path = path; }
}
String mementoFor(final FixtureScript fs) {
diff --git a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturespec/FixtureScriptsSpecificationProvider.java b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturespec/FixtureScriptsSpecificationProvider.java
index bb8fd18..39e9b64 100644
--- a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturespec/FixtureScriptsSpecificationProvider.java
+++ b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturespec/FixtureScriptsSpecificationProvider.java
@@ -19,7 +19,6 @@
package org.apache.isis.extensions.fixtures.fixturespec;
import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
public interface FixtureScriptsSpecificationProvider {