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

ahuber pushed a commit to branch 2039-Redesign_of_Config
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 9a4fa65fb0fb54b15b3233ad73d3736f66311704
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Thu Nov 22 21:22:33 2018 +0100

    ISIS-2039: simplify config access
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-2039
---
 .../isis/commons/internal/context/_Context.java    |  41 ++++--
 .../org/apache/isis/config/internal/_Config.java   | 139 ++++++++++++++++-----
 .../config/internal/_Config_LifecycleResource.java |  52 ++++++++
 .../internal/_Config_SupplierUsingBuilder.java     |  21 ----
 .../metamodel/facets/FacetFactoryAbstract.java     |   2 +-
 .../facets/AbstractFacetFactoryJUnit4TestCase.java |   6 -
 .../action/ActionAnnotationFacetFactoryTest.java   |  14 +--
 .../ViewModelSemanticCheckingFacetFactoryTest.java |   6 +-
 .../object/defaults/DefaultedFacetFactoryTest.java |  19 ++-
 .../DomainObjectAnnotationFacetFactoryTest.java    |   3 +-
 .../DomainObjectLayoutFactoryTest.java             |  18 +--
 ...eFacetAnnotationOrConfigurationFactoryTest.java |  13 +-
 .../PropertyAnnotationFacetFactoryTest.java        |   4 +-
 .../BigDecimalValueSemanticsProviderTest.java      |   4 +-
 .../value/BigIntValueSemanticsProviderTest.java    |   4 +-
 .../value/ByteValueSemanticsProviderTest.java      |   4 +-
 .../value/DoubleValueSemanticsProviderTest.java    |   4 +-
 .../value/FloatValueSemanticsProviderTest.java     |   4 +-
 .../value/IntValueSemanticsProviderTest.java       |  11 +-
 .../JavaSqlDateValueSemanticsProviderTest.java     |   4 +-
 .../JavaSqlTimeValueSemanticsProviderTest.java     |   4 +-
 .../JavaUtilDateValueSemanticsProviderTest.java    |   5 +-
 .../value/LongValueSemanticsProviderTest.java      |   4 +-
 .../PercentageValueSemanticsProviderTest.java      |   4 +-
 .../value/ShortValueSemanticsProviderTest.java     |   4 +-
 .../ValueSemanticsProviderAbstractTestCase.java    |   7 +-
 ...odaLocalDateTimeValueSemanticsProviderTest.java |   6 +-
 .../WrapperFactoryDefaultTest_wrappedObject.java   |   6 +-
 .../WrapperFactoryDefaultTest_wrappedObject.java   |   6 +-
 ...AuthenticatorOrAuthorizorTest_authenticate.java |   4 +-
 ...ticatorOrAuthorizorTest_isVisibleInAnyRole.java |   4 +-
 .../services/ServicesInstallerFromAnnotation.java  |   6 +-
 .../ServicesInstallerFromConfiguration.java        |  20 +--
 33 files changed, 266 insertions(+), 187 deletions(-)

diff --git 
a/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java
 
b/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java
index 2add9d9..e2888e1 100644
--- 
a/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java
+++ 
b/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java
@@ -26,11 +26,11 @@ import java.util.function.Function;
 import java.util.function.Supplier;
 
 import org.apache.isis.commons.internal.base._Casts;
-import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.plugins.environment.IsisSystemEnvironment;
 import org.apache.isis.core.plugins.environment.IsisSystemEnvironmentPlugin;
 
+import static org.apache.isis.commons.internal.base._NullSafe.stream;
 import static org.apache.isis.commons.internal.base._With.ifPresentElseGet;
 import static org.apache.isis.commons.internal.base._With.ifPresentElseThrow;
 import static org.apache.isis.commons.internal.base._With.requires;
@@ -159,6 +159,18 @@ public final class _Context {
         return ifPresentElseThrow(getIfAny(type), onNotFound);
     }
 
+    // -- REMOVAL
+    
+    public static void remove(Class<?> type) {
+        // let writes to the map be atomic
+        synchronized (singletonMap) {
+            singletonMap.remove(toKey(type));
+        }
+        tryClose(type);
+    }
+    
+    // -- CLEARING
+    
     /**
      * Removes any singleton references from the current context. <br/>
      * Any singletons that implement the AutoClosable interface are being 
closed.
@@ -175,16 +187,8 @@ public final class _Context {
     }
 
     private static void closeAnyClosables(List<Object> objects) {
-        _NullSafe.stream(objects)
-        .filter(singleton->singleton instanceof AutoCloseable)
-        .map(singleton->(AutoCloseable)singleton)
-        .forEach(autoCloseable->{
-            try {
-                autoCloseable.close();
-            } catch (Exception e) {
-                // [ahuber] nothing we can do here, so ignore
-            }
-        });
+        stream(objects)
+        .forEach(_Context::tryClose);
     }
 
     // -- DEFAULT CLASSLOADER
@@ -257,6 +261,21 @@ public final class _Context {
     private static String toKey(Class<?> type) {
         return type.getName();
     }
+    
+    private static void tryClose(Object singleton) {
+        if(singleton==null) {
+            return;
+        }
+        if(singleton instanceof AutoCloseable) {
+            try {
+                ((AutoCloseable)singleton).close();
+            } catch (Exception e) {
+                // [ahuber] nothing we can do here, so ignore
+            }
+        }
+    }
+
+
 
 
 
diff --git 
a/core/config/src/main/java/org/apache/isis/config/internal/_Config.java 
b/core/config/src/main/java/org/apache/isis/config/internal/_Config.java
index e890be7..d496998 100644
--- a/core/config/src/main/java/org/apache/isis/config/internal/_Config.java
+++ b/core/config/src/main/java/org/apache/isis/config/internal/_Config.java
@@ -18,57 +18,132 @@
  */
 package org.apache.isis.config.internal;
 
-import java.util.function.Supplier;
+import java.util.function.Consumer;
+import java.util.function.Function;
 
 import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
 
-import static org.apache.isis.commons.internal.base._With.mapIfPresentElse;
-import static 
org.apache.isis.commons.internal.base._With.mapIfPresentElseThrow;
-import static org.apache.isis.commons.internal.base._With.requires;
-
+/**
+ * @since 2.0.0-M2
+ */
 public class _Config {
     
-    // -- CONFIG SUPPLIER INTERFACE
+    // -- CONFIG ACCESS
     
-    @FunctionalInterface
-    public static interface ConfigSupplier extends Supplier<IsisConfiguration> 
{
-        
+    public static IsisConfiguration getConfiguration() {
+        return getLifecycleResource().getConfiguration();
     }
     
-    // -- CONFIG RETRIEVAL
+    public static void acceptConfig(Consumer<IsisConfiguration> 
configConsumer) {
+        configConsumer.accept(getConfiguration());
+    }
     
-    public static IsisConfiguration getConfiguration() {
-        final ConfigSupplier supplier = 
_Context.getIfAny(ConfigSupplier.class);
-        return mapIfPresentElse(supplier, ConfigSupplier::get, null);
+    public static <T> T applyConfig(Function<IsisConfiguration, T> 
configMapper) {
+        return configMapper.apply(getConfiguration());
     }
     
-    public static IsisConfiguration getConfigurationElseThrow() {
-        final ConfigSupplier supplier = 
_Context.getOrThrow(ConfigSupplier.class, 
-                ()->new IllegalStateException("No ConfigSupplier registered on 
current context."));
-        
-        return mapIfPresentElseThrow(supplier, ConfigSupplier::get,
-                ()->new IllegalStateException("The ConfigSupplier registered 
on current context did return null."));
+    // -- BUILDER ACCESS
+    
+    public static void acceptBuilder(Consumer<IsisConfigurationBuilder> 
builderConsumer) {
+        builderConsumer.accept(getConfigurationBuilder());
     }
-
+    
+    public static <T> T applyBuilder(Function<IsisConfigurationBuilder, T> 
builderMapper) {
+        return builderMapper.apply(getConfigurationBuilder());
+    }
+    
     /**
-     * Sets the current context's configuration supplier via provided 
parameter. Will not override
-     * any ConfigSupplier instance, that is already registered with the 
current context, 
-     * because the ConfigSupplier is expected to be a singleton within an 
application's 
-     * life-cycle.
+     * Throws away any configuration resources currently on this life-cycle's 
context.
+     * Makes a new config builder singleton instance available. Most likely 
used for testing.
      */
-    public static void 
registerConfigurationSupplierIfNotAlready(ConfigSupplier configSupplier) {
-        requires(configSupplier, "configSupplier");
-        _Context.computeIfAbsent(ConfigSupplier.class, __->configSupplier);
+    public static void clear() {
+        _Context.remove(_Config_LifecycleResource.class);
     }
     
-    public static IsisConfigurationBuilder configurationBuilderForTesting() {
-        final IsisConfigurationBuilder builder = new 
IsisConfigurationBuilder();
-        final ConfigSupplier configSupplier = new 
_Config_SupplierUsingBuilder(builder);
-        registerConfigurationSupplierIfNotAlready(configSupplier);
-        return builder; 
+    // -- CONFIG SHORTCUTS
+    
+    
+    
+    // -- BUILDER SHORTCUTS
+    
+    public static void put(String key, String value) {
+        getConfigurationBuilder().put(key, value);
+    }
+    
+    public static void put(String key, boolean value) {
+        getConfigurationBuilder().put(key, ""+value);
     }
     
+    public static String peekAtString(String key) {
+        return getConfigurationBuilder().peekAtString(key);
+    }
+    
+    public static String peekAtString(String key, String defaultValue) {
+        return getConfigurationBuilder().peekAtString(key, defaultValue);
+    }
+    
+    public static boolean peekAtBoolean(String key) {
+        return getConfigurationBuilder().peekAtBoolean(key);
+    }
+    
+    public static boolean peekAtBoolean(String key, boolean defaultValue) {
+        return getConfigurationBuilder().peekAtBoolean(key, defaultValue);
+    }
+    
+    
+    // -- HELPER -- BUILDER
+    
+    private static IsisConfigurationBuilder getConfigurationBuilder() {
+        IsisConfigurationBuilder builder = getLifecycleResource().getBuilder()
+                .orElseThrow(_Config::configurationAlreadyInUse);
+        return builder;
+    }
+    
+    private static IsisConfigurationBuilder createBuilder() {
+        final IsisConfigurationBuilder builder = new 
IsisConfigurationBuilder(); 
+        return builder;
+    }
+
+    // -- HELPER -- LIFECYCLE
+    
+    private static _Config_LifecycleResource getLifecycleResource() {
+        final _Config_LifecycleResource lifecycle = 
+                _Context.computeIfAbsent(_Config_LifecycleResource.class, 
__->createLifecycleResource());
+        return lifecycle;
+    }
+
+    private static _Config_LifecycleResource createLifecycleResource() {
+        return new _Config_LifecycleResource(createBuilder());
+    }
+    
+    // -- HELPER -- EXCEPTIONS
+    
+    private static IllegalStateException configurationAlreadyInUse() {
+        return new IllegalStateException("The IsisConfigurationBuilder is no 
longer valid, because it has "
+                + "already built the IsisConfiguration for this application's 
life-cycle.");
+    }
+
+    
+
+//    /**
+//     * Sets the current context's configuration supplier via provided 
parameter. Will not override
+//     * any ConfigSupplier instance, that is already registered with the 
current context, 
+//     * because the ConfigSupplier is expected to be a singleton within an 
application's 
+//     * life-cycle.
+//     */
+//    public static void 
registerConfigurationSupplierIfNotAlready(ConfigSupplier configSupplier) {
+//        requires(configSupplier, "configSupplier");
+//        _Context.computeIfAbsent(ConfigSupplier.class, __->configSupplier);
+//    }
+//    
+//    public static IsisConfigurationBuilder configurationBuilderForTesting() {
+//        final IsisConfigurationBuilder builder = new 
IsisConfigurationBuilder();
+//        final ConfigSupplier configSupplier = new 
_Config_SupplierUsingBuilder(builder);
+//        registerConfigurationSupplierIfNotAlready(configSupplier);
+//        return builder; 
+//    }
+    
     
 }
diff --git 
a/core/config/src/main/java/org/apache/isis/config/internal/_Config_LifecycleResource.java
 
b/core/config/src/main/java/org/apache/isis/config/internal/_Config_LifecycleResource.java
new file mode 100644
index 0000000..f260046
--- /dev/null
+++ 
b/core/config/src/main/java/org/apache/isis/config/internal/_Config_LifecycleResource.java
@@ -0,0 +1,52 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.config.internal;
+
+import java.util.Optional;
+
+import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
+
+import static org.apache.isis.commons.internal.base._With.requires;
+
+class _Config_LifecycleResource {
+    
+    private final IsisConfigurationBuilder builder; 
+    private final _Lazy<IsisConfiguration> configuration;
+    
+    _Config_LifecycleResource(final IsisConfigurationBuilder builder) {
+        requires(builder, "builder");
+        this.builder = builder;
+        this.configuration = _Lazy.threadSafe(builder::build);
+    }
+    
+    IsisConfiguration getConfiguration() {
+        return configuration.get();
+    }
+    
+    Optional<IsisConfigurationBuilder> getBuilder() {
+        if(!configuration.isMemoized()) {
+            return Optional.of(builder);    
+        }
+        return Optional.empty();
+    }
+    
+
+}
diff --git 
a/core/config/src/main/java/org/apache/isis/config/internal/_Config_SupplierUsingBuilder.java
 
b/core/config/src/main/java/org/apache/isis/config/internal/_Config_SupplierUsingBuilder.java
deleted file mode 100644
index 8fdd534..0000000
--- 
a/core/config/src/main/java/org/apache/isis/config/internal/_Config_SupplierUsingBuilder.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.apache.isis.config.internal;
-
-import org.apache.isis.commons.internal.base._Lazy;
-import org.apache.isis.config.internal._Config.ConfigSupplier;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
-
-class _Config_SupplierUsingBuilder implements ConfigSupplier {
-
-    final _Lazy<IsisConfiguration> configuration;
-    
-    _Config_SupplierUsingBuilder(IsisConfigurationBuilder builder) {
-        configuration = _Lazy.of(builder::build);
-    }
-
-    @Override
-    public IsisConfiguration get() {
-        return configuration.get();
-    }
-    
-}
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
index 656e2e4..f632b49 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
@@ -76,7 +76,7 @@ public abstract class FacetFactoryAbstract implements 
FacetFactory, ServicesInje
     }
 
     protected IsisConfiguration getConfiguration() {
-        return _Config.getConfigurationElseThrow();
+        return _Config.getConfiguration();
     }
 
 
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index f764fbc..63fe365 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -100,12 +100,6 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
         }
     }
 
-    protected IsisConfigurationBuilder resetConfig() {
-        _Context.clear();
-        return _Config.configurationBuilderForTesting();
-    }
-    
-    
     @Before
     public void setUpFacetedMethodAndParameter() throws Exception {
 
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
index b94af93..e532ebd 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
@@ -38,6 +38,7 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.events.domain.ActionDomainEvent;
 import org.apache.isis.applib.services.HasUniqueId;
+import org.apache.isis.config.internal._Config;
 import 
org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import 
org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
@@ -162,8 +163,7 @@ public class ActionAnnotationFacetFactoryTest extends 
AbstractFacetFactoryJUnit4
             allowingLoadSpecificationRequestsFor(cls, 
actionMethod.getReturnType());
             expectRemoveMethod(actionMethod);
 
-            resetConfig()
-            
.put("isis.reflector.facet.actionAnnotation.domainEvent.postForDefault", 
"true");
+            
_Config.put("isis.reflector.facet.actionAnnotation.domainEvent.postForDefault", 
true);
 
             // when
             final ProcessMethodContext processMethodContext = new 
ProcessMethodContext(
@@ -283,8 +283,7 @@ public class ActionAnnotationFacetFactoryTest extends 
AbstractFacetFactoryJUnit4
             allowingLoadSpecificationRequestsFor(cls, 
actionMethod.getReturnType());
             expectRemoveMethod(actionMethod);
 
-            resetConfig()
-            
.put("isis.reflector.facet.actionAnnotation.domainEvent.postForDefault", 
"true");
+            
_Config.put("isis.reflector.facet.actionAnnotation.domainEvent.postForDefault", 
true);
 
             // when
             final ProcessMethodContext processMethodContext = new 
ProcessMethodContext(
@@ -1156,12 +1155,11 @@ public class ActionAnnotationFacetFactoryTest extends 
AbstractFacetFactoryJUnit4
     }
 
     void allowingCommandConfigurationToReturn(final String value) {
-        resetConfig()
-        .put("isis.services.command.actions", value);
+        _Config.put("isis.services.command.actions", value);
     }
+
     void allowingPublishingConfigurationToReturn(final String value) {
-        resetConfig()
-        .put("isis.services.publish.actions", value);
+        _Config.put("isis.services.publish.actions", value);
     }
 
 }
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
index b1def4c..6f20bf6 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
@@ -25,7 +25,6 @@ import org.junit.Test;
 
 import org.apache.isis.applib.RecreatableDomainObject;
 import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
@@ -61,9 +60,8 @@ public class ViewModelSemanticCheckingFacetFactoryTest {
     @Before
     public void setUp() throws Exception {
 
-        _Context.clear();
-        _Config.configurationBuilderForTesting()
-        
.add("isis.reflector.facets.ViewModelSemanticCheckingFacetFactory.enable", 
"true");
+        _Config.clear();
+        
_Config.put("isis.reflector.facets.ViewModelSemanticCheckingFacetFactory.enable",
 true);
         
         facetFactory = new ViewModelSemanticCheckingFacetFactory();
 
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetFactoryTest.java
index fd815f4..028726c 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetFactoryTest.java
@@ -21,9 +21,7 @@ package org.apache.isis.core.metamodel.facets.object.defaults;
 
 import org.apache.isis.applib.adapters.DefaultsProvider;
 import org.apache.isis.applib.annotation.Defaulted;
-import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.config.internal._Config;
-import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import 
org.apache.isis.core.metamodel.facets.object.defaults.annotcfg.DefaultedFacetAnnotationElseConfigurationFactory;
@@ -143,8 +141,7 @@ public class DefaultedFacetFactoryTest extends 
AbstractFacetFactoryTest {
     }
 
     public void testDefaultedMustHaveANoArgConstructor() {
-        _Context.clear();
-        _Config.configurationBuilderForTesting();
+        _Config.clear();
         
         facetFactory.process(new 
ProcessClassContext(MyDefaultedWithoutNoArgConstructor.class, methodRemover, 
facetedMethod));
         final DefaultedFacetAbstract facet = (DefaultedFacetAbstract) 
facetedMethod.getFacet(DefaultedFacet.class);
@@ -191,11 +188,10 @@ public class DefaultedFacetFactoryTest extends 
AbstractFacetFactoryTest {
 
     public void testDefaultedProviderNameCanBePickedUpFromConfiguration() {
         
-        _Context.clear();
-        IsisConfigurationBuilder configurationBuilderForTesting = 
_Config.configurationBuilderForTesting();
-        
         final String className = 
"org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetFactoryTest$MyDefaultedWithDefaultsProviderSpecifiedUsingConfiguration";
-        
configurationBuilderForTesting.put(DefaultsProviderUtil.DEFAULTS_PROVIDER_NAME_KEY_PREFIX
 + canonical(className) + 
DefaultsProviderUtil.DEFAULTS_PROVIDER_NAME_KEY_SUFFIX, className);
+        
+        _Config.clear();
+        _Config.put(DefaultsProviderUtil.DEFAULTS_PROVIDER_NAME_KEY_PREFIX + 
canonical(className) + DefaultsProviderUtil.DEFAULTS_PROVIDER_NAME_KEY_SUFFIX, 
className);
         facetFactory.process(new 
ProcessClassContext(MyDefaultedWithDefaultsProviderSpecifiedUsingConfiguration.class,
 methodRemover, facetedMethod));
         final DefaultedFacetAbstract facet = (DefaultedFacetAbstract) 
facetedMethod.getFacet(DefaultedFacet.class);
         assertNotNull(facet);
@@ -218,11 +214,10 @@ public class DefaultedFacetFactoryTest extends 
AbstractFacetFactoryTest {
 
     public void testNonAnnotatedDefaultedCanBePickedUpFromConfiguration() {
         
-        _Context.clear();
-        IsisConfigurationBuilder configurationBuilderForTesting = 
_Config.configurationBuilderForTesting();
-        
         final String className = 
"org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetFactoryTest$NonAnnotatedDefaultedDefaultsProviderSpecifiedUsingConfiguration";
-        
configurationBuilderForTesting.put(DefaultsProviderUtil.DEFAULTS_PROVIDER_NAME_KEY_PREFIX
 + canonical(className) + 
DefaultsProviderUtil.DEFAULTS_PROVIDER_NAME_KEY_SUFFIX, className);
+        
+        _Config.clear();
+        _Config.put(DefaultsProviderUtil.DEFAULTS_PROVIDER_NAME_KEY_PREFIX + 
canonical(className) + DefaultsProviderUtil.DEFAULTS_PROVIDER_NAME_KEY_SUFFIX, 
className);
         facetFactory.process(new 
ProcessClassContext(NonAnnotatedDefaultedDefaultsProviderSpecifiedUsingConfiguration.class,
 methodRemover, facetedMethod));
         final DefaultedFacetAbstract facet = (DefaultedFacetAbstract) 
facetedMethod.getFacet(DefaultedFacet.class);
         assertNotNull(facet);
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 7c20293..0fa77f5 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -30,6 +30,7 @@ import org.junit.Test;
 import org.apache.isis.applib.annotation.Bounding;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.services.HasUniqueId;
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import 
org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
@@ -89,7 +90,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends 
AbstractFacetFactory
     }
 
     protected void allowingConfigurationToReturn(final String name, final 
String value) {
-        resetConfig().put(name, value);
+        _Config.put(name, value);
     }
 
     protected void ignoringConfiguration() {
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
index 241a63a..b9fc4c5 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
@@ -29,6 +29,7 @@ import org.junit.Test;
 import org.apache.isis.applib.annotation.BookmarkPolicy;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.annotation.ViewModelLayout;
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import 
org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
@@ -57,6 +58,7 @@ public class DomainObjectLayoutFactoryTest extends 
AbstractFacetFactoryJUnit4Tes
     
     @Before
     public void setUp() throws Exception {
+        _Config.clear();
         facetFactory = new DomainObjectLayoutFacetFactory();
         facetFactory.setServicesInjector(mockServicesInjector);
     }
@@ -107,7 +109,7 @@ public class DomainObjectLayoutFactoryTest extends 
AbstractFacetFactoryJUnit4Tes
 
             @Before
             public void setUp2() throws Exception {
-                super.resetConfig();
+                _Config.clear();
             }
 
             @Test @Ignore //FIXME[2039]
@@ -147,7 +149,7 @@ public class DomainObjectLayoutFactoryTest extends 
AbstractFacetFactoryJUnit4Tes
             
             @Before
             public void setUp2() throws Exception {
-                super.resetConfig();
+                _Config.clear();
             }
 
             @Test
@@ -195,7 +197,7 @@ public class DomainObjectLayoutFactoryTest extends 
AbstractFacetFactoryJUnit4Tes
 
             @Before
             public void setUp2() throws Exception {
-                super.resetConfig();
+                _Config.clear();
             }
 
             @Before
@@ -278,7 +280,7 @@ public class DomainObjectLayoutFactoryTest extends 
AbstractFacetFactoryJUnit4Tes
 
             @Before
             public void setUp2() throws Exception {
-                super.resetConfig();
+                _Config.clear();
             }
 
 
@@ -359,7 +361,7 @@ public class DomainObjectLayoutFactoryTest extends 
AbstractFacetFactoryJUnit4Tes
 
             @Before
             public void setUp2() throws Exception {
-                super.resetConfig();
+                _Config.clear();
             }
 
             @Test @Ignore //FIXME[2039]
@@ -437,7 +439,7 @@ public class DomainObjectLayoutFactoryTest extends 
AbstractFacetFactoryJUnit4Tes
 
             @Before
             public void setUp2() throws Exception {
-                super.resetConfig();
+                _Config.clear();
             }
 
             @Test @Ignore //FIXME[2039]
@@ -515,7 +517,7 @@ public class DomainObjectLayoutFactoryTest extends 
AbstractFacetFactoryJUnit4Tes
 
             @Before
             public void setUp2() throws Exception {
-                super.resetConfig();
+                _Config.clear();
             }
 
             @Test @Ignore //FIXME[2039]
@@ -593,7 +595,7 @@ public class DomainObjectLayoutFactoryTest extends 
AbstractFacetFactoryJUnit4Tes
 
             @Before
             public void setUp2() throws Exception {
-                super.resetConfig();
+                _Config.clear();
             }
 
             @Test @Ignore //FIXME[2039]
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java
index 1bb861f..593f1a6 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java
@@ -434,10 +434,8 @@ public class 
ValueFacetAnnotationOrConfigurationFactoryTest extends AbstractFace
         // given
         final String className = 
"org.apache.isis.core.metamodel.facets.object.value.ValueFacetAnnotationOrConfigurationFactoryTest$MyValueWithSemanticsProviderSpecifiedUsingConfiguration";
 
-        _Context.clear();
-        IsisConfigurationBuilder configurationBuilderForTesting = 
_Config.configurationBuilderForTesting();
-        
-        
configurationBuilderForTesting.put(ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_PREFIX
 + canonical(className) + 
ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_SUFFIX, className);
+        _Config.clear();
+        
_Config.put(ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_PREFIX + 
canonical(className) + 
ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_SUFFIX, className);
 
         // when
         facetFactory.process(new 
ProcessClassContext(MyValueWithSemanticsProviderSpecifiedUsingConfiguration.class,
 methodRemover, facetedMethod));
@@ -489,11 +487,8 @@ public class 
ValueFacetAnnotationOrConfigurationFactoryTest extends AbstractFace
 
         // given
         final String className = 
"org.apache.isis.core.metamodel.facets.object.value.ValueFacetAnnotationOrConfigurationFactoryTest$NonAnnotatedValueSemanticsProviderSpecifiedUsingConfiguration";
-        _Context.clear();
-        IsisConfigurationBuilder configurationBuilderForTesting = 
_Config.configurationBuilderForTesting();
-
-        
configurationBuilderForTesting.put(ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_PREFIX
 + canonical(className) + 
ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_SUFFIX, className);
-
+        _Config.clear();
+        
_Config.put(ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_PREFIX + 
canonical(className) + 
ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_SUFFIX, className);
 
         // when
         facetFactory.process(new 
ProcessClassContext(NonAnnotatedValueSemanticsProviderSpecifiedUsingConfiguration.class,
 methodRemover, facetedMethod));
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index b68d977..c6aea89 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.events.domain.PropertyDomainEvent;
 import org.apache.isis.applib.spec.Specification;
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -337,8 +338,7 @@ public class PropertyAnnotationFacetFactoryTest extends 
AbstractFacetFactoryJUni
             // expect
             allowingLoadSpecificationRequestsFor(cls, 
propertyMethod.getReturnType());
             
-            resetConfig()
-            
.put("isis.reflector.facet.propertyAnnotation.domainEvent.postForDefault", 
"true");
+            
_Config.put("isis.reflector.facet.propertyAnnotation.domainEvent.postForDefault",
 true);
 
             // when
             final FacetFactory.ProcessMethodContext processMethodContext = new 
FacetFactory.ProcessMethodContext(cls, null,
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigDecimalValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigDecimalValueSemanticsProviderTest.java
index 948b178..bb34ef8 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigDecimalValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigDecimalValueSemanticsProviderTest.java
@@ -24,6 +24,7 @@ import java.math.BigDecimal;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
@@ -42,8 +43,7 @@ public class BigDecimalValueSemanticsProviderTest extends 
ValueSemanticsProvider
     public void setUp() throws Exception {
         super.setUp();
         
-        configurationBuilderForTesting
-        .put("isis.value.format.decimal", null);
+        _Config.put("isis.value.format.decimal", null);
 
         bigDecimal = new BigDecimal("34132.199");
         allowMockAdapterToReturn(bigDecimal);
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigIntValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigIntValueSemanticsProviderTest.java
index 694188a..ab41cb3 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigIntValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigIntValueSemanticsProviderTest.java
@@ -24,6 +24,7 @@ import java.math.BigInteger;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
@@ -43,8 +44,7 @@ public class BigIntValueSemanticsProviderTest extends 
ValueSemanticsProviderAbst
         bigInt = new BigInteger("132199");
         allowMockAdapterToReturn(bigInt);
 
-        configurationBuilderForTesting
-        .put("isis.value.format.int", null);
+        _Config.put("isis.value.format.int", null);
 
         holder = new FacetHolderImpl();
         setValue(new BigIntegerValueSemanticsProvider(holder, 
mockServicesInjector));
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ByteValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ByteValueSemanticsProviderTest.java
index 37c7cbf..4fa072d 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ByteValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ByteValueSemanticsProviderTest.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.value;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
@@ -44,8 +45,7 @@ public class ByteValueSemanticsProviderTest extends 
ValueSemanticsProviderAbstra
         allowMockAdapterToReturn(byteObj);
         holder = new FacetHolderImpl();
 
-        configurationBuilderForTesting
-        .put("isis.value.format.byte", null);
+        _Config.put("isis.value.format.byte", null);
         
         setValue(value = new ByteWrapperValueSemanticsProvider(holder, 
mockServicesInjector));
     }
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/DoubleValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/DoubleValueSemanticsProviderTest.java
index 7860611..2b2cddd 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/DoubleValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/DoubleValueSemanticsProviderTest.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.value;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
@@ -39,8 +40,7 @@ public class DoubleValueSemanticsProviderTest extends 
ValueSemanticsProviderAbst
     @Before
     public void setUpObjects() throws Exception {
         
-        configurationBuilderForTesting
-        .put("isis.value.format.double", null);
+        _Config.put("isis.value.format.double", null);
 
         holder = new FacetHolderImpl();
         setValue(new DoubleWrapperValueSemanticsProvider(holder, 
mockServicesInjector));
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/FloatValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/FloatValueSemanticsProviderTest.java
index 4e04a5b..a75608f 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/FloatValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/FloatValueSemanticsProviderTest.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.value;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
@@ -40,8 +41,7 @@ public class FloatValueSemanticsProviderTest extends 
ValueSemanticsProviderAbstr
     @Before
     public void setUpObjects() throws Exception {
         
-        configurationBuilderForTesting
-        .put("isis.value.format.float", null);
+        _Config.put("isis.value.format.float", null);
 
         float1 = new Float(32.5f);
         allowMockAdapterToReturn(float1);
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/IntValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/IntValueSemanticsProviderTest.java
index 34e6a90..01c83f6b 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/IntValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/IntValueSemanticsProviderTest.java
@@ -19,19 +19,19 @@
 
 package org.apache.isis.core.metamodel.facets.value;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import org.jmock.Expectations;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
 import 
org.apache.isis.core.metamodel.facets.value.integer.IntValueSemanticsProviderAbstract;
 import 
org.apache.isis.core.metamodel.facets.value.integer.IntWrapperValueSemanticsProvider;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
 public class IntValueSemanticsProviderTest extends 
ValueSemanticsProviderAbstractTestCase {
 
     private IntValueSemanticsProviderAbstract value;
@@ -43,8 +43,7 @@ public class IntValueSemanticsProviderTest extends 
ValueSemanticsProviderAbstrac
         integer = Integer.valueOf(32);
         allowMockAdapterToReturn(integer);
 
-        configurationBuilderForTesting
-        .put("isis.value.format.int", null);
+        _Config.put("isis.value.format.int", null);
         
         holder = new FacetHolderImpl();
         setValue(value = new IntWrapperValueSemanticsProvider(holder, 
mockServicesInjector));
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java
index 89f841b..5b0ab84 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java
@@ -28,6 +28,7 @@ import java.util.TimeZone;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
@@ -45,8 +46,7 @@ public class JavaSqlDateValueSemanticsProviderTest extends 
ValueSemanticsProvide
     @Before
     public void setUpObjects() throws Exception {
         
-        configurationBuilderForTesting
-        .put("isis.value.format.date", null);
+        _Config.put("isis.value.format.date", null);
 
         TestClock.initialize();
         date = new Date(0);
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlTimeValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlTimeValueSemanticsProviderTest.java
index a503dff..efc91cd 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlTimeValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlTimeValueSemanticsProviderTest.java
@@ -27,6 +27,7 @@ import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.value.timesql.JavaSqlTimeValueSemanticsProvider;
@@ -42,8 +43,7 @@ public class JavaSqlTimeValueSemanticsProviderTest extends 
ValueSemanticsProvide
     @Before
     public void setUpObjects() throws Exception {
         
-        configurationBuilderForTesting
-        .put("isis.value.format.time", null);
+        _Config.put("isis.value.format.time", null);
 
         final Calendar c = Calendar.getInstance();
         c.setTimeZone(TimeZone.getTimeZone("GMT"));
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java
index 7d58e66..f2a69ba 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java
@@ -27,6 +27,7 @@ import java.util.TimeZone;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
@@ -43,9 +44,7 @@ public class JavaUtilDateValueSemanticsProviderTest extends 
ValueSemanticsProvid
     @Before
     public void setUpObjects() throws Exception {
         
-        configurationBuilderForTesting
-        .put("isis.value.format.datetime", null);
-
+        _Config.put("isis.value.format.datetime", null);
 
         TestClock.initialize();
         date = new java.util.Date(0);
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/LongValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/LongValueSemanticsProviderTest.java
index 2a15e47..0f9d368 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/LongValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/LongValueSemanticsProviderTest.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.value;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
@@ -44,8 +45,7 @@ public class LongValueSemanticsProviderTest extends 
ValueSemanticsProviderAbstra
         allowMockAdapterToReturn(longObj);
         holder = new FacetHolderImpl();
 
-        configurationBuilderForTesting
-        .put("isis.value.format.long", null);
+        _Config.put("isis.value.format.long", null);
 
         setValue(value = new LongWrapperValueSemanticsProvider(holder, 
mockServicesInjector));
     }
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/PercentageValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/PercentageValueSemanticsProviderTest.java
index 8c50a4f..e1a4cd5 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/PercentageValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/PercentageValueSemanticsProviderTest.java
@@ -23,6 +23,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import org.apache.isis.applib.value.Percentage;
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.value.percentage.PercentageValueSemanticsProvider;
@@ -37,8 +38,7 @@ public class PercentageValueSemanticsProviderTest extends 
ValueSemanticsProvider
     @Before
     public void setUpObjects() throws Exception {
         
-        configurationBuilderForTesting
-        .put("isis.value.format.percentage", null);
+        _Config.put("isis.value.format.percentage", null);
 
         percentage = new Percentage(0.105f);
         allowMockAdapterToReturn(percentage);
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ShortValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ShortValueSemanticsProviderTest.java
index e608e9c..c755569 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ShortValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ShortValueSemanticsProviderTest.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.value;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import 
org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
@@ -40,8 +41,7 @@ public class ShortValueSemanticsProviderTest extends 
ValueSemanticsProviderAbstr
     @Before
     public void setUpObjects() throws Exception {
 
-        configurationBuilderForTesting
-        .put("isis.value.format.short", null);
+        _Config.put("isis.value.format.short", null);
         
         short1 = Short.valueOf((short) 32);
         allowMockAdapterToReturn(short1);
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
index 06e3c5e..c498ba0 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
@@ -31,7 +31,6 @@ import org.junit.Test;
 
 import org.apache.isis.config.internal._Config;
 import 
org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
@@ -74,13 +73,11 @@ public abstract class 
ValueSemanticsProviderAbstractTestCase {
     @Mock
     protected ObjectAdapter mockAdapter;
     
-    protected IsisConfigurationBuilder configurationBuilderForTesting;
-
     @Before
     public void setUp() throws Exception {
-        Locale.setDefault(Locale.UK);
         
-        configurationBuilderForTesting = 
_Config.configurationBuilderForTesting();
+        _Config.clear();
+        Locale.setDefault(Locale.UK);
         
         context.checking(new Expectations() {
             {
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProviderTest.java
index e69a7e3..dac7f34 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProviderTest.java
@@ -25,7 +25,6 @@ import org.junit.Rule;
 import org.junit.Test;
 
 import org.apache.isis.config.internal._Config;
-import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -50,8 +49,9 @@ public class JodaLocalDateTimeValueSemanticsProviderTest {
     @Before
     public void setUp() throws Exception {
         
-        IsisConfigurationBuilder configBilder = 
_Config.configurationBuilderForTesting();
-        configBilder.put("isis.value.format.datetime", "iso_encoding");
+        _Config.acceptBuilder(config->{
+            config.put("isis.value.format.datetime", "iso_encoding");
+        });
         
         provider = new 
JodaLocalDateTimeValueSemanticsProvider(mockFacetHolder, mockServicesInjector);
 
diff --git 
a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
 
b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 64b36ed..5322707 100644
--- 
a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ 
b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -304,8 +304,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         allowingEmployeeHasSmithAdapter();
 
-        _Config.configurationBuilderForTesting()
-        .put("isis.reflector.facet.filterVisibility", "true");
+        _Config.put("isis.reflector.facet.filterVisibility", true);
         
         context.checking(new Expectations() {{
 
@@ -344,8 +343,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         allowingJonesStringValueAdapter();
         
-        _Config.configurationBuilderForTesting()
-        .put("isis.reflector.facet.filterVisibility", "true");
+        _Config.put("isis.reflector.facet.filterVisibility", true);
 
         context.checking(new Expectations() {
             {
diff --git 
a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
 
b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index ad88e83..16e2069 100644
--- 
a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ 
b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -305,8 +305,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         allowingEmployeeHasSmithAdapter();
         
-        _Config.configurationBuilderForTesting()
-        .put("isis.reflector.facet.filterVisibility", "true");
+        _Config.put("isis.reflector.facet.filterVisibility", true);
 
         context.checking(new Expectations() {{
 
@@ -345,8 +344,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         allowingJonesStringValueAdapter();
         
-        _Config.configurationBuilderForTesting()
-        .put("isis.reflector.facet.filterVisibility", "true");
+        _Config.put("isis.reflector.facet.filterVisibility", true);
 
         context.checking(new Expectations() {
             {
diff --git 
a/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_authenticate.java
 
b/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_authenticate.java
index 0e38806..49fb419 100644
--- 
a/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_authenticate.java
+++ 
b/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_authenticate.java
@@ -32,7 +32,6 @@ import org.junit.Test;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 import 
org.apache.isis.core.runtime.authentication.AuthenticationRequestPassword;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -55,8 +54,7 @@ public class ShiroAuthenticatorOrAuthorizorTest_authenticate {
         
         // PRODUCTION
 
-        IsisConfigurationBuilder configBuilder = 
_Config.configurationBuilderForTesting();
-        
configBuilder.add("isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated", 
"false");
+        
_Config.put("isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated", 
false);
        
                authOrAuth = new ShiroAuthenticatorOrAuthorizor();
        authOrAuth.init();
diff --git 
a/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_isVisibleInAnyRole.java
 
b/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_isVisibleInAnyRole.java
index 49f5910..ac3d889 100644
--- 
a/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_isVisibleInAnyRole.java
+++ 
b/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_isVisibleInAnyRole.java
@@ -33,7 +33,6 @@ import org.junit.Test;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 import 
org.apache.isis.core.runtime.authentication.AuthenticationRequestPassword;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -57,8 +56,7 @@ public class 
ShiroAuthenticatorOrAuthorizorTest_isVisibleInAnyRole {
        
         // PRODUCTION
         
-        IsisConfigurationBuilder configBuilder = 
_Config.configurationBuilderForTesting();
-        
configBuilder.add("isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated", 
"false");
+        
_Config.put("isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated", 
false);
        
         authOrAuth = new ShiroAuthenticatorOrAuthorizor();
         authOrAuth.init();
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
index 2bd00cc..bafa37a 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
@@ -111,13 +111,13 @@ public class ServicesInstallerFromAnnotation extends 
ServicesInstallerAbstract {
             return;
         }
 
-        final IsisConfiguration configuration = 
_Config.getConfigurationElseThrow();
-        
         try {
 
             if(packagePrefixes == null) {
                 this.packagePrefixes = PACKAGE_PREFIX_STANDARD;
-                String packagePrefixes = 
configuration.getString(PACKAGE_PREFIX_KEY);
+                String packagePrefixes = 
+                        
_Config.applyConfig(config->config.getString(PACKAGE_PREFIX_KEY));
+                        
                 if(!_Strings.isNullOrEmpty(packagePrefixes)) {
                     this.packagePrefixes = this.packagePrefixes + "," + 
packagePrefixes;
                 }
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
index f37d3f9..f0241d4 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
@@ -58,27 +58,11 @@ public class ServicesInstallerFromConfiguration extends 
ServicesInstallerAbstrac
 
     // //////////////////////////////////////
 
-
     @Override
     public void init() {
-        initIfRequired();
-    }
-
-    private boolean initialized = false;
-
-    protected void initIfRequired() {
-        if(initialized) {
-            return;
-        }
-        try {
-            // ensure we have a config
-            _Config.getConfigurationElseThrow();
-        } finally {
-            initialized = true;
-        }
+        // nothing to do
     }
 
-
     // //////////////////////////////////////
 
     private List<Object> serviceList;
@@ -109,7 +93,7 @@ public class ServicesInstallerFromConfiguration extends 
ServicesInstallerAbstrac
     private void appendConfiguredServices(
             final SortedMap<String, SortedSet<String>> positionedServices) {
 
-        final String configuredServices = 
_Config.getConfigurationElseThrow().getString(SERVICES_KEY);
+        final String configuredServices = 
_Config.getConfiguration().getString(SERVICES_KEY);
         if (configuredServices == null) {
             return;
         }

Reply via email to