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:49:00 UTC

[isis] 03/03: ISIS-2086: refactors 'isis.services.applicationFeatures.init' 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 4c5137b4298ead9af3ef441b65c2e67ee16e47b6
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Sep 29 14:48:35 2019 +0100

    ISIS-2086: refactors 'isis.services.applicationFeatures.init' to type-safe config
---
 .../main/java/org/apache/isis/config/IsisConfiguration.java |  6 ++++++
 .../appfeat/ApplicationFeaturesInitConfiguration.java       | 10 ++++++++++
 .../appfeat/ApplicationFeatureRepositoryDefault.java        | 13 ++++++-------
 3 files changed, 22 insertions(+), 7 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 2bb9293..6bf53db 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
@@ -39,6 +39,7 @@ import org.apache.isis.metamodel.facets.object.domainobject.editing.EditingObjec
 import org.apache.isis.metamodel.facets.object.domainobject.publishing.PublishObjectsConfiguration;
 import org.apache.isis.metamodel.facets.properties.property.command.CommandPropertiesConfiguration;
 import org.apache.isis.metamodel.facets.properties.property.publishing.PublishPropertiesConfiguration;
+import org.apache.isis.metamodel.services.appfeat.ApplicationFeaturesInitConfiguration;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.ConfigurationPropertiesBinding;
 import org.springframework.core.convert.converter.Converter;
@@ -255,6 +256,11 @@ public class IsisConfiguration {
     private final Services services = new Services();
     @Data
     public static class Services {
+        private final ApplicationFeatures applicationFeatures = new ApplicationFeatures();
+        @Data
+        public static class ApplicationFeatures {
+            ApplicationFeaturesInitConfiguration init = ApplicationFeaturesInitConfiguration.NOT_SPECIFIED;
+        }
         private final Command command = new Command();
         @Data
         public static class Command {
diff --git a/core/config/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeaturesInitConfiguration.java b/core/config/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeaturesInitConfiguration.java
new file mode 100644
index 0000000..be4f14d
--- /dev/null
+++ b/core/config/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeaturesInitConfiguration.java
@@ -0,0 +1,10 @@
+package org.apache.isis.metamodel.services.appfeat;
+
+public enum ApplicationFeaturesInitConfiguration {
+    EAGER,
+    /**
+     * Alias for {@link #EAGER}
+     */
+    EAGERLY,
+    NOT_SPECIFIED
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index aebe97e..7a0578d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -28,8 +28,8 @@ import java.util.stream.Collectors;
 
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
-import javax.inject.Singleton;
 
+import org.apache.isis.config.IsisConfiguration;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -59,7 +59,6 @@ import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.metamodel.specloader.specimpl.ContributeeMember;
 
 import static org.apache.isis.commons.internal.base._NullSafe.stream;
-import static org.apache.isis.config.internal._Config.getConfiguration;
 
 import lombok.val;
 
@@ -76,8 +75,6 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
 
     // -- init
 
-    private static final String KEY = "isis.services.applicationFeatures.init";
-
     @PostConstruct
     public void init() {
         if(isEagerInitialize()) {
@@ -85,10 +82,12 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
         }
     }
 
+    @Inject
+    IsisConfiguration configuration;
+
     private boolean isEagerInitialize() {
-        final String configuredValue = getConfiguration().getString(KEY);
-        return "eager".equalsIgnoreCase(configuredValue) ||
-                "eagerly".equalsIgnoreCase(configuredValue);
+        ApplicationFeaturesInitConfiguration setting = configuration.getServices().getApplicationFeatures().getInit();
+        return setting == ApplicationFeaturesInitConfiguration.EAGER || setting == ApplicationFeaturesInitConfiguration.EAGERLY;
     }
 
     // -- initializeIfRequired