You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/11/23 08:40:26 UTC
[isis] 07/07: ISIS-2039: lazy binding to config for wicket
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 <ah...@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);