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 {