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/08 06:34:28 UTC
[isis] branch ISIS-2717 updated: ISIS-2717: fixes issue with
autoconfig for ExecutionParametersService not being picked up
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
The following commit(s) were added to refs/heads/ISIS-2717 by this push:
new 9144954 ISIS-2717: fixes issue with autoconfig for ExecutionParametersService not being picked up
9144954 is described below
commit 91449546a6e430fbbab981e054da8532476a8c87
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jun 8 07:34:11 2021 +0100
ISIS-2717: fixes issue with autoconfig for ExecutionParametersService not being picked up
---
.../snapshots/demo2_0_0/RESTFUL_DOMAIN_TYPES.kt | 2 +-
.../applib/IsisModuleTestingFixturesApplib.java | 1 -
...xecutionParametersServiceAutoConfiguration.java | 17 +++------
.../FixtureScriptWithExecutionStrategy.java | 2 --
.../applib/fixturescripts/FixtureScripts.java | 42 ++++++++++------------
.../FixtureScriptsSpecification.java | 10 +++---
.../FixtureScriptsSpecificationProvider.java | 9 +++--
...iptsSpecificationProviderAutoConfiguration.java | 39 ++++++++++----------
.../applib/modules/ModuleWithFixturesService.java | 2 +-
.../QueryResultsCacheControlDefault.java | 2 +-
.../applib/services/FixturesLifecycleService.java | 2 +-
.../src/main/resources/META-INF/spring.factories | 4 +--
12 files changed, 59 insertions(+), 73 deletions(-)
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/RESTFUL_DOMAIN_TYPES.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/RESTFUL_DOMAIN_TYPES.kt
index e606e91..25781d8 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/RESTFUL_DOMAIN_TYPES.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/RESTFUL_DOMAIN_TYPES.kt
@@ -677,7 +677,7 @@ object RESTFUL_DOMAIN_TYPES : Response() {
},
{
"rel": "urn:org.restfulobjects:rels/domain-type",
- "href": "http://localhost:8080/restful/domain-types/org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecification",
+ "href": "http://localhost:8080/restful/domain-types/org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScriptsSpecification",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/domain-type\""
},
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/IsisModuleTestingFixturesApplib.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/IsisModuleTestingFixturesApplib.java
index 7fec8a1..6d0d52b 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/IsisModuleTestingFixturesApplib.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/IsisModuleTestingFixturesApplib.java
@@ -35,7 +35,6 @@ import org.apache.isis.testing.fixtures.applib.services.FixturesLifecycleService
// @Service's
FixturesLifecycleService.class,
- ExecutionParametersService.class,
ModuleWithFixturesService.class,
QueryResultsCacheControlDefault.class,
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.java
index 657b242..3a6952e 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/ExecutionParametersServiceAutoConfiguration.java
@@ -18,31 +18,25 @@
*/
package org.apache.isis.testing.fixtures.applib.fixturescripts;
-import javax.inject.Named;
-
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.apache.isis.core.config.IsisConfiguration;
/**
* Provides a fallback implementation of {@link ExecutionParametersService} if
* none has been provided explicitly by the application itself.
*
- * @since 2.0 {@index}
*/
@AutoConfigureOrder(OrderPrecedence.LATE)
@Configuration
public class ExecutionParametersServiceAutoConfiguration {
-
/**
* Returns an implementation of {@link ExecutionParametersService} that
* simply instantiates {@link ExecutionParameters} with the provided
@@ -51,13 +45,10 @@ public class ExecutionParametersServiceAutoConfiguration {
*
* @return
*/
- @Bean
- @Named("isis.testing.fixtures.ExecutionParametersServiceDefault")
- @Order(OrderPrecedence.LATE)
- @Primary
- @Qualifier("Default")
+ @Bean("isis.testing.fixtures.ExecutionParametersServiceDefault")
@ConditionalOnMissingBean(ExecutionParametersService.class)
- public ExecutionParametersService executionParametersService() {
+ @Qualifier("Default")
+ ExecutionParametersService executionParametersService() {
return ExecutionParametersDefault::new;
}
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptWithExecutionStrategy.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptWithExecutionStrategy.java
index cbfc3cb..cec3faf 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptWithExecutionStrategy.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptWithExecutionStrategy.java
@@ -19,8 +19,6 @@
package org.apache.isis.testing.fixtures.applib.fixturescripts;
import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
-import org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecification;
/**
* Interface for {@link org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript}s to optionally implement,
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 40ce680..a5465c9 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
@@ -59,8 +59,6 @@ import org.apache.isis.testing.fixtures.applib.personas.BuilderScriptAbstract;
import org.apache.isis.testing.fixtures.applib.personas.PersonaWithBuilderScript;
import org.apache.isis.testing.fixtures.applib.events.FixturesInstalledEvent;
import org.apache.isis.testing.fixtures.applib.events.FixturesInstallingEvent;
-import org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecification;
-import org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecificationProvider;
import lombok.Getter;
import lombok.Setter;
@@ -260,36 +258,32 @@ public class FixtureScripts {
private final SortedMap<String,FixtureScript> fixtureScriptByFriendlyName;
+ @Inject
public FixtureScripts(
- @Nullable final FixtureScriptsSpecificationProvider fixtureScriptsSpecificationProvider,
+ final FixtureScriptsSpecificationProvider fixtureScriptsSpecificationProvider,
final ServiceRegistry serviceRegistry) {
- if(fixtureScriptsSpecificationProvider != null) {
- this.specification = fixtureScriptsSpecificationProvider.getSpecification();
- this.nonPersistedObjectsStrategy = specification.getNonPersistedObjectsStrategy();
- this.multipleExecutionStrategy = specification.getMultipleExecutionStrategy();
-
- val packagePrefix = specification.getPackagePrefix();
- this.fixtureScriptByFriendlyName =
- serviceRegistry.select(FixtureScript.class).stream()
- .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("Two FixtureScript's have the same friendly name '%s", v1));},
- TreeMap::new));
-
- } else {
- this.specification = null;
- this.nonPersistedObjectsStrategy = null;
- this.multipleExecutionStrategy = null;
- fixtureScriptByFriendlyName = _Maps.newTreeMap();
- }
+ this.specification = fixtureScriptsSpecificationProvider.getSpecification();
+ this.nonPersistedObjectsStrategy = specification.getNonPersistedObjectsStrategy();
+ this.multipleExecutionStrategy = specification.getMultipleExecutionStrategy();
+
+ val packagePrefix = specification.getPackagePrefix();
+ this.fixtureScriptByFriendlyName =
+ packagePrefix != null
+ ? serviceRegistry.select(FixtureScript.class).stream()
+ .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("Two FixtureScript's have the same friendly name '%s", v1));
+ },
+ TreeMap::new))
+ : _Maps.newTreeMap();
}
-
// -- runFixtureScript (using choices as the drop-down policy)
/**
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturespec/FixtureScriptsSpecification.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptsSpecification.java
similarity index 93%
rename from testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturespec/FixtureScriptsSpecification.java
rename to testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptsSpecification.java
index 9688bfe..9f90d42 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturespec/FixtureScriptsSpecification.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptsSpecification.java
@@ -16,13 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.testing.fixtures.applib.fixturespec;
+package org.apache.isis.testing.fixtures.applib.fixturescripts;
+
+import javax.annotation.Nullable;
import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScriptWithExecutionStrategy;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureResultList;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
/**
* Specifies the behaviour of the
@@ -102,7 +100,7 @@ public class FixtureScriptsSpecification {
public Builder(final Class<?> contextClass) {
this(contextClass.getPackage().getName());
}
- public Builder(final String packagePrefix) {
+ public Builder(@Nullable final String packagePrefix) {
this.packagePrefix = packagePrefix;
}
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturespec/FixtureScriptsSpecificationProvider.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptsSpecificationProvider.java
similarity index 77%
rename from testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturespec/FixtureScriptsSpecificationProvider.java
rename to testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptsSpecificationProvider.java
index b919b59..b107c4a 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturespec/FixtureScriptsSpecificationProvider.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptsSpecificationProvider.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.testing.fixtures.applib.fixturespec;
+package org.apache.isis.testing.fixtures.applib.fixturescripts;
import org.apache.isis.applib.annotation.Programmatic;
@@ -24,10 +24,13 @@ import org.apache.isis.applib.annotation.Programmatic;
* SPI to provide an implementation of
* {@link org.apache.isis.core.config.IsisConfiguration.Testing.Fixtures.FixtureScriptsSpecification}.
*
- * @deprecated - use <code>isis.testing.fixture.fixture-scripts-specification</code> configuration properties instead.
+ * <p>
+ * Generally it is easy to just use the <code>isis.testing.fixture.fixture-scripts-specification</code>
+ * configuration properties rather than providing an implementation of this bean; the framework will
+ * then auto-configure an appropriate bean instance.
+ * </p>
*/
@FunctionalInterface
-@Deprecated
public interface FixtureScriptsSpecificationProvider {
@Programmatic
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturespec/FixtureScriptsSpecificationProviderAutoConfiguration.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptsSpecificationProviderAutoConfiguration.java
similarity index 69%
rename from testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturespec/FixtureScriptsSpecificationProviderAutoConfiguration.java
rename to testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptsSpecificationProviderAutoConfiguration.java
index cbd48e2..bcb6d20 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturespec/FixtureScriptsSpecificationProviderAutoConfiguration.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScriptsSpecificationProviderAutoConfiguration.java
@@ -16,55 +16,58 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.testing.fixtures.applib.fixturespec;
+package org.apache.isis.testing.fixtures.applib.fixturescripts;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.lang.Nullable;
import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.security.authentication.Authenticator;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
import lombok.val;
+/**
+ * Provides a fallback implementation of {@link FixtureScriptsSpecificationProvider} if none has been provided explicitly by the application itself.
+ *
+ * @since 2.0 {@index}
+ */
@AutoConfigureOrder(OrderPrecedence.LATE)
@Configuration
public class FixtureScriptsSpecificationProviderAutoConfiguration {
+ /**
+ * Returns an implementation of {@link FixtureScriptsSpecificationProvider} that
+ * uses configuration properties under <code>isis.testing.fixtures.fixture-scripts-specification</code>.
+ *
+ * @return
+ */
@Bean("isis.testing.fixtures.FixtureScriptsSpecificationProviderDefault")
@ConditionalOnMissingBean(FixtureScriptsSpecificationProvider.class)
@Qualifier("Default")
- @Nullable FixtureScriptsSpecificationProvider fixtureScriptsSpecificationProvider(final IsisConfiguration isisConfiguration) {
+ FixtureScriptsSpecificationProvider fixtureScriptsSpecificationProvider(final IsisConfiguration isisConfiguration) {
+
val fixturesConfig = isisConfiguration.getTesting().getFixtures().getFixtureScriptsSpecification();
- val builder = builder(fixturesConfig);
- if(builder == null) {
- return null;
- }
+ val builder = builderFrom(fixturesConfig);
+
builder.with(FixtureScripts.NonPersistedObjectsStrategy.valueOf(fixturesConfig.getNonPersistedObjectsStrategy().name()));
builder.with(FixtureScripts.MultipleExecutionStrategy.valueOf(fixturesConfig.getMultipleExecutionStrategy().name()));
builder.withRecreate((Class) fixturesConfig.getRecreate());
builder.withRunScriptDefault((Class) fixturesConfig.getRunScriptDefault());
- return () -> builder.build();
+ return builder::build;
}
- private FixtureScriptsSpecification.Builder builder(IsisConfiguration.Testing.Fixtures.FixtureScriptsSpecification fixturesConfig) {
+ private static FixtureScriptsSpecification.Builder builderFrom(IsisConfiguration.Testing.Fixtures.FixtureScriptsSpecification fixturesConfig) {
val contextClass = fixturesConfig.getContextClass();
if(contextClass != null) {
return FixtureScriptsSpecification.builder(contextClass);
}
- val packagePrefix = fixturesConfig.getPackagePrefix();
- if(packagePrefix != null) {
- return FixtureScriptsSpecification.builder(packagePrefix);
- }
- return null;
+ val packagePrefix = fixturesConfig.getPackagePrefix(); // could be null; this is legitimate
+ return FixtureScriptsSpecification.builder(packagePrefix);
}
+
}
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/modules/ModuleWithFixturesService.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/modules/ModuleWithFixturesService.java
index 7a2485a..f430b24 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/modules/ModuleWithFixturesService.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/modules/ModuleWithFixturesService.java
@@ -54,7 +54,7 @@ import lombok.extern.log4j.Log4j2;
* @since 2.x {@index}
*/
@Service
-@Named("isis.test.ModuleWithFixturesService")
+@Named("isis.testing.fixtures.ModuleWithFixturesService")
@Order(OrderPrecedence.MIDPOINT)
@Primary
@Qualifier("Default")
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/queryresultscache/QueryResultsCacheControlDefault.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/queryresultscache/QueryResultsCacheControlDefault.java
index 1e20f7d..57cac8d 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/queryresultscache/QueryResultsCacheControlDefault.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/queryresultscache/QueryResultsCacheControlDefault.java
@@ -37,7 +37,7 @@ import org.apache.isis.testing.fixtures.applib.events.FixturesInstallingEvent;
* In separate class because {@link QueryResultsCache} itself is request-scoped
*/
@Service
-@Named("isis.test.FixtureQueryResultsCacheControlDefault")
+@Named("isis.testing.fixtures.FixtureQueryResultsCacheControlDefault")
@Order(OrderPrecedence.MIDPOINT)
@Primary
@Qualifier("Default")
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/FixturesLifecycleService.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/FixturesLifecycleService.java
index f7397ba..ccd947f 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/FixturesLifecycleService.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/FixturesLifecycleService.java
@@ -46,7 +46,7 @@ import lombok.extern.log4j.Log4j2;
* @since 2.0 {@index}
*/
@Service
-@Named("isis.test.FixturesLifecycleService")
+@Named("isis.testing.fixtures.FixturesLifecycleService")
@Order(OrderPrecedence.MIDPOINT)
@Primary
@Qualifier("Default")
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 76874b2..57b6313 100644
--- a/testing/fixtures/applib/src/main/resources/META-INF/spring.factories
+++ b/testing/fixtures/applib/src/main/resources/META-INF/spring.factories
@@ -1,3 +1,3 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
- org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecificationProviderAutoConfiguration,\
- org.apache.isis.testing.fixtures.applib.fixturescripts.ExecutionParametersServiceAutoConfiguration
+ org.apache.isis.testing.fixtures.applib.fixturescripts.ExecutionParametersServiceAutoConfiguration,\
+ org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScriptsSpecificationProviderAutoConfiguration