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 f22c497ac2e84f028ffd207752d37abb11108021 Author: Andi Huber <ahu...@apache.org> AuthorDate: Fri Nov 23 09:39:12 2018 +0100 ISIS-2039: lazy binding to config for wicket Task-Url: https://issues.apache.org/jira/browse/ISIS-2039 --- .../org/apache/isis/config/internal/_Config.java | 14 +---- .../config/internal/_Config_LifecycleResource.java | 29 +++++++++- .../configbuilder/IsisConfigurationBuilder.java | 1 + .../IsisConfigurationBuilderDefault.java | 2 +- .../IsisComponentProvider.java | 14 +++++ .../IsisComponentProviderBuilder.java | 10 ++++ ...isComponentProviderHelper_UsingInstallers.java} | 66 +++++++++------------- .../wicket/viewer/IsisWicketApplication.java | 17 +++--- .../viewer/wicket/viewer/IsisWicketModule.java | 48 +++++++++++----- .../viewer/integration/isis/IsisInjectModule.java | 40 ++++++------- .../isisWicketModule_bindingsStandard_Test.java | 3 +- 11 files changed, 147 insertions(+), 97 deletions(-) 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 f2872c8..6463557 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 @@ -96,8 +96,9 @@ public class _Config { // -- HELPER -- BUILDER private static IsisConfigurationBuilder getConfigurationBuilder() { - IsisConfigurationBuilder builder = getLifecycleResource().getBuilder() - .orElseThrow(_Config::configurationAlreadyInUse); + _Config_LifecycleResource lifecycle = getLifecycleResource(); + IsisConfigurationBuilder builder = lifecycle.getBuilder() + .orElseThrow(lifecycle::configurationAlreadyInUse); return builder; } @@ -117,15 +118,6 @@ public class _Config { 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 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 index f260046..ce6543a 100644 --- 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 @@ -34,7 +34,7 @@ class _Config_LifecycleResource { _Config_LifecycleResource(final IsisConfigurationBuilder builder) { requires(builder, "builder"); this.builder = builder; - this.configuration = _Lazy.threadSafe(builder::build); + this.configuration = _Lazy.threadSafe(this::build); } IsisConfiguration getConfiguration() { @@ -47,6 +47,33 @@ class _Config_LifecycleResource { } return Optional.empty(); } + + private IsisConfiguration build() { + + // we throw an exception, catch it and keep it for later, to provide + // causal information, in case the builder is accessed after it already + // built the configuration + try { + throw new IllegalStateException("Configuration Build Event"); + } catch(IllegalStateException e) { + this.configurationBuildStacktrace = e; + } + + return builder.build(); + + } + + // -- HELPER -- EXCEPTIONS + + private IllegalStateException configurationBuildStacktrace; + + IllegalStateException configurationAlreadyInUse() { + + IllegalStateException cause = configurationBuildStacktrace; + + return new IllegalStateException("The IsisConfigurationBuilder is no longer valid, because it has " + + "already built the IsisConfiguration for this application's life-cycle.", cause); + } } diff --git a/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilder.java b/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilder.java index be0f5b1..4a6b99b 100644 --- a/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilder.java +++ b/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilder.java @@ -63,6 +63,7 @@ public interface IsisConfigurationBuilder { String[] peekAtList(String key); + /** internal only **/ IsisConfiguration build(); /** diff --git a/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilderDefault.java b/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilderDefault.java index 5374960..e541939 100644 --- a/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilderDefault.java +++ b/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilderDefault.java @@ -292,7 +292,7 @@ final class IsisConfigurationBuilderDefault implements IsisConfigurationBuilder @Override public IsisConfiguration build() { - + dumpResourcesToLog(); final IsisConfigurationDefault copy = new IsisConfigurationDefault(resourceStreamSourceChain); diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java index 06d2a28..2611587 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java @@ -85,6 +85,20 @@ public final class IsisComponentProvider { public static IsisComponentProviderBuilder builder() { return new IsisComponentProviderBuilder(); } + + // -- BUILDER - USING INSTALLERS + + public static IsisComponentProviderBuilder builderUsingInstallers(AppManifest appManifest) { + + final IsisComponentProviderHelper_UsingInstallers helper = + new IsisComponentProviderHelper_UsingInstallers(appManifest); + + return builder() + .appManifest(appManifest) + .authenticationManager(helper.authenticationManager) + .authorizationManager(helper.authorizationManager); + } + // -- constructor, fields diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderBuilder.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderBuilder.java index 128de8a..086a943 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderBuilder.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderBuilder.java @@ -26,6 +26,16 @@ public class IsisComponentProviderBuilder { return this; } + public IsisComponentProviderBuilder authenticationManager(AuthenticationManager authenticationManager) { + this.authenticationManager = authenticationManager; + return this; + } + + public IsisComponentProviderBuilder authorizationManager(AuthorizationManager authorizationManager) { + this.authorizationManager = authorizationManager; + return this; + } + public IsisComponentProviderBuilder addResourceStreamSource(ResourceStreamSource source) { resourceStreamSources.add(source); return this; 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/IsisComponentProviderHelper_UsingInstallers.java similarity index 81% rename from core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java rename to core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderHelper_UsingInstallers.java index 560de47..a483807 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/IsisComponentProviderHelper_UsingInstallers.java @@ -26,9 +26,9 @@ import org.slf4j.LoggerFactory; import org.apache.isis.applib.AppManifest; import org.apache.isis.commons.internal.collections._Lists; +import org.apache.isis.config.internal._Config; import org.apache.isis.core.commons.components.ApplicationScopedComponent; import org.apache.isis.core.commons.components.Installer; -import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder; import org.apache.isis.core.commons.ensure.Assert; import org.apache.isis.core.commons.factory.InstanceCreationClassException; import org.apache.isis.core.commons.factory.InstanceCreationException; @@ -42,55 +42,44 @@ import org.apache.isis.core.runtime.authorization.AuthorizationManagerInstaller; import org.apache.isis.core.runtime.system.SystemConstants; import org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder; -class IsisComponentProviderUsingInstallers { -/* +class IsisComponentProviderHelper_UsingInstallers { + + final AppManifest appManifest; + final AuthenticationManager authenticationManager; + final AuthorizationManager authorizationManager; + // -- constructors - public IsisComponentProviderUsingInstallers( - final AppManifest appManifest, - final IsisConfigurationBuilder configurationBuilder) { - - this(appManifest, - configurationBuilder, - new InstallerLookup(configurationBuilder)); + IsisComponentProviderHelper_UsingInstallers(final AppManifest appManifest) { + this(appManifest, new InstallerLookup()); } - public IsisComponentProviderUsingInstallers( + private IsisComponentProviderHelper_UsingInstallers( final AppManifest appManifest, - final IsisConfigurationBuilder configurationBuilder, final InstallerLookup installerLookup) { - this(configurationBuilder, appManifest, - lookupAuthenticationManager(appManifest, installerLookup, configurationBuilder), - lookupAuthorizationManager(appManifest, installerLookup, configurationBuilder)); - } - - private IsisComponentProviderUsingInstallers( - final IsisConfigurationBuilder configurationBuilder, - final AppManifest appManifest, - final AuthenticationManager authenticationManager, - final AuthorizationManager authorizationManager){ - super(configurationBuilder, appManifest, authenticationManager, authorizationManager); + + this.appManifest = appManifest; + this.authenticationManager = lookupAuthenticationManager(appManifest, installerLookup); + this.authorizationManager = lookupAuthorizationManager(appManifest, installerLookup); } - - // -- constructor helpers (factories) - + + // -- HELPER + private static AuthenticationManager lookupAuthenticationManager( - final AppManifest appManifest, final InstallerLookup installerLookup, - final IsisConfigurationBuilder configurationBuilder) { + final AppManifest appManifest, final InstallerLookup installerLookup) { final String authenticationMechanism = appManifest.getAuthenticationMechanism(); final AuthenticationManagerInstaller authenticationInstaller = installerLookup.authenticationManagerInstaller(authenticationMechanism); // no longer used, could probably remove - configurationBuilder.put(SystemConstants.AUTHENTICATION_INSTALLER_KEY, authenticationMechanism); + //_Config.put(SystemConstants.AUTHENTICATION_INSTALLER_KEY, authenticationMechanism); return authenticationInstaller.createAuthenticationManager(); } private static AuthorizationManager lookupAuthorizationManager( - final AppManifest appManifest, final InstallerLookup installerLookup, - final IsisConfigurationBuilder configurationBuilder) { + final AppManifest appManifest, final InstallerLookup installerLookup) { final String authorizationMechanism = appManifest.getAuthorizationMechanism(); @@ -99,13 +88,11 @@ class IsisComponentProviderUsingInstallers { installerLookup.authorizationManagerInstaller(authorizationMechanism); // no longer used, could probably remove - configurationBuilder.put(SystemConstants.AUTHORIZATION_INSTALLER_KEY, authorizationMechanism); + //_Config.put(SystemConstants.AUTHORIZATION_INSTALLER_KEY, authorizationMechanism); return authorizationInstaller.createAuthorizationManager(); } -*/ - /** * Looks up authorization and authentication implementations. @@ -122,7 +109,7 @@ class IsisComponentProviderUsingInstallers { * * @deprecated - intention is to replace in future using CDI */ - /* + @Deprecated static class InstallerLookup implements ApplicationScopedComponent { @@ -130,11 +117,10 @@ class IsisComponentProviderUsingInstallers { // -- constructor, fields - private final IsisConfigurationBuilder configurationBuilder; private final List<Installer> installerList = _Lists.newArrayList(); - public InstallerLookup(final IsisConfigurationBuilder configurationBuilder) throws InstanceCreationException { - this.configurationBuilder = configurationBuilder; + public InstallerLookup() throws InstanceCreationException { + final List<String> installerClassNames = _Lists.of( "org.apache.isis.core.security.authentication.BypassAuthenticationManagerInstaller", // bypass @@ -217,7 +203,7 @@ class IsisComponentProviderUsingInstallers { final String key, final String defaultImpl) { if (reqImpl == null) { - reqImpl = configurationBuilder.peekAtString(key, defaultImpl); + reqImpl = _Config.peekAtString(key, defaultImpl); } if (reqImpl == null) { return null; @@ -231,5 +217,5 @@ class IsisComponentProviderUsingInstallers { } } - */ + } 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 a5d4e37..0cb84c9 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 @@ -76,6 +76,7 @@ import org.apache.isis.commons.internal.context._Context; import org.apache.isis.config.internal._Config; import org.apache.isis.core.commons.authentication.AuthenticationSession; import org.apache.isis.core.commons.config.IsisConfiguration; +import org.apache.isis.core.commons.ensure.Ensure; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException; import org.apache.isis.core.runtime.logging.IsisLoggingConfigurer; @@ -299,22 +300,23 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketVi requestCycleListeners.add(requestCycleListenerForIsis); requestCycleListeners.add(new PageRequestHandlerTracker()); - configuration = _Config.getConfiguration(); - // // create IsisSessionFactory // final IsisInjectModule isisModule = newIsisModule(); - final Injector injector = Guice.createInjector(isisModule, newIsisWicketModule(configuration)); + final Injector injector = Guice.createInjector(isisModule, newIsisWicketModule()); initWicketComponentInjection(injector); - + injector.injectMembers(this); // populates this.isisSessionFactory - + Ensure.ensure("IsisSessionFactory should have been injected.", this.isisSessionFactory != null); + if (requestCycleListenerForIsis instanceof WebRequestCycleForIsis) { WebRequestCycleForIsis webRequestCycleForIsis = (WebRequestCycleForIsis) requestCycleListenerForIsis; webRequestCycleForIsis.setPageClassRegistry(pageClassRegistry); } + configuration = _Config.getConfiguration(); + this.getMarkupSettings().setStripWicketTags(determineStripWicketTags(configuration)); configureSecurity(configuration); @@ -541,10 +543,9 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketVi /** * Override if required - * @param isisConfiguration */ - protected Module newIsisWicketModule(final IsisConfiguration isisConfiguration) { - return new IsisWicketModule(getServletContext(), isisConfiguration); + protected Module newIsisWicketModule() { + return new IsisWicketModule(getServletContext()); } // ////////////////////////////////////// diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java index 08beb27..fbf8655 100644 --- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java +++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java @@ -24,10 +24,12 @@ import java.io.InputStream; import javax.servlet.ServletContext; import com.google.inject.AbstractModule; +import com.google.inject.Provider; import com.google.inject.name.Names; import org.apache.isis.applib.services.email.EmailService; import org.apache.isis.applib.services.userreg.EmailNotificationService; +import org.apache.isis.config.internal._Config; import org.apache.isis.core.commons.config.IsisConfiguration; import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings; import org.apache.isis.viewer.wicket.model.models.ImageResourceCache; @@ -70,13 +72,10 @@ import static org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.readLin public class IsisWicketModule extends AbstractModule { private ServletContext servletContext; - private IsisConfiguration isisConfig; public IsisWicketModule( - final ServletContext servletContext, - final IsisConfiguration isisConfiguration) { + final ServletContext servletContext) { this.servletContext = servletContext; - this.isisConfig = isisConfiguration; } @Override @@ -96,34 +95,53 @@ public class IsisWicketModule extends AbstractModule { bind(EmailNotificationService.class).to(EmailNotificationServiceWicket.class); bind(String.class).annotatedWith(Names.named("applicationName")) - .toProvider(() -> isisConfig.getString("isis.viewer.wicket.application.name", "Apache Isis ™")); + .toProvider(string("isis.viewer.wicket.application.name", "Apache Isis ™")); bind(String.class).annotatedWith(Names.named("brandLogoHeader")) - .toProvider(() -> isisConfig.getString("isis.viewer.wicket.application.brandLogoHeader")); + .toProvider(string("isis.viewer.wicket.application.brandLogoHeader")); bind(String.class).annotatedWith(Names.named("brandLogoSignin")) - .toProvider(() -> isisConfig.getString("isis.viewer.wicket.application.brandLogoSignin")); + .toProvider(string("isis.viewer.wicket.application.brandLogoSignin")); bind(String.class).annotatedWith(Names.named("applicationCss")) - .toProvider(() -> isisConfig.getString("isis.viewer.wicket.application.css", "css/application.css")); + .toProvider(string("isis.viewer.wicket.application.css", "css/application.css")); bind(String.class).annotatedWith(Names.named("applicationJs")) - .toProvider(() -> isisConfig.getString("isis.viewer.wicket.application.js", "css/application.js")); + .toProvider(string("isis.viewer.wicket.application.js", "css/application.js")); bind(String.class).annotatedWith(Names.named("aboutMessage")) - .toProvider(() -> isisConfig.getString("isis.viewer.wicket.application.about", - isisConfig.getString("isis.viewer.wicket.application.name"))); + .toProvider(stringOrElse("isis.viewer.wicket.application.about", + string("isis.viewer.wicket.application.name"))); - final String welcomeFile = isisConfig.getString("isis.viewer.wicket.welcome.file", "welcome.html"); + final Provider<String> welcomeFile = string("isis.viewer.wicket.welcome.file", "welcome.html"); bind(String.class).annotatedWith(Names.named("welcomeMessage")) - .toProvider(() -> readLines(getClass(), welcomeFile, - isisConfig.getString("isis.viewer.wicket.welcome.text"))); + .toProvider(() -> readLines(getClass(), welcomeFile.get(), + getConfiguration().getString("isis.viewer.wicket.welcome.text"))); bind(String.class).annotatedWith(Names.named("applicationVersion")) - .toProvider(() -> isisConfig.getString("isis.viewer.wicket.application.version")); + .toProvider(string("isis.viewer.wicket.application.version")); bind(InputStream.class).annotatedWith(Names.named("metaInfManifest")) .toProvider(() -> servletContext.getResourceAsStream("/META-INF/MANIFEST.MF")); } + + // -- HELPER + + private Provider<String> string(String key) { + return ()->getConfiguration().getString(key); + } + + private Provider<String> string(String key, String defaultValue) { + return ()->getConfiguration().getString(key, defaultValue); + } + + private Provider<String> stringOrElse(String key, Provider<String> fallback) { + return ()->getConfiguration().getString(key, fallback.get()); + } + + private IsisConfiguration getConfiguration() { + return _Config.getConfiguration(); + } + } diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisInjectModule.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisInjectModule.java index 3f3a854..7026c11 100644 --- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisInjectModule.java +++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisInjectModule.java @@ -33,6 +33,8 @@ import org.apache.isis.core.commons.factory.InstanceUtil; import org.apache.isis.core.metamodel.services.ServicesInjector; import org.apache.isis.core.runtime.system.SystemConstants; import org.apache.isis.core.runtime.system.session.IsisSessionFactory; +import org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder; +import org.apache.isis.core.runtime.systemusinginstallers.IsisComponentProvider; public class IsisInjectModule extends AbstractModule { @@ -82,25 +84,25 @@ public class IsisInjectModule extends AbstractModule { bind(AppManifest.class).toInstance(APP_MANIFEST_NOOP); } -//TODO[2039] -// @Provides -// @com.google.inject.Inject -// @Singleton -// protected IsisSessionFactory provideIsisSessionFactory( -// final AppManifest appManifestIfExplicitlyBound) { -// -// final AppManifest appManifestToUse = determineAppManifest(appManifestIfExplicitlyBound); -// -// final IsisComponentProvider componentProvider = -// new IsisComponentProviderUsingInstallers(appManifestToUse); -// -// final IsisSessionFactoryBuilder builder = -// new IsisSessionFactoryBuilder(componentProvider, componentProvider.getAppManifest()); -// -// // as a side-effect, if the metamodel turns out to be invalid, then -// // this will push the MetaModelInvalidException into IsisContext. -// return builder.buildSessionFactory(); -// } + @Provides + @com.google.inject.Inject + @Singleton + protected IsisSessionFactory provideIsisSessionFactory( + final AppManifest appManifestIfExplicitlyBound) { + + final AppManifest appManifestToUse = determineAppManifest(appManifestIfExplicitlyBound); + + final IsisComponentProvider componentProvider = IsisComponentProvider + .builderUsingInstallers(appManifestToUse) + .build(); + + final IsisSessionFactoryBuilder builder = + new IsisSessionFactoryBuilder(componentProvider, componentProvider.getAppManifest()); + + // as a side-effect, if the metamodel turns out to be invalid, then + // this will push the MetaModelInvalidException into IsisContext. + return builder.buildSessionFactory(); + } @Provides @com.google.inject.Inject diff --git a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/isisWicketModule_bindingsStandard_Test.java b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/isisWicketModule_bindingsStandard_Test.java index 24d33eb..e77d353 100644 --- a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/isisWicketModule_bindingsStandard_Test.java +++ b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/isisWicketModule_bindingsStandard_Test.java @@ -88,9 +88,8 @@ public class isisWicketModule_bindingsStandard_Test { public void setUp() throws Exception { _Config.clear(); - final IsisConfiguration isisConfiguration = _Config.getConfiguration(); - isisWicketModule = new IsisWicketModule(mockServletContext, isisConfiguration); + isisWicketModule = new IsisWicketModule(mockServletContext); context.checking(new Expectations() {{ allowing(mockServletContext);