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:19:03 UTC

[isis] 01/02: ISIS-2086: refactors "isis.objects.editing" 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 4b719957526926404ad9dc709d4f522ea1c8f478
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Sep 29 14:12:40 2019 +0100

    ISIS-2086: refactors "isis.objects.editing" to type-safe config
---
 .../java/org/apache/isis/config/IsisConfiguration.java   |  7 +++++++
 .../editing/EditingObjectsConfiguration.java             | 14 +-------------
 .../domainobject/DomainObjectAnnotationFacetFactory.java |  2 +-
 .../editing/ImmutableFacetForDomainObjectAnnotation.java |  6 +++---
 .../DomainObjectAnnotationFacetFactoryTest.java          | 16 ++++++++--------
 5 files changed, 20 insertions(+), 25 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 f6f5061..1728e88 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
@@ -34,6 +34,7 @@ import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.metamodel.facets.actions.action.command.CommandActionsConfiguration;
 import org.apache.isis.metamodel.facets.actions.action.publishing.PublishActionsConfiguration;
+import org.apache.isis.metamodel.facets.object.domainobject.editing.EditingObjectsConfiguration;
 import org.apache.isis.metamodel.facets.object.domainobject.publishing.PublishObjectsConfiguration;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.ConfigurationPropertiesBinding;
@@ -55,6 +56,12 @@ import org.springframework.stereotype.Component;
 @Data
 public class IsisConfiguration {
 
+    private final Objects objects = new Objects();
+    @Data
+    public static class Objects {
+        private EditingObjectsConfiguration editing = EditingObjectsConfiguration.TRUE;
+    }
+
     private final Reflector reflector = new Reflector();
     @Data
     public static class Reflector {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java b/core/config/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java
similarity index 68%
rename from core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java
rename to core/config/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java
index 296f779..2b0708e3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java
@@ -18,23 +18,11 @@
  */
 package org.apache.isis.metamodel.facets.object.domainobject.editing;
 
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.config.IsisConfigurationLegacy;
 import org.apache.isis.metamodel.facets.object.domainobject.Util;
 
 public enum EditingObjectsConfiguration {
     TRUE,
     FALSE;
-
-    public static final String EDIT_OBJECTS_KEY = "isis.objects.editing";
-
-    public static EditingObjectsConfiguration parse(final IsisConfigurationLegacy configuration) {
-        final String configuredValue = configuration.getString(EDIT_OBJECTS_KEY);
-        return EditingObjectsConfiguration.parse(configuredValue);
-    }
-
-    private static EditingObjectsConfiguration parse(final String value) {
-        // must be explicitly disabled
-        return Util.parseNo(value)? FALSE : TRUE;
-    }
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 53c6438..9a1b4ab 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -247,7 +247,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
 
         // check from @DomainObject(editing=...)
         ImmutableFacet facet = ImmutableFacetForDomainObjectAnnotation
-                .create(domainObjects, getConfigurationLegacy(), facetHolder);
+                .create(domainObjects, getConfiguration(), facetHolder);
 
         // then add
         FacetUtil.addFacet(facet);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
index 79f80ae..2934a68 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
@@ -25,7 +25,7 @@ import java.util.Map;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.config.IsisConfigurationLegacy;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
@@ -39,10 +39,10 @@ public class ImmutableFacetForDomainObjectAnnotation extends ImmutableFacetAbstr
 
     public static ImmutableFacet create(
             final List<DomainObject> domainObjects,
-            final IsisConfigurationLegacy configuration,
+            final IsisConfiguration configuration,
             final FacetHolder holder) {
 
-        final EditingObjectsConfiguration setting = EditingObjectsConfiguration.parse(configuration);
+        final EditingObjectsConfiguration setting = configuration.getObjects().getEditing();
 
         return domainObjects.stream()
                 .filter(domainObject -> domainObject.editing() != Editing.NOT_SPECIFIED)
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 4e5d938..2fc3238 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -583,7 +583,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
             @Test
             public void configured_value_set_to_true() {
-                allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "true");
+                allowingConfigurationToReturn("isis.objects.editing", "true");
 
                 facetFactory.process(new ProcessClassContext(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder));
 
@@ -595,7 +595,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
             @Test
             public void configured_value_set_to_false() {
-                allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "false");
+                allowingConfigurationToReturn("isis.objects.editing", "false");
 
                 facetFactory.process(new ProcessClassContext(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder));
 
@@ -608,7 +608,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
             @Test
             public void configured_value_set_to_not_recognized() {
-                allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "foobar");
+                allowingConfigurationToReturn("isis.objects.editing", "foobar");
 
                 facetFactory.process(new ProcessClassContext(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder));
 
@@ -624,7 +624,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
             @Test
             public void configured_value_set_to_true() {
-                allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "true");
+                allowingConfigurationToReturn("isis.objects.editing", "true");
 
                 facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectAndEditingSetToAsConfigured.class, mockMethodRemover, facetHolder));
 
@@ -636,7 +636,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
             @Test
             public void configured_value_set_to_false() {
-                allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "false");
+                allowingConfigurationToReturn("isis.objects.editing", "false");
 
                 facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectAndEditingSetToAsConfigured.class, mockMethodRemover, facetHolder));
 
@@ -649,7 +649,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
             @Test
             public void configured_value_set_to_not_recognized() {
-                allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "foobar");
+                allowingConfigurationToReturn("isis.objects.editing", "foobar");
 
                 facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectAndEditingSetToAsConfigured.class, mockMethodRemover, facetHolder));
 
@@ -664,7 +664,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
             @Test
             public void irrespective_of_configured_value() {
-                allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "false");
+                allowingConfigurationToReturn("isis.objects.editing", "false");
 
                 facetFactory.process(new ProcessClassContext(
                         CustomerWithDomainObjectAndEditingSetToEnabled.class, mockMethodRemover, facetHolder));
@@ -681,7 +681,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
             @Test
             public void irrespective_of_configured_value() {
-                allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "true");
+                allowingConfigurationToReturn("isis.objects.editing", "true");
 
                 facetFactory.process(new ProcessClassContext(
                         CustomerWithDomainObjectAndEditingSetToDisabled.class, mockMethodRemover, facetHolder));