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/10/16 13:37:07 UTC

[isis] 01/08: ISIS-1742: simplifies FixtureScript and FixtureScripts

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

danhaywood pushed a commit to branch dev/2.0.0/ISIS-1742-remove-deprecations
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 662effce1b68a76f7e4d2c1521d63f6a2252eeb6
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Oct 16 13:57:03 2017 +0100

    ISIS-1742: simplifies FixtureScript and FixtureScripts
    
    org.apache.isis.applib.fixturescripts
        FixtureScript.ExecutionContext - various methods to simplify API
            add(...) - use addResult(...) instead
            asKeyValueMap(String) - removed; this shouldn't have had public visibility.
    
        FixtureScript - various methods to simplify API
            execute(...) and executeChild(...) - use ExecutionContext#executeChild(FixtureScript, String, FixtureScript)} instead
            executeIfNotAlready(FixtureScript) - removed; this shouldn't have had public visibility.
            lookup(String, Class<T>) - use ExecutionContext#lookup(...) instead
            run(String) - no longer publically available (internal API for FixtureScripts to call).
    
        FixtureScripts.MultipleExecutionStrategy#IGNORE removed, replaced by EXECUTE_ONCE_BY_CLASS
---
 .../isis/applib/fixturescripts/FixtureScript.java  | 74 +---------------------
 .../isis/applib/fixturescripts/FixtureScripts.java | 24 ++-----
 .../fixturespec/FixtureScriptsDefault.java         |  3 +-
 .../fixturespec/FixtureScriptsSpecification.java   |  2 +-
 todo-deprecation-list.txt                          | 13 ++--
 5 files changed, 22 insertions(+), 94 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 98b0109..4bbcf68 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
@@ -552,16 +552,6 @@ public abstract class FixtureScript
 
         static enum As { EXEC, SKIP }
 
-        /**
-         * DO <i>NOT</i> CALL DIRECTLY; instead use {@link org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext#executeChild(org.apache.isis.applib.fixturescripts.FixtureScript, String, org.apache.isis.applib.fixturescripts.FixtureScript)} or {@link org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext#executeChild(FixtureScript, FixtureScript)}.
-         *
-         * @deprecated - should not be called directly, but has <code>public</code> visibility so there is scope for confusion.  Replaced by method with private visibility.
-         */
-        @Deprecated
-        @Programmatic
-        public void executeIfNotAlready(final FixtureScript fixtureScript) {
-            executeChildIfNotAlready(fixtureScript);
-        }
 
         private void executeChildIfNotAlready(final FixtureScript fixtureScript) {
             if(shouldExecute(fixtureScript)) {
@@ -610,7 +600,6 @@ public abstract class FixtureScript
 
             switch (executionStrategy) {
 
-                case IGNORE:
                 case EXECUTE_ONCE_BY_CLASS:
                     return shouldExecuteForExecuteOnceByClassStrategy(fixtureScript);
 
@@ -790,27 +779,15 @@ public abstract class FixtureScript
      * Entry point for {@link org.apache.isis.applib.fixturescripts.FixtureScripts} service to call.
      *
      * <p>
-     *     DO <i>NOT</i> CALL DIRECTLY.
+     *     Package-visibility only, not public API.
      * </p>
      */
-    @Programmatic
-    public final List<FixtureResult> run(final String parameters) {
+    final List<FixtureResult> run(final String parameters) {
         executionContext = fixtureScripts.newExecutionContext(parameters).withTracing(this.tracePrintStream);
         executionContext.executeChildIfNotAlready(this);
         return executionContext.getResults();
     }
 
-    /**
-     * Use instead {@link org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext#lookup(String, Class)} directly.
-     */
-    @Programmatic
-    @Deprecated
-    public <T> T lookup(final String key, final Class<T> cls) {
-        if(executionContext == null) {
-            throw new IllegalStateException("This fixture has not yet been run.");
-        }
-        return executionContext.lookup(key, cls);
-    }
 
 
     /**
@@ -823,51 +800,6 @@ public abstract class FixtureScript
 
     //endregion
 
-    //region > executeChild (API for subclasses to call); deprecated execute(FixtureScript, ExecutionContext)
-
-    /**
-     * @deprecated - use instead {@link org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext#executeChild(FixtureScript, String, FixtureScript)}.
-     */
-    @Deprecated
-    protected void execute(
-            final String localNameOverride,
-            final FixtureScript childFixtureScript,
-            final ExecutionContext executionContext) {
-        executionContext.executeChild(this, localNameOverride, childFixtureScript);
-    }
-
-    /**
-     * @deprecated - use instead {@link org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext#executeChild(FixtureScript, String, FixtureScript)}.
-     */
-    @Deprecated
-    protected void executeChild(
-            final String localNameOverride,
-            final FixtureScript childFixtureScript,
-            final ExecutionContext executionContext) {
-        executionContext.executeChild(this, localNameOverride, childFixtureScript);
-    }
-
-    /**
-     * @deprecated - use instead {@link org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext#executeChild(org.apache.isis.applib.fixturescripts.FixtureScript, org.apache.isis.applib.fixturescripts.FixtureScript)}
-     */
-    @Deprecated
-    protected void execute(
-            final FixtureScript childFixtureScript,
-            final ExecutionContext executionContext) {
-        executionContext.executeChild(this, childFixtureScript);
-    }
-
-    /**
-     * @deprecated - use instead {@link org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext#executeChild(org.apache.isis.applib.fixturescripts.FixtureScript, org.apache.isis.applib.fixturescripts.FixtureScript)}
-     */
-    @Deprecated
-    protected void executeChild(
-            final FixtureScript childFixtureScript,
-            final ExecutionContext executionContext) {
-        executionContext.executeChild(this, childFixtureScript);
-    }
-
-    //endregion
 
     //region > execute (API for subclasses to implement)
 
@@ -901,7 +833,7 @@ public abstract class FixtureScript
     //region > helpers (for subclasses)
 
     /**
-     * Returns the first non-null vaulue; for convenience of subclass implementations
+     * Returns the first non-null value; for convenience of subclass implementations
      */
     protected static <T> T coalesce(final T... ts) {
         for (final T t : ts) {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
index 5c49ace..31d0da1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
@@ -84,11 +84,6 @@ public abstract class FixtureScripts extends AbstractService {
      */
     public enum MultipleExecutionStrategy {
         /**
-         * @deprecated - renamed to {@link #EXECUTE_ONCE_BY_CLASS}.
-         */
-        @Deprecated
-        IGNORE,
-        /**
          * Any given fixture script (or more precisely, any fixture script instance for a particular fixture script
          * class) can only be run once.
          *
@@ -127,8 +122,6 @@ public abstract class FixtureScripts extends AbstractService {
          *     loaded more than once (so the {@link #EXECUTE} strategy doesn't apply either).  The solution is for
          *     <tt>ExcelFixture</tt> to have value semantics (a digest of the spreadsheet argument).
          * </p>
-         *
-         * @see #IGNORE
          */
         EXECUTE_ONCE_BY_VALUE,
         /**
@@ -148,14 +141,6 @@ public abstract class FixtureScripts extends AbstractService {
          */
         EXECUTE;
 
-        /**
-         * @deprecated - use {@link #isExecuteOnceByClass()}.
-         * @return
-         */
-        @Deprecated
-        public boolean isIgnore() {
-            return this == IGNORE;
-        }
         public boolean isExecuteOnceByClass() {
             return this == EXECUTE_ONCE_BY_CLASS;
         }
@@ -175,7 +160,7 @@ public abstract class FixtureScripts extends AbstractService {
     /**
      * Defaults to {@link FixtureScripts.NonPersistedObjectsStrategy#PERSIST persist}
      * strategy (if non-persisted objects are {@link FixtureScripts#newFixtureResult(FixtureScript, String, Object, boolean) added} to a {@link FixtureResultList}),
-     * defaults {@link #getMultipleExecutionStrategy()} to {@link FixtureScripts.MultipleExecutionStrategy#IGNORE ignore}
+     * defaults {@link #getMultipleExecutionStrategy()} to {@link FixtureScripts.MultipleExecutionStrategy#EXECUTE_ONCE_BY_CLASS}
      * if multiple instances of the same fixture script class are encountered.
      *
      * @param packagePrefix - to search for fixture script implementations, eg "com.mycompany".  Note that this is ignored if an {@link org.apache.isis.applib.AppManifest} is in use.
@@ -391,7 +376,7 @@ public abstract class FixtureScripts extends AbstractService {
         // domain services are injected into the fixture script.
         container.injectServicesInto(fixtureScript);
 
-        return fixtureScript.run(parameters);
+        return runScript(fixtureScript, parameters);
     }
     public FixtureScript default0RunFixtureScript() {
         return getFixtureScriptList().isEmpty() ? null: getFixtureScriptList().get(0);
@@ -419,6 +404,11 @@ public abstract class FixtureScripts extends AbstractService {
         return fixtureScript.validateRun(parameters);
     }
 
+    protected List<FixtureResult> runScript(final FixtureScript fixtureScript, final String parameters) {
+        return fixtureScript.run(parameters);
+    }
+
+
     //endregion
 
     //region > programmatic API
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/fixturespec/FixtureScriptsDefault.java b/core/applib/src/main/java/org/apache/isis/applib/services/fixturespec/FixtureScriptsDefault.java
index 007bdc9..b2cb8b3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/fixturespec/FixtureScriptsDefault.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/fixturespec/FixtureScriptsDefault.java
@@ -203,12 +203,13 @@ public class FixtureScriptsDefault extends FixtureScripts {
         if(recreateScript == null) {
             return null;
         }
-        final List<FixtureResult> results = recreateScript.run(null);
+        final List<FixtureResult> results = runScript(recreateScript, null);
         if(results.isEmpty()) {
             return null;
         }
         return results.get(0).getObject();
     }
+
     public boolean hideRecreateObjectsAndReturnFirst() {
         return getSpecification().getRecreateScriptClass() == null;
     }
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 81965bc..41aa15b 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
@@ -111,7 +111,7 @@ public class FixtureScriptsSpecification {
     public static class Builder {
         private final String packagePrefix;
         private FixtureScripts.NonPersistedObjectsStrategy nonPersistedObjectsStrategy = FixtureScripts.NonPersistedObjectsStrategy.PERSIST;
-        private FixtureScripts.MultipleExecutionStrategy multipleExecutionStrategy = FixtureScripts.MultipleExecutionStrategy.IGNORE;
+        private FixtureScripts.MultipleExecutionStrategy multipleExecutionStrategy = FixtureScripts.MultipleExecutionStrategy.EXECUTE_ONCE_BY_CLASS;
         private Class<? extends FixtureScript> recreateScriptClass = null;
         private Class<? extends FixtureScript> defaultScriptClass = null;
         private DropDownPolicy dropDownPolicy = DropDownPolicy.CHOICES;
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index e199e24..17544ca 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -21,10 +21,7 @@ org.apache.isis.applib.clock
 
 
 org.apache.isis.applib.fixturescripts
-    FixtureScript - various methods to simplify API
-        execute(...) and executeChild(...) - use ExecutionContext#executeChild(FixtureScript, String, FixtureScript)} instead
-        executeIfNotAlready(FixtureScript) - removed; this shouldn't have had public visibility.
-        lookup(String, Class<T>) - use ExecutionContext#lookup(...) instead
+
     FixtureScripts.java - remove deprecated methods;
                           framework provides an implementation of this service, and use FixtureScriptsSpecificatoinProvider to configure instead.
 
@@ -429,6 +426,14 @@ org.apache.isis.applib.fixturescripts
         add(...) - use addResult(...) instead
         asKeyValueMap(String) - removed; this shouldn't have had public visibility.
 
+    FixtureScript - various methods to simplify API
+        execute(...) and executeChild(...) - use ExecutionContext#executeChild(FixtureScript, String, FixtureScript)} instead
+        executeIfNotAlready(FixtureScript) - removed; this shouldn't have had public visibility.
+        lookup(String, Class<T>) - use ExecutionContext#lookup(...) instead
+        run(String) - no longer publically available (internal API for FixtureScripts to call).
+
+
+    FixtureScripts.MultipleExecutionStrategy#IGNORE removed, replaced by EXECUTE_ONCE_BY_CLASS
 
 org.apache.isis.viewer.restfulobjects.rendering.service.conmap.ContentMappingService
     - replaced by non-applib

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