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 2015/08/06 11:28:38 UTC
[8/9] isis git commit: ISIS-1188: where how RuntimeContextFromSession
is instantiated (and in particular, instantiate it only once,
passing it from IsisSystem through to PersistenceMechanismInstaller and thence
PersistenceSessionFactory).
ISIS-1188: where how RuntimeContextFromSession is instantiated (and in particular, instantiate it only once, passing it from IsisSystem through to PersistenceMechanismInstaller and thence PersistenceSessionFactory).
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/1ed4eef4
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/1ed4eef4
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/1ed4eef4
Branch: refs/heads/ISIS-848
Commit: 1ed4eef484f491491657d0d4142fee005de76b9f
Parents: d3eb90a
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Aug 5 19:34:25 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Aug 5 19:34:25 2015 +0100
----------------------------------------------------------------------
.../IsisComponentProviderDefault.java | 6 ++++--
.../runtimecontext/RuntimeContextAbstract.java | 2 +-
.../PersistenceMechanismInstaller.java | 12 +++++++----
.../internal/RuntimeContextFromSession.java | 22 +++++++++++++++++++-
.../isis/core/runtime/system/IsisSystem.java | 13 ++++--------
.../persistence/PersistenceSessionFactory.java | 15 -------------
.../IsisComponentProvider.java | 4 +++-
.../IsisComponentProviderUsingInstallers.java | 6 ++++--
...ataNucleusPersistenceMechanismInstaller.java | 6 ++++--
.../persistence/PersistenceSessionTest.java | 2 +-
10 files changed, 50 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/1ed4eef4/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisComponentProviderDefault.java
----------------------------------------------------------------------
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisComponentProviderDefault.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisComponentProviderDefault.java
index 7290190..a6e677c 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisComponentProviderDefault.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisComponentProviderDefault.java
@@ -45,6 +45,7 @@ import org.apache.isis.core.runtime.authorization.AuthorizationManager;
import org.apache.isis.core.runtime.authorization.standard.AuthorizationManagerStandard;
import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
import org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration;
+import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
import org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.IsisSystemException;
@@ -204,9 +205,10 @@ public class IsisComponentProviderDefault implements IsisComponentProvider {
@Override
public PersistenceSessionFactory providePersistenceSessionFactory(
DeploymentType deploymentType,
- final ServicesInjectorSpi servicesInjectorSpi) throws IsisSystemException {
+ final ServicesInjectorSpi servicesInjectorSpi,
+ final RuntimeContextFromSession runtimeContext) throws IsisSystemException {
DataNucleusPersistenceMechanismInstaller installer = new DataNucleusPersistenceMechanismInstaller();
- return installer.createPersistenceSessionFactory(deploymentType, servicesInjectorSpi, getConfiguration());
+ return installer.createPersistenceSessionFactory(deploymentType, servicesInjectorSpi, getConfiguration(), runtimeContext);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/1ed4eef4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
index ea13704..a77be38 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
@@ -156,7 +156,7 @@ public abstract class RuntimeContextAbstract implements RuntimeContext, Specific
});
}
- public void setProperties(final Properties properties) {
+ protected void setProperties(final Properties properties) {
this.properties = properties;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/1ed4eef4/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
index 2626acd..5cea3f5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
@@ -21,8 +21,11 @@ package org.apache.isis.core.runtime.installerregistry.installerapi;
import org.apache.isis.core.commons.components.Installer;
import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationBuilderAware;
+import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
import org.apache.isis.core.runtime.persistence.ObjectStoreFactory;
+import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
@@ -30,13 +33,14 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory
/**
* Installs a {@link PersistenceSession} during system start up.
*/
-public interface PersistenceMechanismInstaller extends Installer, ObjectStoreFactory {
+public interface PersistenceMechanismInstaller extends Installer, ObjectStoreFactory, IsisConfigurationBuilderAware,
+ MetaModelRefiner {
static String TYPE = "persistor";
PersistenceSessionFactory createPersistenceSessionFactory(
- DeploymentType deploymentType,
- final ServicesInjectorSpi services,
- final IsisConfiguration configuration);
+ final DeploymentType deploymentType,
+ final ServicesInjectorSpi servicesInjector,
+ final IsisConfiguration configuration, final RuntimeContextFromSession runtimeContext);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/1ed4eef4/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
index a9c1495..06e97bd 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
@@ -20,6 +20,8 @@
package org.apache.isis.core.runtime.persistence.internal;
import java.util.List;
+import java.util.Properties;
+
import org.apache.isis.applib.RecoverableException;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.applib.query.Query;
@@ -28,6 +30,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAbstract;
import org.apache.isis.core.commons.authentication.MessageBroker;
+import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.DomainObjectServices;
import org.apache.isis.core.metamodel.adapter.DomainObjectServicesAbstract;
import org.apache.isis.core.metamodel.adapter.LocalizationProviderAbstract;
@@ -82,7 +85,12 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
// Constructor
// //////////////////////////////////////////////////////////////////
- public RuntimeContextFromSession() {
+
+ public RuntimeContextFromSession(final IsisConfiguration configuration) {
+
+ final Properties properties = applicationPropertiesFrom(configuration);
+ setProperties(properties);
+
this.authenticationSessionProvider = new AuthenticationSessionProviderAbstract() {
@Override
@@ -308,6 +316,18 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
};
}
+ private static Properties applicationPropertiesFrom(final IsisConfiguration configuration) {
+ final Properties properties = new Properties();
+ final IsisConfiguration applicationConfiguration = configuration.getProperties("application");
+ for (final String key : applicationConfiguration) {
+ final String value = applicationConfiguration.getString(key);
+ final String newKey = key.substring("application.".length());
+ properties.setProperty(newKey, value);
+ }
+ return properties;
+ }
+
+
// //////////////////////////////////////////////////////////////////
// Components
// //////////////////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/1ed4eef4/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 4baa3fb..ed595ff 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
@@ -152,16 +152,18 @@ public class IsisSystem implements DebugSelection, ApplicationScopedComponent {
private IsisSessionFactory createSessionFactory(final DeploymentType deploymentType) throws IsisSystemException {
+ final IsisConfiguration configuration = isisComponentProvider.getConfiguration();
final List<Object> services = isisComponentProvider.obtainServices();
ServicesInjectorSpi servicesInjectorSpi = new ServicesInjectorDefault(services);
servicesInjectorSpi.addFallbackIfRequired(FixtureScripts.class, new FixtureScriptsDefault());
servicesInjectorSpi.validateServices();
+ final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession(configuration);
+
final PersistenceSessionFactory persistenceSessionFactory =
- isisComponentProvider.providePersistenceSessionFactory(deploymentType, servicesInjectorSpi);
+ isisComponentProvider.providePersistenceSessionFactory(deploymentType, servicesInjectorSpi, runtimeContext);
- final IsisConfiguration configuration = getConfiguration();
final AuthenticationManager authenticationManager =
isisComponentProvider.provideAuthenticationManager(deploymentType);
final AuthorizationManager authorizationManager =
@@ -172,9 +174,7 @@ public class IsisSystem implements DebugSelection, ApplicationScopedComponent {
final SpecificationLoaderSpi reflector =
isisComponentProvider.provideSpecificationLoaderSpi(deploymentType, metaModelRefiners);
-
// bind metamodel to the (runtime) framework
- final RuntimeContextFromSession runtimeContext = createRuntimeContextFromSession();
runtimeContext.injectInto(reflector);
return new IsisSessionFactory (
@@ -289,11 +289,6 @@ public class IsisSystem implements DebugSelection, ApplicationScopedComponent {
return IsisContext.getSpecificationLoader().allSpecifications();
}
-
- private RuntimeContextFromSession createRuntimeContextFromSession() {
- return new RuntimeContextFromSession();
- }
-
//endregion
//region > shutdown
http://git-wip-us.apache.org/repos/asf/isis/blob/1ed4eef4/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index 606cae0..387dc90 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -19,8 +19,6 @@
package org.apache.isis.core.runtime.system.persistence;
-import java.util.Properties;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -82,19 +80,6 @@ public class PersistenceSessionFactory implements MetaModelRefiner, ApplicationS
this.servicesInjector = servicesInjector;
this.runtimeContext = runtimeContext;
- final Properties properties = applicationPropertiesFrom(getConfiguration());
- runtimeContext.setProperties(properties);
- }
-
- private static Properties applicationPropertiesFrom(final IsisConfiguration configuration) {
- final Properties properties = new Properties();
- final IsisConfiguration applicationConfiguration = configuration.getProperties("application");
- for (final String key : applicationConfiguration) {
- final String value = applicationConfiguration.getString(key);
- final String newKey = key.substring("application.".length());
- properties.setProperty(newKey, value);
- }
- return properties;
}
public DeploymentType getDeploymentType() {
http://git-wip-us.apache.org/repos/asf/isis/blob/1ed4eef4/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
----------------------------------------------------------------------
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 77a904e..a14aa80 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
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.runtime.authentication.AuthenticationManager;
import org.apache.isis.core.runtime.authorization.AuthorizationManager;
import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
+import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.IsisSystemException;
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
@@ -49,7 +50,8 @@ public interface IsisComponentProvider {
PersistenceSessionFactory providePersistenceSessionFactory(
final DeploymentType deploymentType,
- final ServicesInjectorSpi servicesInjectorSpi) throws IsisSystemException;
+ final ServicesInjectorSpi servicesInjectorSpi,
+ final RuntimeContextFromSession runtimeContext) throws IsisSystemException;
AuthenticationManager provideAuthenticationManager(DeploymentType deploymentType) throws IsisSystemException;
http://git-wip-us.apache.org/repos/asf/isis/blob/1ed4eef4/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 7294c7f..0b61357 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
@@ -34,6 +34,7 @@ import org.apache.isis.core.runtime.authorization.AuthorizationManagerInstaller;
import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
+import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
import org.apache.isis.core.runtime.services.ServicesInstaller;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.IsisSystemException;
@@ -158,8 +159,9 @@ public class IsisComponentProviderUsingInstallers implements IsisComponentProvid
@Override
public PersistenceSessionFactory providePersistenceSessionFactory(
final DeploymentType deploymentType,
- final ServicesInjectorSpi servicesInjectorSpi) throws IsisSystemException {
- return persistenceMechanismInstaller.createPersistenceSessionFactory(deploymentType, servicesInjectorSpi, getConfiguration());
+ final ServicesInjectorSpi servicesInjectorSpi, final RuntimeContextFromSession runtimeContext) throws IsisSystemException {
+ return persistenceMechanismInstaller.createPersistenceSessionFactory(deploymentType, servicesInjectorSpi, getConfiguration(),
+ runtimeContext);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/1ed4eef4/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
index 042bc5e..a5b8786 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
@@ -94,13 +94,15 @@ public class DataNucleusPersistenceMechanismInstaller extends InstallerAbstract
public PersistenceSessionFactory createPersistenceSessionFactory(
final DeploymentType deploymentType,
final ServicesInjectorSpi servicesInjector,
- final IsisConfiguration configuration) {
- final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession();
+ final IsisConfiguration configuration,
+ final RuntimeContextFromSession runtimeContext) {
+
DataNucleusPersistenceMechanismInstaller objectStoreFactory = this;
return new PersistenceSessionFactory(deploymentType, servicesInjector, configuration, objectStoreFactory, runtimeContext);
}
//endregion
+
//region > createObjectStore
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/1ed4eef4/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
index 87408d4..91674db 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
@@ -142,7 +142,7 @@ public class PersistenceSessionTest {
}
});
- final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession();
+ final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession(mockConfiguration);
final DomainObjectContainerDefault container = new DomainObjectContainerDefault();
runtimeContext.injectInto(container);