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 2016/05/20 13:33:41 UTC

[06/51] [abbrv] isis git commit: ISIS-1406: refactoring IsisConfigurationBuilder and IsisConfiguration (WIP)

ISIS-1406: refactoring IsisConfigurationBuilder and IsisConfiguration (WIP)


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/dcaab8ea
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/dcaab8ea
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/dcaab8ea

Branch: refs/heads/master
Commit: dcaab8ead2a2bf2fd64d1e55ca69dc43c3a7297e
Parents: 62f5ad7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu May 19 09:41:30 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu May 19 09:41:30 2016 +0100

----------------------------------------------------------------------
 ...IsisConfigurationBuilderResourceStreams.java | 39 ++++++++-
 .../installerregistry/InstallerLookup.java      | 92 +++-----------------
 .../core/runtime/runner/IsisInjectModule.java   | 46 +++-------
 .../isis/core/runtime/runner/IsisRunner.java    | 45 +++++++---
 .../isis/core/runtime/system/IsisSystem.java    |  3 +-
 .../IsisComponentProviderDefault2.java          |  2 +-
 .../IsisComponentProviderUsingInstallers.java   |  6 +-
 .../core/webapp/IsisWebAppBootstrapper.java     | 27 +++---
 .../core/webapp/IsisWebAppBootstrapperUtil.java | 52 -----------
 .../wicket/viewer/IsisWicketApplication.java    | 13 ++-
 .../core/webserver/WebServerBootstrapper.java   |  2 -
 11 files changed, 119 insertions(+), 208 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationBuilderResourceStreams.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationBuilderResourceStreams.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationBuilderResourceStreams.java
index 48c282e..695cfd9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationBuilderResourceStreams.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationBuilderResourceStreams.java
@@ -105,12 +105,39 @@ public class IsisConfigurationBuilderResourceStreams implements IsisConfiguratio
         configuration = new IsisConfigurationDefault(resourceStreamSource);
     }
 
-    /**
-     * May be overridden by subclasses if required.
-     */
     public void addDefaultConfigurationResources() {
         addConfigurationResource(ConfigurationConstants.DEFAULT_CONFIG_FILE, NotFoundPolicy.FAIL_FAST);
-        addConfigurationResource(ConfigurationConstants.WEB_CONFIG_FILE, NotFoundPolicy.CONTINUE);
+        addConfigurationResource(ConfigurationConstants.WEB_CONFIG_FILE, NotFoundPolicy.CONTINUE); //web.properties
+        addConfigurationResource("war.properties", NotFoundPolicy.CONTINUE);
+
+        addConfigurationResource("viewer_wicket.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("viewer_restful.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("viewer_restfulobjects.properties", NotFoundPolicy.CONTINUE);
+
+        addConfigurationResource("persistor_datanucleus.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("persistor.properties", NotFoundPolicy.CONTINUE);
+
+        addConfigurationResource("authentication_shiro.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("authentication_bypass.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("authentication.properties", NotFoundPolicy.CONTINUE);
+
+        addConfigurationResource("authorization_shiro.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("authorization_bypass.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("authorization.properties", NotFoundPolicy.CONTINUE);
+
+        addConfigurationResource("reflector_java.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("reflector.properties", NotFoundPolicy.CONTINUE);
+
+        addConfigurationResource("fixtures-installer_configuration.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("fixtures-installer_noop.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("fixtures-installer.properties", NotFoundPolicy.CONTINUE);
+
+        addConfigurationResource("services-installer_annotation.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("services-installer_configuration.properties", NotFoundPolicy.CONTINUE);
+
+        addConfigurationResource("services-installer_configuration-and-annotation.properties", NotFoundPolicy.CONTINUE);
+        addConfigurationResource("services-installer.properties", NotFoundPolicy.CONTINUE);
+
     }
 
     // ////////////////////////////////////////////////////////////
@@ -174,6 +201,10 @@ public class IsisConfigurationBuilderResourceStreams implements IsisConfiguratio
      */
     @Override
     public synchronized IsisConfigurationDefault getConfiguration() {
+        if(!locked) {
+            lockConfiguration();
+            dumpResourcesToLog();
+        }
         return configuration;
      }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
index 2124c1f..93c01c6 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
@@ -27,7 +27,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 import com.google.common.collect.Lists;
-import com.google.inject.Inject;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,10 +34,8 @@ import org.slf4j.LoggerFactory;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.components.Installer;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilderAware;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.commons.config.NotFoundPolicy;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.ensure.Ensure;
 import org.apache.isis.core.commons.exceptions.IsisException;
@@ -90,15 +87,19 @@ import static org.hamcrest.CoreMatchers.nullValue;
  * even if it has not been registered in <tt>installer-registry.properties</tt>
  * : just specify the {@link Installer}'s fully qualified class name.
  */
-public class InstallerLookup implements InstallerRepository, ApplicationScopedComponent, IsisConfigurationBuilderAware, SystemDependencyInjector {
+public class InstallerLookup implements InstallerRepository, ApplicationScopedComponent, SystemDependencyInjector {
 
     private static final Logger LOG = LoggerFactory.getLogger(InstallerLookup.class);
 
+    private final IsisConfigurationDefault isisConfiguration;
+
     //region > Constructor
 
     private final List<Installer> installerList = Lists.newArrayList();
 
-    public InstallerLookup() {
+    public InstallerLookup(final IsisConfigurationDefault isisConfiguration) {
+        this.isisConfiguration = isisConfiguration;
+
         final InputStream in = getInstallerRegistryStream(IsisInstallerRegistry.INSTALLER_REGISTRY_FILE);
         final BufferedReader reader = new BufferedReader(new InputStreamReader(in));
         try {
@@ -135,11 +136,14 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
 
     //endregion
 
+    //region > Configuration
+    public IsisConfigurationDefault getConfiguration() {
+        return isisConfiguration;
+    }
+    //endregion
+
     //region > InstallerRepository impl.
-    /**
-     * This method (and only this method) may be called prior to {@link #init()
-     * initialization}.
-     */
+
     @Override
     public Installer[] getInstallers(final Class<?> cls) {
         final List<Installer> list = new ArrayList<Installer>();
@@ -152,19 +156,6 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
     }
     //endregion
 
-    //region > init, shutdown
-    public void init() {
-        ensureDependenciesInjected();
-    }
-
-    private void ensureDependenciesInjected() {
-        Ensure.ensureThatState(isisConfigurationBuilder, is(not(nullValue())));
-    }
-
-    public void shutdown() {
-        // nothing to do.
-    }
-    //endregion
 
     //region > metamodel
     public ObjectReflectorInstaller reflectorInstaller(final String requested) {
@@ -216,7 +207,6 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
         Assert.assertNotNull("No name specified", implName);
         for (final Installer installer : installerList) {
             if (cls.isAssignableFrom(installer.getClass()) && installer.getName().equals(implName)) {
-                mergeConfigurationFor(installer);
                 injectDependenciesInto(installer);
                 return (T) installer;
             }
@@ -229,23 +219,6 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
         try {
             final Installer installer = ObjectExtensions.asT(InstanceUtil.createInstance(implClassName));
             if (installer != null) {
-                mergeConfigurationFor(installer);
-                injectDependenciesInto(installer);
-            }
-            return installer;
-        } catch (final InstanceCreationException e) {
-            throw new InstanceCreationException("Specification error in " + IsisInstallerRegistry.INSTALLER_REGISTRY_FILE, e);
-        } catch (final UnavailableClassException e) {
-            return null;
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T extends Installer> T getInstaller(final Class<T> installerCls) {
-        try {
-            final T installer = (T) (InstanceUtil.createInstance(installerCls));
-            if (installer != null) {
-                mergeConfigurationFor(installer);
                 injectDependenciesInto(installer);
             }
             return installer;
@@ -292,28 +265,6 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
     }
     //endregion
 
-    //region > Configuration
-    /**
-     * Returns a <i>snapshot</i> of the current {@link IsisConfiguration}.
-     *
-     * <p>
-     * The {@link IsisConfiguration} could subsequently be appended to if
-     * further {@link Installer}s are loaded.
-     */
-    public IsisConfigurationDefault getConfiguration() {
-        return isisConfigurationBuilder.getConfiguration();
-    }
-
-    public void mergeConfigurationFor(final Installer installer) {
-        for (final String installerConfigResource : installer.getConfigurationResources()) {
-            isisConfigurationBuilder.addConfigurationResource(installerConfigResource, NotFoundPolicy.CONTINUE);
-        }
-    }
-
-    public void putConfigurationProperty(final String key, final String value) {
-        isisConfigurationBuilder.put(key, value);
-    }
-    //endregion
 
     //region > SystemDependencyInjector, Injectable
     @Override
@@ -331,25 +282,8 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
             final InstallerLookupAware cast = InstallerLookupAware.class.cast(candidate);
             cast.setInstallerLookup(this);
         }
-        isisConfigurationBuilder.injectInto(candidate);
     }
     //endregion
 
-    //region > Dependencies (injected)
-
-    /**
-     * A mutable representation of the {@link IsisConfiguration configuration},
-     * injected prior to {@link #init()}.
-     *
-     * @see #setConfigurationBuilder(IsisConfigurationBuilder)
-     */
-    private IsisConfigurationBuilder isisConfigurationBuilder;
-
-    @Override
-    @Inject
-    public void setConfigurationBuilder(final IsisConfigurationBuilder configurationLoader) {
-        this.isisConfigurationBuilder = configurationLoader;
-    }
-    //endregion
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java
index e83a31f..efba9e8 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java
@@ -25,8 +25,8 @@ import com.google.inject.Provides;
 import com.google.inject.Singleton;
 
 import org.apache.isis.applib.AppManifest;
-import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
-import org.apache.isis.core.commons.config.IsisConfigurationBuilderDefault;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.IsisSystem;
@@ -36,31 +36,13 @@ public class IsisInjectModule extends AbstractModule {
 
     private final DeploymentType deploymentType;
     private final InstallerLookup installerLookup;
-    private final IsisConfigurationBuilder isisConfigurationBuilder;
+    private final IsisConfiguration isisConfiguration;
 
-    private static InstallerLookup defaultInstallerLookup() {
-        return new InstallerLookup();
-    }
-
-    private static IsisConfigurationBuilderDefault defaultConfigurationBuilder() {
-        return new IsisConfigurationBuilderDefault();
-    }
-
-    public IsisInjectModule(final DeploymentType deploymentType) {
-        this(deploymentType, defaultConfigurationBuilder(), defaultInstallerLookup());
-    }
-
-    public IsisInjectModule(final DeploymentType deploymentType, final IsisConfigurationBuilder isisConfigurationBuilder) {
-        this(deploymentType, isisConfigurationBuilder, defaultInstallerLookup());
-    }
-
-    public IsisInjectModule(final DeploymentType deploymentType, final InstallerLookup installerLookup) {
-        this(deploymentType, defaultConfigurationBuilder(), installerLookup);
-    }
-
-    public IsisInjectModule(final DeploymentType deploymentType, final IsisConfigurationBuilder isisConfigurationBuilder, final InstallerLookup installerLookup) {
-        this.installerLookup = installerLookup;
-        this.isisConfigurationBuilder = isisConfigurationBuilder;
+    public IsisInjectModule(
+            final DeploymentType deploymentType,
+            final IsisConfigurationDefault isisConfiguration) {
+        this.installerLookup = new InstallerLookup(isisConfiguration);
+        this.isisConfiguration = isisConfiguration;
         this.deploymentType = deploymentType;
     }
 
@@ -80,8 +62,8 @@ public class IsisInjectModule extends AbstractModule {
     @SuppressWarnings("unused")
     @Provides
     @Singleton
-    private IsisConfigurationBuilder providesConfigurationBuilder() {
-        return isisConfigurationBuilder;
+    private IsisConfiguration providesConfiguration() {
+        return isisConfiguration;
     }
 
     /**
@@ -91,17 +73,14 @@ public class IsisInjectModule extends AbstractModule {
     @Provides
     @Singleton
     @Inject
-    private InstallerLookup providesInstallerLookup(final IsisConfigurationBuilder configBuilder) {
-        // wire up and initialize installer lookup
-        configBuilder.injectInto(installerLookup);
-        installerLookup.init();
+    private InstallerLookup providesInstallerLookup() {
         return installerLookup;
     }
 
     @Override
     protected void configure() {
         requireBinding(DeploymentType.class);
-        requireBinding(IsisConfigurationBuilder.class);
+        requireBinding(IsisConfiguration.class);
         requireBinding(InstallerLookup.class);
         bind(AppManifest.class).toInstance(IsisSystemFactory.APP_MANIFEST_NOOP);
     }
@@ -117,6 +96,7 @@ public class IsisInjectModule extends AbstractModule {
 
         final IsisSystemFactory systemFactory = new IsisSystemFactory(installerLookup);
         final IsisSystem system = systemFactory.createSystem(deploymentType, appManifestIfAny);
+
         // as a side-effect, if the metamodel turns out to be invalid, then
         // this will push the MetaModelInvalidException into IsisContext.
         system.init();

http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisRunner.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisRunner.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisRunner.java
index 29f560e..b9d3364 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisRunner.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisRunner.java
@@ -22,22 +22,38 @@ package org.apache.isis.core.runtime.runner;
 import java.io.File;
 import java.util.Collections;
 import java.util.List;
+
 import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import org.apache.commons.cli.*;
+
+import org.apache.commons.cli.BasicParser;
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import org.apache.isis.core.commons.config.ConfigurationConstants;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilderDefault;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilderPrimer;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
 import org.apache.isis.core.runtime.logging.IsisLoggingConfigurer;
 import org.apache.isis.core.runtime.optionhandler.BootPrinter;
 import org.apache.isis.core.runtime.optionhandler.OptionHandler;
-import org.apache.isis.core.runtime.runner.opts.*;
+import org.apache.isis.core.runtime.runner.opts.OptionHandlerAdditionalProperty;
+import org.apache.isis.core.runtime.runner.opts.OptionHandlerAppManifest;
+import org.apache.isis.core.runtime.runner.opts.OptionHandlerConfiguration;
+import org.apache.isis.core.runtime.runner.opts.OptionHandlerDeploymentType;
+import org.apache.isis.core.runtime.runner.opts.OptionHandlerFixture;
+import org.apache.isis.core.runtime.runner.opts.OptionHandlerFixtureFromEnvironmentVariable;
+import org.apache.isis.core.runtime.runner.opts.OptionHandlerHelp;
+import org.apache.isis.core.runtime.runner.opts.OptionHandlerSystemProperties;
+import org.apache.isis.core.runtime.runner.opts.OptionHandlerVersion;
 import org.apache.isis.core.runtime.runner.opts.OptionValidator;
 import org.apache.isis.core.runtime.system.DeploymentType;
 
@@ -49,13 +65,14 @@ public class IsisRunner {
 
     private final String[] args;
     private final OptionHandlerDeploymentType optionHandlerDeploymentType;
-    private final InstallerLookup installerLookup;
 
     private final List<OptionHandler> optionHandlers = Lists.newArrayList();
     private final List<OptionValidator> validators = Lists.newArrayList();
+
     private IsisConfigurationBuilder isisConfigurationBuilder;
+    private InstallerLookup installerLookup;
 
-    private Injector globalInjector;;
+    private Injector globalInjector;
 
     // ///////////////////////////////////////////////////////////////////////////////////////
     // Construction and adjustments
@@ -67,9 +84,8 @@ public class IsisRunner {
 
         // setup logging immediately
         loggingConfigurer.configureLogging(determineConfigDirectory(), args);
-        this.installerLookup = new InstallerLookup();
 
-        addStandardOptionHandlersAndValidators(this.installerLookup);
+        addStandardOptionHandlersAndValidators();
     }
 
     // REVIEW is this something that IsisConfigBuilder should know about?
@@ -121,6 +137,8 @@ public class IsisRunner {
      */
     public void setConfigurationBuilder(final IsisConfigurationBuilder isisConfigurationBuilder) {
         this.isisConfigurationBuilder = isisConfigurationBuilder;
+        this.installerLookup = new InstallerLookup(isisConfigurationBuilder.getConfiguration());
+
     }
 
     // ///////////////////////////////////////////////////////////////////////////////////////
@@ -201,15 +219,18 @@ public class IsisRunner {
 
         final DeploymentType deploymentType = optionHandlerDeploymentType.getDeploymentType();
 
-        this.globalInjector = createGuiceInjector(deploymentType, isisConfigurationBuilder, installerLookup, optionHandlers);
+        IsisConfigurationDefault isisConfiguration = isisConfigurationBuilder.getConfiguration();
+
+        this.globalInjector = createGuiceInjector(deploymentType, isisConfiguration);
 
         bootstrapper.bootstrap(globalInjector);
-        isisConfigurationBuilder.lockConfiguration();
-        isisConfigurationBuilder.dumpResourcesToLog();
     }
 
-    private Injector createGuiceInjector(final DeploymentType deploymentType, final IsisConfigurationBuilder isisConfigurationBuilder, final InstallerLookup installerLookup, final List<OptionHandler> optionHandlers) {
-        final IsisInjectModule isisModule = new IsisInjectModule(deploymentType, isisConfigurationBuilder, installerLookup);
+    private Injector createGuiceInjector(
+            final DeploymentType deploymentType,
+            final IsisConfigurationDefault isisConfiguration) {
+        final IsisInjectModule isisModule =
+                new IsisInjectModule(deploymentType, isisConfiguration);
         return Guice.createInjector(isisModule);
     }
 
@@ -221,7 +242,7 @@ public class IsisRunner {
         return Collections.unmodifiableList(optionHandlers);
     }
 
-    private void addStandardOptionHandlersAndValidators(final InstallerLookup installerLookup) {
+    private void addStandardOptionHandlersAndValidators() {
         addOptionHandler(optionHandlerDeploymentType);
         addOptionHandler(new OptionHandlerConfiguration());
 

http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
index 45a6e90..04b2f5c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
@@ -145,7 +145,8 @@ public class IsisSystem implements ApplicationScopedComponent {
         try {
 
             // configuration
-            final IsisConfigurationDefault configuration = isisComponentProvider.getConfiguration();
+            // TODO: HACKY
+            final IsisConfigurationDefault configuration = (IsisConfigurationDefault) isisComponentProvider.getConfiguration();
 
             // services
             ServicesInjectorDefault servicesInjector = isisComponentProvider.provideServiceInjector();

http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
index 3b8671f..159e2ac 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
@@ -121,7 +121,7 @@ public class IsisComponentProviderDefault2 extends IsisComponentProviderAbstract
     @Override
     protected void doPutConfigurationProperty(final String key, final String value) {
         // bit hacky :-(
-        IsisConfigurationDefault configurationDefault = this.configuration;
+        IsisConfigurationDefault configurationDefault = (IsisConfigurationDefault) this.configuration;
         configurationDefault.put(key, value);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
index 2c99632..9d00f39 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
@@ -24,6 +24,8 @@ import java.util.List;
 
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
@@ -107,7 +109,6 @@ public class IsisComponentProviderUsingInstallers extends IsisComponentProviderA
         reflectorInstaller = this.installerLookup.reflectorInstaller(
                 configProperty(SystemConstants.REFLECTOR_KEY));
 
-
         // ensure we were able to load all components via InstallerLookup (fail fast)
         ensureThatState(authenticationInstaller, is(not(nullValue())),
                 "authenticationInstaller could not be looked up");
@@ -150,7 +151,8 @@ public class IsisComponentProviderUsingInstallers extends IsisComponentProviderA
     }
 
     protected void doPutConfigurationProperty(final String key, final String value) {
-        this.installerLookup.putConfigurationProperty(key, value);
+        IsisConfigurationDefault configuration = (IsisConfigurationDefault) this.installerLookup.getConfiguration();
+        configuration.put(key, value);
     }
     //endregion
 

http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
index e989fb4..cfcab14 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
@@ -35,6 +35,7 @@ import org.slf4j.LoggerFactory;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilderPrimer;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilderResourceStreams;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.config.NotFoundPolicy;
 import org.apache.isis.core.commons.resource.ResourceStreamSourceComposite;
 import org.apache.isis.core.commons.resource.ResourceStreamSourceContextLoaderClassPath;
@@ -106,21 +107,20 @@ public class IsisWebAppBootstrapper implements ServletContextListener {
 
             final DeploymentType deploymentType = determineDeploymentType(isisConfigurationBuilder, servletContext);
 
-            addConfigurationResourcesForWebApps(isisConfigurationBuilder);
             addConfigurationResourcesForDeploymentType(isisConfigurationBuilder, deploymentType);
-            IsisWebAppBootstrapperUtil.addConfigurationResourcesForViewers(isisConfigurationBuilder, servletContext);
 
             isisConfigurationBuilder.add(WebAppConstants.WEB_APP_DIR, webappDir);
+
             isisConfigurationBuilder.add(SystemConstants.NOSPLASH_KEY, "true");
 
-            final InstallerLookup installerLookup = new InstallerLookup();
+            IsisConfigurationDefault isisConfiguration = isisConfigurationBuilder.getConfiguration();
+
+            final InstallerLookup installerLookup = new InstallerLookup(isisConfiguration);
 
-            injector = createGuiceInjector(isisConfigurationBuilder, deploymentType, installerLookup);
+            injector = createGuiceInjector(isisConfiguration, deploymentType);
 
             final IsisSystem system = injector.getInstance(IsisSystem.class);
 
-            isisConfigurationBuilder.lockConfiguration();
-            isisConfigurationBuilder.dumpResourcesToLog();
 
             servletContext.setAttribute(WebAppConstants.ISIS_SYSTEM_KEY, system);
         } catch (final RuntimeException e) {
@@ -131,10 +131,9 @@ public class IsisWebAppBootstrapper implements ServletContextListener {
     }
 
     private Injector createGuiceInjector(
-            final IsisConfigurationBuilder isisConfigurationBuilder,
-            final DeploymentType deploymentType,
-            final InstallerLookup installerLookup) {
-        final IsisInjectModule isisModule = new IsisInjectModule(deploymentType, isisConfigurationBuilder, installerLookup);
+            final IsisConfigurationDefault isisConfiguration,
+            final DeploymentType deploymentType) {
+        final IsisInjectModule isisModule = new IsisInjectModule(deploymentType, isisConfiguration);
         return Guice.createInjector(isisModule);
     }
 
@@ -163,7 +162,9 @@ public class IsisWebAppBootstrapper implements ServletContextListener {
      * <p>
      * If no setting is found, defaults to {@link WebAppConstants#DEPLOYMENT_TYPE_DEFAULT}.
      */
-    private DeploymentType determineDeploymentType(final IsisConfigurationBuilder isisConfigurationBuilder, final ServletContext servletContext) {
+    private DeploymentType determineDeploymentType(
+            final IsisConfigurationBuilder isisConfigurationBuilder,
+            final ServletContext servletContext) {
         String deploymentTypeStr = servletContext.getInitParameter(WebAppConstants.DEPLOYMENT_TYPE_KEY);
         if (deploymentTypeStr == null) {
             deploymentTypeStr = servletContext.getInitParameter(SystemConstants.DEPLOYMENT_TYPE_KEY);
@@ -184,10 +185,6 @@ public class IsisWebAppBootstrapper implements ServletContextListener {
         configurationLoader.addConfigurationResource(resourceName, NotFoundPolicy.CONTINUE);
     }
 
-    private static void addConfigurationResourcesForWebApps(final IsisConfigurationBuilder configurationLoader) {
-        configurationLoader.addConfigurationResource("web.properties", NotFoundPolicy.CONTINUE);
-        configurationLoader.addConfigurationResource("war.properties", NotFoundPolicy.CONTINUE);
-    }
 
     // /////////////////////////////////////////////////////
     // Destroy

http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapperUtil.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapperUtil.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapperUtil.java
deleted file mode 100644
index d859b56..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapperUtil.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *  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.core.webapp;
-
-import javax.servlet.ServletContext;
-
-import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
-import org.apache.isis.core.commons.config.NotFoundPolicy;
-
-
-/**
- * Factored out of {@link IsisWebAppBootstrapper} in order that can
- * be reused by other bootstrappers (eg the wicket viewer's
- * <tt>IsisWicketApplication</tt>).
- */
-public final class IsisWebAppBootstrapperUtil {
-    
-    private IsisWebAppBootstrapperUtil(){}
-
-    public static void addConfigurationResourcesForViewers(final IsisConfigurationBuilder configurationLoader, final ServletContext servletContext) {
-        addConfigurationResourcesForContextParam(configurationLoader, servletContext, "isis.viewers");
-        addConfigurationResourcesForContextParam(configurationLoader, servletContext, "isis.viewer");
-    }
-
-    private static void addConfigurationResourcesForContextParam(final IsisConfigurationBuilder configurationLoader, final ServletContext servletContext, final String name) {
-        final String viewers = servletContext.getInitParameter(name);
-        if (viewers == null) {
-            return;
-        }
-        for (final String viewer : viewers.split(",")) {
-            configurationLoader.addConfigurationResource("viewer_" + viewer + ".properties", NotFoundPolicy.CONTINUE);
-        }
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index 9781237..09ec550 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -64,6 +64,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilderPrimer;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilderResourceStreams;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.resource.ResourceStreamSourceComposite;
 import org.apache.isis.core.commons.resource.ResourceStreamSourceContextLoaderClassPath;
 import org.apache.isis.core.commons.resource.ResourceStreamSourceCurrentClassClassPath;
@@ -77,7 +78,6 @@ import org.apache.isis.core.runtime.runner.opts.OptionHandlerInitParameters;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.IsisSystem;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.webapp.IsisWebAppBootstrapperUtil;
 import org.apache.isis.core.webapp.WebAppConstants;
 import org.apache.isis.core.webapp.config.ResourceStreamSourceForWebInf;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
@@ -253,8 +253,9 @@ public class IsisWicketApplication
             requestCycleListeners.add(new PageRequestHandlerTracker());
 
             final IsisConfigurationBuilder isisConfigurationBuilder = createConfigBuilder();
-    
-            final IsisInjectModule isisModule = newIsisModule(deploymentType, isisConfigurationBuilder);
+            final IsisConfigurationDefault configuration = isisConfigurationBuilder.getConfiguration();
+
+            final IsisInjectModule isisModule = newIsisModule(deploymentType, configuration);
             final Injector injector = Guice.createInjector(isisModule, newIsisWicketModule());
             initWicketComponentInjection(injector);
             injector.injectMembers(this);
@@ -264,7 +265,6 @@ public class IsisWicketApplication
                 webRequestCycleForIsis.setPageClassRegistry(pageClassRegistry);
             }
             
-            final IsisConfiguration configuration = isisConfigurationBuilder.getConfiguration();
             this.getMarkupSettings().setStripWicketTags(determineStripWicketTags(configuration));
 
             getDebugSettings().setAjaxDebugModeEnabled(determineAjaxDebugModeEnabled(configuration));
@@ -452,7 +452,6 @@ public class IsisWicketApplication
         primeConfigurationBuilder(configurationBuilder, servletContext);
         configurationBuilder.addDefaultConfigurationResources();
 
-        IsisWebAppBootstrapperUtil.addConfigurationResourcesForViewers(configurationBuilder, servletContext);
         return configurationBuilder;
     }
 
@@ -694,8 +693,8 @@ public class IsisWicketApplication
         return deploymentType.getConfigurationType();
     }
     
-    protected IsisInjectModule newIsisModule(final DeploymentType deploymentType, final IsisConfigurationBuilder isisConfigurationBuilder) {
-        return new IsisInjectModule(deploymentType, isisConfigurationBuilder);
+    protected IsisInjectModule newIsisModule(final DeploymentType deploymentType, final IsisConfigurationDefault isisConfiguration) {
+        return new IsisInjectModule(deploymentType, isisConfiguration);
     }
 
     // //////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/dcaab8ea/core/webserver/src/main/java/org/apache/isis/core/webserver/WebServerBootstrapper.java
----------------------------------------------------------------------
diff --git a/core/webserver/src/main/java/org/apache/isis/core/webserver/WebServerBootstrapper.java b/core/webserver/src/main/java/org/apache/isis/core/webserver/WebServerBootstrapper.java
index 999f75c..ee6e5f4 100644
--- a/core/webserver/src/main/java/org/apache/isis/core/webserver/WebServerBootstrapper.java
+++ b/core/webserver/src/main/java/org/apache/isis/core/webserver/WebServerBootstrapper.java
@@ -24,7 +24,6 @@ import java.util.Map;
 
 import com.google.inject.Injector;
 
-import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.webapp.WebAppContext;
 import org.slf4j.Logger;
@@ -78,7 +77,6 @@ final class WebServerBootstrapper implements IsisBootstrapper {
         // TODO get and use the address
 
         jettyServer = new Server(port);
-        Connector[] connectors = jettyServer.getConnectors();
         final WebAppContext context = new WebAppContext(SRC_MAIN_WEBAPP, webappContextPath);
 
         copyConfigurationPrimersIntoServletContext(context);