You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2019/09/29 13:56:14 UTC
[isis] 01/03: ISIS-2086: refactors
'isis.reflector.introspector.parallelize' to type-safe config
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2086
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 14a453648d156075a5ffb844d8f460b6a6ba6c20
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Sep 29 14:51:10 2019 +0100
ISIS-2086: refactors 'isis.reflector.introspector.parallelize' to type-safe config
---
.../src/main/java/org/apache/isis/config/IsisConfiguration.java | 6 ++++++
.../org/apache/isis/metamodel/specloader/SpecificationLoader.java | 3 ---
.../isis/metamodel/specloader/SpecificationLoaderDefault.java | 8 ++++++--
3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index 6bf53db..b047099 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -230,6 +230,12 @@ public class IsisConfiguration {
}
private boolean ignoreDeprecated = false;
}
+
+ private final Introspector introspector = new Introspector();
+ @Data
+ public static class Introspector {
+ private boolean parallelize = true;
+ }
private final Validator validator = new Validator();
@Data
public static class Validator {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoader.java
index abff395..1c88748 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoader.java
@@ -38,9 +38,6 @@ import org.apache.isis.metamodel.specloader.validator.ValidationFailures;
*/
public interface SpecificationLoader {
- static final ConfigPropertyBoolean CONFIG_PROPERTY_PARALLELIZE =
- new ConfigPropertyBoolean("isis.reflector.introspector.parallelize", true);
-
static final ConfigPropertyEnum<IntrospectionMode> CONFIG_PROPERTY_MODE =
new ConfigPropertyEnum<>("isis.reflector.introspector.mode", IntrospectionMode.LAZY_UNLESS_PRODUCTION);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
index afb2bb4..0eb54e5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
@@ -26,6 +26,7 @@ import javax.annotation.Nullable;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
+import org.apache.isis.config.IsisConfiguration;
import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.collections._Lists;
@@ -88,6 +89,9 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
private final SpecificationCacheDefault cache = new SpecificationCacheDefault();
private PostProcessor postProcessor;
+ @Inject
+ private IsisConfiguration configuration;
+
@PostConstruct
public void preInit() {
this.programmingModel = programmingModelService.get();
@@ -418,8 +422,8 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
private void introspect(final Collection<ObjectSpecification> specs, final IntrospectionState upTo) {
- val isConcurrentFromConfig = (boolean) CONFIG_PROPERTY_PARALLELIZE.from(getConfiguration());
-
+ val isConcurrentFromConfig = configuration.getReflector().getIntrospector().isParallelize();
+
val runSequential = !isConcurrentFromConfig || true; //FIXME concurrent specloading disabled, it deadlocks
if(runSequential) {