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