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 2021/06/06 16:25:10 UTC

[isis] branch ISIS-2717 updated (fa6a435 -> bf13da4)

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

danhaywood pushed a change to branch ISIS-2717
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from fa6a435  ISIS-2717: adds config properties and autoconfig
     new 0cfecc9  ISIS-2483: regen refguide-index docs : updated from recent other tickets.
     new ac998d1  ISIS-2483: adds new refguide-index for other recent new tickets
     new bbf8359  ISIS-2717: adds refguide-index for testing/fixtures module
     new ae309bd  ISIS-2717: updates projdoc guide
     new 6878033  ISIS-2717: updates config pages
     new efdbcbe  ISIS-2717: converts ExecutionParametersService into an interface rather than an impl ...
     new 282fb90  ISIS-2717: removes fixture's service docs, as now part of refguide-index.
     new bf13da4  ISIS-2717: improves docs for fixture scripts

The 8 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../comguide/modules/ROOT/pages/starter-apps.adoc  |   8 +-
 .../pages/index/annotation/DomainObject.adoc       |  12 +-
 .../applib/pages/index/graph/tree/TreeNode.adoc    |   6 +-
 .../services/appfeat/ApplicationFeatureId.adoc     |   1 +
 .../pages/index/services/metamodel/Config.adoc     |  13 +-
 .../index/services/metamodel/DomainMember.adoc     |   2 +
 .../index/services/metamodel/MetaModelService.adoc |   2 +-
 .../services/metamodel/MetaModelServiceMenu.adoc   |   2 +-
 .../index/services/repository/EntityState.adoc     |  28 +-
 .../services/repository/RepositoryService.adoc     |  52 ----
 .../manager/AnonymousInteractionFactory.adoc}      |  31 +-
 .../index/secman/applib/SecmanConfiguration.adoc   |   9 +-
 ...PermissionsEvaluationServiceAllowBeatsVeto.adoc |   7 +
 ...PermissionsEvaluationServiceVetoBeatsAllow.adoc |   7 +
 .../seed/IsisExtH2ConsoleRoleAndPermissions.adoc   |   1 +
 .../authenticator/AuthenticatorSecman.adoc}        |  19 +-
 .../AuthenticatorSecmanAutoConfiguration.adoc}     |   9 +-
 .../IsisIntegrationTestAbstractWithFixtures.adoc}  |   6 +-
 .../fixturescripts/BuilderScriptAbstract.adoc}     |  19 +-
 .../fixturescripts/BuilderScriptWithResult.adoc}   |   8 +-
 .../BuilderScriptWithoutResult.adoc}               |   7 +-
 .../applib/fixturescripts/ExecutionParameters.adoc |  49 +++
 .../fixturescripts/ExecutionParametersDefault.adoc |  53 ++++
 .../ExecutionParametersService.adoc}               |  11 +-
 ...xecutionParametersServiceAutoConfiguration.adoc |  27 ++
 .../applib/fixturescripts/FixtureResult.adoc}      |  11 +-
 .../applib/fixturescripts/FixtureResultList.adoc   |  36 +++
 .../applib/fixturescripts/FixtureScript.adoc       |  65 ++++
 .../applib/fixturescripts/FixtureScripts.adoc      | 146 +++++++++
 .../FixtureScripts~MultipleExecutionStrategy.adoc  |  68 +++++
 ...ixtureScripts~NonPersistedObjectsStrategy.adoc} |  10 +-
 .../FixtureScript~ExecutionContext.adoc            | 138 +++++++++
 ...xtureScripts_020-configuration-properties.adoc} |  13 +-
 .../fixturespec/FixtureScriptsSpecification.adoc   |  44 +++
 .../applib/modules/ModuleWithFixtures.adoc         |  50 +++
 .../applib/modules/ModuleWithFixturesService.adoc} |  13 +-
 .../applib/setup/PersonaEnumPersistAll.adoc}       |  13 +-
 .../teardown/jdo/TeardownFixtureJdoAbstract.adoc}  |   6 +-
 .../viewer/IsisModuleViewerWicketViewer.adoc       |   1 +
 core/adoc/modules/_overview/pages/about.adoc       | 137 +++------
 .../sections/isis.core.meta-model.validator.adoc   |   5 +-
 .../config/pages/sections/isis.extensions.adoc     | 112 +++++++
 .../config/pages/sections/isis.testing.adoc        |  72 +++++
 .../config/pages/sections/isis.viewer.wicket.adoc  |  64 ++++
 .../pages/fixture-scripts/api-and-usage.adoc       |  35 ++-
 .../pages/services/ExecutionParametersService.adoc |  27 --
 .../fixtures/pages/services/FixtureScripts.adoc    |  59 ----
 .../FixtureScriptsSpecificationProvider.adoc       |  70 -----
 .../adoc/modules/fixtures/partials/module-nav.adoc |   4 -
 .../applib/fixturescripts/ExecutionParameters.java | 340 +++------------------
 ...meters.java => ExecutionParametersDefault.java} |  11 +-
 .../fixturescripts/ExecutionParametersService.java |  19 +-
 ...ecutionParametersServiceAutoConfiguration.java} |  42 +--
 .../applib/fixturescripts/FixtureScript.java       |  77 ++++-
 .../applib/fixturescripts/FixtureScripts.java      |  25 +-
 .../src/main/resources/META-INF/spring.factories   |   3 +-
 ...ContextTest.java => ExecutionContext_Test.java} |   8 +-
 ...utionParametersDefault_AsKeyValueMap_Test.java} |  14 +-
 ...t.java => ExecutionParametersDefault_Test.java} |   6 +-
 59 files changed, 1342 insertions(+), 791 deletions(-)
 copy antora/components/refguide-index/modules/{extensions/pages/index/secman/applib/SecmanConfiguration.adoc => core/pages/index/security/authentication/manager/AnonymousInteractionFactory.adoc} (50%)
 copy antora/components/refguide-index/modules/extensions/pages/index/secman/{applib/SecmanConfiguration.adoc => integration/authenticator/AuthenticatorSecman.adoc} (50%)
 copy antora/components/refguide-index/modules/extensions/pages/index/secman/{applib/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc => integration/authenticator/AuthenticatorSecmanAutoConfiguration.adoc} (73%)
 copy antora/components/refguide-index/modules/{viewer/pages/index/wicket/viewer/IsisModuleViewerWicketViewer.adoc => testing/pages/index/fixtures/applib/IsisIntegrationTestAbstractWithFixtures.adoc} (85%)
 rename antora/components/refguide-index/modules/{applib/pages/index/graph/tree/LazyTreeNode.adoc => testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptAbstract.adoc} (61%)
 copy antora/components/refguide-index/modules/{viewer/pages/index/wicket/viewer/IsisModuleViewerWicketViewer.adoc => testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptWithResult.adoc} (84%)
 copy antora/components/refguide-index/modules/{viewer/pages/index/wicket/viewer/IsisModuleViewerWicketViewer.adoc => testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptWithoutResult.adoc} (87%)
 create mode 100644 antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc
 create mode 100644 antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersDefault.adoc
 copy antora/components/refguide-index/modules/{extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc => testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc} (60%)
 create mode 100644 antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.adoc
 copy antora/components/refguide-index/modules/{viewer/pages/index/wicket/viewer/IsisModuleViewerWicketViewer.adoc => testing/pages/index/fixtures/applib/fixturescripts/FixtureResult.adoc} (79%)
 create mode 100644 antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureResultList.adoc
 create mode 100644 antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript.adoc
 create mode 100644 antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc
 create mode 100644 antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts~MultipleExecutionStrategy.adoc
 copy antora/components/refguide-index/modules/{extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc => testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts~NonPersistedObjectsStrategy.adoc} (66%)
 create mode 100644 antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript~ExecutionContext.adoc
 copy antora/components/refguide-index/modules/{viewer/pages/index/wicket/viewer/IsisModuleViewerWicketViewer.adoc => testing/pages/index/fixtures/applib/fixturescripts/hooks/FixtureScripts_020-configuration-properties.adoc} (78%)
 create mode 100644 antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturespec/FixtureScriptsSpecification.adoc
 create mode 100644 antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/modules/ModuleWithFixtures.adoc
 copy antora/components/refguide-index/modules/{extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc => testing/pages/index/fixtures/applib/modules/ModuleWithFixturesService.adoc} (69%)
 copy antora/components/refguide-index/modules/{extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc => testing/pages/index/fixtures/applib/setup/PersonaEnumPersistAll.adoc} (72%)
 copy antora/components/refguide-index/modules/{viewer/pages/index/wicket/viewer/IsisModuleViewerWicketViewer.adoc => testing/pages/index/fixtures/applib/teardown/jdo/TeardownFixtureJdoAbstract.adoc} (88%)
 delete mode 100644 testing/fixtures/adoc/modules/fixtures/pages/services/ExecutionParametersService.adoc
 delete mode 100644 testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScripts.adoc
 delete mode 100644 testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScriptsSpecificationProvider.adoc
 copy testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/{ExecutionParameters.java => ExecutionParametersDefault.java} (97%)
 copy testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/{ExecutionParametersService.java => ExecutionParametersServiceAutoConfiguration.java} (52%)
 rename testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/{ExecutionContextTest.java => ExecutionContext_Test.java} (97%)
 rename testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/{ExecutionParameters_AsKeyValueMap_Test.java => ExecutionParametersDefault_AsKeyValueMap_Test.java} (74%)
 rename testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/{ExecutionParameters_Test.java => ExecutionParametersDefault_Test.java} (98%)

[isis] 07/08: ISIS-2717: removes fixture's service docs, as now part of refguide-index.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 282fb9051886b292858c2c9b231538c7b6627425
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jun 6 17:16:14 2021 +0100

    ISIS-2717: removes fixture's service docs, as now part of refguide-index.
---
 ...ixtureScripts_020-configuration-properties.adoc |  9 +++
 .../pages/fixture-scripts/api-and-usage.adoc       | 35 ++++++-----
 .../fixtures/pages/services/FixtureScripts.adoc    | 59 ------------------
 .../FixtureScriptsSpecificationProvider.adoc       | 70 ----------------------
 .../adoc/modules/fixtures/partials/module-nav.adoc |  4 --
 5 files changed, 28 insertions(+), 149 deletions(-)

diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/hooks/FixtureScripts_020-configuration-properties.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/hooks/FixtureScripts_020-configuration-properties.adoc
new file mode 100644
index 0000000..e0909f1
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/hooks/FixtureScripts_020-configuration-properties.adoc
@@ -0,0 +1,9 @@
+
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+:page-partial:
+
+
+== Configuration Properties
+
+The configuration properties used by this domain service can be found in the xref:refguide:config:sections/isis.testing.adoc[relevant section] of the config guide.
+
diff --git a/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/api-and-usage.adoc b/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/api-and-usage.adoc
index 0e849f6..6eb23ba 100644
--- a/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/api-and-usage.adoc
+++ b/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/api-and-usage.adoc
@@ -3,7 +3,7 @@
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 
-There are two main parts to using fixture scripts: the `FixtureScripts` domain service class, and the `FixtureScript` view model class:
+There are two main parts to using fixture scripts: the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] domain service class, and the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] view model class:
 
 * The role of the `FixtureScripts` domain service is to locate all fixture scripts from the classpath and to let them be invoked, either from an integration test/BDD spec or from the UI of your Isis app.
 
@@ -14,8 +14,8 @@ Let's look at `FixtureScripts` domain service in more detail first.
 
 == `FixtureScripts`
 
-The framework provides a default implementation of `FixtureScripts` domain service, namely the xref:testing:fixtures:services/FixtureScripts.adoc[FixtureScriptsDefault] domain service.
-This is annotated to be rendered on the secondary "Prototyping" menu.
+The xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] domain service.
+This is annotated to be part of on the secondary "Prototyping" menu.
 
 The behaviour of this domain menu service can be configured using the `isis.testing.fixtures.fixture-script-specification` configuration properties.
 For example, here's the configuration used by the xref:docs:starters:simpleapp.adoc[SimpleApp] starter apps:
@@ -87,8 +87,9 @@ Let's now look at the `FixtureScript` class, where there's a bit more going on.
 [#fixturescript]
 == `FixtureScript`
 
-A fixture script is ultimately just a block of code that can be executed, so it's up to you how you implement it to set up the system.
-However, we strongly recommend that you use it to invoke actions on business objects, in essence to replay what a real-life user would have done.
+A xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] is responsible for setting up the system (or more likely, one small part of the overall system) into a known state, either for prototyping or for integration testing.
+
+The normal idiom is for the fixture script to invoke actions on business objects, in essence to replay what a real-life user would have done.
 That way, the fixture script will remain valid even if the underlying implementation of the system changes in the future.
 
 For example, here's a fixture script called `RecreateSimpleObjects`.
@@ -101,37 +102,39 @@ import lombok.Getter;
 import lombok.Setter;
 
 @Accessors(chain = true)
-public class RecreateSimpleObjects extends FixtureScript {                   // <1>
+public class RecreateSimpleObjects extends FixtureScript {       // <.>
 
-    public final List<String> NAMES = Collections.unmodifiableList(Arrays.asList(
+    public final List<String> NAMES =
+        Collections.unmodifiableList(Arrays.asList(
             "Foo", "Bar", "Baz", "Frodo", "Froyo",
-            "Fizz", "Bip", "Bop", "Bang", "Boo"));                           // <2>
+            "Fizz", "Bip", "Bop", "Bang", "Boo"));               // <.>
     public RecreateSimpleObjects() {
-        withDiscoverability(Discoverability.DISCOVERABLE);                   // <3>
+        withDiscoverability(Discoverability.DISCOVERABLE);       // <.>
     }
 
     @Getter @Setter
-    private Integer number;                                                  // <4>
+    private Integer number;                                      // <.>
 
     @Getter
-    private final List<SimpleObject> simpleObjects = Lists.newArrayList();   // <5>
+    private final List<SimpleObject> simpleObjects =
+                                        Lists.newArrayList();    // <.>
 
     @Override
-    protected void execute(final ExecutionContext ec) {          // <6>
+    protected void execute(final ExecutionContext ec) {          // <.>
         // defaults
-        final int number = defaultParam("number", ec, 3);        // <7>
+        final int number = defaultParam("number", ec, 3);        // <.>
         // validate
         if(number < 0 || number > NAMES.size()) {
             throw new IllegalArgumentException(
                 String.format("number must be in range [0,%d)", NAMES.size()));
         }
         // execute
-        ec.executeChild(this, new SimpleObjectsTearDown());      // <8>
+        ec.executeChild(this, new SimpleObjectsTearDown());      // <.>
         for (int i = 0; i < number; i++) {
             final SimpleObjectCreate fs =
                 new SimpleObjectCreate().setName(NAMES.get(i));
-            ec.executeChild(this, fs.getName(), fs);             // <9>
-            simpleObjects.add(fs.getSimpleObject());             // <10>
+            ec.executeChild(this, fs.getName(), fs);             // <.>
+            simpleObjects.add(fs.getSimpleObject());             // <.>
         }
     }
 }
diff --git a/testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScripts.adoc b/testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScripts.adoc
deleted file mode 100644
index c82ca75..0000000
--- a/testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScripts.adoc
+++ /dev/null
@@ -1,59 +0,0 @@
-[[FixtureScripts]]
-= FixtureScripts
-
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-:page-partial:
-
-
-CAUTION: TODO: this needs to be converted into a hook for refguide-index
-
-The `FixtureScripts` service provides the ability to execute xref:fixtures:ROOT:about.adoc#api-and-usage[fixture scripts].
-
-The service is typically configured using the `isis.testing.fixtures.fixture-scripts-specification` configuration properties, for example telling it which package to search for xref:refguide:testing:index/ classes, how to execute those classes, and hints that influence the UI.
-
-
-
-== API
-
-The API for the service is:
-
-[source,java]
-----
-public abstract class FixtureScripts ... {
-    @Programmatic
-    public List<FixtureResult> runFixtureScript(
-        FixtureScript fixtureScript,
-        String parameters) { /* ... */ }
-}
-----
-
-
-== Implementation
-
-The default implementation is `o.a.i.applib.services.fixturespec.FixtureScriptsDefault`
-
-
-=== Configuration Properties
-
-The default implementation of this domain service supports the following configuration properties:
-
-.Core Configuration Properties for Fixture Events
-[cols="2a,1,3a", options="header"]
-|===
-|Property
-|Value +
-(default value)
-|Description
-
-
-|`isis.fixtures.fireEvents`
-|`true`,`false` +
-(`true`)
-|Whether fixture `FixturesInstallingEvent` and `FixturesInstalledEvent` events should be posted while the system is bootstrapping.
-
-Fixture events are fired to indicate the start and end of fixtures are being installed.
-This are listened to by the xref:refguide:applib:index/services/queryresultscache/QueryResultsCache.adoc[QueryResultsCache] to disable caching during this period.
-
-|===
-
-
diff --git a/testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScriptsSpecificationProvider.adoc b/testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScriptsSpecificationProvider.adoc
deleted file mode 100644
index 944257a..0000000
--- a/testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScriptsSpecificationProvider.adoc
+++ /dev/null
@@ -1,70 +0,0 @@
-= `FixtureScriptsSpec'nProvider`
-
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-:page-partial:
-
-
-CAUTION: TODO: this needs to be converted into a hook for refguide-index, and x-ref config properties as the preferred approach.
-
-
-The `FixtureScriptsSpecificationProvider` configures the xref:testing:fixtures:services/FixtureScripts.adoc[FixtureScripts] domain service, providing the location to search for fixture scripts and other settings.
-
-The service is used only by the default implementation of `FixtureScripts`, namely `FixtureScriptsDefault`.
-
-[TIP]
-====
-Of the two designs, we encourage you to implement this "provider" SPI rather than subclass `FixtureScripts`.
-The primary benefit (apart from decoupling responsibilities) is that it ensures that there is always an instance of `FixtureScripts` available for use.
-====
-
-== SPI
-
-The SPI defined by the service is:
-
-[source,java]
-----
-public interface FixtureScriptsSpecificationProvider {
-    @Programmatic
-    FixtureScriptsSpecification getSpecification();
-}
-----
-
-where `FixtureScriptsSpecification` exposes these values:
-
-[source,java]
-----
-public class FixtureScriptsSpecification {
-    public String getPackagePrefix() { /* ... */ }
-    public FixtureScripts.NonPersistedObjectsStrategy getNonPersistedObjectsStrategy() { /* ... */ }
-    public FixtureScripts.MultipleExecutionStrategy getMultipleExecutionStrategy() { /* ... */ }
-    public Class<? extends FixtureScript> getRunScriptDefaultScriptClass() { /* ... */ }
-    public DropDownPolicy getRunScriptDropDownPolicy() { /* ... */ }
-    public Class<? extends FixtureScript> getRecreateScriptClass() { /* ... */ }
-    ...
-}
-----
-
-The class is immutable but it has a builder (obtained using `FixturescriptsSpecification.builder(...)`) for a fluent API.
-
-== Implementation
-
-The xref:docs:starters:simpleapp.adoc[SimpleApp] starter app has a simple implementation of this service:
-
-[source,java]
-----
-import org.springframework.stereotype.Service;
-
-@Service
-public class DomainAppFixturesProvider implements FixtureScriptsSpecificationProvider {
-    @Override
-    public FixtureScriptsSpecification getSpecification() {
-        return FixtureScriptsSpecification
-                .builder(DomainAppFixturesProvider.class)
-                .with(FixtureScripts.MultipleExecutionStrategy.EXECUTE)
-                .withRunScriptDefault(RecreateSimpleObjects.class)
-                .withRunScriptDropDown(FixtureScriptsSpecification.DropDownPolicy.CHOICES)
-                .withRecreate(RecreateSimpleObjects.class)
-                .build();
-    }
-}
-----
diff --git a/testing/fixtures/adoc/modules/fixtures/partials/module-nav.adoc b/testing/fixtures/adoc/modules/fixtures/partials/module-nav.adoc
index 339bfa0..6401d07 100644
--- a/testing/fixtures/adoc/modules/fixtures/partials/module-nav.adoc
+++ b/testing/fixtures/adoc/modules/fixtures/partials/module-nav.adoc
@@ -3,9 +3,5 @@
 
 * xref:testing:fixtures:about.adoc[Fixture Scripts]
 
-** Domain Services
-*** xref:testing:fixtures:services/ExecutionParametersService.adoc[ExecutionParametersService]
-*** xref:testing:fixtures:services/FixtureScripts.adoc[FixtureScripts]
-*** xref:testing:fixtures:services/FixtureScriptsSpecificationProvider.adoc[FixtureScriptsSpecificationProvider]
 
 

[isis] 05/08: ISIS-2717: updates config pages

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6878033e5a8d3c07ba55b2d77ff64f41230f2b2b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jun 6 16:13:56 2021 +0100

    ISIS-2717: updates config pages
---
 .../sections/isis.core.meta-model.validator.adoc   |   5 +-
 .../config/pages/sections/isis.extensions.adoc     | 112 +++++++++++++++++++++
 .../config/pages/sections/isis.testing.adoc        |  72 +++++++++++++
 .../config/pages/sections/isis.viewer.wicket.adoc  |  64 ++++++++++++
 4 files changed, 251 insertions(+), 2 deletions(-)

diff --git a/core/config/src/main/adoc/modules/config/pages/sections/isis.core.meta-model.validator.adoc b/core/config/src/main/adoc/modules/config/pages/sections/isis.core.meta-model.validator.adoc
index d813cfe..16fdeb9 100644
--- a/core/config/src/main/adoc/modules/config/pages/sections/isis.core.meta-model.validator.adoc
+++ b/core/config/src/main/adoc/modules/config/pages/sections/isis.core.meta-model.validator.adoc
@@ -33,15 +33,16 @@ If not allowed, then metamodel validation errors will be flagged.
 
 Note that this settings has no effect if the programming model has been configured to ignore deprecated features (because in this case the programming model facets simply won't be included in the introspection process.
 
+
 |
 [[isis.core.meta-model.validator.explicit-logical-type-names]]
 isis.core.meta-model.validator. +
 explicit-logical-type-names
 
 | 
-| Whether to ensure that the object type of all objects must be specified explicitly, using either ``DomainObject#logicalTypeName()`` or ``DomainService#logicalTypeName()``.
+| Whether to ensure that the logical-type-name of all objects must be specified explicitly, using either ``DomainObject#logicalTypeName()`` or ``DomainService#logicalTypeName()``.
 
-It is _highly advisable_ to leave this set as enabled (the default). These object types should also (of course) be unique - that can be checked by setting the ``#isEnsureUniqueObjectTypes()`` config property.
+It is _highly advisable_ to leave this set as enabled (the default). These logical-type-names should also (of course) be unique - among non-abstract types.
 
 
 |
diff --git a/core/config/src/main/adoc/modules/config/pages/sections/isis.extensions.adoc b/core/config/src/main/adoc/modules/config/pages/sections/isis.extensions.adoc
index c8d5222..d0627d6 100644
--- a/core/config/src/main/adoc/modules/config/pages/sections/isis.extensions.adoc
+++ b/core/config/src/main/adoc/modules/config/pages/sections/isis.extensions.adoc
@@ -178,6 +178,118 @@ exposed-headers
 For more information, check the usage of the ``headers`` init parameter for https://github.com/eBay/cors-filter[EBay CORSFilter].
 
 
+|
+[[isis.extensions.secman.delegated-users.auto-create-policy]]
+isis.extensions.secman. +
+delegated-users.auto-create-policy
+
+| 
+| Whether delegated users should be autocreated as locked (the default) or unlocked.
+
+BE AWARE THAT if any users are auto-created as unlocked, then the set of roles that they are given should be highly restricted !!!
+
+
+|
+[[isis.extensions.secman.permissions-evaluation-policy]]
+isis.extensions.secman. +
+permissions-evaluation-policy
+
+| 
+| If there are conflicting (allow vs veto) permissions at the same scope, then this policy determines whether to prefer to allow the permission or to veto it.
+
+This is only used if a ``PermissionsEvaluationService`` has not been declared explicitly.
+
+
+|
+[[isis.extensions.secman.seed.admin.namespace-permissions.additional]]
+isis.extensions.secman.seed.admin. +
+namespace-permissions.additional
+
+| 
+| An (optional) additional set of namespaces that the admin role is granted.
+
+These are in addition to the main namespaces granted.
+
+@see NamespacePermissions#getSticky()
+
+
+|
+[[isis.extensions.secman.seed.admin.namespace-permissions.sticky]]
+isis.extensions.secman.seed.admin. +
+namespace-permissions.sticky
+
+| 
+| The set of namespaces to which the admin role is granted.
+
+These namespaces are intended to be sufficient to allow users with this admin role to be able to administer the security module itself, for example to manage users and roles. The security user is not necessarily able to use the main business logic within the domain application itself, though.
+
+These roles cannot be removed via user interface
+
+WARNING: normally these should not be overridden. Instead, specify additional namespaces using ``NamespacePermissions#getAdditional()``.
+
+@see NamespacePermissions#getAdditional()
+
+
+|
+[[isis.extensions.secman.seed.admin.password]]
+isis.extensions.secman.seed.admin. +
+password
+
+| 
+| The corresponding password for admin user. @see #getUserName()
+
+
+|
+[[isis.extensions.secman.seed.admin.role-name]]
+isis.extensions.secman.seed.admin. +
+role-name
+
+| 
+| The name of security admin role.
+
+Users with this role (in particular, the default admin user are granted access to a set of namespaces (``NamespacePermissions#getSticky()`` and ``NamespacePermissions#getAdditional()``) which are intended to be sufficient to allow users with this admin role to be able to administer the security module itself, for example to manage users and roles.
+
+@see Admin#getUserName() @see NamespacePermissions#getSticky() @see NamespacePermissions#getAdditional()
+
+
+|
+[[isis.extensions.secman.seed.admin.user-name]]
+isis.extensions.secman.seed.admin. +
+user-name
+
+| 
+| The name of the security super user.
+
+This user is automatically made a member of the admin role, from which it is granted permissions to administer other users.
+
+The password for this user is set in ``Admin#getPassword()``.
+
+@see #getPassword() @see #getRoleName()
+
+
+|
+[[isis.extensions.secman.seed.regular-user.role-name]]
+isis.extensions.secman.seed. +
+regular-user.role-name
+
+| 
+| The role name for regular users of the application, granting them access to basic security features.
+
+The exact set of permissions is hard-wired in the ``IsisExtSecmanRegularUserRoleAndPermissions`` fixture.
+
+
+|
+[[isis.extensions.secman.user-registration.initial-role-names]]
+isis.extensions.secman. +
+user-registration. +
+initial-role-names
+
+| 
+| The set of roles that users registering with the app are granted automatically.
+
+If using the wicket viewer, also requires isis.viewer.wicket.suppress-signup to be set ``false``, along with any other of its other prereqs.
+
+
 
 |===
 
diff --git a/core/config/src/main/adoc/modules/config/pages/sections/isis.testing.adoc b/core/config/src/main/adoc/modules/config/pages/sections/isis.testing.adoc
index c910945..74735da 100644
--- a/core/config/src/main/adoc/modules/config/pages/sections/isis.testing.adoc
+++ b/core/config/src/main/adoc/modules/config/pages/sections/isis.testing.adoc
@@ -12,6 +12,78 @@ include::../section-hooks/isis.testing~pre.adoc[]
 |Default
 |Description
 |
+[[isis.testing.fixtures.fixture-scripts-specification.context-class]]
+isis.testing.fixtures. +
+fixture-scripts-specification. +
+context-class
+
+| 
+| Specifies the base package from which to search for fixture scripts.
+
+Either this or packagePrefix must be specified. This property is used by preference.
+
+@see #getPackagePrefix()
+
+
+|
+[[isis.testing.fixtures.fixture-scripts-specification.multiple-execution-strategy]]
+isis.testing.fixtures. +
+fixture-scripts-specification. +
+multiple-execution-strategy
+
+| 
+| Indicates whether, if a fixture script (or more precisely any other fixture scripts of the same class) is encountered more than once in a graph of dependencies, it should be executed again or skipped.
+
+The default is to fixture scripts are executed only once per class.
+
+Note that this policy can be overridden on a fixture-by-fixture basis if the fixture implements ``FixtureScriptWithExecutionStrategy``.
+
+
+|
+[[isis.testing.fixtures.fixture-scripts-specification.non-persisted-objects-strategy]]
+isis.testing.fixtures. +
+fixture-scripts-specification. +
+non-persisted-objects-strategy
+
+| 
+| Indicates whether objects that are returned as a fixture result should be automatically persisted if required (the default) or not.
+
+
+|
+[[isis.testing.fixtures.fixture-scripts-specification.package-prefix]]
+isis.testing.fixtures. +
+fixture-scripts-specification. +
+package-prefix
+
+| 
+| Specifies the base package from which to search for fixture scripts.
+
+Either this or ``#getContextClass()`` must be specified; ``#getContextClass()`` is used by preference.
+
+@see #getContextClass()
+
+
+|
+[[isis.testing.fixtures.fixture-scripts-specification.recreate]]
+isis.testing.fixtures. +
+fixture-scripts-specification. +
+recreate
+
+| 
+| null
+
+
+|
+[[isis.testing.fixtures.fixture-scripts-specification.run-script-default]]
+isis.testing.fixtures. +
+fixture-scripts-specification. +
+run-script-default
+
+| 
+| null
+
+
+|
 [[isis.testing.fixtures.initial-script]]
 isis.testing.fixtures. +
 initial-script
diff --git a/core/config/src/main/adoc/modules/config/pages/sections/isis.viewer.wicket.adoc b/core/config/src/main/adoc/modules/config/pages/sections/isis.viewer.wicket.adoc
index 3e26053..1200d2d 100644
--- a/core/config/src/main/adoc/modules/config/pages/sections/isis.viewer.wicket.adoc
+++ b/core/config/src/main/adoc/modules/config/pages/sections/isis.viewer.wicket.adoc
@@ -328,6 +328,70 @@ If truncated, then the remainder of the title will be replaced with ellipses (..
 
 
 |
+[[isis.viewer.wicket.message-popups.error-delay]]
+isis.viewer.wicket.message-popups. +
+error-delay
+
+|  0ms
+| How long the error popup should display before disappearing.
+
+A value of 0 (the default) means do not disappear automatically.
+
+
+|
+[[isis.viewer.wicket.message-popups.info-delay]]
+isis.viewer.wicket.message-popups. +
+info-delay
+
+|  3500ms
+| How long the info popup should display before disappearing.
+
+A value of 0 means do not disappear automatically.
+
+
+|
+[[isis.viewer.wicket.message-popups.offset]]
+isis.viewer.wicket.message-popups. +
+offset
+
+|  100
+| How far in from the edge the popup should display
+
+
+|
+[[isis.viewer.wicket.message-popups.placement.horizontal]]
+isis.viewer.wicket.message-popups. +
+placement.horizontal
+
+| 
+| Whether to display popups aligned ot the left or right of the page.
+
+The default is to show them aligned to the right
+
+
+|
+[[isis.viewer.wicket.message-popups.placement.vertical]]
+isis.viewer.wicket.message-popups. +
+placement.vertical
+
+| 
+| Whether to display popups at the top or the bottom of the page.
+
+The default is to show them at the top.
+
+
+|
+[[isis.viewer.wicket.message-popups.warning-delay]]
+isis.viewer.wicket.message-popups. +
+warning-delay
+
+|  0ms
+| How long the warning popup should display before disappearing.
+
+A value of 0 (the default) means do not disappear automatically.
+
+
+|
 [[isis.viewer.wicket.prevent-double-click-for-form-submit]]
 isis.viewer.wicket. +
 prevent-double-click-for-form- +

[isis] 01/08: ISIS-2483: regen refguide-index docs : updated from recent other tickets.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0cfecc94d055cb202535e577313a64726f905ced
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jun 6 15:56:46 2021 +0100

    ISIS-2483: regen refguide-index docs : updated from recent other tickets.
---
 .../pages/index/annotation/DomainObject.adoc       | 12 ++---
 .../pages/index/graph/tree/LazyTreeNode.adoc       | 20 ---------
 .../applib/pages/index/graph/tree/TreeNode.adoc    |  6 ++-
 .../services/appfeat/ApplicationFeatureId.adoc     |  1 +
 .../pages/index/services/metamodel/Config.adoc     | 13 +++---
 .../index/services/metamodel/DomainMember.adoc     |  2 +
 .../index/services/metamodel/MetaModelService.adoc |  2 +-
 .../services/metamodel/MetaModelServiceMenu.adoc   |  2 +-
 .../index/services/repository/EntityState.adoc     | 28 ++++++++----
 .../services/repository/RepositoryService.adoc     | 52 ----------------------
 .../index/secman/applib/SecmanConfiguration.adoc   |  9 +++-
 ...PermissionsEvaluationServiceAllowBeatsVeto.adoc |  7 +++
 ...PermissionsEvaluationServiceVetoBeatsAllow.adoc |  7 +++
 .../seed/IsisExtH2ConsoleRoleAndPermissions.adoc   |  1 +
 .../viewer/IsisModuleViewerWicketViewer.adoc       |  1 +
 15 files changed, 64 insertions(+), 99 deletions(-)

diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/DomainObject.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/DomainObject.adoc
index 35c7ec3..b868ae4 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/DomainObject.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/DomainObject.adoc
@@ -10,7 +10,7 @@ Domain semantics for domain objects (entities and view models; for services see
 ----
 @interface DomainObject {
   Class<?> autoCompleteRepository() default Object.class;     // <.>
-  String autoCompleteAction() default "autoComplete";     // <.>
+  String autoCompleteMethod() default "autoComplete";     // <.>
   Bounding bounding() default Bounding.NOT_SPECIFIED;     // <.>
   Editing editing() default Editing.NOT_SPECIFIED;     // <.>
   String editingDisabledReason() default "Disabled";     // <.>
@@ -37,10 +37,10 @@ Domain semantics for domain objects (entities and view models; for services see
 --
 The class of the domain service that provides an `autoComplete(String)` method.
 --
-<.> xref:#autoCompleteAction[autoCompleteAction]
+<.> xref:#autoCompleteMethod[autoCompleteMethod]
 +
 --
-The method (despite its name, not necessarily an action) to use in order to perform the auto-complete search (defaults to "autoComplete").
+The method to use in order to perform the auto-complete search (defaults to "autoComplete").
 --
 <.> xref:#bounding[bounding]
 +
@@ -149,10 +149,10 @@ The class of the domain service that provides an `autoComplete(String)` method.
 
 It is sufficient to specify an interface rather than a concrete type.
 
-[#autoCompleteAction]
-=== autoCompleteAction
+[#autoCompleteMethod]
+=== autoCompleteMethod
 
-The method (despite its name, not necessarily an action) to use in order to perform the auto-complete search (defaults to "autoComplete").
+The method to use in order to perform the auto-complete search (defaults to "autoComplete").
 
 The method is required to accept a single string parameter, and must return a list of the domain type.
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/graph/tree/LazyTreeNode.adoc b/antora/components/refguide-index/modules/applib/pages/index/graph/tree/LazyTreeNode.adoc
deleted file mode 100644
index fbb634f..0000000
--- a/antora/components/refguide-index/modules/applib/pages/index/graph/tree/LazyTreeNode.adoc
+++ /dev/null
@@ -1,20 +0,0 @@
-= LazyTreeNode
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-
-== API
-
-[source,java]
-.LazyTreeNode.java
-----
-class LazyTreeNode<T> {
-  TreeNode<T> of(T value, Class<? extends TreeAdapter<T>> treeAdapterClass, TreeState sharedState)
-  T getValue()
-  TreeNode<T> getParentIfAny()
-  int getChildCount()
-  Stream<TreeNode<T>> streamChildren()
-  Class<? extends TreeAdapter<T>> getTreeAdapterClass()
-  TreePath getPositionAsPath()
-  TreeState getTreeState()
-}
-----
-
diff --git a/antora/components/refguide-index/modules/applib/pages/index/graph/tree/TreeNode.adoc b/antora/components/refguide-index/modules/applib/pages/index/graph/tree/TreeNode.adoc
index d66a3f9..d750979 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/graph/tree/TreeNode.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/graph/tree/TreeNode.adoc
@@ -1,4 +1,4 @@
-= TreeNode _(interface)_
+= TreeNode
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 Fundamental building block of Tree structures.
@@ -8,7 +8,9 @@ Fundamental building block of Tree structures.
 [source,java]
 .TreeNode.java
 ----
-interface TreeNode<T> {
+class TreeNode<T> {
+  TreeNode<T> of(T value, Class<? extends TreeAdapter<T>> treeAdapterClass, TreeState sharedState)
+  T getValue()
   int getIncomingCount()
   int getOutgoingCount()
   Stream<Edge<T>> streamIncoming()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc
index 088fec3..ee17c35 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc
@@ -34,6 +34,7 @@ class ApplicationFeatureId {
   ApplicationFeatureId parseEncoded(final String encodedString)     // <.>
   Can<ApplicationFeatureId> getPathIds()
   Can<ApplicationFeatureId> getParentFeatureIds()
+  boolean contains(final ApplicationFeatureId otherFeatureId)
   int compareTo(final ApplicationFeatureId other)
   boolean equals(final Object o)
   int hashCode()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/Config.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/Config.adoc
index b796020..cdc475c 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/Config.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/Config.adoc
@@ -10,15 +10,14 @@ Describes what to include in the export from _MetaModelService#exportMetaModel(C
 ----
 class Config {
   Config()
-  Set<String> getPackagePrefixes()
+  Set<String> getNamespacePrefixes()
   Config withIgnoreNoop()
   Config withIgnoreInterfaces()
   Config withIgnoreAbstractClasses()
   Config withIgnoreBuiltInValueTypes()
   Config withIgnoreMixins()
-  Config withPackagePrefixAny()
-  boolean isPackagePrefixAny()
-  Config withPackagePrefix(final String packagePrefix)     // <.>
+  boolean isNamespacePrefixAny()
+  Config withNamespacePrefix(final String namespacePrefix)     // <.>
   boolean isIgnoreNoop()
   boolean isIgnoreInterfaces()
   boolean isIgnoreAbstractClasses()
@@ -27,7 +26,7 @@ class Config {
 }
 ----
 
-<.> xref:#withPackagePrefix__String[withPackagePrefix(String)]
+<.> xref:#withNamespacePrefix__String[withNamespacePrefix(String)]
 +
 --
 Returns a new _Config_ with given _packagePrefix_ added to the set of this _Config_ 's packagePrefixes.
@@ -35,7 +34,7 @@ Returns a new _Config_ with given _packagePrefix_ added to the set of this _Conf
 
 == Members
 
-[#withPackagePrefix__String]
-=== withPackagePrefix(String)
+[#withNamespacePrefix__String]
+=== withNamespacePrefix(String)
 
 Returns a new _Config_ with given _packagePrefix_ added to the set of this _Config_ 's packagePrefixes.
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/DomainMember.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/DomainMember.adoc
index 486f15b..e996c32 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/DomainMember.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/DomainMember.adoc
@@ -8,6 +8,8 @@
 ----
 interface DomainMember {
   String getClassType()
+  String getLogicalTypeName()
+  String getNamespace()
   String getClassName()
   String getPackageName()
   String getType()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelService.adoc
index 4809a92..8bbbac9 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelService.adoc
@@ -109,7 +109,7 @@ This is used by framework-provided implementations of _org.apache.isis.applib.se
 
 Exports the entire metamodel as a DTO, serializable into XML using JAXB.
 
-The xref:refguide:applib:index/services/metamodel/Config.adoc[Config] parameter can be used to restrict/filter the export to some subset of the metamodel; in particular to specific _Config#getPackagePrefixes() package prefixes_ .
+The xref:refguide:applib:index/services/metamodel/Config.adoc[Config] parameter can be used to restrict/filter the export to some subset of the metamodel; in particular to specific _Config#getNamespacePrefixes() namespace prefixes_ .
 
 include::hooks/MetaModelService_010-implementation.adoc[]
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc
index 5e46d24..e098d88 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc
@@ -13,7 +13,7 @@ class MetaModelServiceMenu {
   MetaModelServiceMenu()
   Clob downloadMetaModelCsv(final String csvFileName)
   String default0DownloadMetaModelCsv()
-  Clob downloadMetaModelXml(final String fileName, final List<String> packages, final boolean ignoreInterfaces)
+  Clob downloadMetaModelXml(final String fileName, final List<String> namespaces, final boolean ignoreInterfaces)
   String validateDownloadMetaModelXml(final String fileName, final List<String> packagePrefixes, final boolean ignoreInterfaces)
   String default0DownloadMetaModelXml()
   List<String> choices1DownloadMetaModelXml()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/repository/EntityState.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/repository/EntityState.adoc
index 6c17ae4..e125d2c 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/repository/EntityState.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/repository/EntityState.adoc
@@ -12,11 +12,13 @@ enum EntityState {
   NOT_PERSISTABLE     // <.>
   PERSISTABLE_ATTACHED     // <.>
   PERSISTABLE_DETACHED     // <.>
-  PERSISTABLE_DESTROYED     // <.>
+  PERSISTABLE_REMOVED     // <.>
   boolean isPersistable()     // <.>
   boolean isAttached()     // <.>
   boolean isDetached()     // <.>
-  boolean isDestroyed()     // <.>
+  boolean isRemoved()     // <.>
+  boolean isDetachedOrRemoved()     // <.>
+  boolean isAttachedOrRemoved()     // <.>
 }
 ----
 
@@ -35,7 +37,7 @@ Object with this state is an entity that is attached to a persistence session, i
 --
 Object with this state is an entity but that is detached from a persistence session, in other words changes to the entity will _not_ be flushed back to the database.
 --
-<.> xref:#PERSISTABLE_DESTROYED[PERSISTABLE_DESTROYED]
+<.> xref:#PERSISTABLE_REMOVED[PERSISTABLE_REMOVED]
 +
 --
 Object with this state is an entity that has been removed from the database. Objects in this state may no longer be interacted with.
@@ -55,11 +57,13 @@ Object with this state is an entity that is attached to a persistence session, i
 --
 Object with this state is an entity but that is detached from a persistence session, in other words changes to the entity will _not_ be flushed back to the database.
 --
-<.> xref:#isDestroyed__[isDestroyed()]
+<.> xref:#isRemoved__[isRemoved()]
 +
 --
 Object with this state is an entity that has been removed from the database. Objects in this state may no longer be interacted with.
 --
+<.> xref:#isDetachedOrRemoved__[isDetachedOrRemoved()]
+<.> xref:#isAttachedOrRemoved__[isAttachedOrRemoved()]
 
 == Members
 
@@ -78,8 +82,8 @@ Object with this state is an entity that is attached to a persistence session, i
 
 Object with this state is an entity but that is detached from a persistence session, in other words changes to the entity will _not_ be flushed back to the database.
 
-[#PERSISTABLE_DESTROYED]
-=== PERSISTABLE_DESTROYED
+[#PERSISTABLE_REMOVED]
+=== PERSISTABLE_REMOVED
 
 Object with this state is an entity that has been removed from the database. Objects in this state may no longer be interacted with.
 
@@ -98,7 +102,15 @@ Object with this state is an entity that is attached to a persistence session, i
 
 Object with this state is an entity but that is detached from a persistence session, in other words changes to the entity will _not_ be flushed back to the database.
 
-[#isDestroyed__]
-=== isDestroyed()
+[#isRemoved__]
+=== isRemoved()
 
 Object with this state is an entity that has been removed from the database. Objects in this state may no longer be interacted with.
+
+Only supported by JDO. Will always return false with JPA.
+
+[#isDetachedOrRemoved__]
+=== isDetachedOrRemoved()
+
+[#isAttachedOrRemoved__]
+=== isAttachedOrRemoved()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/repository/RepositoryService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/repository/RepositoryService.adoc
index a8ba6dc..3d6830e 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/repository/RepositoryService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/repository/RepositoryService.adoc
@@ -31,8 +31,6 @@ interface RepositoryService {
   T detach(T entity)     // <.>
   T detachedEntity(Class<T> ofType)     // <.>
   T instantiate(Class<T> ofType)     // <.>
-  boolean isPersistent(Object domainObject)     // <.>
-  boolean isDeleted(Object domainObject)     // <.>
 }
 ----
 
@@ -150,30 +148,6 @@ as it requires that the domain entity has a no-arg constructor. Use _#detachedEn
 
 Equivalent to _#detachedEntity(Class)_ .
 --
-<.> xref:#isPersistent__Object[isPersistent(Object)]
-+
---
-[WARNING]
-====
-[red]#_deprecated:_#
-
-due to ambiguous semantic, use _#getEntityState(Object)_ instead
-====
-
-Determines if the specified object is persistent (that it is stored permanently outside of the virtual machine in the object store).
---
-<.> xref:#isDeleted__Object[isDeleted(Object)]
-+
---
-[WARNING]
-====
-[red]#_deprecated:_#
-
-due to ambiguous semantic, use _#getEntityState(Object)_ instead
-====
-
-Determines if the specified object has been deleted from the object store.
---
 
 == Members
 
@@ -341,32 +315,6 @@ as it requires that the domain entity has a no-arg constructor. Use _#detachedEn
 
 Equivalent to _#detachedEntity(Class)_ .
 
-[#isPersistent__Object]
-=== isPersistent(Object)
-
-[WARNING]
-====
-[red]#_deprecated:_#
-
-due to ambiguous semantic, use _#getEntityState(Object)_ instead
-====
-
-Determines if the specified object is persistent (that it is stored permanently outside of the virtual machine in the object store).
-
-This method can also return `true` if the object has been _#isDeleted(Object) deleted_ from the object store.
-
-[#isDeleted__Object]
-=== isDeleted(Object)
-
-[WARNING]
-====
-[red]#_deprecated:_#
-
-due to ambiguous semantic, use _#getEntityState(Object)_ instead
-====
-
-Determines if the specified object has been deleted from the object store.
-
 include::hooks/RepositoryService_010-implementation.adoc[]
 
 include::hooks/RepositoryService_020-examples-and-usage.adoc[]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/SecmanConfiguration.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/SecmanConfiguration.adoc
index b25718a..989718f 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/SecmanConfiguration.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/SecmanConfiguration.adoc
@@ -1,6 +1,13 @@
 = SecmanConfiguration
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+[WARNING]
+====
+[red]#_deprecated:_#
+
+- use `application.yml` config properties instead.
+====
+
 Applications consuming secman must instantiate a _org.springframework.context.annotation.Bean_ of this type; secman then uses this bean to configure itself.
 
 The typical place to create this bean is in the top-level `AppManifest` _org.springframework.context.annotation.Configuration_ class.
@@ -13,8 +20,6 @@ This class is implemented as a builder (courtesy of Lombok) but it provides reas
 .SecmanConfiguration.java
 ----
 class SecmanConfiguration {
-  public static String ADMIN_ROLE_DEFAULT_NAME;
-  public static String REGULAR_USER_ROLE_DEFAULT_NAME;
   Stream<String> streamAdminNamespacePermissions()
   boolean isStickyAdminNamespace(String featureFqn)
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceAllowBeatsVeto.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceAllowBeatsVeto.adoc
index 036ccb3..0b5d87f 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceAllowBeatsVeto.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceAllowBeatsVeto.adoc
@@ -1,6 +1,13 @@
 = PermissionsEvaluationServiceAllowBeatsVeto
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+[WARNING]
+====
+[red]#_deprecated:_#
+
+- use `application.yml` config properties instead.
+====
+
 An implementation whereby a VETO permission for a feature overrides an ALLOW (for same scope).
 
 == API
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc
index 468ee2d..a74e571 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc
@@ -1,6 +1,13 @@
 = PermissionsEvaluationServiceVetoBeatsAllow
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+[WARNING]
+====
+[red]#_deprecated:_#
+
+- use `application.yml` config properties instead.
+====
+
 An implementation whereby a VETO permission for a feature overrides an ALLOW (for same scope).
 
 == API
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/role/seed/IsisExtH2ConsoleRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/role/seed/IsisExtH2ConsoleRoleAndPermissions.adoc
index 146b8ae..b1be279 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/role/seed/IsisExtH2ConsoleRoleAndPermissions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/role/seed/IsisExtH2ConsoleRoleAndPermissions.adoc
@@ -9,6 +9,7 @@ Access to the h2 console UI.
 .IsisExtH2ConsoleRoleAndPermissions.java
 ----
 class IsisExtH2ConsoleRoleAndPermissions {
+  public static final String NAMESPACE;
   public static final String ROLE_NAME;
   IsisExtH2ConsoleRoleAndPermissions()
 }
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/wicket/viewer/IsisModuleViewerWicketViewer.adoc b/antora/components/refguide-index/modules/viewer/pages/index/wicket/viewer/IsisModuleViewerWicketViewer.adoc
index 76be0ed..08310f8 100644
--- a/antora/components/refguide-index/modules/viewer/pages/index/wicket/viewer/IsisModuleViewerWicketViewer.adoc
+++ b/antora/components/refguide-index/modules/viewer/pages/index/wicket/viewer/IsisModuleViewerWicketViewer.adoc
@@ -7,6 +7,7 @@
 .IsisModuleViewerWicketViewer.java
 ----
 class IsisModuleViewerWicketViewer {
+  public static final String NAMESPACE;
 }
 ----
 

[isis] 03/08: ISIS-2717: adds refguide-index for testing/fixtures module

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit bbf835987857bc5e7977e6ce50fef6f27931240a
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jun 6 15:58:47 2021 +0100

    ISIS-2717: adds refguide-index for testing/fixtures module
---
 .../IsisIntegrationTestAbstractWithFixtures.adoc   |  12 ++
 .../fixturescripts/BuilderScriptAbstract.adoc      |  17 +++
 .../fixturescripts/BuilderScriptWithResult.adoc    |  14 ++
 .../fixturescripts/BuilderScriptWithoutResult.adoc |  13 ++
 .../applib/fixturescripts/ExecutionParameters.adoc |  49 +++++++
 .../fixturescripts/ExecutionParametersService.adoc |  17 +++
 .../applib/fixturescripts/FixtureResult.adoc       |  17 +++
 .../applib/fixturescripts/FixtureResultList.adoc   |  36 ++++++
 .../applib/fixturescripts/FixtureScript.adoc       |  63 +++++++++
 .../applib/fixturescripts/FixtureScripts.adoc      | 142 +++++++++++++++++++++
 .../FixtureScript~ExecutionContext.adoc            | 132 +++++++++++++++++++
 .../fixturespec/FixtureScriptsSpecification.adoc   |  44 +++++++
 .../applib/modules/ModuleWithFixtures.adoc         |  50 ++++++++
 .../applib/modules/ModuleWithFixturesService.adoc  |  17 +++
 .../applib/setup/PersonaEnumPersistAll.adoc        |  17 +++
 .../teardown/jdo/TeardownFixtureJdoAbstract.adoc   |  12 ++
 16 files changed, 652 insertions(+)

diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/IsisIntegrationTestAbstractWithFixtures.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/IsisIntegrationTestAbstractWithFixtures.adoc
new file mode 100644
index 0000000..8c042dc
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/IsisIntegrationTestAbstractWithFixtures.adoc
@@ -0,0 +1,12 @@
+= IsisIntegrationTestAbstractWithFixtures
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.IsisIntegrationTestAbstractWithFixtures.java
+----
+class IsisIntegrationTestAbstractWithFixtures {
+}
+----
+
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptAbstract.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptAbstract.adoc
new file mode 100644
index 0000000..2649d1e
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptAbstract.adoc
@@ -0,0 +1,17 @@
+= BuilderScriptAbstract
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.BuilderScriptAbstract.java
+----
+class BuilderScriptAbstract<T> {
+  BuilderScriptAbstract<T> build(final FixtureScript parentFixtureScript, final ExecutionContext executionContext)
+  T objectFor(final PersonaWithBuilderScript<BuilderScriptAbstract<T>> persona, final ExecutionContext executionContext)
+  T findUsing(final PersonaWithFinder<T> persona)
+  BuilderScriptAbstract<T> setPrereq(WithPrereqs.Block<T> prereq)
+  void execPrereqs(final ExecutionContext executionContext)
+}
+----
+
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptWithResult.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptWithResult.adoc
new file mode 100644
index 0000000..f50ddc2
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptWithResult.adoc
@@ -0,0 +1,14 @@
+= BuilderScriptWithResult
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.BuilderScriptWithResult.java
+----
+class BuilderScriptWithResult<T> {
+  @Getter(onMethod = @__({ @Override }))
+public T object;
+}
+----
+
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptWithoutResult.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptWithoutResult.adoc
new file mode 100644
index 0000000..d4588be
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/BuilderScriptWithoutResult.adoc
@@ -0,0 +1,13 @@
+= BuilderScriptWithoutResult
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.BuilderScriptWithoutResult.java
+----
+class BuilderScriptWithoutResult {
+  Object getObject()
+}
+----
+
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc
new file mode 100644
index 0000000..1e9e99c
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc
@@ -0,0 +1,49 @@
+= ExecutionParameters
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.ExecutionParameters.java
+----
+class ExecutionParameters {
+  ExecutionParameters(final String parameters)
+  Map<String, String> asKeyValueMap(final String parameters)
+  String getParameters()
+  String getParameter(final String parameterName)
+  T getParameterAsT(final String parameterName, final Class<T> cls)
+  Boolean getParameterAsBoolean(final String parameterName)
+  Byte getParameterAsByte(final String parameterName)
+  Short getParameterAsShort(final String parameterName)
+  Integer getParameterAsInteger(final String parameterName)
+  Long getParameterAsLong(final String parameterName)
+  Float getParameterAsFloat(final String parameterName)
+  Double getParameterAsDouble(final String parameterName)
+  Character getParameterAsCharacter(final String parameterName)
+  BigInteger getParameterAsBigInteger(final String parameterName)
+  BigDecimal getParameterAsBigDecimal(final String parameterName)
+  LocalDate getParameterAsLocalDate(final String parameterName)
+  LocalDateTime getParameterAsLocalDateTime(final String parameterName)
+  T getParameterAsEnum(final String parameterName, final Class<T> enumClass)
+  Map<String, String> getParameterMap()
+  void setParameterIfNotPresent(final String parameterName, final String parameterValue)
+  void setParameter(final String parameterName, final Boolean parameterValue)
+  void setParameter(final String parameterName, final Byte parameterValue)
+  void setParameter(final String parameterName, final Short parameterValue)
+  void setParameter(final String parameterName, final Integer parameterValue)
+  void setParameter(final String parameterName, final Long parameterValue)
+  void setParameter(final String parameterName, final Float parameterValue)
+  void setParameter(final String parameterName, final Double parameterValue)
+  void setParameter(final String parameterName, final Character parameterValue)
+  void setParameter(final String parameterName, final BigInteger parameterValue)
+  void setParameter(final String parameterName, final java.util.Date parameterValue)
+  void setParameter(final String parameterName, final java.sql.Date parameterValue)
+  void setParameter(final String parameterName, final LocalDate parameterValue)
+  void setParameter(final String parameterName, final LocalDateTime parameterValue)
+  void setParameter(final String parameterName, final DateTime parameterValue)
+  void setParameter(final String parameterName, final BigDecimal parameterValue)
+  void setParameter(final String parameterName, final Enum<?> parameterValue)
+  void setParameter(final String parameterName, final String parameterValue)
+}
+----
+
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc
new file mode 100644
index 0000000..931ac52
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc
@@ -0,0 +1,17 @@
+= ExecutionParametersService
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Acts as a factory by the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] when instantiating the _FixtureScript.ExecutionContext_ .
+
+Factoring this out as a service potentially allows for extensions to parsing; and also acts as an insurance policy to allow this part of the testing framework to be patched if the chosen parsing algorithms need refinement in the future).
+
+== API
+
+[source,java]
+.ExecutionParametersService.java
+----
+class ExecutionParametersService {
+  ExecutionParameters newExecutionParameters(final String parameters)
+}
+----
+
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureResult.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureResult.adoc
new file mode 100644
index 0000000..87a7815
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureResult.adoc
@@ -0,0 +1,17 @@
+= FixtureResult
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.FixtureResult.java
+----
+class FixtureResult {
+  // secman seeding
+public static final String LOGICAL_TYPE_NAME;
+  Object getObject()
+  void setObject(Object object)
+  String getClassName()
+}
+----
+
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureResultList.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureResultList.adoc
new file mode 100644
index 0000000..4fa16cf
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureResultList.adoc
@@ -0,0 +1,36 @@
+= FixtureResultList
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Collecting parameter.
+
+Instantiate using _FixtureScripts#newExecutionContext(String)_
+
+== API
+
+[source,java]
+.FixtureResultList.java
+----
+class FixtureResultList {
+  FixtureResultList(final FixtureScripts fixtureScripts, final FixtureScript.ExecutionContext executionContext)
+  T add(final FixtureScript script, final T object)
+  T add(final FixtureScript fixtureScript, final String key, final T object)     // <.>
+  List<FixtureResult> getResults()
+  String nextItemFor(final FixtureScript script)
+  T lookup(final String key, Class<T> cls)
+}
+----
+
+<.> xref:#add__FixtureScript_String_T[add(FixtureScript, String, T)]
++
+--
+Wraps the object within a xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureResult.adoc[FixtureResult] and add to this list.
+--
+
+== Members
+
+[#add__FixtureScript_String_T]
+=== add(FixtureScript, String, T)
+
+Wraps the object within a xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureResult.adoc[FixtureResult] and add to this list.
+
+If the object is not yet persisted, then the _FixtureScripts#getNonPersistedObjectsStrategy() FixtureScripts_ ' configuration will determine whether it is _FixtureScripts.NonPersistedObjectsStrategy#PERSIST eagerly persisted_ or simply _FixtureScripts.NonPersistedObjectsStrategy#IGNORE ignored_ .
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript.adoc
new file mode 100644
index 0000000..a4e7ba5
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript.adoc
@@ -0,0 +1,63 @@
+= FixtureScript
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.FixtureScript.java
+----
+class FixtureScript {
+  public static final FixtureScript NOOP;
+  FixtureScript()     // <.>
+  FixtureScript(final String friendlyName, final String localName)     // <.>
+  String getQualifiedName()
+  List<FixtureResult> run(final String parameters, final FixtureScripts fixtureScripts)     // <.>
+  String validateRun(final String parameters)     // <.>
+  String pathWith(final String subkey)
+}
+----
+
+<.> xref:#FixtureScript__[FixtureScript()]
++
+--
+Initializes a fixture, with _#getFriendlyName()_ and _#getLocalName()_ derived from the class name.
+--
+<.> xref:#FixtureScript__String_String[FixtureScript(String, String)]
++
+--
+Initializes a fixture.
+--
+<.> xref:#run__String_FixtureScripts[run(String, FixtureScripts)]
++
+--
+Entry point for xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] service to call.
+--
+<.> xref:#validateRun__String[validateRun(String)]
++
+--
+Optional hook to validate parameters.
+--
+
+== Members
+
+[#FixtureScript__]
+=== FixtureScript()
+
+Initializes a fixture, with _#getFriendlyName()_ and _#getLocalName()_ derived from the class name.
+
+[#FixtureScript__String_String]
+=== FixtureScript(String, String)
+
+Initializes a fixture.
+
+[#run__String_FixtureScripts]
+=== run(String, FixtureScripts)
+
+Entry point for xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] service to call.
+
+Package-visibility only, not public API.
+
+[#validateRun__String]
+=== validateRun(String)
+
+Optional hook to validate parameters.
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc
new file mode 100644
index 0000000..ae753b7
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc
@@ -0,0 +1,142 @@
+= FixtureScripts
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.FixtureScripts.java
+----
+class FixtureScripts {
+  // secman seeding
+public static final String LOGICAL_TYPE_NAME;
+  public static final String PACKAGE_PREFIX;     // <.>
+  FixtureScripts(final Optional<FixtureScriptsSpecificationProvider> fixtureScriptsSpecificationProvider, final ServiceRegistry serviceRegistry)
+  NonPersistedObjectsStrategy getNonPersistedObjectsStrategy()
+  MultipleExecutionStrategy getMultipleExecutionStrategy()     // <.>
+  List<FixtureResult> runFixtureScript(final String fixtureScriptName, final String parameters)
+  List<FixtureResult> runFixtureScript(final FixtureScript fixtureScript, final String parameters)
+  String disableRunFixtureScript()
+  String default0RunFixtureScript()
+  Set<String> choices0RunFixtureScript()
+  String validateRunFixtureScript(final String fixtureScriptName, final String parameters)
+  Object recreateObjectsAndReturnFirst()
+  boolean hideRecreateObjectsAndReturnFirst()
+  void run(final FixtureScript... fixtureScriptList)
+  void runPersonas(PersonaWithBuilderScript<? extends BuilderScriptAbstract<?>>... personaScripts)
+  T runPersona(final PersonaWithBuilderScript<? extends BuilderScriptAbstract<? extends T>> persona)
+  T runBuilder(final BuilderScriptAbstract<T> builderScript)     // <.>
+  T runBuilderScriptNonTransactional(final BuilderScriptAbstract<T> builderScript)     // <.>
+  String findFixtureScriptNameFor(final Class<? extends FixtureScript> fixtureScriptClass)
+  FixtureScript.ExecutionContext newExecutionContext(final String parameters)
+  String mementoFor(final FixtureScript fs)
+  void initOf(final String xml, final FixtureScript fs)
+  FixtureResult newFixtureResult(final FixtureScript script, final String subkey, final Object object, final boolean firstTime)
+  String titleOf(final FixtureResult fixtureResult)
+  T fixtureScript(final PersonaWithBuilderScript<BuilderScriptAbstract<T>> persona)     // <.>
+  void runFixtureScript(final FixtureScript... fixtureScriptList)     // <.>
+  T runBuilderScript(final BuilderScriptAbstract<T> builderScript)     // <.>
+}
+----
+
+<.> xref:#PACKAGE_PREFIX[PACKAGE_PREFIX]
++
+--
+The package prefix to search for fixture scripts. This default value will result in no fixture scripts being found. However, normally it will be overridden.
+--
+<.> xref:#getMultipleExecutionStrategy__[getMultipleExecutionStrategy()]
++
+--
+Global setting as to how to handle fixture scripts that are executed more than once. See _MultipleExecutionStrategy_ for more details.
+--
+<.> xref:#runBuilder__BuilderScriptAbstract[runBuilder(BuilderScriptAbstract)]
++
+--
+Runs the builderScript within its own transactional boundary.
+--
+<.> xref:#runBuilderScriptNonTransactional__BuilderScriptAbstract[runBuilderScriptNonTransactional(BuilderScriptAbstract)]
++
+--
+Runs the builderScript without its own transactional boundary.The caller is responsible to provide a transactional context/boundary.
+--
+<.> xref:#fixtureScript__PersonaWithBuilderScript[fixtureScript(PersonaWithBuilderScript)]
++
+--
+[WARNING]
+====
+[red]#_deprecated:_#
+
+renamed to _#runPersona(PersonaWithBuilderScript)_
+====
+--
+<.> xref:#runFixtureScript__FixtureScript[runFixtureScript(FixtureScript)]
++
+--
+[WARNING]
+====
+[red]#_deprecated:_#
+
+renamed to _#run(FixtureScript...)_
+====
+--
+<.> xref:#runBuilderScript__BuilderScriptAbstract[runBuilderScript(BuilderScriptAbstract)]
++
+--
+[WARNING]
+====
+[red]#_deprecated:_#
+
+renamed to _#runBuilder(BuilderScriptAbstract)_
+====
+--
+
+== Members
+
+[#PACKAGE_PREFIX]
+=== PACKAGE_PREFIX
+
+The package prefix to search for fixture scripts. This default value will result in no fixture scripts being found. However, normally it will be overridden.
+
+[#getMultipleExecutionStrategy__]
+=== getMultipleExecutionStrategy()
+
+Global setting as to how to handle fixture scripts that are executed more than once. See _MultipleExecutionStrategy_ for more details.
+
+[#runBuilder__BuilderScriptAbstract]
+=== runBuilder(BuilderScriptAbstract)
+
+Runs the builderScript within its own transactional boundary.
+
+[#runBuilderScriptNonTransactional__BuilderScriptAbstract]
+=== runBuilderScriptNonTransactional(BuilderScriptAbstract)
+
+Runs the builderScript without its own transactional boundary.The caller is responsible to provide a transactional context/boundary.
+
+[#fixtureScript__PersonaWithBuilderScript]
+=== fixtureScript(PersonaWithBuilderScript)
+
+[WARNING]
+====
+[red]#_deprecated:_#
+
+renamed to _#runPersona(PersonaWithBuilderScript)_
+====
+
+[#runFixtureScript__FixtureScript]
+=== runFixtureScript(FixtureScript)
+
+[WARNING]
+====
+[red]#_deprecated:_#
+
+renamed to _#run(FixtureScript...)_
+====
+
+[#runBuilderScript__BuilderScriptAbstract]
+=== runBuilderScript(BuilderScriptAbstract)
+
+[WARNING]
+====
+[red]#_deprecated:_#
+
+renamed to _#runBuilder(BuilderScriptAbstract)_
+====
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript~ExecutionContext.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript~ExecutionContext.adoc
new file mode 100644
index 0000000..5cac98c
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript~ExecutionContext.adoc
@@ -0,0 +1,132 @@
+= FixtureScript.ExecutionContext
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.FixtureScript~ExecutionContext.java
+----
+class ExecutionContext {
+  public static final ExecutionContext NOOP;     // <.>
+  ExecutionContext(final String parameters, final FixtureScripts fixtureScripts)
+  ExecutionContext create(final ExecutionParameters executionParameters, final FixtureScripts fixtureScripts)
+  String getParameters()
+  Map<String, String> getParameterMap()
+  String getParameter(final String parameterName)
+  T getParameterAsT(final String parameterName, final Class<T> cls)
+  Boolean getParameterAsBoolean(final String parameterName)
+  Byte getParameterAsByte(final String parameterName)
+  Short getParameterAsShort(final String parameterName)
+  Integer getParameterAsInteger(final String parameterName)
+  Long getParameterAsLong(final String parameterName)
+  Float getParameterAsFloat(final String parameterName)
+  Double getParameterAsDouble(final String parameterName)
+  Character getParameterAsCharacter(final String parameterName)
+  BigInteger getParameterAsBigInteger(final String parameterName)
+  BigDecimal getParameterAsBigDecimal(final String parameterName)
+  LocalDate getParameterAsLocalDate(final String parameterName)
+  LocalDateTime getParameterAsLocalDateTime(final String parameterName)
+  T getParameterAsEnum(final String parameterName, final Class<T> enumClass)
+  void setParameterIfNotPresent(final String parameterName, final String parameterValue)
+  void setParameter(final String parameterName, final Boolean parameterValue)
+  void setParameter(final String parameterName, final Byte parameterValue)
+  void setParameter(final String parameterName, final Short parameterValue)
+  void setParameter(final String parameterName, final Integer parameterValue)
+  void setParameter(final String parameterName, final Long parameterValue)
+  void setParameter(final String parameterName, final Float parameterValue)
+  void setParameter(final String parameterName, final Double parameterValue)
+  void setParameter(final String parameterName, final Character parameterValue)
+  void setParameter(final String parameterName, final BigInteger parameterValue)
+  void setParameter(final String parameterName, final java.util.Date parameterValue)
+  void setParameter(final String parameterName, final java.sql.Date parameterValue)
+  void setParameter(final String parameterName, final LocalDate parameterValue)
+  void setParameter(final String parameterName, final LocalDateTime parameterValue)
+  void setParameter(final String parameterName, final org.joda.time.DateTime parameterValue)
+  void setParameter(final String parameterName, final BigDecimal parameterValue)
+  void setParameter(final String parameterName, final Enum<?> parameterValue)
+  void setParameter(final String parameterName, final String parameterValue)
+  List<FixtureResult> getResults()
+  T addResult(final FixtureScript script, final T object)
+  T addResult(final FixtureScript script, final String key, final T object)
+  T lookup(final String key, final Class<T> cls)
+  void executeChild(final FixtureScript callingFixtureScript, final PersonaWithBuilderScript<?> personaWithBuilderScript)
+  T executeChildT(final FixtureScript callingFixtureScript, final PersonaWithBuilderScript<F> personaWithBuilderScript)
+  void executeChild(final FixtureScript callingFixtureScript, final FixtureScript childFixtureScript)     // <.>
+  void executeChildren(final FixtureScript callingFixtureScript, final PersonaWithBuilderScript<?>... personaWithBuilderScripts)
+  void executeChildren(final FixtureScript callingFixtureScript, final Class<T> personaClass)
+  void executeChildren(final FixtureScript callingFixtureScript, final FixtureScript... fixtureScripts)
+  void executeChildren(final FixtureScript callingFixtureScript, final List<FixtureScript> fixtureScripts)
+  void executeChildren(final FixtureScript callingFixtureScript, final Stream<FixtureScript> fixtureScripts)
+  T executeChildT(final FixtureScript callingFixtureScript, final T childFixtureScript)     // <.>
+  void executeChild(final FixtureScript callingFixtureScript, final String localNameOverride, final FixtureScript childFixtureScript)     // <.>
+  T executeChildT(final FixtureScript callingFixtureScript, final String localNameOverride, final T childFixtureScript)     // <.>
+  List<FixtureScript> getPreviouslyExecuted()     // <.>
+  int roundup(final int n, final int roundTo)
+  T clearUserData(final Class<T> cls)
+}
+----
+
+<.> xref:#NOOP[NOOP]
++
+--
+Null implementation, to assist with unit testing of xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] s.
+--
+<.> xref:#executeChild__FixtureScript_FixtureScript[executeChild(FixtureScript, FixtureScript)]
++
+--
+Executes a child xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] , injecting services into it first, and (for any results that are _FixtureScript.ExecutionContext#addResult(FixtureScript, Object)_ added), uses a key that is derived from the fixture's class name.
+--
+<.> xref:#executeChildT__FixtureScript_T[executeChildT(FixtureScript, T)]
++
+--
+Executes a child xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] , injecting services into it first, and (for any results that are _FixtureScript.ExecutionContext#addResult(FixtureScript, Object)_ added), uses a key that is derived from the fixture's class name.
+--
+<.> xref:#executeChild__FixtureScript_String_FixtureScript[executeChild(FixtureScript, String, FixtureScript)]
++
+--
+Executes a child xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] , injecting services into it first, and (for any results that are _FixtureScript.ExecutionContext#addResult(FixtureScript, Object)_ added), uses a key that overriding the default name of the fixture script with one more meaningful in the context of this fixture.
+--
+<.> xref:#executeChildT__FixtureScript_String_T[executeChildT(FixtureScript, String, T)]
++
+--
+Executes a child xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] , injecting services into it first, and (for any results that are _FixtureScript.ExecutionContext#addResult(FixtureScript, Object)_ added), uses a key that overriding the default name of the fixture script with one more meaningful in the context of this fixture.
+--
+<.> xref:#getPreviouslyExecuted__[getPreviouslyExecuted()]
++
+--
+Returns a list of the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] instances that have already been executed.
+--
+
+== Members
+
+[#NOOP]
+=== NOOP
+
+Null implementation, to assist with unit testing of xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] s.
+
+[#executeChild__FixtureScript_FixtureScript]
+=== executeChild(FixtureScript, FixtureScript)
+
+Executes a child xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] , injecting services into it first, and (for any results that are _FixtureScript.ExecutionContext#addResult(FixtureScript, Object)_ added), uses a key that is derived from the fixture's class name.
+
+[#executeChildT__FixtureScript_T]
+=== executeChildT(FixtureScript, T)
+
+Executes a child xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] , injecting services into it first, and (for any results that are _FixtureScript.ExecutionContext#addResult(FixtureScript, Object)_ added), uses a key that is derived from the fixture's class name.
+
+[#executeChild__FixtureScript_String_FixtureScript]
+=== executeChild(FixtureScript, String, FixtureScript)
+
+Executes a child xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] , injecting services into it first, and (for any results that are _FixtureScript.ExecutionContext#addResult(FixtureScript, Object)_ added), uses a key that overriding the default name of the fixture script with one more meaningful in the context of this fixture.
+
+[#executeChildT__FixtureScript_String_T]
+=== executeChildT(FixtureScript, String, T)
+
+Executes a child xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] , injecting services into it first, and (for any results that are _FixtureScript.ExecutionContext#addResult(FixtureScript, Object)_ added), uses a key that overriding the default name of the fixture script with one more meaningful in the context of this fixture.
+
+[#getPreviouslyExecuted__]
+=== getPreviouslyExecuted()
+
+Returns a list of the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] instances that have already been executed.
+
+This allows each individual xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] to determine whether they need to execute; the _FixtureScripts#getMultipleExecutionStrategy()_ can then be left as simply _FixtureScripts.MultipleExecutionStrategy#EXECUTE_ .
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturespec/FixtureScriptsSpecification.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturespec/FixtureScriptsSpecification.adoc
new file mode 100644
index 0000000..2a67a30
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturespec/FixtureScriptsSpecification.adoc
@@ -0,0 +1,44 @@
+= FixtureScriptsSpecification
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Specifies the behaviour of the _org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts#runFixtureScript(String, String) runFixtureScript_ menu action and the execution characteristics of (graphs of) xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] s.
+
+== API
+
+[source,java]
+.FixtureScriptsSpecification.java
+----
+class FixtureScriptsSpecification {
+  FixtureScriptsSpecification(final String packagePrefix, final FixtureScripts.NonPersistedObjectsStrategy nonPersistedObjectsStrategy, final FixtureScripts.MultipleExecutionStrategy multipleExecutionStrategy, final Class<? extends FixtureScript> runScriptDefaultScriptClass, final Class<? extends FixtureScript> recreateScriptClass)     // <.>
+  String getPackagePrefix()
+  FixtureScripts.NonPersistedObjectsStrategy getNonPersistedObjectsStrategy()
+  FixtureScripts.MultipleExecutionStrategy getMultipleExecutionStrategy()     // <.>
+  Class<? extends FixtureScript> getRunScriptDefaultScriptClass()
+  Class<? extends FixtureScript> getRecreateScriptClass()
+  Builder builder(final Class<?> contextClass)
+  Builder builder(final String packagePrefix)
+}
+----
+
+<.> xref:#FixtureScriptsSpecification__String_FixtureScripts.NonPersistedObjectsStrategy_FixtureScripts.MultipleExecutionStrategy_Class_Class[FixtureScriptsSpecification(String, FixtureScripts.NonPersistedObjectsStrategy, FixtureScripts.MultipleExecutionStrategy, Class, Class)]
++
+--
+Typically preferable to use the create using the _FixtureScriptsSpecification.Builder_ (obtained from _#builder(Class)_ ).
+--
+<.> xref:#getMultipleExecutionStrategy__[getMultipleExecutionStrategy()]
++
+--
+Note that this can be overridden on a fixture-by-fixture basis if the fixture implements _FixtureScriptWithExecutionStrategy_ .
+--
+
+== Members
+
+[#FixtureScriptsSpecification__String_FixtureScripts.NonPersistedObjectsStrategy_FixtureScripts.MultipleExecutionStrategy_Class_Class]
+=== FixtureScriptsSpecification(String, FixtureScripts.NonPersistedObjectsStrategy, FixtureScripts.MultipleExecutionStrategy, Class, Class)
+
+Typically preferable to use the create using the _FixtureScriptsSpecification.Builder_ (obtained from _#builder(Class)_ ).
+
+[#getMultipleExecutionStrategy__]
+=== getMultipleExecutionStrategy()
+
+Note that this can be overridden on a fixture-by-fixture basis if the fixture implements _FixtureScriptWithExecutionStrategy_ .
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/modules/ModuleWithFixtures.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/modules/ModuleWithFixtures.adoc
new file mode 100644
index 0000000..844e3ee
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/modules/ModuleWithFixtures.adoc
@@ -0,0 +1,50 @@
+= ModuleWithFixtures _(interface)_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+A module is a class that implements this xref:refguide:testing:index/fixtures/applib/modules/ModuleWithFixtures.adoc[ModuleWithFixtures] interface, but in addition is expected to be annotated with _Configuration @Configuration_ and which defines a dependency other modules by _Import @Import_ ing them, and conversely may be a dependency of other modules if they import it.
+
+Modules are therefore classes that define a module hierarchy using these Spring annotations.
+
+These are, in effect, a module hierarchy, declared using types.
+
+Optionally, the `@Configuration` class can implements this xref:refguide:testing:index/fixtures/applib/modules/ModuleWithFixtures.adoc[ModuleWithFixtures] interface. Doing so allows it to declare setup and teardown fixtures, eg to set up permanent ref data or to teardown test entities within the module.
+
+These setup/teardown fixtures will be called in the correct order as per the transitive dependency graph inferred from the `@Configuration` imports.
+
+== API
+
+[source,java]
+.ModuleWithFixtures.java
+----
+interface ModuleWithFixtures {
+  FixtureScript getRefDataSetupFixture()     // <.>
+  FixtureScript getTeardownFixture()     // <.>
+}
+----
+
+<.> xref:#getRefDataSetupFixture__[getRefDataSetupFixture()]
++
+--
+Optionally each module can define a xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] which holds immutable "reference data".
+--
+<.> xref:#getTeardownFixture__[getTeardownFixture()]
++
+--
+Optionally each module can define a tear-down xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] , used to remove the contents of _all_ transactional entities (both reference data and operational/transactional data).
+--
+
+== Members
+
+[#getRefDataSetupFixture__]
+=== getRefDataSetupFixture()
+
+Optionally each module can define a xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] which holds immutable "reference data".
+
+By default, returns a _FixtureScript#NOOP noop_ .
+
+[#getTeardownFixture__]
+=== getTeardownFixture()
+
+Optionally each module can define a tear-down xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] , used to remove the contents of _all_ transactional entities (both reference data and operational/transactional data).
+
+By default, returns a _FixtureScript#NOOP noop_ .
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/modules/ModuleWithFixturesService.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/modules/ModuleWithFixturesService.adoc
new file mode 100644
index 0000000..442677f
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/modules/ModuleWithFixturesService.adoc
@@ -0,0 +1,17 @@
+= ModuleWithFixturesService
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.ModuleWithFixturesService.java
+----
+class ModuleWithFixturesService {
+  ModuleWithFixturesService(final SpringBeansService springBeansService)
+  FixtureScript getRefDataSetupFixture()
+  FixtureScript getTeardownFixture()
+  List<ModuleWithFixturesDescriptor> modules()
+  void onContextRefreshed(ContextRefreshedEvent event)
+}
+----
+
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/setup/PersonaEnumPersistAll.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/setup/PersonaEnumPersistAll.adoc
new file mode 100644
index 0000000..45cf716
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/setup/PersonaEnumPersistAll.adoc
@@ -0,0 +1,17 @@
+= PersonaEnumPersistAll
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.PersonaEnumPersistAll.java
+----
+class PersonaEnumPersistAll<E, T> {
+  PersonaEnumPersistAll(final Class<E> personaEnumClass)
+  Integer getNumber()
+  void setNumber(final Integer number)
+  List<T> getObjects()
+  FixtureScripts.MultipleExecutionStrategy getMultipleExecutionStrategy()
+}
+----
+
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/teardown/jdo/TeardownFixtureJdoAbstract.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/teardown/jdo/TeardownFixtureJdoAbstract.adoc
new file mode 100644
index 0000000..1981f89
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/teardown/jdo/TeardownFixtureJdoAbstract.adoc
@@ -0,0 +1,12 @@
+= TeardownFixtureJdoAbstract
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.TeardownFixtureJdoAbstract.java
+----
+class TeardownFixtureJdoAbstract {
+}
+----
+

[isis] 04/08: ISIS-2717: updates projdoc guide

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ae309bd580929b333a31a02c61286c5970796643
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jun 6 16:13:45 2021 +0100

    ISIS-2717: updates projdoc guide
---
 core/adoc/modules/_overview/pages/about.adoc | 136 ++++++++++-----------------
 1 file changed, 48 insertions(+), 88 deletions(-)

diff --git a/core/adoc/modules/_overview/pages/about.adoc b/core/adoc/modules/_overview/pages/about.adoc
index 8113437..095c9e6 100644
--- a/core/adoc/modules/_overview/pages/about.adoc
+++ b/core/adoc/modules/_overview/pages/about.adoc
@@ -257,7 +257,6 @@ org.apache.isis.core:isis-core-security:jar:<managed> +
 org.apache.isis.core:isis-schema:jar:<managed> +
 org.apache.isis.security:isis-security-bypass:jar:<managed> +
 org.apache.isis.security:isis-security-keycloak:jar:<managed> +
-org.apache.isis.security:isis-security-shiro:jar:<managed> +
 org.apache.isis.viewer:isis-viewer-restfulobjects-jaxrsresteasy4:jar:<managed> +
 org.apache.isis.viewer:isis-viewer-restfulobjects-viewer:jar:<managed> +
 org.apache.isis.viewer:isis-viewer-wicket-viewer:jar:<managed> +
@@ -527,6 +526,11 @@ org.apache.isis.subdomains:isis-subdomains-spring-applib:jar:<managed> +
 org.apache.isis.testing:isis-testing-integtestsupport-applib:jar:<managed> +
 ****
 
+.Document Index Entries
+****
+xref:refguide:testing:index/fixtures/applib/IsisIntegrationTestAbstractWithFixtures.adoc[IsisIntegrationTestAbstractWithFixtures], xref:refguide:testing:index/fixtures/applib/fixturescripts/BuilderScriptAbstract.adoc[BuilderScriptAbstract], xref:refguide:testing:index/fixtures/applib/fixturescripts/BuilderScriptWithResult.adoc[BuilderScriptWithResult], xref:refguide:testing:index/fixtures/applib/fixturescripts/BuilderScriptWithoutResult.adoc[BuilderScriptWithoutResult], xref:refguide:tes [...]
+****
+
 |Apache Isis Tst - H2 Console (parent)
 [source,yaml]
 ----
@@ -824,7 +828,6 @@ Directory: /examples/demo/domain
 demoapp.dom.AppConfiguration +
 demoapp.dom._infra.DefaultTitleProvider +
 demoapp.dom._infra.LibraryPreloadingService +
-demoapp.dom._infra.fixtures.DemoFixtureScriptSpecificationProvider +
 demoapp.dom._infra.resources.AsciiDocConverterService +
 demoapp.dom._infra.resources.AsciiDocReaderService +
 demoapp.dom._infra.resources.MarkdownReaderService +
@@ -836,27 +839,40 @@ demoapp.dom._infra.urlencoding.UrlEncodingServiceNaiveInMemory +
 demoapp.dom.domain._changes.EntityChangesSubscriberToCaptureChangesInMemory +
 demoapp.dom.domain._commands.ExposePersistedCommands$TableColumnOrderDefault +
 demoapp.dom.domain._interactions.ExecutionListenerToCaptureInteractionsInMemory +
-demoapp.dom.domain.actions.Action.commandPublishing.ActionCommandPublishingJdoEntities +
-demoapp.dom.domain.actions.Action.commandPublishing.ActionCommandPublishingJdoSeedService +
-demoapp.dom.domain.actions.Action.executionPublishing.ActionExecutionPublishingJdoEntities +
-demoapp.dom.domain.actions.Action.executionPublishing.ActionExecutionPublishingJdoSeedService +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledJdoEntities +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledJdoSeedService +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectAuditingEnabledJdoEntities +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectAuditingEnabledJdoSeedService +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoSeedService +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoEntities +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoSeedService +
-demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.ChildJdoEntities +
-demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.seed.ChildJdoSeedService +
-demoapp.dom.domain.objects.other.embedded.NumberConstantJdoRepository +
-demoapp.dom.domain.properties.Property.commandPublishing.PropertyCommandPublishingJdoEntities +
-demoapp.dom.domain.properties.Property.commandPublishing.PropertyCommandPublishingJdoSeedService +
-demoapp.dom.domain.properties.Property.executionPublishing.PropertyExecutionPublishingJdoEntities +
-demoapp.dom.domain.properties.Property.executionPublishing.PropertyExecutionPublishingJdoSeedService +
+demoapp.dom.domain.actions.Action.commandPublishing.ActionCommandPublishingSeeding +
+demoapp.dom.domain.actions.Action.commandPublishing.jdo.ActionCommandPublishingJdoEntities +
+demoapp.dom.domain.actions.Action.commandPublishing.jpa.ActionCommandPublishingJpaEntities +
+demoapp.dom.domain.actions.Action.executionPublishing.ActionExecutionPublishingSeeding +
+demoapp.dom.domain.actions.Action.executionPublishing.jdo.ActionExecutionPublishingJdoEntities +
+demoapp.dom.domain.actions.Action.executionPublishing.jpa.ActionExecutionPublishingJpaEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledSeeding +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.jdo.DomainObjectEntityChangePublishingDisabledJdoEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.jpa.DomainObjectEntityChangePublishingDisabledJpaEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectEntityChangePublishingEnabledSeeding +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.jdo.DomainObjectEntityChangePublishingEnabledJdoEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.jpa.DomainObjectEntityChangePublishingEnabledJpaEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedSeeding +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.jdo.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.jpa.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpaEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenSeeding +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.jdo.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.jpa.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpaEntities +
+demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.JaxbRefSeeding +
+demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.jdo.JaxbRefJdoEntities +
+demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.jpa.JaxbRefJpaEntities +
+demoapp.dom.domain.objects.other.embedded.jdo.NumberConstantJdoRepository +
+demoapp.dom.domain.objects.other.embedded.jpa.NumberConstantJpaRepository +
+demoapp.dom.domain.objects.other.embedded.persistence.NumberConstantSeeding +
+demoapp.dom.domain.objects.other.embedded.samples.ComplexNumberSamples +
+demoapp.dom.domain.properties.Property.commandPublishing.PropertyCommandPublishingSeeding +
+demoapp.dom.domain.properties.Property.commandPublishing.jdo.PropertyCommandPublishingJdoEntities +
+demoapp.dom.domain.properties.Property.commandPublishing.jpa.PropertyCommandPublishingJpaEntities +
+demoapp.dom.domain.properties.Property.executionPublishing.PropertyExecutionPublishingSeeding +
+demoapp.dom.domain.properties.Property.executionPublishing.jdo.PropertyExecutionPublishingJdoEntities +
+demoapp.dom.domain.properties.Property.executionPublishing.jpa.PropertyExecutionPublishingJpaEntities +
 demoapp.dom.domain.properties.Property.projecting.jdo.PropertyProjectingChildJdoEntities +
-demoapp.dom.domain.properties.Property.projecting.jdo.PropertyProjectingChildJdoSeedService +
+demoapp.dom.domain.properties.Property.projecting.jpa.PropertyProjectingChildJpaEntities +
+demoapp.dom.domain.properties.Property.projecting.persistence.PropertyProjectingChildSeeding +
 demoapp.dom.domain.properties.PropertyLayout.navigable.FileTreeNodeService +
 demoapp.dom.domain.properties.PropertyLayout.repainting.PdfJsViewerAdvisorFallback +
 demoapp.dom.featured.customui.geocoding.GeoapifyClient +
@@ -1510,7 +1526,7 @@ org.jmock:jmock:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:applib:index/AbstractViewModel.adoc[AbstractViewModel], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/IsisModuleApplib.adoc[IsisModuleApplib], xref:refguide:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/adapters/AbstractValueSemanticsProvider.adoc[AbstractValueSemanticsProvider], xref:refguide:applib:index/adapters/DefaultsProvider.adoc [...]
+xref:refguide:applib:index/AbstractViewModel.adoc[AbstractViewModel], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/IsisModuleApplib.adoc[IsisModuleApplib], xref:refguide:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/adapters/AbstractValueSemanticsProvider.adoc[AbstractValueSemanticsProvider], xref:refguide:applib:index/adapters/DefaultsProvider.adoc [...]
 ****
 
 |Apache Isis Core - Code Gen (ByteBuddy)
@@ -1801,7 +1817,7 @@ org.junit.vintage:junit-vintage-engine:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication], xref:refguide:core:index/security/authentication/AuthenticationRequest.adoc[AuthenticationRequest], xref:refguide:core:index/security/authentication/Authenticator.adoc[Authenticator], xref:refguide:core:index/security/authorization/Authorizor.adoc[Authorizor], xref:refguide:core:index/security/authorization/manager/AuthorizationManager.adoc[AuthorizationManager], xref:refguide:core:index/security/author [...]
+xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication], xref:refguide:core:index/security/authentication/AuthenticationRequest.adoc[AuthenticationRequest], xref:refguide:core:index/security/authentication/Authenticator.adoc[Authenticator], xref:refguide:core:index/security/authentication/manager/AnonymousInteractionFactory.adoc[AnonymousInteractionFactory], xref:refguide:core:index/security/authorization/Authorizor.adoc[Authorizor], xref:refguide:core:index/ [...]
 ****
 
 |Apache Isis Core - Transaction
@@ -4060,9 +4076,9 @@ package "Extensions\n[Software System]" {
   rectangle "==Apache Isis Ext - Flyway\n<size:10>[Container: packaging: pom]</size>" <<7>> as 7
   rectangle "==Apache Isis Ext - Flyway Impl\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
   rectangle "==Apache Isis Ext - Sec Man\n<size:10>[Container: packaging: pom]</size>" <<16>> as 16
-  rectangle "==Apache Isis Ext - Sec Man API\n<size:10>[Container: packaging: jar]</size>" <<17>> as 17
+  rectangle "==Apache Isis Ext - Sec Man Applib\n<size:10>[Container: packaging: jar]</size>" <<17>> as 17
   rectangle "==Apache Isis Ext - Sec Man Encryption (Using jbcrypt)\n<size:10>[Container: packaging: jar]</size>" <<18>> as 18
-  rectangle "==Apache Isis Ext - Sec Man Model\n<size:10>[Container: packaging: jar]</size>" <<19>> as 19
+  rectangle "==Apache Isis Ext - Sec Man Integration\n<size:10>[Container: packaging: jar]</size>" <<19>> as 19
   rectangle "==Apache Isis Ext - Sec Man Persistence (Using JDO)\n<size:10>[Container: packaging: jar]</size>" <<20>> as 20
   rectangle "==Apache Isis Ext - Sec Man Persistence (Using JPA)\n<size:10>[Container: packaging: jar]</size>" <<21>> as 21
   rectangle "==Apache Isis Ext - Sec Man Realm (Using Shiro)\n<size:10>[Container: packaging: jar]</size>" <<22>> as 22
@@ -4355,7 +4371,7 @@ org.apache.isis.core:isis-core-metamodel:jar:<managed> +
 org.apache.isis.core:isis-core-security:jar:<managed> +
 ****
 
-|Apache Isis Ext - Sec Man API
+|Apache Isis Ext - Sec Man Applib
 [source,yaml]
 ----
 Group: org.apache.isis.extensions
@@ -4405,7 +4421,7 @@ org.mindrot:jbcrypt:jar:<managed> +
 xref:refguide:extensions:index/secman/encryption/jbcrypt/IsisModuleExtSecmanEncryptionJbcrypt.adoc[IsisModuleExtSecmanEncryptionJbcrypt], xref:refguide:extensions:index/secman/encryption/jbcrypt/services/PasswordEncryptionServiceUsingJBcrypt.adoc[PasswordEncryptionServiceUsingJBcrypt]
 ****
 
-|Apache Isis Ext - Sec Man Model
+|Apache Isis Ext - Sec Man Integration
 [source,yaml]
 ----
 Group: org.apache.isis.extensions
@@ -4430,7 +4446,7 @@ org.apache.isis.extensions:isis-extensions-secman-applib:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/secman/integration/IsisModuleExtSecmanIntegration.adoc[IsisModuleExtSecmanIntegration], xref:refguide:extensions:index/secman/integration/authorizor/AuthorizorSecman.adoc[AuthorizorSecman], xref:refguide:extensions:index/secman/integration/userreg/UserRegistrationServiceForSecman.adoc[UserRegistrationServiceForSecman]
+xref:refguide:extensions:index/secman/integration/IsisModuleExtSecmanIntegration.adoc[IsisModuleExtSecmanIntegration], xref:refguide:extensions:index/secman/integration/authenticator/AuthenticatorSecman.adoc[AuthenticatorSecman], xref:refguide:extensions:index/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.adoc[AuthenticatorSecmanAutoConfiguration], xref:refguide:extensions:index/secman/integration/authorizor/AuthorizorSecman.adoc[AuthorizorSecman], xref:refguide:e [...]
 ****
 
 |Apache Isis Ext - Sec Man Persistence (Using JDO)
@@ -5937,24 +5953,7 @@ Artifact: isis-regressiontests-stable
 Type: jar
 Directory: /regressiontests/stable
 ----
-|.Components
-****
-o.a.i.testdomain.applayer.ApplicationLayerTestFactory +
-o.a.i.testdomain.applayer.ApplicationLayerTestFactory$PreCommitListener +
-o.a.i.testdomain.applayer.publishing.CommandSubscriberForTesting +
-o.a.i.testdomain.applayer.publishing.EntityChangesSubscriberForTesting +
-o.a.i.testdomain.applayer.publishing.EntityPropertyChangeSubscriberForTesting +
-o.a.i.testdomain.applayer.publishing.ExecutionSubscriberForTesting +
-o.a.i.testdomain.conf.Configuration_headless$HeadlessCommandSupport +
-o.a.i.testdomain.jdo.JdoInventoryDao +
-o.a.i.testdomain.jpa.JpaInventoryDao +
-o.a.i.testdomain.jpa.springdata.EmployeeRepository +
-o.a.i.testdomain.util.interaction.InteractionBoundaryProbe +
-o.a.i.testdomain.util.kv.KVStoreForTesting +
-o.a.i.testdomain.util.rest.RestEndpointService +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.extensions:isis-extensions-cors-impl:jar:<managed> +
 org.glassfish.jersey.ext:jersey-spring5:jar:<managed> +
@@ -6300,30 +6299,7 @@ Artifact: isis-viewer-javafx-ui
 Type: jar
 Directory: /incubator/viewers/javafx/ui
 ----
-|.Components
-****
-o.a.i.incubator.viewer.javafx.ui.components.UiComponentFactoryFx +
-o.a.i.incubator.viewer.javafx.ui.components.markup.MarkupFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.components.number.NumberFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.components.objectref.ObjectReferenceFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.components.other.FallbackFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.components.temporal.TemporalFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.components.text.TextFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.decorator.disabling.DisablingDecoratorForButton +
-o.a.i.incubator.viewer.javafx.ui.decorator.disabling.DisablingDecoratorForFormField +
-o.a.i.incubator.viewer.javafx.ui.decorator.icon.IconDecoratorForLabeled +
-o.a.i.incubator.viewer.javafx.ui.decorator.icon.IconDecoratorForMenuItem +
-o.a.i.incubator.viewer.javafx.ui.decorator.icon.IconServiceDefault +
-o.a.i.incubator.viewer.javafx.ui.decorator.prototyping.PrototypingDecoratorForButton +
-o.a.i.incubator.viewer.javafx.ui.decorator.prototyping.PrototypingDecoratorForFormField +
-o.a.i.incubator.viewer.javafx.ui.decorator.prototyping.PrototypingInfoPopupProvider +
-o.a.i.incubator.viewer.javafx.ui.main.MainViewFx +
-o.a.i.incubator.viewer.javafx.ui.main.UiActionHandlerFx +
-o.a.i.incubator.viewer.javafx.ui.main.UiBuilderFx +
-o.a.i.incubator.viewer.javafx.ui.main.UiContextFxDefault +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.core:isis-core-runtimeservices:jar:<managed> +
 org.apache.isis.incubator.viewer:isis-viewer-javafx-model:jar:<managed> +
@@ -6437,23 +6413,7 @@ Artifact: isis-viewer-vaadin-ui
 Type: jar
 Directory: /incubator/viewers/vaadin/ui
 ----
-|.Components
-****
-o.a.i.incubator.viewer.vaadin.ui.auth.LogoutHandlerVaa +
-o.a.i.incubator.viewer.vaadin.ui.auth.VaadinAuthenticationHandler +
-o.a.i.incubator.viewer.vaadin.ui.components.UiComponentFactoryVaa +
-o.a.i.incubator.viewer.vaadin.ui.components.blob.BlobFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.clob.ClobFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.markup.MarkupFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.other.FallbackFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.temporal.TemporalFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.text.TextFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.text.uuid.UuidFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.pages.main.UiActionHandlerVaa +
-o.a.i.incubator.viewer.vaadin.ui.pages.main.UiContextVaaDefault +
-****
-
-.Dependencies
+|.Dependencies
 ****
 com.vaadin:vaadin-spring:jar:<managed> +
 commons-fileupload:commons-fileupload:jar:1.4 +

[isis] 08/08: ISIS-2717: improves docs for fixture scripts

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit bf13da499fe83ef81b268d432daf32b99c3e7c0c
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jun 6 17:24:48 2021 +0100

    ISIS-2717: improves docs for fixture scripts
---
 .../comguide/modules/ROOT/pages/starter-apps.adoc  |  8 +--
 .../applib/fixturescripts/ExecutionParameters.adoc | 74 +++++++++++-----------
 ...meters.adoc => ExecutionParametersDefault.adoc} | 12 ++--
 .../fixturescripts/ExecutionParametersService.adoc |  8 +--
 ...xecutionParametersServiceAutoConfiguration.adoc | 27 ++++++++
 .../applib/fixturescripts/FixtureScript.adoc       |  2 +
 .../applib/fixturescripts/FixtureScripts.adoc      |  6 +-
 .../FixtureScripts~MultipleExecutionStrategy.adoc  | 68 ++++++++++++++++++++
 ...ixtureScripts~NonPersistedObjectsStrategy.adoc} | 13 ++--
 .../FixtureScript~ExecutionContext.adoc            |  6 ++
 core/adoc/modules/_overview/pages/about.adoc       |  3 +-
 11 files changed, 167 insertions(+), 60 deletions(-)

diff --git a/antora/components/comguide/modules/ROOT/pages/starter-apps.adoc b/antora/components/comguide/modules/ROOT/pages/starter-apps.adoc
index dadcff3..3240cb7 100644
--- a/antora/components/comguide/modules/ROOT/pages/starter-apps.adoc
+++ b/antora/components/comguide/modules/ROOT/pages/starter-apps.adoc
@@ -22,12 +22,10 @@ Doing it this way makes it easy to keep the branches in sync.
 . make change to jdo-SNAPSHOT
 . merge jdo-SNAPSHOT to jpa-SNAPSHOT, and fix any persistence differences
 
-[Note]
+[NOTE]
 ----
-If you do want to update the antora docs and have them updated on-line, 
-then the procedure is to check out the released branch (M5) 
-and make changes there. Then we build and copy over to the 
-apache/isis-site repo to publish up to isis.apache.org.
+If you do want to update the antora docs and have them updated on-line, then the procedure is to check out the released branch (M5) and make changes there.
+Then we build and copy over to the apache/isis-site repo to publish up to isis.apache.org.
 ----
 
 
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc
index 1e9e99c..6dfb75d 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc
@@ -1,49 +1,49 @@
-= ExecutionParameters
+= ExecutionParameters _(interface)_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Represents the execution parameters (as passed initially as a string) when invoking _FixtureScripts#runScript(String, String)_ ) for use by the fixtures themselves (accessible using _org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript.ExecutionContext_ ).
+
 == API
 
 [source,java]
 .ExecutionParameters.java
 ----
-class ExecutionParameters {
-  ExecutionParameters(final String parameters)
-  Map<String, String> asKeyValueMap(final String parameters)
+interface ExecutionParameters {
   String getParameters()
-  String getParameter(final String parameterName)
-  T getParameterAsT(final String parameterName, final Class<T> cls)
-  Boolean getParameterAsBoolean(final String parameterName)
-  Byte getParameterAsByte(final String parameterName)
-  Short getParameterAsShort(final String parameterName)
-  Integer getParameterAsInteger(final String parameterName)
-  Long getParameterAsLong(final String parameterName)
-  Float getParameterAsFloat(final String parameterName)
-  Double getParameterAsDouble(final String parameterName)
-  Character getParameterAsCharacter(final String parameterName)
-  BigInteger getParameterAsBigInteger(final String parameterName)
-  BigDecimal getParameterAsBigDecimal(final String parameterName)
-  LocalDate getParameterAsLocalDate(final String parameterName)
-  LocalDateTime getParameterAsLocalDateTime(final String parameterName)
-  T getParameterAsEnum(final String parameterName, final Class<T> enumClass)
   Map<String, String> getParameterMap()
-  void setParameterIfNotPresent(final String parameterName, final String parameterValue)
-  void setParameter(final String parameterName, final Boolean parameterValue)
-  void setParameter(final String parameterName, final Byte parameterValue)
-  void setParameter(final String parameterName, final Short parameterValue)
-  void setParameter(final String parameterName, final Integer parameterValue)
-  void setParameter(final String parameterName, final Long parameterValue)
-  void setParameter(final String parameterName, final Float parameterValue)
-  void setParameter(final String parameterName, final Double parameterValue)
-  void setParameter(final String parameterName, final Character parameterValue)
-  void setParameter(final String parameterName, final BigInteger parameterValue)
-  void setParameter(final String parameterName, final java.util.Date parameterValue)
-  void setParameter(final String parameterName, final java.sql.Date parameterValue)
-  void setParameter(final String parameterName, final LocalDate parameterValue)
-  void setParameter(final String parameterName, final LocalDateTime parameterValue)
-  void setParameter(final String parameterName, final DateTime parameterValue)
-  void setParameter(final String parameterName, final BigDecimal parameterValue)
-  void setParameter(final String parameterName, final Enum<?> parameterValue)
-  void setParameter(final String parameterName, final String parameterValue)
+  String getParameter(String parameterName)
+  T getParameterAsT(String parameterName, Class<T> cls)
+  Boolean getParameterAsBoolean(String parameterName)
+  Byte getParameterAsByte(String parameterName)
+  Short getParameterAsShort(String parameterName)
+  Integer getParameterAsInteger(String parameterName)
+  Long getParameterAsLong(String parameterName)
+  Float getParameterAsFloat(String parameterName)
+  Double getParameterAsDouble(String parameterName)
+  Character getParameterAsCharacter(String parameterName)
+  BigInteger getParameterAsBigInteger(String parameterName)
+  BigDecimal getParameterAsBigDecimal(String parameterName)
+  LocalDate getParameterAsLocalDate(String parameterName)
+  LocalDateTime getParameterAsLocalDateTime(String parameterName)
+  T getParameterAsEnum(String parameterName, Class<T> enumClass)
+  void setParameterIfNotPresent(String parameterName, String parameterValue)
+  void setParameter(String parameterName, Boolean parameterValue)
+  void setParameter(String parameterName, Byte parameterValue)
+  void setParameter(String parameterName, Short parameterValue)
+  void setParameter(String parameterName, Integer parameterValue)
+  void setParameter(String parameterName, Long parameterValue)
+  void setParameter(String parameterName, Float parameterValue)
+  void setParameter(String parameterName, Double parameterValue)
+  void setParameter(String parameterName, Character parameterValue)
+  void setParameter(String parameterName, BigInteger parameterValue)
+  void setParameter(String parameterName, BigDecimal parameterValue)
+  void setParameter(String parameterName, LocalDate parameterValue)
+  void setParameter(String parameterName, LocalDateTime parameterValue)
+  void setParameter(String parameterName, DateTime parameterValue)
+  void setParameter(String parameterName, java.util.Date parameterValue)
+  void setParameter(String parameterName, java.sql.Date parameterValue)
+  void setParameter(String parameterName, Enum<?> parameterValue)
+  void setParameter(String parameterName, String parameterValue)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersDefault.adoc
similarity index 86%
copy from antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc
copy to antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersDefault.adoc
index 1e9e99c..2a8c16c 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParameters.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersDefault.adoc
@@ -1,13 +1,17 @@
-= ExecutionParameters
+= ExecutionParametersDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Responsible for parsing the string parameter passed when executing fixtures through the UI to the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] domain service.
+
+The class is instantiated by the xref:refguide:testing:index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc[ExecutionParametersService] .
+
 == API
 
 [source,java]
-.ExecutionParameters.java
+.ExecutionParametersDefault.java
 ----
-class ExecutionParameters {
-  ExecutionParameters(final String parameters)
+class ExecutionParametersDefault {
+  ExecutionParametersDefault(final String parameters)
   Map<String, String> asKeyValueMap(final String parameters)
   String getParameters()
   String getParameter(final String parameterName)
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc
index 931ac52..aa085ab 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc
@@ -1,16 +1,16 @@
-= ExecutionParametersService
+= ExecutionParametersService _(interface)_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Acts as a factory by the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] when instantiating the _FixtureScript.ExecutionContext_ .
+Acts as a factory by the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] when instantiating the _FixtureScript.ExecutionContext_ , to return an object able to parse any parameters provided through the UI parameter.
 
-Factoring this out as a service potentially allows for extensions to parsing; and also acts as an insurance policy to allow this part of the testing framework to be patched if the chosen parsing algorithms need refinement in the future).
+Factoring this out as a service potentially allows for extensions to parsing.
 
 == API
 
 [source,java]
 .ExecutionParametersService.java
 ----
-class ExecutionParametersService {
+interface ExecutionParametersService {
   ExecutionParameters newExecutionParameters(final String parameters)
 }
 ----
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.adoc
new file mode 100644
index 0000000..70dcc72
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.adoc
@@ -0,0 +1,27 @@
+= ExecutionParametersServiceAutoConfiguration
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Provides a fallback implementation of xref:refguide:testing:index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc[ExecutionParametersService] if none has been provided explicitly by the application itself.
+
+== API
+
+[source,java]
+.ExecutionParametersServiceAutoConfiguration.java
+----
+class ExecutionParametersServiceAutoConfiguration {
+  ExecutionParametersService executionParametersService()     // <.>
+}
+----
+
+<.> xref:#executionParametersService__[executionParametersService()]
++
+--
+Returns an implementation of xref:refguide:testing:index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc[ExecutionParametersService] that simply instantiates xref:refguide:testing:index/fixtures/applib/fixturescripts/ExecutionParameters.adoc[ExecutionParameters] with the provided parameters (so that the latter parses the parameters and presents them to xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] for inclusion within _org.a [...]
+--
+
+== Members
+
+[#executionParametersService__]
+=== executionParametersService()
+
+Returns an implementation of xref:refguide:testing:index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc[ExecutionParametersService] that simply instantiates xref:refguide:testing:index/fixtures/applib/fixturescripts/ExecutionParameters.adoc[ExecutionParameters] with the provided parameters (so that the latter parses the parameters and presents them to xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] for inclusion within _org.a [...]
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript.adoc
index a4e7ba5..4a833c0 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript.adoc
@@ -1,6 +1,8 @@
 = FixtureScript
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Responsible for setting up the system (or more likely a part of the system) for the purpose of prototyping/demos or for integraton testing.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc
index ae753b7..33b60a1 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc
@@ -1,6 +1,8 @@
 = FixtureScripts
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Provides the mechanism to execute xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] s from the UI of a domain app; and can also be used within integration testing.
+
 == API
 
 [source,java]
@@ -10,7 +12,7 @@ class FixtureScripts {
   // secman seeding
 public static final String LOGICAL_TYPE_NAME;
   public static final String PACKAGE_PREFIX;     // <.>
-  FixtureScripts(final Optional<FixtureScriptsSpecificationProvider> fixtureScriptsSpecificationProvider, final ServiceRegistry serviceRegistry)
+  FixtureScripts(final FixtureScriptsSpecificationProvider fixtureScriptsSpecificationProvider, final ServiceRegistry serviceRegistry)
   NonPersistedObjectsStrategy getNonPersistedObjectsStrategy()
   MultipleExecutionStrategy getMultipleExecutionStrategy()     // <.>
   List<FixtureResult> runFixtureScript(final String fixtureScriptName, final String parameters)
@@ -140,3 +142,5 @@ renamed to _#run(FixtureScript...)_
 
 renamed to _#runBuilder(BuilderScriptAbstract)_
 ====
+
+include::hooks/FixtureScripts_020-configuration-properties.adoc[]
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts~MultipleExecutionStrategy.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts~MultipleExecutionStrategy.adoc
new file mode 100644
index 0000000..f34fb54
--- /dev/null
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts~MultipleExecutionStrategy.adoc
@@ -0,0 +1,68 @@
+= FixtureScripts.MultipleExecutionStrategy _(enum)_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+How to handle fixture scripts that are submitted to be executed more than once.
+
+Note that this is a _FixtureScripts#getMultipleExecutionStrategy() global setting_ of the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] service; there isn't (currently) any way to mix-and-match fixture scripts that are written with differing semantics in mind. Ideally it should be the responsibility of the fixture script itself to determine whether it should be run. As a partial solution to this, the
+
+== API
+
+[source,java]
+.FixtureScripts~MultipleExecutionStrategy.java
+----
+enum MultipleExecutionStrategy {
+  EXECUTE_ONCE_BY_CLASS     // <.>
+  EXECUTE_ONCE_BY_VALUE     // <.>
+  EXECUTE     // <.>
+  boolean isExecuteOnceByClass()
+  boolean isExecuteOnceByValue()
+  boolean isExecute()
+}
+----
+
+<.> xref:#EXECUTE_ONCE_BY_CLASS[EXECUTE_ONCE_BY_CLASS]
++
+--
+Any given fixture script (or more precisely, any fixture script instance for a particular fixture script class) can only be run once.
+--
+<.> xref:#EXECUTE_ONCE_BY_VALUE[EXECUTE_ONCE_BY_VALUE]
++
+--
+Any given fixture script can only be run once, where the check to determine if a fixture script has already been run is performed using value semantics.
+--
+<.> xref:#EXECUTE[EXECUTE]
++
+--
+Allow fixture scripts to run as requested.
+--
+
+== Members
+
+[#EXECUTE_ONCE_BY_CLASS]
+=== EXECUTE_ONCE_BY_CLASS
+
+Any given fixture script (or more precisely, any fixture script instance for a particular fixture script class) can only be run once.
+
+This strategy represents the original design of fixture scripts service. Specifically, it allows an arbitrary graph of fixture scripts (eg A -> B -> C, A -> B -> D, A -> C -> D) to be created each specifying its dependencies, and without having to worry or co-ordinate whether those prerequisite fixture scripts have already been run.
+
+The most obvious example is a global teardown script; every fixture script can require this to be called, but it will only be run once.
+
+Note that this strategy treats fixture scripts as combining both the 'how' (which business action(s) to call) and the also the 'what' (what the arguments are to those actions).
+
+[#EXECUTE_ONCE_BY_VALUE]
+=== EXECUTE_ONCE_BY_VALUE
+
+Any given fixture script can only be run once, where the check to determine if a fixture script has already been run is performed using value semantics.
+
+This strategy is a half-way house between the _#EXECUTE_ONCE_BY_VALUE_ and _#EXECUTE_ strategies, where we want to prevent a fixture from running more than once, where by "fixture" we mean the 'what' - the data to be loaded up; the 'how' is unimportant.
+
+This strategy was introduced in order to better support the `ExcelFixture` fixture script (provided by the (non-ASF) Isis Addons'Excel module. The `ExcelFixture` takes an Excel spreadsheet as the 'what' and loads up each row. So the 'how' is re-usable (therefore the _#EXECUTE_ONCE_BY_CLASS_ doesn't apply) on the other hand we don't want the 'what' to be loaded more than once (so the _#EXECUTE_ strategy doesn't apply either). The solution is for `ExcelFixture` to have value semantics (a d [...]
+
+[#EXECUTE]
+=== EXECUTE
+
+Allow fixture scripts to run as requested.
+
+This strategy is conceptually the simplest; all fixtures are run as requested. However, it is then the responsibility of the programmer to ensure that fixtures do not interfere with each other. For example, if fixture A calls fixture B which calls teardown, and fixture A also calls fixture C that itself calls teardown, then fixture B's setup will get removed.
+
+The workaround to the teardown issue is of course to call the teardown fixture only once in the test itself; however even then this strategy cannot cope with arbitrary graphs of fixtures. The solution is for the fixture list to be flat, one level high.
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts~NonPersistedObjectsStrategy.adoc
similarity index 57%
copy from antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc
copy to antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts~NonPersistedObjectsStrategy.adoc
index 931ac52..54ea1bb 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/ExecutionParametersService.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts~NonPersistedObjectsStrategy.adoc
@@ -1,17 +1,16 @@
-= ExecutionParametersService
+= FixtureScripts.NonPersistedObjectsStrategy _(enum)_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Acts as a factory by the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] when instantiating the _FixtureScript.ExecutionContext_ .
-
-Factoring this out as a service potentially allows for extensions to parsing; and also acts as an insurance policy to allow this part of the testing framework to be patched if the chosen parsing algorithms need refinement in the future).
+How to handle objects that are to be _FixtureScripts#newFixtureResult(FixtureScript, String, Object, boolean) added_ into a xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureResult.adoc[FixtureResult] but which are not yet persisted.
 
 == API
 
 [source,java]
-.ExecutionParametersService.java
+.FixtureScripts~NonPersistedObjectsStrategy.java
 ----
-class ExecutionParametersService {
-  ExecutionParameters newExecutionParameters(final String parameters)
+enum NonPersistedObjectsStrategy {
+  PERSIST
+  IGNORE
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript~ExecutionContext.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript~ExecutionContext.adoc
index 5cac98c..622ba4e 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript~ExecutionContext.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScript~ExecutionContext.adoc
@@ -1,6 +1,12 @@
 = FixtureScript.ExecutionContext
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Provides an execution context to each xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScript.adoc[FixtureScript] execution, the primary use case being to allow the fixture script to execute child fixture scripts (to set up smaller parts of the system).
+
+The execution context also orovides access to parameters that can influence how a fixture script executes (for example, specifying how many demo objects to set up) and also holds the results of the fixture scripts. Fixture scripts are expected to know how the parameter name/key.
+
+The execution context is also a mechanism by which the results of the fixture script (and any children fixture scripts it may have executed) can be collected together. These are rendered to the UI by the xref:refguide:testing:index/fixtures/applib/fixturescripts/FixtureScripts.adoc[FixtureScripts] domain service, primarily as a convenience for prototyping/demoing.
+
 == API
 
 [source,java]
diff --git a/core/adoc/modules/_overview/pages/about.adoc b/core/adoc/modules/_overview/pages/about.adoc
index 095c9e6..87bb303 100644
--- a/core/adoc/modules/_overview/pages/about.adoc
+++ b/core/adoc/modules/_overview/pages/about.adoc
@@ -510,7 +510,6 @@ Directory: /testing/fixtures/applib
 ----
 |.Components
 ****
-o.a.i.testing.fixtures.applib.fixturescripts.ExecutionParametersService +
 o.a.i.testing.fixtures.applib.modules.ModuleWithFixturesService +
 o.a.i.testing.fixtures.applib.queryresultscache.QueryResultsCacheControlDefault +
 o.a.i.testing.fixtures.applib.services.FixturesLifecycleService +
@@ -528,7 +527,7 @@ org.apache.isis.testing:isis-testing-integtestsupport-applib:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:testing:index/fixtures/applib/IsisIntegrationTestAbstractWithFixtures.adoc[IsisIntegrationTestAbstractWithFixtures], xref:refguide:testing:index/fixtures/applib/fixturescripts/BuilderScriptAbstract.adoc[BuilderScriptAbstract], xref:refguide:testing:index/fixtures/applib/fixturescripts/BuilderScriptWithResult.adoc[BuilderScriptWithResult], xref:refguide:testing:index/fixtures/applib/fixturescripts/BuilderScriptWithoutResult.adoc[BuilderScriptWithoutResult], xref:refguide:tes [...]
+xref:refguide:testing:index/fixtures/applib/IsisIntegrationTestAbstractWithFixtures.adoc[IsisIntegrationTestAbstractWithFixtures], xref:refguide:testing:index/fixtures/applib/fixturescripts/BuilderScriptAbstract.adoc[BuilderScriptAbstract], xref:refguide:testing:index/fixtures/applib/fixturescripts/BuilderScriptWithResult.adoc[BuilderScriptWithResult], xref:refguide:testing:index/fixtures/applib/fixturescripts/BuilderScriptWithoutResult.adoc[BuilderScriptWithoutResult], xref:refguide:tes [...]
 ****
 
 |Apache Isis Tst - H2 Console (parent)

[isis] 02/08: ISIS-2483: adds new refguide-index for other recent new tickets

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ac998d1bf6092e5f43aa098d0f172b471d531626
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jun 6 15:58:19 2021 +0100

    ISIS-2483: adds new refguide-index for other recent new tickets
---
 .../manager/AnonymousInteractionFactory.adoc       | 31 ++++++++++++++++++++++
 .../authenticator/AuthenticatorSecman.adoc         | 19 +++++++++++++
 .../AuthenticatorSecmanAutoConfiguration.adoc      | 13 +++++++++
 3 files changed, 63 insertions(+)

diff --git a/antora/components/refguide-index/modules/core/pages/index/security/authentication/manager/AnonymousInteractionFactory.adoc b/antora/components/refguide-index/modules/core/pages/index/security/authentication/manager/AnonymousInteractionFactory.adoc
new file mode 100644
index 0000000..c5cbc29
--- /dev/null
+++ b/antora/components/refguide-index/modules/core/pages/index/security/authentication/manager/AnonymousInteractionFactory.adoc
@@ -0,0 +1,31 @@
+= AnonymousInteractionFactory _(interface)_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Inversion of dependency pattern.
+
+Introduced to allow the AuthenticationManager (module: security) access to the InteractionFactory service (module: interaction), which otherwise was not possible, due to Maven module dependencies (preventing circles).
+
+== API
+
+[source,java]
+.AnonymousInteractionFactory.java
+----
+interface AnonymousInteractionFactory {
+  void runAnonymous(ThrowingRunnable runnable)
+  R callAnonymous(Callable<R> callable)
+  AnonymousInteractionFactory forTesting()     // <.>
+}
+----
+
+<.> xref:#forTesting__[forTesting()]
++
+--
+Returns a pass-through implementation, free of side-effects, in support of simple JUnit tests.
+--
+
+== Members
+
+[#forTesting__]
+=== forTesting()
+
+Returns a pass-through implementation, free of side-effects, in support of simple JUnit tests.
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/integration/authenticator/AuthenticatorSecman.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/integration/authenticator/AuthenticatorSecman.adoc
new file mode 100644
index 0000000..7bf365b
--- /dev/null
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/integration/authenticator/AuthenticatorSecman.adoc
@@ -0,0 +1,19 @@
+= AuthenticatorSecman
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+xref:refguide:core:index/security/authentication/Authenticator.adoc[Authenticator] implementation that authenticates the xref:refguide:extensions:index/secman/applib/user/dom/ApplicationUser.adoc[ApplicationUser] , first that the user exists and secondly that the provided password matches the _ApplicationUser#getEncryptedPassword() encrypted password_ of the user.
+
+This Authenticator is a fallback and is only used if there is no other implementation available.
+
+== API
+
+[source,java]
+.AuthenticatorSecman.java
+----
+class AuthenticatorSecman {
+  boolean canAuthenticate(final Class<? extends AuthenticationRequest> authenticationRequestClass)
+  Authentication authenticate(final AuthenticationRequest request, final String code)
+  void logout(final Authentication session)
+}
+----
+
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.adoc
new file mode 100644
index 0000000..a313c94
--- /dev/null
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.adoc
@@ -0,0 +1,13 @@
+= AuthenticatorSecmanAutoConfiguration
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.AuthenticatorSecmanAutoConfiguration.java
+----
+class AuthenticatorSecmanAutoConfiguration {
+  Authenticator authenticatorSecman(final ApplicationUserRepository applicationUserRepository, final PasswordEncryptionService passwordEncryptionService)
+}
+----
+

[isis] 06/08: ISIS-2717: converts ExecutionParametersService into an interface rather than an impl ...

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit efdbcbe90bce9db2b6f354125d25454241a5a86e
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jun 6 17:15:46 2021 +0100

    ISIS-2717: converts ExecutionParametersService into an interface rather than an impl ...
    
    ... with ExecutionParamterServiceAutoConfiguration providing the fallback.
---
 .../pages/services/ExecutionParametersService.adoc |  27 --
 .../applib/fixturescripts/ExecutionParameters.java | 340 +++------------------
 ...meters.java => ExecutionParametersDefault.java} |  11 +-
 .../fixturescripts/ExecutionParametersService.java |  19 +-
 ...ecutionParametersServiceAutoConfiguration.java} |  42 +--
 .../applib/fixturescripts/FixtureScript.java       |  77 ++++-
 .../applib/fixturescripts/FixtureScripts.java      |  25 +-
 .../src/main/resources/META-INF/spring.factories   |   3 +-
 ...ContextTest.java => ExecutionContext_Test.java} |   8 +-
 ...utionParametersDefault_AsKeyValueMap_Test.java} |  14 +-
 ...t.java => ExecutionParametersDefault_Test.java} |   6 +-
 11 files changed, 184 insertions(+), 388 deletions(-)

diff --git a/testing/fixtures/adoc/modules/fixtures/pages/services/ExecutionParametersService.adoc b/testing/fixtures/adoc/modules/fixtures/pages/services/ExecutionParametersService.adoc
deleted file mode 100644
index afcb411..0000000
--- a/testing/fixtures/adoc/modules/fixtures/pages/services/ExecutionParametersService.adoc
+++ /dev/null
@@ -1,27 +0,0 @@
-= `ExecutionParametersService`
-
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-:page-partial:
-
-CAUTION: TODO: this needs to be converted into a hook for refguide-index
-
-
-The `ExecutionParametersService` is used by the framework simply to instantiate the `ExecutionParameters` object.
-The `ExecutionParameters` object in turn is responsible for parsing the string parameter passed when executing fixtures through the UI to the xref:testing:fixtures:services/FixtureScripts.adoc[FixtureScripts] domain service.
-
-== API & Implementation
-
-The API and implementation of this service is simply:
-
-[source,java]
-----
-public class ExecutionParametersService {
-    public ExecutionParameters newExecutionParameters(final String parameters) {
-        return new ExecutionParameters(parameters);
-    }
-}
-----
-
-
-
-
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters.java
index 1f51483..c133c9c 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters.java
@@ -35,296 +35,56 @@ import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Maps;
 
 /**
- * @since 1.x {@index}
+ * Represents the execution parameters (as passed initially as a string)
+ * when invoking {@link FixtureScripts#runScript(String, String)}) for
+ * use by the fixtures themselves (accessible using
+ * {@link org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript.ExecutionContext}).
+ *
+ * @since 2.0 {@index}
  */
-public class ExecutionParameters {
-
-    private static final Pattern keyEqualsValuePattern = Pattern.compile("([^=]*)=(.*)");
-
-    private final String parameters;
-    private final Map<String, String> parameterMap;
-
-    public ExecutionParameters(final String parameters) {
-        this.parameters = parameters;
-        this.parameterMap = asKeyValueMap(parameters);
-    }
-
-    static Map<String, String> asKeyValueMap(final String parameters) {
-        final Map<String, String> keyValues = _Maps.newLinkedHashMap();
-        if (parameters != null) {
-            try {
-                _Strings.splitThenStream(parameters, "\n")
-                .forEach(line->{
-                    final Matcher matcher = keyEqualsValuePattern.matcher(line);
-                    if (matcher.matches()) {
-                        keyValues.put(matcher.group(1).trim(), matcher.group(2).trim());
-                    }
-                });
-            } catch (final Exception e) {
-                // ignore, shouldn't happen
-            }
-        }
-        return keyValues;
-    }
-
-    public String getParameters() {
-        return parameters;
-    }
-
-    public String getParameter(final String parameterName) {
-        return parameterMap.get(parameterName);
-    }
-
-    public <T> T getParameterAsT(final String parameterName, final Class<T> cls) {
-        return _Casts.uncheckedCast(getParameterAsObject(parameterName, cls));
-    }
-
-    protected Object getParameterAsObject(final String parameterName, final Class<?> cls) {
-        final Object value;
-        if (Enum.class.isAssignableFrom(cls)) {
-            Class<?> enumClass = cls;
-            value = getParameterAsEnum(parameterName, _Casts.uncheckedCast(enumClass));
-        } else if (cls == Boolean.class) {
-            value = getParameterAsBoolean(parameterName);
-        } else if (cls == Byte.class) {
-            value = getParameterAsByte(parameterName);
-        } else if (cls == Short.class) {
-            value = getParameterAsShort(parameterName);
-        } else if (cls == Integer.class) {
-            value = getParameterAsInteger(parameterName);
-        } else if (cls == Long.class) {
-            value = getParameterAsLong(parameterName);
-        } else if (cls == Float.class) {
-            value = getParameterAsFloat(parameterName);
-        } else if (cls == Double.class) {
-            value = getParameterAsDouble(parameterName);
-        } else if (cls == Character.class) {
-            value = getParameterAsCharacter(parameterName);
-        } else if (cls == BigDecimal.class) {
-            value = getParameterAsBigDecimal(parameterName);
-        } else if (cls == BigInteger.class) {
-            value = getParameterAsBigInteger(parameterName);
-        } else if (cls == LocalDate.class) {
-            value = getParameterAsLocalDate(parameterName);
-        } else if (cls == LocalDateTime.class) {
-            value = getParameterAsLocalDateTime(parameterName);
-        } else if (cls == String.class) {
-            value = getParameter(parameterName);
-        } else {
-            value = null;
-        }
-        return value;
-    }
-
-    public Boolean getParameterAsBoolean(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (_Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return Boolean.valueOf(value);
-    }
-
-    public Byte getParameterAsByte(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (_Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return Byte.valueOf(value);
-    }
-
-    public Short getParameterAsShort(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (_Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return Short.valueOf(value);
-    }
-
-    public Integer getParameterAsInteger(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (_Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return Integer.valueOf(value);
-    }
-
-    public Long getParameterAsLong(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (_Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return Long.valueOf(value);
-    }
-
-    public Float getParameterAsFloat(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (_Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return Float.valueOf(value);
-    }
-
-    public Double getParameterAsDouble(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (_Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return Double.valueOf(value);
-    }
-
-    public Character getParameterAsCharacter(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (_Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return Character.valueOf(value.charAt(0));
-    }
-
-    public BigInteger getParameterAsBigInteger(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (_Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return new BigInteger(value);
-    }
-
-    public BigDecimal getParameterAsBigDecimal(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (_Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return new BigDecimal(value);
-    }
-
-    public LocalDate getParameterAsLocalDate(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (value == null) {
-            return null;
-        }
-        return LocalDate.parse(value);
-    }
-
-    public LocalDateTime getParameterAsLocalDateTime(final String parameterName) {
-        final String value = getParameter(parameterName);
-        if (value == null) {
-            return null;
-        }
-        return LocalDateTime.parse(value);
-    }
-
-    public <T extends Enum<T>> T getParameterAsEnum(final String parameterName, final Class<T> enumClass) {
-        final String value = getParameter(parameterName);
-        return valueOfElseNull(enumClass, value);
-    }
-
-    private static <T extends Enum<T>> T valueOfElseNull(final Class<T> enumClass, final String value) {
-        if (value == null) {
-            return null;
-        }
-        final T[] enumConstants = enumClass.getEnumConstants();
-        for (T enumConstant : enumConstants) {
-            if (enumConstant.name().equals(value)) {
-                return enumConstant;
-            }
-        }
-        return null;
-    }
-
-
-    public Map<String, String> getParameterMap() {
-        return Collections.unmodifiableMap(parameterMap);
-    }
-
-    public void setParameterIfNotPresent(final String parameterName, final String parameterValue) {
-        if (parameterName == null) {
-            throw new IllegalArgumentException("parameterName required");
-        }
-        if (parameterValue == null) {
-            // ignore
-            return;
-        }
-        if (parameterMap.containsKey(parameterName)) {
-            // ignore; the existing parameter take precedence
-            return;
-        }
-        parameterMap.put(parameterName, parameterValue);
-    }
-
-    public void setParameter(final String parameterName, final Boolean parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final Byte parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final Short parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final Integer parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final Long parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final Float parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final Double parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final Character parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final BigInteger parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final java.util.Date parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final java.sql.Date parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final LocalDate parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final LocalDateTime parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final DateTime parameterValue) {
-        final StringBuffer buf = new StringBuffer();
-        ISODateTimeFormat.dateTimeParser().printTo(buf, parameterValue);
-        setParameter(parameterName, parameterValue != null ? buf.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final BigDecimal parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.toString() : null);
-    }
-
-    public void setParameter(final String parameterName, final Enum<?> parameterValue) {
-        setParameter(parameterName, parameterValue != null ? parameterValue.name() : null);
-    }
-
-    public void setParameter(final String parameterName, final String parameterValue) {
-        if (parameterName == null) {
-            throw new IllegalArgumentException("parameterName required");
-        }
-        if (parameterValue == null) {
-            // ignore
-            return;
-        }
-        parameterMap.put(parameterName, parameterValue);
-    }
+public interface ExecutionParameters {
+
+    String getParameters();
+
+    Map<String, String> getParameterMap();
+
+    String getParameter(String parameterName);
+
+    <T> T getParameterAsT(String parameterName, Class<T> cls);
+
+    Boolean getParameterAsBoolean(String parameterName);
+    Byte getParameterAsByte(String parameterName);
+    Short getParameterAsShort(String parameterName);
+    Integer getParameterAsInteger(String parameterName);
+    Long getParameterAsLong(String parameterName);
+    Float getParameterAsFloat(String parameterName);
+    Double getParameterAsDouble(String parameterName);
+    Character getParameterAsCharacter(String parameterName);
+    BigInteger getParameterAsBigInteger(String parameterName);
+    BigDecimal getParameterAsBigDecimal(String parameterName);
+    LocalDate getParameterAsLocalDate(String parameterName);
+    LocalDateTime getParameterAsLocalDateTime(String parameterName);
+
+    <T extends Enum<T>> T getParameterAsEnum(String parameterName, Class<T> enumClass);
+
+    void setParameterIfNotPresent(String parameterName, String parameterValue);
+
+    void setParameter(String parameterName, Boolean parameterValue);
+    void setParameter(String parameterName, Byte parameterValue);
+    void setParameter(String parameterName, Short parameterValue);
+    void setParameter(String parameterName, Integer parameterValue);
+    void setParameter(String parameterName, Long parameterValue);
+    void setParameter(String parameterName, Float parameterValue);
+    void setParameter(String parameterName, Double parameterValue);
+    void setParameter(String parameterName, Character parameterValue);
+    void setParameter(String parameterName, BigInteger parameterValue);
+    void setParameter(String parameterName, BigDecimal parameterValue);
+    void setParameter(String parameterName, LocalDate parameterValue);
+    void setParameter(String parameterName, LocalDateTime parameterValue);
+    void setParameter(String parameterName, DateTime parameterValue);
+    void setParameter(String parameterName, java.util.Date parameterValue);
+    void setParameter(String parameterName, java.sql.Date parameterValue);
+    void setParameter(String parameterName, Enum<?> parameterValue);
+    void setParameter(String parameterName, String parameterValue);
 
 }
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersDefault.java
similarity index 97%
copy from testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters.java
copy to testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersDefault.java
index 1f51483..449ee80 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersDefault.java
@@ -35,16 +35,23 @@ import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Maps;
 
 /**
+ * Responsible for parsing the string parameter passed when executing
+ * fixtures through the UI to the {@link FixtureScripts} domain service.
+ *
+ * <p>
+ *     The class is instantiated by the {@link ExecutionParametersService}.
+ * </p>
+ *
  * @since 1.x {@index}
  */
-public class ExecutionParameters {
+public class ExecutionParametersDefault implements ExecutionParameters {
 
     private static final Pattern keyEqualsValuePattern = Pattern.compile("([^=]*)=(.*)");
 
     private final String parameters;
     private final Map<String, String> parameterMap;
 
-    public ExecutionParameters(final String parameters) {
+    public ExecutionParametersDefault(final String parameters) {
         this.parameters = parameters;
         this.parameterMap = asKeyValueMap(parameters);
     }
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersService.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersService.java
index 266a06c..f0af030 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersService.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersService.java
@@ -30,25 +30,18 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 
 /**
  * Acts as a factory by the {@link FixtureScripts} when
- * instantiating the {@link FixtureScript.ExecutionContext}.
+ * instantiating the {@link FixtureScript.ExecutionContext}, to return an
+ * object able to parse any parameters provided through the UI parameter.
  *
  * <p>
- * Factoring this out as a service potentially allows for extensions to parsing; and also acts as an
- * insurance policy to allow this part of the testing framework to be patched if the chosen parsing algorithms
- * need refinement in the future).
+ * Factoring this out as a service potentially allows for extensions to parsing.
  * </p>
  *
  * @since 1.x {@index}
  */
-@Service
-@Named("isis.test.FixtureExecutionParametersService")
-@Order(OrderPrecedence.MIDPOINT)
-@Primary
-@Qualifier("Default")
-public class ExecutionParametersService {
+@FunctionalInterface
+public interface ExecutionParametersService {
 
-    public ExecutionParameters newExecutionParameters(final String parameters) {
-        return new ExecutionParameters(parameters);
-    }
+    ExecutionParameters newExecutionParameters(final String parameters);
 
 }
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersService.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.java
similarity index 52%
copy from testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersService.java
copy to testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.java
index 266a06c..ce8f3e9 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersService.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.java
@@ -21,6 +21,8 @@ package org.apache.isis.testing.fixtures.applib.fixturescripts;
 import javax.inject.Named;
 
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Primary;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
@@ -29,26 +31,30 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 
 
 /**
- * Acts as a factory by the {@link FixtureScripts} when
- * instantiating the {@link FixtureScript.ExecutionContext}.
+ * Provides a fallback implementation of {@link ExecutionParametersService} if
+ * none has been provided explicitly by the application itself.
  *
- * <p>
- * Factoring this out as a service potentially allows for extensions to parsing; and also acts as an
- * insurance policy to allow this part of the testing framework to be patched if the chosen parsing algorithms
- * need refinement in the future).
- * </p>
- *
- * @since 1.x {@index}
+ * @since 2.0 {@index}
  */
-@Service
-@Named("isis.test.FixtureExecutionParametersService")
-@Order(OrderPrecedence.MIDPOINT)
-@Primary
-@Qualifier("Default")
-public class ExecutionParametersService {
-
-    public ExecutionParameters newExecutionParameters(final String parameters) {
-        return new ExecutionParameters(parameters);
+public class ExecutionParametersServiceAutoConfiguration {
+
+
+    /**
+     * Returns an implementation of {@link ExecutionParametersService} that
+     * simply instantiates {@link ExecutionParameters} with the provided
+     * parameters (so that the latter parses the parameters and presents them
+     * to {@link FixtureScripts} for inclusion within {@link org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript.ExecutionContext}.
+     *
+     * @return
+     */
+    @Bean
+    @Named("isis.testing.fixtures.ExecutionParametersServiceDefault")
+    @Order(OrderPrecedence.LATE)
+    @Primary
+    @Qualifier("Default")
+    @ConditionalOnMissingBean(ExecutionParametersService.class)
+    public ExecutionParametersService executionParametersService() {
+        return ExecutionParametersDefault::new;
     }
 
 }
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScript.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScript.java
index 90db06a..fa61fc0 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScript.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScript.java
@@ -49,7 +49,6 @@ import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.testing.fixtures.applib.api.FixtureScriptWithExecutionStrategy;
 import org.apache.isis.testing.fixtures.applib.api.PersonaWithBuilderScript;
 import org.apache.isis.testing.fixtures.applib.api.WithPrereqs;
@@ -59,6 +58,9 @@ import lombok.Setter;
 import lombok.extern.log4j.Log4j2;
 
 /**
+ * Responsible for setting up the system (or more likely a part of the system)
+ * for the purpose of prototyping/demos or for integraton testing.
+ *
  * @since 1.x {@index}
  */
 @Log4j2
@@ -104,8 +106,6 @@ public abstract class FixtureScript {
 
 
 
-    // -- qualifiedName
-
     public String getQualifiedName() {
         return getParentPath() + getLocalName();
     }
@@ -135,14 +135,32 @@ public abstract class FixtureScript {
 
 
 
-
-
     // -- ExecutionContext
 
     /**
+     * Provides an execution context to each {@link FixtureScript} execution,
+     * the primary use case being to allow the fixture script to execute
+     * child fixture scripts (to set up smaller parts of the system).
+     *
+     * <p>
+     *     The execution context also orovides access to parameters that can
+     *     influence how a fixture script executes (for example, specifying how
+     *     many demo objects to set up) and also holds the results of the
+     *     fixture scripts.   Fixture scripts are expected to know how the
+     *     parameter name/key.
+     * </p>
+     *
+     * <p>
+     *     The execution context is also a mechanism by which the results of
+     *     the fixture script (and any children fixture scripts it may have
+     *     executed) can be collected together.  These are rendered to the UI
+     *     by the {@link FixtureScripts} domain service, primarily as a
+     *     convenience for prototyping/demoing.
+     * </p>
+     *
      * @since 1.x {@index}
      */
-    public static class ExecutionContext {
+    public static class ExecutionContext implements ExecutionParameters {
 
         /**
          * Null implementation, to assist with unit testing of {@link FixtureScript}s.
@@ -169,190 +187,229 @@ public abstract class FixtureScript {
         private final FixtureResultList fixtureResultList;
 
         public ExecutionContext(final String parameters, final FixtureScripts fixtureScripts) {
-            this(new ExecutionParameters(parameters), fixtureScripts);
+            this(new ExecutionParametersDefault(parameters), fixtureScripts);
         }
 
         @Programmatic
-        public static ExecutionContext create(final ExecutionParameters executionParameters, final FixtureScripts fixtureScripts) {
+        public static ExecutionContext create(
+                final ExecutionParameters executionParameters,
+                final FixtureScripts fixtureScripts) {
             return new ExecutionContext(executionParameters, fixtureScripts);
         }
 
-        private ExecutionContext(final ExecutionParameters executionParameters, final FixtureScripts fixtureScripts) {
+        private ExecutionContext(
+                final ExecutionParameters executionParameters,
+                final FixtureScripts fixtureScripts) {
             this.fixtureScripts = fixtureScripts;
-            fixtureResultList = new FixtureResultList(fixtureScripts, this);
             this.executionParameters = executionParameters;
+            this.fixtureResultList = new FixtureResultList(fixtureScripts, this);
         }
 
+        @Override
         @Programmatic
         public String getParameters() {
             return executionParameters.getParameters();
         }
 
+        @Override
         @Programmatic
         public Map<String,String> getParameterMap() {
             return executionParameters.getParameterMap();
         }
 
+        @Override
         @Programmatic
         public String getParameter(final String parameterName) {
             return executionParameters.getParameter(parameterName);
         }
 
+        @Override
         @Programmatic
         public <T> T getParameterAsT(final String parameterName, final Class<T> cls) {
             return executionParameters.getParameterAsT(parameterName,cls);
         }
 
+        @Override
         @Programmatic
         public Boolean getParameterAsBoolean(final String parameterName) {
             return executionParameters.getParameterAsBoolean(parameterName);
         }
 
+        @Override
         @Programmatic
         public Byte getParameterAsByte(final String parameterName) {
             return executionParameters.getParameterAsByte(parameterName);
         }
 
+        @Override
         @Programmatic
         public Short getParameterAsShort(final String parameterName) {
             return executionParameters.getParameterAsShort(parameterName);
         }
 
+        @Override
         @Programmatic
         public Integer getParameterAsInteger(final String parameterName) {
             return executionParameters.getParameterAsInteger(parameterName);
         }
 
+        @Override
         @Programmatic
         public Long getParameterAsLong(final String parameterName) {
             return executionParameters.getParameterAsLong(parameterName);
         }
 
+        @Override
         @Programmatic
         public Float getParameterAsFloat(final String parameterName) {
             return executionParameters.getParameterAsFloat(parameterName);
         }
 
+        @Override
         @Programmatic
         public Double getParameterAsDouble(final String parameterName) {
             return executionParameters.getParameterAsDouble(parameterName);
         }
 
+        @Override
         @Programmatic
         public Character getParameterAsCharacter(final String parameterName) {
             return executionParameters.getParameterAsCharacter(parameterName);
         }
 
+        @Override
         @Programmatic
         public BigInteger getParameterAsBigInteger(final String parameterName) {
             return executionParameters.getParameterAsBigInteger(parameterName);
         }
 
+        @Override
         @Programmatic
         public BigDecimal getParameterAsBigDecimal(final String parameterName) {
             return executionParameters.getParameterAsBigDecimal(parameterName);
         }
 
+        @Override
         @Programmatic
         public LocalDate getParameterAsLocalDate(final String parameterName) {
             return executionParameters.getParameterAsLocalDate(parameterName);
         }
 
+        @Override
         @Programmatic
         public LocalDateTime getParameterAsLocalDateTime(final String parameterName) {
             return executionParameters.getParameterAsLocalDateTime(parameterName);
         }
 
+        @Override
         @Programmatic
         public <T extends Enum<T>> T getParameterAsEnum(final String parameterName, final Class<T> enumClass) {
             return executionParameters.getParameterAsEnum(parameterName, enumClass);
         }
 
+        @Override
         @Programmatic
         public void setParameterIfNotPresent(final String parameterName, final String parameterValue) {
             executionParameters.setParameterIfNotPresent(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final Boolean parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final Byte parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final Short parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final Integer parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final Long parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final Float parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final Double parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final Character parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final BigInteger parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final java.util.Date parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final java.sql.Date parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final LocalDate parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final LocalDateTime parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final org.joda.time.DateTime parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final BigDecimal parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final Enum<?> parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
         }
 
+        @Override
         @Programmatic
         public void setParameter(final String parameterName, final String parameterValue) {
             executionParameters.setParameter(parameterName, parameterValue);
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScripts.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScripts.java
index befa3a5..ba159e4 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScripts.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScripts.java
@@ -65,6 +65,9 @@ import lombok.val;
 
 
 /**
+ * Provides the mechanism to execute {@link FixtureScript}s from the UI of
+ * a domain app; and can also be used within integration testing.
+ *
  * @since 1.x {@index}
  */
 @DomainService(
@@ -79,11 +82,8 @@ public class FixtureScripts {
 
     public static final String LOGICAL_TYPE_NAME = IsisModuleTestingFixturesApplib.NAMESPACE + ".FixtureScripts"; // secman seeding
 
-    //  @Inject private FactoryService factoryService;
     @Inject private TitleService titleService;
     @Inject private JaxbService jaxbService;
-    // @Inject private BookmarkService bookmarkService;
-    // @Inject private ServiceRegistry serviceRegistry;
     @Inject private ServiceInjector serviceInjector;
     @Inject private RepositoryService repositoryService;
     @Inject private TransactionService transactionService;
@@ -99,6 +99,8 @@ public class FixtureScripts {
      * How to handle objects that are to be
      * {@link FixtureScripts#newFixtureResult(FixtureScript, String, Object, boolean) added}
      * into a {@link FixtureResult} but which are not yet persisted.
+     *
+     * @since 1.x {@index}
      */
     public enum NonPersistedObjectsStrategy {
         PERSIST,
@@ -113,8 +115,9 @@ public class FixtureScripts {
      *     {@link FixtureScripts} service; there isn't (currently) any way to mix-and-match fixture scripts that are
      *     written with differing semantics in mind.  Ideally it should be the responsibility of the fixture script
      *     itself to determine whether it should be run.  As a partial solution to this, the
-     *
      * </p>
+     *
+     * @since 1.x {@index}
      */
     public enum MultipleExecutionStrategy {
         /**
@@ -204,11 +207,10 @@ public class FixtureScripts {
     private final SortedMap<String,FixtureScript> fixtureScriptByFriendlyName;
 
     public FixtureScripts(
-            final Optional<FixtureScriptsSpecificationProvider> fixtureScriptsSpecificationProvider,
+            final FixtureScriptsSpecificationProvider fixtureScriptsSpecificationProvider,
             final ServiceRegistry serviceRegistry) {
 
-        this.specification = fixtureScriptsSpecificationProvider.orElse(() -> FixtureScriptsSpecification.builder(PACKAGE_PREFIX).build()).getSpecification();
-        // this.serviceRegistry = serviceRegistry;
+        this.specification = fixtureScriptsSpecificationProvider.getSpecification();
 
         val packagePrefix = specification.getPackagePrefix();
         fixtureScriptByFriendlyName =
@@ -216,7 +218,7 @@ public class FixtureScripts {
                 .filter(Objects::nonNull)
                 .filter(fixtureScript -> fixtureScript.getClass().getPackage().getName().startsWith(packagePrefix))
                 .collect(Collectors.toMap(FixtureScript::getFriendlyName, Function.identity(),
-                        (v1,v2) ->{ throw new RuntimeException(String.format("Duplicate key for values %s and %s", v1, v2));},
+                        (v1,v2) ->{ throw new RuntimeException(String.format("Two FixtureScript's have the same friendly name '%s", v1));},
                         TreeMap::new));
     }
 
@@ -434,11 +436,8 @@ public class FixtureScripts {
 
     @Programmatic
     public FixtureScript.ExecutionContext newExecutionContext(final String parameters) {
-        final ExecutionParameters executionParameters =
-                executionParametersService != null
-                ? executionParametersService.newExecutionParameters(parameters)
-                        : new ExecutionParameters(parameters);
-                return FixtureScript.ExecutionContext.create(executionParameters, this);
+        val executionParameters = executionParametersService.newExecutionParameters(parameters);
+        return FixtureScript.ExecutionContext.create(executionParameters, this);
     }
 
 
diff --git a/testing/fixtures/applib/src/main/resources/META-INF/spring.factories b/testing/fixtures/applib/src/main/resources/META-INF/spring.factories
index b67108e..76874b2 100644
--- a/testing/fixtures/applib/src/main/resources/META-INF/spring.factories
+++ b/testing/fixtures/applib/src/main/resources/META-INF/spring.factories
@@ -1,2 +1,3 @@
 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-  org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecificationProviderAutoConfiguration
+  org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecificationProviderAutoConfiguration,\
+  org.apache.isis.testing.fixtures.applib.fixturescripts.ExecutionParametersServiceAutoConfiguration
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionContextTest.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionContext_Test.java
similarity index 97%
rename from testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionContextTest.java
rename to testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionContext_Test.java
index 1acda60..e9f37c0 100644
--- a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionContextTest.java
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionContext_Test.java
@@ -26,9 +26,9 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
 
-public class ExecutionContextTest {
+public class ExecutionContext_Test {
 
-    public static class GetParameter extends ExecutionContextTest {
+    public static class GetParameter extends ExecutionContext_Test {
 
         @Test
         public void happyCase() throws Exception {
@@ -103,7 +103,7 @@ public class ExecutionContextTest {
         }
 
     }
-    public static class SetParameterIfNotPresent extends ExecutionContextTest {
+    public static class SetParameterIfNotPresent extends ExecutionContext_Test {
 
         @Test
         public void whenNotPresent() throws Exception {
@@ -124,4 +124,4 @@ public class ExecutionContextTest {
     }
 
 
-}
\ No newline at end of file
+}
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters_AsKeyValueMap_Test.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersDefault_AsKeyValueMap_Test.java
similarity index 74%
rename from testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters_AsKeyValueMap_Test.java
rename to testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersDefault_AsKeyValueMap_Test.java
index 3fe688c..fd03619 100644
--- a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters_AsKeyValueMap_Test.java
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersDefault_AsKeyValueMap_Test.java
@@ -26,11 +26,11 @@ import org.junit.jupiter.api.Test;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
-public class ExecutionParameters_AsKeyValueMap_Test extends ExecutionContextTest {
+public class ExecutionParametersDefault_AsKeyValueMap_Test extends ExecutionContext_Test {
 
     @Test
     public void happyCase() throws Exception {
-        final Map<String, String> map = ExecutionParameters.asKeyValueMap("foo=bar\nbop=baz");
+        final Map<String, String> map = ExecutionParametersDefault.asKeyValueMap("foo=bar\nbop=baz");
         assertThat(map.size(), is(2));
 
         assertThat(map.get("foo"), is("bar"));
@@ -39,20 +39,20 @@ public class ExecutionParameters_AsKeyValueMap_Test extends ExecutionContextTest
 
     @Test
     public void givenNull() throws Exception {
-        final Map<String, String> map = ExecutionParameters.asKeyValueMap(null);
+        final Map<String, String> map = ExecutionParametersDefault.asKeyValueMap(null);
         assertThat(map.size(), is(0));
     }
 
     @Test
     public void givenEmpty() throws Exception {
-        final Map<String, String> map = ExecutionParameters.asKeyValueMap("");
+        final Map<String, String> map = ExecutionParametersDefault.asKeyValueMap("");
         assertThat(map.size(), is(0));
     }
 
     @Test
     public void trim() throws Exception {
 
-        final Map<String, String> map = ExecutionParameters.asKeyValueMap(" foo=bar\nbop=baz \n bip = bap ");
+        final Map<String, String> map = ExecutionParametersDefault.asKeyValueMap(" foo=bar\nbop=baz \n bip = bap ");
         assertThat(map.size(), is(3));
 
         assertThat(map.get("foo"), is("bar"));
@@ -62,13 +62,13 @@ public class ExecutionParameters_AsKeyValueMap_Test extends ExecutionContextTest
 
     @Test
     public void malformed() throws Exception {
-        final Map<String, String> map = ExecutionParameters.asKeyValueMap("abcde");
+        final Map<String, String> map = ExecutionParametersDefault.asKeyValueMap("abcde");
         assertThat(map.size(), is(0));
     }
 
     @Test
     public void partiallyMalformed() throws Exception {
-        final Map<String, String> map = ExecutionParameters.asKeyValueMap("foo=bar\nabcde\nbop=baz");
+        final Map<String, String> map = ExecutionParametersDefault.asKeyValueMap("foo=bar\nabcde\nbop=baz");
         assertThat(map.size(), is(2));
 
         assertThat(map.get("foo"), is("bar"));
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters_Test.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersDefault_Test.java
similarity index 98%
rename from testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters_Test.java
rename to testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersDefault_Test.java
index 2a9b24d..f6643e6 100644
--- a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParameters_Test.java
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersDefault_Test.java
@@ -29,13 +29,13 @@ import org.junit.jupiter.api.Test;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
-public class ExecutionParameters_Test {
+public class ExecutionParametersDefault_Test {
 
     private ExecutionParameters executionParameters;
 
     @BeforeEach
     public void setUp() throws Exception {
-        executionParameters = new ExecutionParameters("");
+        executionParameters = new ExecutionParametersDefault("");
     }
 
     @Test
@@ -269,4 +269,4 @@ public class ExecutionParameters_Test {
     }
 
 
-}
\ No newline at end of file
+}