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) {