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/28 14:43:14 UTC

[isis] branch ISIS-2086 updated (1c3007d -> 2defb1a)

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a change to branch ISIS-2086
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 1c3007d  ISIS-2086: refactors isis.viewer.wicket.maxTitleLengthInTables (and 2 related) to type-safe config
     add c4d0233  ISIS-2158: class discovery: removes the need for a custom scan-filter
     add 22023ac  merging ISIS-2086 -> v2
     new 9f27732  ISIS-2086: adds unit tests for isis.viewer.wicket.maxTitleLengthIn{Parented/Standalone}Tables
     new 545df3a  ISIS-2086: refactors about 6 isis.viewer.wicket config props to type-safe
     new ad5f094  ISIS-2086: refactors a bunch of isis.reflector.facet.XxxAnnotation.YyyEvent.postForDefault properties to type-safe config
     new b2c29d1  ISIS-2086: refactors 'isis.reflector.validator.checkModuleExtent' as type-safe config
     new 2defb1a  ISIS-2086: refactors 'isis.reflector.validator.noParamsOnly' to type-safe config

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../isis/applib/annotation/DomainObject.java       |   7 +
 .../isis/applib/annotation/DomainService.java      |   8 +
 .../org/apache/isis/applib/annotation/Mixin.java   |   7 +
 .../apache/isis/applib/annotation/ViewModel.java   |   7 +
 .../services/audit/AuditerServiceLogging.java      |   5 +-
 .../isis/applib/services/clock/ClockService.java   |   5 +-
 .../applib/services/i18n/TranslationService.java   |   6 +-
 .../applib/services/jaxb/JaxbServiceDefault.java   |   5 +-
 .../services/publish/PublisherServiceLogging.java  |   4 +-
 .../org/apache/isis/config/IsisConfiguration.java  | 209 +++++++++++++++++++++
 .../IsisBeanFactoryPostProcessorForSpring.java     | 106 +++++++++++
 .../beans/IsisBeanScanInterceptorForSpring.java    |  32 ++--
 .../resources/presets/DebugDiscovery.properties    |   1 +
 ...ion_getMaxTitleLengthInParentedTables_Test.java |  63 +++++++
 ...n_getMaxTitleLengthInStandaloneTables_Test.java |  61 ++++++
 .../MethodPrefixBasedFacetFactoryAbstract.java     |   5 -
 .../action/ActionAnnotationFacetFactory.java       |   2 +-
 .../CollectionAnnotationFacetFactory.java          |   3 +-
 .../DisableForContextFacetViaMethodFactory.java    |   4 +-
 .../HideForContextFacetViaMethodFactory.java       |   4 +-
 .../DomainObjectAnnotationFacetFactory.java        |  21 +--
 ...ObjectLayoutAnnotationUsingCssClassUiEvent.java |   7 +-
 ...wModelLayoutAnnotationUsingCssClassUiEvent.java |   7 +-
 .../DomainObjectLayoutFacetFactory.java            |  16 +-
 ...mainObjectLayoutAnnotationUsingIconUiEvent.java |   7 +-
 ...aViewModelLayoutAnnotationUsingIconUiEvent.java |   7 +-
 ...inObjectLayoutAnnotationUsingLayoutUiEvent.java |   7 +-
 ...iewModelLayoutAnnotationUsingLayoutUiEvent.java |   8 +-
 ...ainObjectLayoutAnnotationUsingTitleUiEvent.java |   7 +-
 ...ViewModelLayoutAnnotationUsingTitleUiEvent.java |   8 +-
 .../property/PropertyAnnotationFacetFactory.java   |   4 +-
 .../metamodel/services/ServiceInjectorDefault.java |   3 +-
 .../appfeat/ApplicationFeatureFactory.java         |   5 +-
 .../ApplicationFeatureRepositoryDefault.java       |   4 +-
 .../services/events/MetamodelEventService.java     |   4 +-
 .../exceprecog/ExceptionRecognizerDocDefault.java  |   4 +-
 .../services/grid/GridLoaderServiceDefault.java    |   4 +-
 .../services/grid/GridServiceDefault.java          |   4 +-
 .../grid/bootstrap3/GridSystemServiceBS3.java      |   4 +-
 .../services/layout/LayoutServiceDefault.java      |   4 +-
 .../metamodel/MetaModelServiceDefault.java         |   4 +-
 .../services/registry/ServiceRegistryDefault.java  |   3 +-
 .../services/repository/RepositoryServiceJdo.java  |   5 +-
 .../services/swagger/SwaggerServiceDefault.java    |   4 +-
 .../services/title/TitleServiceDefault.java        |   4 +-
 .../services/user/UserServiceDefault.java          |   5 +-
 .../specloader/InjectorMethodEvaluatorDefault.java |   4 +-
 .../MetaModelValidatorServiceDefault.java          |   5 +-
 .../specloader/ProgrammingModelServiceDefault.java |   5 +-
 .../specloader/SpecificationLoaderDefault.java     |   5 +-
 .../MetaModelValidatorToCheckModuleExtent.java     |   7 +-
 .../org/apache/isis/metamodel/util/EventUtil.java  |   7 +-
 .../IsisPlatformTransactionManagerForJdo.java      |   4 +-
 .../isis/jdo/jdosupport/IsisJdoSupportDN5.java     |   5 +-
 .../org/apache/isis/runtime/spring/IsisBoot.java   |   3 +
 .../apache/isis/wrapper/WrapperFactoryDefault.java |   5 +-
 .../AuthenticationSessionProviderDefault.java      |   5 +-
 .../background/CommandExecutorServiceDefault.java  |   5 +-
 .../bookmarks/BookmarkServiceInternalDefault.java  |   5 +-
 .../services/command/CommandServiceDefault.java    |   4 +-
 .../services/eventbus/EventBusServiceSpring.java   |   4 +-
 .../factory/FactoryServiceInternalDefault.java     |   5 +-
 .../homepage/HomePageResolverServiceDefault.java   |   5 +-
 .../services/i18n/po/TranslationServicePo.java     |   7 +-
 .../menubars/MenuBarsLoaderServiceDefault.java     |   4 +-
 .../menubars/bootstrap3/MenuBarsServiceBS3.java    |   5 +-
 .../services/message/MessageServiceDefault.java    |   4 +-
 .../persist/ObjectAdapterServiceDefault.java       |   4 +-
 .../services/routing/RoutingServiceDefault.java    |   5 +-
 .../sessmgmt/SessionManagementServiceDefault.java  |   5 +-
 .../services/sse/EventStreamServiceDefault.java    |   5 +-
 .../services/xactn/TransactionServiceSpring.java   |   4 +-
 .../xmlsnapshot/XmlSnapshotServiceDefault.java     |   7 +-
 .../modules/h2console/WebModuleH2Console.java      |   4 +-
 .../logonlog/WebModuleLogOnExceptionLogger.java    |   4 +-
 .../resources/WebModuleStaticResources.java        |   4 +-
 .../modules/sse/WebModuleServerSentEvents.java     |   4 +-
 .../context/session/RuntimeEventService.java       |   5 +-
 .../JdoPersistenceLifecycleService.java            |   3 +-
 .../events/PersistenceEventService.java            |   5 +-
 .../system/session/IsisSessionFactoryDefault.java  |   7 +-
 .../transaction/AuditingServiceInternal.java       |   5 +-
 .../PersistenceSessionServiceInternalDefault.java  |   5 +-
 .../manager/AuthorizationManagerStandard.java      |   4 +-
 .../apache/isis/security/shiro/WebModuleShiro.java |   3 +-
 .../RepresentationServiceContentNegotiator.java    |   5 +-
 .../restfulobjects/WebModuleRestfulObjects.java    |   4 +-
 .../isis/viewer/wicket/viewer/WebModuleWicket.java |   4 +-
 .../imagecache/ImageResourceCacheClassPath.java    |   5 +-
 .../ComponentFactoryRegistrarDefault.java          |   4 +-
 .../ComponentFactoryRegistryDefault.java           |   4 +-
 .../registries/pages/PageClassListDefault.java     |   5 +-
 .../registries/pages/PageClassRegistryDefault.java |   4 +-
 .../pages/PageNavigationServiceDefault.java        |   4 +-
 .../viewer/services/DeepLinkServiceWicket.java     |   4 +-
 .../viewer/services/LocaleProviderWicket.java      |   5 +-
 .../services/TranslationsResolverWicket.java       |   5 +-
 .../settings/WicketViewerSettingsDefault.java      |  22 +--
 .../wicket/model/isis/WicketViewerSettings.java    |  65 ++-----
 .../java/domainapp/dom/jee/JeeDemoService.java     |   4 +-
 .../domainapp/dom/types/blob/DemoBlobStore.java    |   5 +-
 .../domainapp/utils/LibraryPreloadingService.java  |   5 +-
 .../conf/Configuration_usingStereotypes.java       |  15 ++
 .../testdomain/model/stereotypes/MyObject.java     |   7 +-
 .../model/stereotypes/MyObject_mixin.java          |  26 +--
 .../testdomain/model/stereotypes/MyService.java    |   7 +-
 .../isis/testdomain/model/stereotypes/MyView.java  |   7 +-
 .../testdomain/auditing/AuditerServiceTest.java    |   4 +-
 .../bootstrapping/AutoConfigurationTest.java       | 151 +++++++++++++++
 .../JdoBootstrappingTest_usingFixtures.java        |   2 +
 .../SpringServiceProvisioningTest.java             |   7 +-
 .../eventhandling/GenericEventPublishingTest.java  |   6 +-
 .../eventhandling/SpringEventPublishingTest.java   |   6 +-
 .../publishing/PublisherServiceTest.java           |   3 +-
 ...ransactionRollbackTest_usingTransactional.java} |   2 +-
 .../extensions/fixtures/FixturesEventService.java  |   4 +-
 .../fixtures/FixturesLifecyleService.java          |   5 +-
 .../fixturescripts/ExecutionParametersService.java |   4 +-
 .../QueryResultsCacheControlInternal.java          |   5 +-
 .../secman/jdo/seed/SeedSecurityModuleService.java |   4 +-
 120 files changed, 981 insertions(+), 328 deletions(-)
 create mode 100644 core/config/src/main/java/org/apache/isis/config/beans/IsisBeanFactoryPostProcessorForSpring.java
 create mode 100644 core/config/src/test/java/org/apache/isis/config/IsisConfiguration_getMaxTitleLengthInParentedTables_Test.java
 create mode 100644 core/config/src/test/java/org/apache/isis/config/IsisConfiguration_getMaxTitleLengthInStandaloneTables_Test.java
 create mode 100644 examples/smoketests/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingStereotypes.java
 copy core/applib/src/main/java/org/apache/isis/applib/layout/component/Owner.java => examples/smoketests/src/main/java/org/apache/isis/testdomain/model/stereotypes/MyObject.java (78%)
 copy extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/BuilderScriptWithoutResult.java => examples/smoketests/src/main/java/org/apache/isis/testdomain/model/stereotypes/MyObject_mixin.java (70%)
 copy core/applib/src/main/java/org/apache/isis/applib/mixins/timestamp/HoldsUpdatedBy.java => examples/smoketests/src/main/java/org/apache/isis/testdomain/model/stereotypes/MyService.java (84%)
 copy core/applib/src/main/java/org/apache/isis/applib/mixins/timestamp/HoldsUpdatedBy.java => examples/smoketests/src/main/java/org/apache/isis/testdomain/model/stereotypes/MyView.java (85%)
 create mode 100644 examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/AutoConfigurationTest.java
 rename examples/smoketests/src/test/java/org/apache/isis/testdomain/transactions/{TransactionRollbackTest_withTransactional.java => TransactionRollbackTest_usingTransactional.java} (98%)


[isis] 04/05: ISIS-2086: refactors 'isis.reflector.validator.checkModuleExtent' as type-safe config

Posted by da...@apache.org.
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 b2c29d1142013d8239dbf15cff086676ca468a0b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Sep 28 15:36:36 2019 +0100

    ISIS-2086: refactors 'isis.reflector.validator.checkModuleExtent' as type-safe config
    
    (cherry picked from commit 3ed5456381700c8b973c831248cece7290a33dc8)
---
 .../src/main/java/org/apache/isis/config/IsisConfiguration.java    | 2 ++
 .../validator/MetaModelValidatorToCheckModuleExtent.java           | 7 +------
 2 files changed, 3 insertions(+), 6 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 9d7bb08..7f0048b 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
@@ -183,7 +183,9 @@ public class IsisConfiguration {
         private final Validator validator = new Validator();
         @Data
         public static class Validator {
+
             private boolean ensureUniqueObjectTypes = true;
+            private boolean checkModuleExtent = true;
         }
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorToCheckModuleExtent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorToCheckModuleExtent.java
index 766ccd8..a62e5d2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorToCheckModuleExtent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorToCheckModuleExtent.java
@@ -27,18 +27,13 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
 
 public class MetaModelValidatorToCheckModuleExtent extends MetaModelValidatorComposite {
 
-    private static final String ISIS_REFLECTOR_CHECK_MODULE_EXTENT_KEY = "isis.reflector.validator.checkModuleExtent";
-    private static final boolean ISIS_REFLECTOR_CHECK_MODULE_EXTENT_DEFAULT = true;
-
     public MetaModelValidatorToCheckModuleExtent() {
         addValidatorToCheckModuleExtent();
     }
 
     @Override
     public void validate(final ValidationFailures validationFailures) {
-        boolean check = getConfigurationLegacy()
-                .getBoolean(ISIS_REFLECTOR_CHECK_MODULE_EXTENT_KEY,
-                        ISIS_REFLECTOR_CHECK_MODULE_EXTENT_DEFAULT);
+        boolean check = getConfiguration().getReflector().getValidator().isCheckModuleExtent();
         if(!check) {
             return;
         }


[isis] 01/05: ISIS-2086: adds unit tests for isis.viewer.wicket.maxTitleLengthIn{Parented/Standalone}Tables

Posted by da...@apache.org.
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 9f2773238f8e61fa546fc2ea54ef5c616bb25cc8
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Sep 28 14:46:01 2019 +0100

    ISIS-2086: adds unit tests for isis.viewer.wicket.maxTitleLengthIn{Parented/Standalone}Tables
---
 ...ion_getMaxTitleLengthInParentedTables_Test.java | 63 ++++++++++++++++++++++
 ...n_getMaxTitleLengthInStandaloneTables_Test.java | 61 +++++++++++++++++++++
 2 files changed, 124 insertions(+)

diff --git a/core/config/src/test/java/org/apache/isis/config/IsisConfiguration_getMaxTitleLengthInParentedTables_Test.java b/core/config/src/test/java/org/apache/isis/config/IsisConfiguration_getMaxTitleLengthInParentedTables_Test.java
new file mode 100644
index 0000000..21fef34
--- /dev/null
+++ b/core/config/src/test/java/org/apache/isis/config/IsisConfiguration_getMaxTitleLengthInParentedTables_Test.java
@@ -0,0 +1,63 @@
+package org.apache.isis.config;
+
+import org.assertj.core.api.Assertions;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class IsisConfiguration_getMaxTitleLengthInParentedTables_Test {
+
+    private IsisConfiguration configuration;
+
+    @Before
+    public void setUp() throws Exception {
+        configuration = new IsisConfiguration();
+    }
+
+    @Test
+    public void when_not_set() throws Exception {
+        // when
+        int val = configuration.getViewer().getWicket().getMaxTitleLengthInParentedTables();
+
+        // then
+        Assertions.assertThat(val).isEqualTo(12);
+    }
+
+    @Test
+    public void when_not_set_explicitly_but_fallback_has_been() throws Exception {
+        // given
+        configuration.getViewer().getWicket().setMaxTitleLengthInTables(20);
+
+        // when
+        int val = configuration.getViewer().getWicket().getMaxTitleLengthInParentedTables();
+
+        // then
+        Assertions.assertThat(val).isEqualTo(20);
+    }
+
+    @Test
+    public void when_set_explicitly() throws Exception {
+        // given
+        configuration.getViewer().getWicket().setMaxTitleLengthInParentedTables(25);
+
+        // when
+        int val = configuration.getViewer().getWicket().getMaxTitleLengthInParentedTables();
+
+        // then
+        Assertions.assertThat(val).isEqualTo(25);
+    }
+
+    @Test
+    public void when_set_explicitly_ignores_fallback_has_been() throws Exception {
+        // given
+        configuration.getViewer().getWicket().setMaxTitleLengthInTables(20);
+        configuration.getViewer().getWicket().setMaxTitleLengthInParentedTables(25);
+
+        // when
+        int val = configuration.getViewer().getWicket().getMaxTitleLengthInParentedTables();
+
+        // then
+        Assertions.assertThat(val).isEqualTo(25);
+    }
+}
\ No newline at end of file
diff --git a/core/config/src/test/java/org/apache/isis/config/IsisConfiguration_getMaxTitleLengthInStandaloneTables_Test.java b/core/config/src/test/java/org/apache/isis/config/IsisConfiguration_getMaxTitleLengthInStandaloneTables_Test.java
new file mode 100644
index 0000000..9992490
--- /dev/null
+++ b/core/config/src/test/java/org/apache/isis/config/IsisConfiguration_getMaxTitleLengthInStandaloneTables_Test.java
@@ -0,0 +1,61 @@
+package org.apache.isis.config;
+
+import org.assertj.core.api.Assertions;
+import org.junit.Before;
+import org.junit.Test;
+
+public class IsisConfiguration_getMaxTitleLengthInStandaloneTables_Test {
+
+    private IsisConfiguration configuration;
+
+    @Before
+    public void setUp() throws Exception {
+        configuration = new IsisConfiguration();
+    }
+
+    @Test
+    public void when_not_set() throws Exception {
+        // when
+        int val = configuration.getViewer().getWicket().getMaxTitleLengthInStandaloneTables();
+
+        // then
+        Assertions.assertThat(val).isEqualTo(12);
+    }
+
+    @Test
+    public void when_not_set_explicitly_but_fallback_has_been() throws Exception {
+        // given
+        configuration.getViewer().getWicket().setMaxTitleLengthInTables(20);
+
+        // when
+        int val = configuration.getViewer().getWicket().getMaxTitleLengthInStandaloneTables();
+
+        // then
+        Assertions.assertThat(val).isEqualTo(20);
+    }
+
+    @Test
+    public void when_set_explicitly() throws Exception {
+        // given
+        configuration.getViewer().getWicket().setMaxTitleLengthInStandaloneTables(25);
+
+        // when
+        int val = configuration.getViewer().getWicket().getMaxTitleLengthInStandaloneTables();
+
+        // then
+        Assertions.assertThat(val).isEqualTo(25);
+    }
+
+    @Test
+    public void when_set_explicitly_ignores_fallback_has_been() throws Exception {
+        // given
+        configuration.getViewer().getWicket().setMaxTitleLengthInTables(20);
+        configuration.getViewer().getWicket().setMaxTitleLengthInStandaloneTables(25);
+
+        // when
+        int val = configuration.getViewer().getWicket().getMaxTitleLengthInStandaloneTables();
+
+        // then
+        Assertions.assertThat(val).isEqualTo(25);
+    }
+}
\ No newline at end of file


[isis] 05/05: ISIS-2086: refactors 'isis.reflector.validator.noParamsOnly' to type-safe config

Posted by da...@apache.org.
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 2defb1ae41e6f2ec9b12e61ab8354eac0fa0b52f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Sep 28 15:43:02 2019 +0100

    ISIS-2086: refactors 'isis.reflector.validator.noParamsOnly' to type-safe config
---
 .../src/main/java/org/apache/isis/config/IsisConfiguration.java      | 1 +
 .../isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java | 5 -----
 .../disabled/method/DisableForContextFacetViaMethodFactory.java      | 4 +---
 .../members/hidden/method/HideForContextFacetViaMethodFactory.java   | 4 +---
 4 files changed, 3 insertions(+), 11 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 7f0048b..1fae820 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
@@ -186,6 +186,7 @@ public class IsisConfiguration {
 
             private boolean ensureUniqueObjectTypes = true;
             private boolean checkModuleExtent = true;
+            private boolean noParamsOnly = false;
         }
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
index 237af34..a418dfc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
@@ -30,11 +30,6 @@ public abstract class MethodPrefixBasedFacetFactoryAbstract
 extends FacetFactoryAbstract
 implements MethodPrefixBasedFacetFactory {
 
-    public static final String ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_KEY =
-            "isis.reflector.validator.noParamsOnly";
-    public static final boolean ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_DEFAULT = false;
-
-
     private final List<String> prefixes;
 
     private final OrphanValidation orphanValidation; 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
index 2b1f791..c956b73 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
@@ -64,9 +64,7 @@ public class DisableForContextFacetViaMethodFactory extends MethodPrefixBasedFac
 
         Method disableMethod = null;
 
-        boolean noParamsOnly = getConfigurationLegacy().getBoolean(
-                ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_KEY,
-                ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_DEFAULT);
+        boolean noParamsOnly = getConfiguration().getReflector().getValidator().isNoParamsOnly();
         boolean searchExactMatch = !noParamsOnly;
         if(searchExactMatch) {
             // search for exact match
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
index 49c826a..2565b2d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
@@ -62,9 +62,7 @@ public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetF
         Method hideMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] {});
         if (hideMethod == null) {
 
-            boolean noParamsOnly = getConfigurationLegacy().getBoolean(
-                    ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_KEY,
-                    ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_DEFAULT);
+            boolean noParamsOnly = getConfiguration().getReflector().getValidator().isNoParamsOnly();
             boolean searchExactMatch = !noParamsOnly;
             if(searchExactMatch) {
                 hideMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, getMethod.getParameterTypes());


[isis] 03/05: ISIS-2086: refactors a bunch of isis.reflector.facet.XxxAnnotation.YyyEvent.postForDefault properties to type-safe config

Posted by da...@apache.org.
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 ad5f094cd53045a3a1c0119b9a6f1f742f1d4746
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Sep 28 15:30:55 2019 +0100

    ISIS-2086: refactors a bunch of isis.reflector.facet.XxxAnnotation.YyyEvent.postForDefault properties to type-safe config
---
 .../org/apache/isis/config/IsisConfiguration.java  | 122 +++++++++++++++++++++
 .../action/ActionAnnotationFacetFactory.java       |   2 +-
 .../CollectionAnnotationFacetFactory.java          |   3 +-
 .../DomainObjectAnnotationFacetFactory.java        |  21 ++--
 ...ObjectLayoutAnnotationUsingCssClassUiEvent.java |   7 +-
 ...wModelLayoutAnnotationUsingCssClassUiEvent.java |   7 +-
 .../DomainObjectLayoutFacetFactory.java            |  16 +--
 ...mainObjectLayoutAnnotationUsingIconUiEvent.java |   7 +-
 ...aViewModelLayoutAnnotationUsingIconUiEvent.java |   7 +-
 ...inObjectLayoutAnnotationUsingLayoutUiEvent.java |   7 +-
 ...iewModelLayoutAnnotationUsingLayoutUiEvent.java |   8 +-
 ...ainObjectLayoutAnnotationUsingTitleUiEvent.java |   7 +-
 ...ViewModelLayoutAnnotationUsingTitleUiEvent.java |   8 +-
 .../property/PropertyAnnotationFacetFactory.java   |   4 +-
 .../org/apache/isis/metamodel/util/EventUtil.java  |   7 +-
 .../bootstrapping/AutoConfigurationTest.java       |   5 +-
 16 files changed, 179 insertions(+), 59 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 bad731f..9d7bb08 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
@@ -19,11 +19,13 @@
 package org.apache.isis.config;
 
 import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.events.ui.CssClassUiEvent;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 import lombok.Data;
 
+
 /**
  * 
  * Configuration 'beans' with meta-data (IDE-support).
@@ -57,7 +59,127 @@ public class IsisConfiguration {
         @Data
         public static class Facet {
             private boolean filterVisibility = true;
+
+            private final ActionAnnotation actionAnnotation = new ActionAnnotation();
+            @Data
+            public static class ActionAnnotation {
+                private final DomainEvent domainEvent = new DomainEvent();
+                @Data
+                public static class DomainEvent {
+                    private boolean postForDefault = true;
+                }
+            }
+
+            private final CollectionAnnotation collectionAnnotation = new CollectionAnnotation();
+            @Data
+            public static class CollectionAnnotation {
+                private final DomainEvent domainEvent = new DomainEvent();
+                @Data
+                public static class DomainEvent {
+                    private boolean postForDefault = true;
+                }
+            }
+
+            private final DomainObjectAnnotation domainObjectAnnotation = new DomainObjectAnnotation();
+            @Data
+            public static class DomainObjectAnnotation {
+                private final CreatedLifecycleEvent createdLifecycleEvent = new CreatedLifecycleEvent();
+                @Data
+                public static class CreatedLifecycleEvent {
+                    private boolean postForDefault = true;
+                }
+                private final LoadedLifecycleEvent loadedLifecycleEvent = new LoadedLifecycleEvent();
+                @Data
+                public static class LoadedLifecycleEvent {
+                    private boolean postForDefault = true;
+                }
+                private final PersistingLifecycleEvent persistingLifecycleEvent = new PersistingLifecycleEvent();
+                @Data
+                public static class PersistingLifecycleEvent {
+                    private boolean postForDefault = true;
+                }
+                private final PersistedLifecycleEvent persistedLifecycleEvent = new PersistedLifecycleEvent();
+                @Data
+                public static class PersistedLifecycleEvent {
+                    private boolean postForDefault = true;
+                }
+                private final RemovingLifecycleEvent removingLifecycleEvent = new RemovingLifecycleEvent();
+                @Data
+                public static class RemovingLifecycleEvent {
+                    private boolean postForDefault = true;
+                }
+                private final UpdatedLifecycleEvent updatedLifecycleEvent = new UpdatedLifecycleEvent();
+                @Data
+                public static class UpdatedLifecycleEvent {
+                    private boolean postForDefault = true;
+                }
+                private final UpdatingLifecycleEvent updatingLifecycleEvent = new UpdatingLifecycleEvent();
+                @Data
+                public static class UpdatingLifecycleEvent {
+                    private boolean postForDefault = true;
+                }
+            }
+
+            private final DomainObjectLayoutAnnotation domainObjectLayoutAnnotation = new DomainObjectLayoutAnnotation();
+            @Data
+            public static class DomainObjectLayoutAnnotation {
+                private final CssClassUiEvent cssClassUiEvent = new CssClassUiEvent();
+                @Data
+                public static class CssClassUiEvent {
+                    private boolean postForDefault = true;
+                }
+                private final IconUiEvent iconUiEvent = new IconUiEvent();
+                @Data
+                public static class IconUiEvent {
+                    private boolean postForDefault = true;
+                }
+                private final LayoutUiEvent layoutUiEvent = new LayoutUiEvent();
+                @Data
+                public static class LayoutUiEvent {
+                    private boolean postForDefault = true;
+                }
+                private final TitleUiEvent titleUiEvent = new TitleUiEvent();
+                @Data
+                public static class TitleUiEvent {
+                    private boolean postForDefault = true;
+                }
+            }
+
+            private final PropertyAnnotation propertyAnnotation = new PropertyAnnotation();
+            @Data
+            public static class PropertyAnnotation {
+                private final DomainEvent domainEvent = new DomainEvent();
+                @Data
+                public static class DomainEvent {
+                    private boolean postForDefault = true;
+                }
+            }
+            private final ViewModelLayoutAnnotation viewModelLayoutAnnotation = new ViewModelLayoutAnnotation();
+            @Data
+            public static class ViewModelLayoutAnnotation {
+                private final CssClassUiEvent cssClassUiEvent = new CssClassUiEvent();
+                @Data
+                public static class CssClassUiEvent {
+                    private boolean postForDefault =true;
+                }
+                private final IconUiEvent iconUiEvent = new IconUiEvent();
+                @Data
+                public static class IconUiEvent {
+                    private boolean postForDefault =true;
+                }
+                private final LayoutUiEvent layoutUiEvent = new LayoutUiEvent();
+                @Data
+                public static class LayoutUiEvent {
+                    private boolean postForDefault =true;
+                }
+                private final TitleUiEvent titleUiEvent = new TitleUiEvent();
+                @Data
+                public static class TitleUiEvent {
+                    private boolean postForDefault =true;
+                }
+            }
         }
+
         private final Validator validator = new Validator();
         @Data
         public static class Validator {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 874721c..f43f72a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -120,7 +120,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
                     actionDomainEventFacet.getEventType(),
                     ActionDomainEvent.Noop.class,
                     ActionDomainEvent.Default.class,
-                    "isis.reflector.facet.actionAnnotation.domainEvent.postForDefault", getConfigurationLegacy())) {
+                    getConfiguration().getReflector().getFacet().getActionAnnotation().getDomainEvent().isPostForDefault())) {
                 FacetUtil.addFacet(actionDomainEventFacet);
             }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
index 1926859..62aa904 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
@@ -119,7 +119,8 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract {
                 collectionDomainEventFacet.getEventType(),
                 CollectionDomainEvent.Noop.class,
                 CollectionDomainEvent.Default.class,
-                "isis.reflector.facet.collectionAnnotation.domainEvent.postForDefault", getConfigurationLegacy())) {
+                getConfiguration().getReflector().getFacet().getCollectionAnnotation().getDomainEvent().isPostForDefault()
+                )) {
             FacetUtil.addFacet(collectionDomainEventFacet);
         }
 
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 b667cd2..886a42f 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
@@ -350,8 +350,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
                 lifecycleEvent,
                 ObjectCreatedEvent.Noop.class,
                 ObjectCreatedEvent.Default.class,
-                "isis.reflector.facet.domainObjectAnnotation.createdLifecycleEvent.postForDefault",
-                getConfigurationLegacy())
+                getConfiguration().getReflector().getFacet().getDomainObjectAnnotation().getCreatedLifecycleEvent().isPostForDefault())
                 )
         .findFirst()
         .map(lifecycleEvent -> new CreatedLifecycleEventFacetForDomainObjectAnnotation(
@@ -368,8 +367,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
                 lifecycleEvent,
                 ObjectLoadedEvent.Noop.class,
                 ObjectLoadedEvent.Default.class,
-                "isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault",
-                getConfigurationLegacy())
+                getConfiguration().getReflector().getFacet().getDomainObjectAnnotation().getLoadedLifecycleEvent().isPostForDefault())
                 )
         .findFirst()
         .map(lifecycleEvent -> new LoadedLifecycleEventFacetForDomainObjectAnnotation(
@@ -386,8 +384,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
                 lifecycleEvent,
                 ObjectPersistingEvent.Noop.class,
                 ObjectPersistingEvent.Default.class,
-                "isis.reflector.facet.domainObjectAnnotation.persistingLifecycleEvent.postForDefault",
-                getConfigurationLegacy())
+                getConfiguration().getReflector().getFacet().getDomainObjectAnnotation().getPersistingLifecycleEvent().isPostForDefault())
                 )
         .findFirst()
         .map(lifecycleEvent -> new PersistingLifecycleEventFacetForDomainObjectAnnotation(
@@ -404,8 +401,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
                 lifecycleEvent,
                 ObjectPersistedEvent.Noop.class,
                 ObjectPersistedEvent.Default.class,
-                "isis.reflector.facet.domainObjectAnnotation.persistedLifecycleEvent.postForDefault",
-                getConfigurationLegacy())
+                getConfiguration().getReflector().getFacet().getDomainObjectAnnotation().getPersistedLifecycleEvent().isPostForDefault())
                 )
         .findFirst()
         .map(lifecycleEvent -> new PersistedLifecycleEventFacetForDomainObjectAnnotation(
@@ -422,8 +418,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
                 lifecycleEvent,
                 ObjectRemovingEvent.Noop.class,
                 ObjectRemovingEvent.Default.class,
-                "isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefault",
-                getConfigurationLegacy())
+                getConfiguration().getReflector().getFacet().getDomainObjectAnnotation().getRemovingLifecycleEvent().isPostForDefault())
                 )
         .findFirst()
         .map(lifecycleEvent -> new RemovingLifecycleEventFacetForDomainObjectAnnotation(
@@ -440,8 +435,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
                 lifecycleEvent,
                 ObjectUpdatedEvent.Noop.class,
                 ObjectUpdatedEvent.Default.class,
-                "isis.reflector.facet.domainObjectAnnotation.updatedLifecycleEvent.postForDefault",
-                getConfigurationLegacy())
+                getConfiguration().getReflector().getFacet().getDomainObjectAnnotation().getUpdatedLifecycleEvent().isPostForDefault())
                 )
         .findFirst()
         .map(lifecycleEvent -> new UpdatedLifecycleEventFacetForDomainObjectAnnotation(
@@ -458,8 +452,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
                 lifecycleEvent,
                 ObjectUpdatingEvent.Noop.class,
                 ObjectUpdatingEvent.Default.class,
-                "isis.reflector.facet.domainObjectAnnotation.updatingLifecycleEvent.postForDefault",
-                getConfigurationLegacy())
+                getConfiguration().getReflector().getFacet().getDomainObjectAnnotation().getUpdatingLifecycleEvent().isPostForDefault())
                 )
         .findFirst()
         .map(lifecycleEvent -> new UpdatingLifecycleEventFacetForDomainObjectAnnotation(
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
index b5fce82..4c9f6cb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.events.ui.CssClassUiEvent;
 import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.config.IsisConfigurationLegacy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetAbstract;
@@ -43,7 +44,8 @@ implements CssClassFacet {
     public static Facet create(
             final List<DomainObjectLayout> domainObjectLayouts,
             final MetamodelEventService metamodelEventService,
-            final IsisConfigurationLegacy configuration, 
+            final IsisConfigurationLegacy configurationLegacy,
+            final IsisConfiguration configuration,
             final FacetHolder facetHolder) {
 
         return domainObjectLayouts.stream()
@@ -52,8 +54,7 @@ implements CssClassFacet {
                         cssClassUiEventClass,
                         CssClassUiEvent.Noop.class,
                         CssClassUiEvent.Default.class,
-                        "isis.reflector.facet.domainObjectLayoutAnnotation.cssClassUiEvent.postForDefault",
-                        configuration))
+                        configuration.getReflector().getFacet().getDomainObjectLayoutAnnotation().getCssClassUiEvent().isPostForDefault()))
                 .findFirst()
                 .map(cssClassUiEventClass -> {
                     return new CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent(
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaViewModelLayoutAnnotationUsingCssClassUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaViewModelLayoutAnnotationUsingCssClassUiEvent.java
index f207761..4d31025 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaViewModelLayoutAnnotationUsingCssClassUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaViewModelLayoutAnnotationUsingCssClassUiEvent.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.annotation.ViewModelLayout;
 import org.apache.isis.applib.events.ui.CssClassUiEvent;
 import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.config.IsisConfigurationLegacy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetAbstract;
@@ -42,7 +43,8 @@ CssClassFacet {
     public static Facet create(
             final List<ViewModelLayout> viewModelLayouts,
             final MetamodelEventService metamodelEventService,
-            final IsisConfigurationLegacy configuration, 
+            final IsisConfigurationLegacy configurationLegacy,
+            final IsisConfiguration configuration,
             final FacetHolder facetHolder) {
 
         return viewModelLayouts.stream()
@@ -51,8 +53,7 @@ CssClassFacet {
                         cssClassUiEventClass,
                         CssClassUiEvent.Noop.class,
                         CssClassUiEvent.Default.class,
-                        "isis.reflector.facet.viewModelLayoutAnnotation.cssClassUiEvent.postForDefault",
-                        configuration))
+                        configuration.getReflector().getFacet().getViewModelLayoutAnnotation().getCssClassUiEvent().isPostForDefault()))
                 .findFirst()
                 .map(cssClassUiEventClass -> {
                     return new CssClassFacetViaViewModelLayoutAnnotationUsingCssClassUiEvent(
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java
index 9263f92..aff11c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java
@@ -49,31 +49,31 @@ public class DomainObjectLayoutFacetFactory extends FacetFactoryAbstract {
 
         FacetUtil.addFacet(
                 TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.create(
-                        domainObjectLayouts, metamodelEventService, getConfigurationLegacy(), facetHolder));
+                        domainObjectLayouts, metamodelEventService, getConfigurationLegacy(), getConfiguration(), facetHolder));
         FacetUtil.addFacet(
                 TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent.create(
-                        viewModelLayouts, metamodelEventService, getConfigurationLegacy(), facetHolder));
+                        viewModelLayouts, metamodelEventService, getConfigurationLegacy(), getConfiguration(), facetHolder));
 
         FacetUtil.addFacet(
                 IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.create(
-                        domainObjectLayouts, metamodelEventService, getConfigurationLegacy(), facetHolder));
+                        domainObjectLayouts, metamodelEventService, getConfigurationLegacy(), getConfiguration(), facetHolder));
         FacetUtil.addFacet(
                 IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent.create(
-                        viewModelLayouts, metamodelEventService, getConfigurationLegacy(), facetHolder));
+                        viewModelLayouts, metamodelEventService, getConfigurationLegacy(), getConfiguration(), facetHolder));
 
         FacetUtil.addFacet(
                 CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.create(
-                        domainObjectLayouts, metamodelEventService, getConfigurationLegacy(), facetHolder));
+                        domainObjectLayouts, metamodelEventService, getConfigurationLegacy(), getConfiguration(), facetHolder));
         FacetUtil.addFacet(
                 CssClassFacetViaViewModelLayoutAnnotationUsingCssClassUiEvent.create(
-                        viewModelLayouts, metamodelEventService, getConfigurationLegacy(), facetHolder));
+                        viewModelLayouts, metamodelEventService, getConfigurationLegacy(), getConfiguration(), facetHolder));
 
         FacetUtil.addFacet(
                 LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent.create(
-                        domainObjectLayouts, metamodelEventService, getConfigurationLegacy(), facetHolder));
+                        domainObjectLayouts, metamodelEventService, getConfigurationLegacy(), getConfiguration(), facetHolder));
         FacetUtil.addFacet(
                 LayoutFacetViaViewModelLayoutAnnotationUsingLayoutUiEvent.create(
-                        viewModelLayouts, metamodelEventService, getConfigurationLegacy(), facetHolder));
+                        viewModelLayouts, metamodelEventService, getConfigurationLegacy(), getConfiguration() , facetHolder));
 
         FacetUtil.addFacet(
                 CssClassFacetForDomainObjectLayoutAnnotation.create(domainObjectLayouts, facetHolder));
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
index 22c3bce..e6d6994 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.events.ui.IconUiEvent;
 import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.config.IsisConfigurationLegacy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -40,7 +41,8 @@ public class IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent extends Ic
     public static Facet create(
             final List<DomainObjectLayout> domainObjectLayouts,
             final MetamodelEventService metamodelEventService,
-            final IsisConfigurationLegacy configuration,
+            final IsisConfigurationLegacy configurationLegacy,
+            final IsisConfiguration configuration,
             final FacetHolder facetHolder) {
 
         return domainObjectLayouts.stream()
@@ -49,8 +51,7 @@ public class IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent extends Ic
                         iconUiEvent,
                         IconUiEvent.Noop.class,
                         IconUiEvent.Default.class,
-                        "isis.reflector.facet.domainObjectLayoutAnnotation.iconUiEvent.postForDefault",
-                        configuration))
+                        configuration.getReflector().getFacet().getDomainObjectLayoutAnnotation().getIconUiEvent().isPostForDefault()))
                 .findFirst()
                 .map(iconUiEvent -> {
                     return new IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent(
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent.java
index ce9a1d8..f055f40 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.annotation.ViewModelLayout;
 import org.apache.isis.applib.events.ui.IconUiEvent;
 import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.config.IsisConfigurationLegacy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -40,7 +41,8 @@ public class IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent extends IconF
     public static Facet create(
             final List<ViewModelLayout> viewModelLayouts,
             final MetamodelEventService metamodelEventService,
-            final IsisConfigurationLegacy configuration, 
+            final IsisConfigurationLegacy configurationLegacy,
+            final IsisConfiguration configuration,
             final FacetHolder facetHolder) {
 
         return viewModelLayouts.stream()
@@ -49,8 +51,7 @@ public class IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent extends IconF
                         iconUiEvent,
                         IconUiEvent.Noop.class,
                         IconUiEvent.Default.class,
-                        "isis.reflector.facet.viewModelLayoutAnnotation.iconUiEvent.postForDefault",
-                        configuration))
+                        configuration.getReflector().getFacet().getViewModelLayoutAnnotation().getIconUiEvent().isPostForDefault()))
                 .findFirst()
                 .map(iconUiEvent -> {
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent.java
index 921d105..c26800f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent.java
@@ -25,6 +25,7 @@ import java.util.Map;
 import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.events.ui.LayoutUiEvent;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.config.IsisConfigurationLegacy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -41,7 +42,8 @@ implements LayoutFacet {
     public static Facet create(
             final List<DomainObjectLayout> domainObjectLayouts,
             final MetamodelEventService metamodelEventService,
-            final IsisConfigurationLegacy configuration, 
+            final IsisConfigurationLegacy configurationLegacy,
+            final IsisConfiguration configuration,
             final FacetHolder facetHolder) {
 
         return domainObjectLayouts.stream()
@@ -50,8 +52,7 @@ implements LayoutFacet {
                         layoutUiEvent,
                         LayoutUiEvent.Noop.class,
                         LayoutUiEvent.Default.class,
-                        "isis.reflector.facet.domainObjectLayoutAnnotation.layoutUiEvent.postForDefault",
-                        configuration))
+                        configuration.getReflector().getFacet().getDomainObjectLayoutAnnotation().getLayoutUiEvent().isPostForDefault()))
                 .findFirst()
                 .map(layoutUiEvent -> {
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaViewModelLayoutAnnotationUsingLayoutUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaViewModelLayoutAnnotationUsingLayoutUiEvent.java
index 6bd8c9f..760d055 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaViewModelLayoutAnnotationUsingLayoutUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaViewModelLayoutAnnotationUsingLayoutUiEvent.java
@@ -25,6 +25,7 @@ import java.util.Map;
 import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.annotation.ViewModelLayout;
 import org.apache.isis.applib.events.ui.LayoutUiEvent;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.config.IsisConfigurationLegacy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -41,8 +42,8 @@ implements LayoutFacet {
     public static Facet create(
             final List<ViewModelLayout> viewModelLayouts,
             final MetamodelEventService metamodelEventService,
-            final IsisConfigurationLegacy configuration, 
-            final FacetHolder facetHolder) {
+            final IsisConfigurationLegacy configurationLegacy,
+            IsisConfiguration configuration, final FacetHolder facetHolder) {
 
         return viewModelLayouts.stream()
                 .map(ViewModelLayout::layoutUiEvent)
@@ -50,8 +51,7 @@ implements LayoutFacet {
                         layoutUiEvent,
                         LayoutUiEvent.Noop.class,
                         LayoutUiEvent.Default.class,
-                        "isis.reflector.facet.viewModelLayoutAnnotation.layoutUiEvent.postForDefault",
-                        configuration))
+                        configuration.getReflector().getFacet().getViewModelLayoutAnnotation().getLayoutUiEvent().isPostForDefault()))
                 .findFirst()
                 .map(layoutUiEvent -> {
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
index d659db4..4368a6a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.events.ui.TitleUiEvent;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.config.IsisConfigurationLegacy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -43,7 +44,8 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
     public static Facet create(
             final List<DomainObjectLayout> domainObjectLayouts,
             final MetamodelEventService metamodelEventService,
-            final IsisConfigurationLegacy configuration, 
+            final IsisConfigurationLegacy configurationLegacy,
+            final IsisConfiguration configuration,
             final FacetHolder facetHolder) {
 
         return domainObjectLayouts.stream()
@@ -52,8 +54,7 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
                         titleUiEvent,
                         TitleUiEvent.Noop.class,
                         TitleUiEvent.Default.class,
-                        "isis.reflector.facet.domainObjectLayoutAnnotation.titleUiEvent.postForDefault",
-                        configuration))
+                        configuration.getReflector().getFacet().getDomainObjectLayoutAnnotation().getTitleUiEvent().isPostForDefault()))
                 .findFirst()
                 .map(titleUiEventClass -> {
                     final String translationContext;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent.java
index 977fcd9..d458a92 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.events.ui.TitleUiEvent;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.config.IsisConfigurationLegacy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -43,8 +44,8 @@ public class TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent extends Tit
     public static Facet create(
             final List<ViewModelLayout> viewModelLayouts,
             final MetamodelEventService metamodelEventService,
-            final IsisConfigurationLegacy configuration, 
-            final FacetHolder facetHolder) {
+            final IsisConfigurationLegacy configurationLegacy,
+            final IsisConfiguration configuration, final FacetHolder facetHolder) {
 
         return viewModelLayouts.stream()
                 .map(ViewModelLayout::titleUiEvent)
@@ -52,8 +53,7 @@ public class TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent extends Tit
                         titleUiEvent,
                         TitleUiEvent.Noop.class,
                         TitleUiEvent.Default.class,
-                        "isis.reflector.facet.viewModelLayoutAnnotation.titleUiEvent.postForDefault",
-                        configuration))
+                        configuration.getReflector().getFacet().getViewModelLayoutAnnotation().getTitleUiEvent().isPostForDefault()))
                 .findFirst()
                 .map(titleUiEventClass -> {
                     final String translationContext;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
index 59b2307..4ada66c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
@@ -143,8 +143,8 @@ implements MetaModelValidatorRefiner {
                 propertyDomainEventFacet.getEventType(),
                 PropertyDomainEvent.Noop.class,
                 PropertyDomainEvent.Default.class,
-                "isis.reflector.facet.propertyAnnotation.domainEvent.postForDefault",
-                getConfigurationLegacy())) {
+                getConfiguration().getReflector().getFacet().getPropertyAnnotation().getDomainEvent().isPostForDefault()
+                )) {
             FacetUtil.addFacet(propertyDomainEventFacet);
         }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/util/EventUtil.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/util/EventUtil.java
index db196f1..f777034 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/util/EventUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/util/EventUtil.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.metamodel.util;
 
-import org.apache.isis.config.IsisConfigurationLegacy;
-
 public final class EventUtil {
 
     private EventUtil() {
@@ -30,13 +28,12 @@ public final class EventUtil {
             final Class<? extends T> eventType,
             final Class<? extends T> noopClass,
             final Class<? extends T> defaultClass,
-            final String configProp,
-            final IsisConfigurationLegacy configuration) {
+            final boolean configurationPropertyValue) {
         if (noopClass.isAssignableFrom(eventType)) {
             return false;
         }
         if (defaultClass.isAssignableFrom(eventType)) {
-            return configuration.getBoolean(configProp, true);
+            return configurationPropertyValue;
         }
         return true;
     }
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/AutoConfigurationTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/AutoConfigurationTest.java
index 18682ee..dd15641 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/AutoConfigurationTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/AutoConfigurationTest.java
@@ -19,6 +19,7 @@
 package org.apache.isis.testdomain.bootstrapping;
 
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import javax.inject.Inject;
@@ -109,8 +110,8 @@ class AutoConfigurationTest {
         val discoveredTypes = registry.streamAndClearInbox()
         .map(Map.Entry::getKey)
         .collect(Collectors.toSet());
-        discoveredTypes.addAll(registry.getEntityTypes());
-        discoveredTypes.addAll(registry.getBeanTypes());
+        discoveredTypes.addAll((Set)registry.getEntityTypes());
+        discoveredTypes.addAll((Set)registry.getBeanTypes());
         
         for(val cls : nonManaged()) {
             assertTrue(discoveredTypes.contains(cls));


[isis] 02/05: ISIS-2086: refactors about 6 isis.viewer.wicket config props to type-safe

Posted by da...@apache.org.
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 545df3ae1397da077947ffe305ab6647de136309
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Sep 28 14:59:46 2019 +0100

    ISIS-2086: refactors about 6 isis.viewer.wicket config props to type-safe
---
 .../org/apache/isis/config/IsisConfiguration.java  | 84 ++++++++++++++++++++++
 .../settings/WicketViewerSettingsDefault.java      | 18 ++---
 .../wicket/model/isis/WicketViewerSettings.java    | 65 +++++------------
 3 files changed, 109 insertions(+), 58 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 93255ac..bad731f 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
@@ -128,6 +128,14 @@ public class IsisConfiguration {
             private boolean suppressPasswordReset = false;
             private boolean clearOriginalDestination = false;
 
+            /**
+             * Whether to use a modal dialog for property edits and for actions associated with properties.
+             * This can be overridden on a case-by-case basis using <code>@PropertyLayout#promptStyle</code> and
+             * <code>@ActionLayout#promptStyle</code>.
+             *
+             * This behaviour is disabled by default; the viewer will use an inline prompt in these cases, making for a smoother
+             * user experience. If enabled then this reinstates the pre-1.15.0 behaviour of using a dialog prompt in all cases.
+             */
             private PromptStyle promptStyle = PromptStyle.INLINE;
 
             private boolean showFooter = true;
@@ -138,6 +146,10 @@ public class IsisConfiguration {
             public int getMaxTitleLengthInParentedTables() {
                 return maxTitleLengthInParentedTables != null ? maxTitleLengthInParentedTables : getMaxTitleLengthInTables();
             }
+            /**
+             * The maximum length that a title of an object will be shown when rendered in a parented table;
+             * will be truncated beyond this (with ellipses to indicate the truncation).
+             */
             public void setMaxTitleLengthInParentedTables(final int val) {
                 maxTitleLengthInParentedTables = val;
             }
@@ -146,9 +158,81 @@ public class IsisConfiguration {
             public int getMaxTitleLengthInStandaloneTables() {
                 return maxTitleLengthInStandaloneTables != null ? maxTitleLengthInStandaloneTables : getMaxTitleLengthInTables();
             }
+            /**
+             * The maximum length that a title of an object will be shown when rendered in a standalone table;
+             * will be truncated beyond this (with ellipses to indicate the truncation).
+             */
             public void setMaxTitleLengthInStandaloneTables(final int val) {
                 maxTitleLengthInStandaloneTables = val;
             }
+
+            /**
+             * The pattern used for rendering and parsing dates.
+             *
+             * <p>
+             * Each Date scalar panel will use {@ #getDatePattern()} or {@linkplain #getDateTimePattern()} depending on its
+             * date type.  In the case of panels with a date picker, the pattern will be dynamically adjusted so that it can be
+             * used by the <a href="https://github.com/Eonasdan/bootstrap-datetimepicker">Bootstrap Datetime Picker</a>
+             * component (which uses <a href="http://momentjs.com/docs/#/parsing/string-format/">Moment.js formats</a>, rather
+             * than those of regular Java code).
+             */
+            private String datePattern = "dd-MM-yyyy";
+            /**
+             * The pattern used for rendering and parsing date/times.
+             *
+             * <p>
+             * Each Date scalar panel will use {@link Wicket#getDatePattern()} or {@link Wicket#getDateTimePattern()} depending on its
+             * date type.  In the case of panels with a date time picker, the pattern will be dynamically adjusted so that it can be
+             * used by the <a href="https://github.com/Eonasdan/bootstrap-datetimepicker">Bootstrap Datetime Picker</a>
+             * component (which uses <a href="http://momentjs.com/docs/#/parsing/string-format/">Moment.js formats</a>, rather
+             * than those of regular Java code).
+             */
+            private String dateTimePattern = "dd-MM-yyyy HH:mm";
+            /**
+             * The pattern used for rendering and parsing timestamps.
+             */
+            private String timestampPattern = "yyyy-MM-dd HH:mm:ss.SSS";
+            /**
+             * in Firefox and more recent versions of Chrome 54+, cannot copy out of disabled fields; instead we use the
+             * readonly attribute (https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-readonly-attribute)
+             * This behaviour is enabled by default but can be disabled using this flag
+             */
+            private boolean replaceDisabledTagWithReadonlyTag = true;
+            /**
+             * Whether to disable a form submit button after it has been clicked, to prevent users causing an error if they
+             * do a double click.
+             *
+             * This behaviour is enabled by default, but can be disabled using this flag.
+             */
+            private boolean preventDoubleClickForFormSubmit = true;
+            /**
+             * Whether to disable a no-arg action button after it has been clicked, to prevent users causing an error if they
+             * do a double click.
+             *
+             * This behaviour is enabled by default, but can be disabled using this flag.
+             */
+            private boolean preventDoubleClickForNoArgAction = true;
+            /**
+             * Whether to show an indicator for a form submit button that it has been clicked.
+             *
+             * This behaviour is enabled by default, but can be disabled using this flag.
+             */
+            private boolean useIndicatorForFormSubmit = true;
+            /**
+             * Whether to show an indicator for a no-arg action button that it has been clicked.
+             *
+             * This behaviour is enabled by default, but can be disabled using this flag.
+             */
+            private boolean useIndicatorForNoArgAction = true;
+
+            /**
+             * Whether to redirect to a new page, even if the object being shown (after an action invocation or a property edit)
+             * is the same as the previous page.
+             *
+             * This behaviour is disabled by default; the viewer will update the existing page if it can, making for a
+             * smoother user experience. If enabled then this reinstates the pre-1.15.0 behaviour of redirecting in all cases.
+             */
+            private boolean redirectEvenIfSameObject = false;
         }
     }
     
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
index f1c9057..1c03f51 100644
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
+++ b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
@@ -59,42 +59,42 @@ public class WicketViewerSettingsDefault implements WicketViewerSettings {
 
     @Override
     public String getDatePattern() {
-        return getConfigurationLegacy().getString("isis.viewer.wicket.datePattern", "dd-MM-yyyy");
+        return getConfiguration().getViewer().getWicket().getDatePattern();
     }
 
     @Override
     public String getDateTimePattern() {
-        return getConfigurationLegacy().getString("isis.viewer.wicket.dateTimePattern", "dd-MM-yyyy HH:mm");
+        return getConfiguration().getViewer().getWicket().getDateTimePattern();
     }
 
     @Override
     public String getTimestampPattern() {
-        return getConfigurationLegacy().getString("isis.viewer.wicket.timestampPattern", "yyyy-MM-dd HH:mm:ss.SSS");
+        return getConfiguration().getViewer().getWicket().getTimestampPattern();
     }
 
     @Override
     public boolean isReplaceDisabledTagWithReadonlyTag() {
-        return getConfigurationLegacy().getBoolean("isis.viewer.wicket.replaceDisabledTagWithReadonlyTag", true);
+        return getConfiguration().getViewer().getWicket().isReplaceDisabledTagWithReadonlyTag();
     }
 
     @Override
     public boolean isPreventDoubleClickForFormSubmit() {
-        return getConfigurationLegacy().getBoolean("isis.viewer.wicket.preventDoubleClickForFormSubmit", true);
+        return getConfiguration().getViewer().getWicket().isPreventDoubleClickForFormSubmit();
     }
 
     @Override
     public boolean isPreventDoubleClickForNoArgAction() {
-        return getConfigurationLegacy().getBoolean("isis.viewer.wicket.preventDoubleClickForNoArgAction", true);
+        return getConfiguration().getViewer().getWicket().isPreventDoubleClickForNoArgAction();
     }
 
     @Override
     public boolean isUseIndicatorForFormSubmit() {
-        return getConfigurationLegacy().getBoolean("isis.viewer.wicket.useIndicatorForFormSubmit", true);
+        return getConfiguration().getViewer().getWicket().isUseIndicatorForFormSubmit();
     }
 
     @Override
     public boolean isUseIndicatorForNoArgAction() {
-        return getConfigurationLegacy().getBoolean("isis.viewer.wicket.useIndicatorForNoArgAction", true);
+        return getConfiguration().getViewer().getWicket().isUseIndicatorForNoArgAction();
     }
 
     @Override
@@ -104,6 +104,6 @@ public class WicketViewerSettingsDefault implements WicketViewerSettings {
 
     @Override
     public boolean isRedirectEvenIfSameObject() {
-        return getConfigurationLegacy().getBoolean("isis.viewer.wicket.redirectEvenIfSameObject", false);
+        return getConfiguration().getViewer().getWicket().isRedirectEvenIfSameObject();
     }
 }
diff --git a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
index cd9b5ad..3f6191a 100644
--- a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
+++ b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
@@ -22,103 +22,70 @@ package org.apache.isis.viewer.wicket.model.isis;
 import java.io.Serializable;
 
 import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.config.IsisConfiguration;
 
 public interface WicketViewerSettings extends Serializable {
 
     /**
-     * The maximum length that a title of an object will be shown when rendered in a standalone table;
-     * will be truncated beyond this (with ellipses to indicate the truncation).
+     * as per {@link IsisConfiguration.Viewer.Wicket#setMaxTitleLengthInStandaloneTables(int)}
      */
     int getMaxTitleLengthInStandaloneTables();
 
     /**
-     * The maximum length that a title of an object will be shown when rendered in a parented table;
-     * will be truncated beyond this (with ellipses to indicate the truncation).
+     * as per {@link IsisConfiguration.Viewer.Wicket#setMaxTitleLengthInParentedTables(int)}
+     * @return
      */
     int getMaxTitleLengthInParentedTables();
 
     /**
-     * The pattern used for rendering and parsing dates.
-     *
-     * <p>
-     * Each Date scalar panel will use {@ #getDatePattern()} or {@linkplain #getDateTimePattern()} depending on its
-     * date type.  In the case of panels with a date picker, the pattern will be dynamically adjusted so that it can be
-     * used by the <a href="https://github.com/Eonasdan/bootstrap-datetimepicker">Bootstrap Datetime Picker</a>
-     * component (which uses <a href="http://momentjs.com/docs/#/parsing/string-format/">Moment.js formats</a>, rather
-     * than those of regular Java code).
+     * As per {@link IsisConfiguration.Viewer.Wicket#setDatePattern(String)}
+     * @return
      */
     String getDatePattern();
 
     /**
-     * The pattern used for rendering and parsing date/times.
-     *
-     * <p>
-     * Each Date scalar panel will use {@ #getDatePattern()} or {@linkplain #getDateTimePattern()} depending on its
-     * date type.  In the case of panels with a date time picker, the pattern will be dynamically adjusted so that it can be
-     * used by the <a href="https://github.com/Eonasdan/bootstrap-datetimepicker">Bootstrap Datetime Picker</a>
-     * component (which uses <a href="http://momentjs.com/docs/#/parsing/string-format/">Moment.js formats</a>, rather
-     * than those of regular Java code).
+     * As per {@link IsisConfiguration.Viewer.Wicket#setDateTimePattern(String)}
+     * @return
      */
     String getDateTimePattern();
 
     /**
-     * The pattern used for rendering and parsing timestamps.
+     * As per {@link IsisConfiguration.Viewer.Wicket#setTimestampPattern(String)}
      */
     String getTimestampPattern();
 
     /**
-     * in Firefox and more recent versions of Chrome 54+, cannot copy out of disabled fields; instead we use the
-     * readonly attribute (https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-readonly-attribute)
-     * This behaviour is enabled by default but can be disabled using this flag
+     * As per {@link IsisConfiguration.Viewer.Wicket#setReplaceDisabledTagWithReadonlyTag(boolean)}
      */
     boolean isReplaceDisabledTagWithReadonlyTag();
 
     /**
-     * Whether to disable a form submit button after it has been clicked, to prevent users causing an error if they
-     * do a double click.
-     *
-     * This behaviour is enabled by default, but can be disabled using this flag.
+     * As per {@link IsisConfiguration.Viewer.Wicket#setPreventDoubleClickForFormSubmit(boolean)}
      */
     boolean isPreventDoubleClickForFormSubmit();
 
     /**
-     * Whether to disable a no-arg action button after it has been clicked, to prevent users causing an error if they
-     * do a double click.
-     *
-     * This behaviour is enabled by default, but can be disabled using this flag.
+     * As per {@link IsisConfiguration.Viewer.Wicket#setPreventDoubleClickForNoArgAction(boolean)}
      */
     boolean isPreventDoubleClickForNoArgAction();
 
     /**
-     * Whether to show an indicator for a form submit button that it has been clicked.
-     *
-     * This behaviour is enabled by default, but can be disabled using this flag.
+     * As per {@link IsisConfiguration.Viewer.Wicket#setUseIndicatorForFormSubmit(boolean)}
      */
     boolean isUseIndicatorForFormSubmit();
 
     /**
-     * Whether to show an indicator for a no-arg action button that it has been clicked.
-     *
-     * This behaviour is enabled by default, but can be disabled using this flag.
+     * As per {@link IsisConfiguration.Viewer.Wicket#setUseIndicatorForNoArgAction(boolean)}
      */
     boolean isUseIndicatorForNoArgAction();
 
     /**
-     * Whether to use a modal dialog for property edits and for actions associated with properties.
-     * This can be overridden on a case-by-case basis using <code>@PropertyLayout#promptStyle</code> and
-     * <code>@ActionLayout#promptStyle</code>.
-     *
-     * This behaviour is disabled by default; the viewer will use an inline prompt in these cases, making for a smoother
-     * user experience. If enabled then this reinstates the pre-1.15.0 behaviour of using a dialog prompt in all cases.
+     * As per {@link IsisConfiguration.Viewer.Wicket#setPromptStyle(PromptStyle)}
      */
     PromptStyle getPromptStyle();
 
     /**
-     * Whether to redirect to a new page, even if the object being shown (after an action invocation or a property edit)
-     * is the same as the previous page.
-     *
-     * This behaviour is disabled by default; the viewer will update the existing page if it can, making for a
-     * smoother user experience. If enabled then this reinstates the pre-1.15.0 behaviour of redirecting in all cases.
+     * As per {@link IsisConfiguration.Viewer.Wicket#setRedirectEvenIfSameObject(boolean)}
      */
     boolean isRedirectEvenIfSameObject();