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 2018/08/23 09:48:50 UTC
[isis] branch maint-1.16.2 updated (c1600b1 -> 6dc5282)
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a change to branch maint-1.16.2
in repository https://gitbox.apache.org/repos/asf/isis.git.
from c1600b1 ISIS-1810: backported update to documentation.adoc
new 14c6b11 ISIS-1974: removes SpecificationLoader from RegisterEntities as not used as a property.
new bd20faa ISIS-1974: overloads createDataNucleusApplicationComponents in PersistenceSessionFactory
new a3d002b ISIS-1974: makes catalogNamedQueries (the method that populates SpecificatoinLoader) static.
new d09937b ISIS-1974: moves catalogNamedQueries out of DataNucleusApplicatoinComponents, and into its caller, PersistenceSessoinFactory
new a96e0fa ISIS-1974: removes SpecificatoinLoader from the construtor of DataNucleusApplicationComponents
new b57533a ISIS-1974: moves the responsibility for calling catalogNamedQueries
new 6dc5282 ISIS-1974: initializes the Isis metamodel and DN in parallel.
The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../core/runtime/threadpool/ThreadPoolSupport.java | 14 +++++
.../DataNucleusApplicationComponents.java | 17 ++----
.../persistence/PersistenceSessionFactory.java | 47 ++++++++-------
.../system/session/IsisSessionFactoryBuilder.java | 68 ++++++++++++++--------
.../objectstore/jdo/service/RegisterEntities.java | 10 +---
.../wicket/viewer/IsisWicketApplication.java | 4 +-
6 files changed, 91 insertions(+), 69 deletions(-)
[isis] 07/07: ISIS-1974: initializes the Isis metamodel and DN in
parallel.
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch maint-1.16.2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 6dc52825cfb0de5f91ec621f803c38bcf00ad2d4
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Aug 23 10:47:34 2018 +0100
ISIS-1974: initializes the Isis metamodel and DN in parallel.
---
.../core/runtime/threadpool/ThreadPoolSupport.java | 14 +++++
.../system/session/IsisSessionFactoryBuilder.java | 70 ++++++++++++++--------
.../wicket/viewer/IsisWicketApplication.java | 4 +-
3 files changed, 62 insertions(+), 26 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/threadpool/ThreadPoolSupport.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/threadpool/ThreadPoolSupport.java
index 0aee0fd..09c9fe7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/threadpool/ThreadPoolSupport.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/threadpool/ThreadPoolSupport.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.runtime.threadpool;
+import java.util.Arrays;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Callable;
@@ -99,4 +100,17 @@ public final class ThreadPoolSupport {
throw new RuntimeException(e);
}
}
+ public static List<Future<Object>> invokeAll(final Callable<Object>... callables) {
+ return invokeAll(Arrays.asList(callables));
+ }
+ public static List<Future<Object>> invokeSerial(final Callable<Object>... callables) {
+ List<Future<Object>> futures = Lists.newArrayList();
+ for (Callable<Object> callable : callables) {
+ List<Future<Object>> x = invokeAll(callable);
+ join(x);
+ futures.addAll(x);
+ }
+ return futures;
+ }
+
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
index 3e56fd6..72d8ef2 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
@@ -22,6 +22,9 @@ package org.apache.isis.core.runtime.system.session;
import java.io.File;
import java.util.Arrays;
import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,6 +54,7 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactoryMetamodelRefiner;
import org.apache.isis.core.runtime.systemusinginstallers.IsisComponentProvider;
import org.apache.isis.core.runtime.systemusinginstallers.IsisComponentProviderDefault2;
+import org.apache.isis.core.runtime.threadpool.ThreadPoolSupport;
public class IsisSessionFactoryBuilder {
@@ -177,30 +181,48 @@ public class IsisSessionFactoryBuilder {
// yet inject.
IsisContext.setSessionFactory(isisSessionFactory);
- // time to initialize...
- specificationLoader.init();
-
- // we need to do this before checking if the metamodel is valid.
- //
- // eg ActionChoicesForCollectionParameterFacetFactory metamodel validator requires a runtime...
- // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionContributee.getServiceAdapter(ObjectActionContributee.java:287)
- // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionContributee.determineParameters(ObjectActionContributee.java:138)
- // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionDefault.getParameters(ObjectActionDefault.java:182)
- // at o.a.i.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory$1.validate(ActionChoicesForCollectionParameterFacetFactory.java:85)
- // at o.a.i.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory$1.visit(ActionChoicesForCollectionParameterFacetFactory.java:76)
- // at o.a.i.core.metamodel.specloader.validator.MetaModelValidatorVisiting.validate(MetaModelValidatorVisiting.java:47)
- //
- // also, required so that can still call isisSessionFactory#doInSession
- //
- // eg todoapp has a custom UserSettingsThemeProvider that is called when rendering any page
- // (including the metamodel invalid page)
- // at o.a.i.core.runtime.system.session.IsisSessionFactory.doInSession(IsisSessionFactory.java:327)
- // at todoapp.webapp.UserSettingsThemeProvider.getActiveTheme(UserSettingsThemeProvider.java:36)
-
- authenticationManager.init(deploymentCategory);
- authorizationManager.init(deploymentCategory);
-
- persistenceSessionFactory.init(configuration);
+
+ final List<Future<Object>> futures = ThreadPoolSupport.invokeAll(
+ new Callable<Object>() {
+ @Override
+ public Object call() {
+
+ // time to initialize...
+ specificationLoader.init();
+
+ // we need to do this before checking if the metamodel is valid.
+ //
+ // eg ActionChoicesForCollectionParameterFacetFactory metamodel validator requires a runtime...
+ // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionContributee.getServiceAdapter(ObjectActionContributee.java:287)
+ // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionContributee.determineParameters(ObjectActionContributee.java:138)
+ // at o.a.i.core.metamodel.specloader.specimpl.ObjectActionDefault.getParameters(ObjectActionDefault.java:182)
+ // at o.a.i.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory$1.validate(ActionChoicesForCollectionParameterFacetFactory.java:85)
+ // at o.a.i.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory$1.visit(ActionChoicesForCollectionParameterFacetFactory.java:76)
+ // at o.a.i.core.metamodel.specloader.validator.MetaModelValidatorVisiting.validate(MetaModelValidatorVisiting.java:47)
+ //
+ // also, required so that can still call isisSessionFactory#doInSession
+ //
+ // eg todoapp has a custom UserSettingsThemeProvider that is called when rendering any page
+ // (including the metamodel invalid page)
+ // at o.a.i.core.runtime.system.session.IsisSessionFactory.doInSession(IsisSessionFactory.java:327)
+ // at todoapp.webapp.UserSettingsThemeProvider.getActiveTheme(UserSettingsThemeProvider.java:36)
+
+ authenticationManager.init(deploymentCategory);
+ authorizationManager.init(deploymentCategory);
+
+ return null;
+ }
+ },
+ new Callable<Object>() {
+ @Override public Object call() {
+ persistenceSessionFactory.init(configuration);
+ return null;
+ }
+ }
+ );
+
+ ThreadPoolSupport.join(futures);
+
persistenceSessionFactory.catalogNamedQueries(specificationLoader);
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 03426ac..d6e0874 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
@@ -441,7 +441,7 @@ public class IsisWicketApplication
}
protected List<Future<Object>> startBackgroundInitializationThreads() {
- return ThreadPoolSupport.invokeAll(Lists.newArrayList(
+ return ThreadPoolSupport.invokeAll(
new Callable<Object>() {
@Override
public Object call() throws Exception {
@@ -481,7 +481,7 @@ public class IsisWicketApplication
return null;
}
}
- ));
+ );
}
/**
[isis] 04/07: ISIS-1974: moves catalogNamedQueries out of
DataNucleusApplicatoinComponents, and into its caller,
PersistenceSessoinFactory
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch maint-1.16.2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit d09937bb5d5a559842b1439d25c82023a548e58f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Aug 22 13:36:31 2018 +0100
ISIS-1974: moves catalogNamedQueries out of DataNucleusApplicatoinComponents, and into its caller, PersistenceSessoinFactory
---
.../system/persistence/DataNucleusApplicationComponents.java | 11 ++---------
.../runtime/system/persistence/PersistenceSessionFactory.java | 2 ++
2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
index ca45ec9..657ea78 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
@@ -84,7 +84,6 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
private final SpecificationLoader specificationLoader;
private final Map<String, String> datanucleusProps;
- private Map<String, JdoNamedQuery> namedQueryByName;
private PersistenceManagerFactory persistenceManagerFactory;
public DataNucleusApplicationComponents(
@@ -98,18 +97,12 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
this.persistableClassNameSet = persistableClassNameSet;
this.jdoObjectstoreConfig = configuration;
- initialize();
-
+ persistenceManagerFactory = createPmfAndSchemaIfRequired(this.persistableClassNameSet, this.datanucleusProps);
+
// for JRebel plugin
instance = this;
}
- private void initialize() {
- persistenceManagerFactory = createPmfAndSchemaIfRequired(persistableClassNameSet, datanucleusProps);
-
- namedQueryByName = catalogNamedQueries(persistableClassNameSet, specificationLoader);
- }
-
private static boolean isSchemaAwareStoreManager(Map<String,String> datanucleusProps) {
// we create a throw-away instance of PMF so that we can probe whether DN has
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 fc2849a..4d05f28 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
@@ -103,6 +103,8 @@ public class PersistenceSessionFactory implements ApplicationScopedComponent, Fi
applicationComponents = new DataNucleusApplicationComponents(jdoObjectstoreConfig, specificationLoader,
datanucleusProps, classesToBePersisted);
+
+ DataNucleusApplicationComponents.catalogNamedQueries(classesToBePersisted, specificationLoader);
}
return applicationComponents;
[isis] 02/07: ISIS-1974: overloads
createDataNucleusApplicationComponents in PersistenceSessionFactory
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch maint-1.16.2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit bd20faa6c64d3e7cb6aff71e7748a7fb132d9edf
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Aug 22 13:23:40 2018 +0100
ISIS-1974: overloads createDataNucleusApplicationComponents in PersistenceSessionFactory
working towards removing SpecificationLoader, need to tease out use of RegisterEntities.
---
.../system/persistence/PersistenceSessionFactory.java | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
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 8a32edb..fc2849a 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
@@ -84,18 +84,23 @@ public class PersistenceSessionFactory implements ApplicationScopedComponent, Fi
private DataNucleusApplicationComponents createDataNucleusApplicationComponents(
final IsisConfiguration configuration, final SpecificationLoader specificationLoader) {
- if (applicationComponents == null || applicationComponents.isStale()) {
+ final RegisterEntities registerEntities = new RegisterEntities(configuration.asMap());
+
+ return createDataNucleusApplicationComponents(configuration, specificationLoader, registerEntities);
+ }
- final IsisConfiguration jdoObjectstoreConfig = configuration.createSubset(
- JDO_OBJECTSTORE_CONFIG_PREFIX);
+ private DataNucleusApplicationComponents createDataNucleusApplicationComponents(
+ final IsisConfiguration configuration,
+ final SpecificationLoader specificationLoader, final RegisterEntities registerEntities) {
+ final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
+ if (applicationComponents == null || applicationComponents.isStale()) {
+
+ final IsisConfiguration jdoObjectstoreConfig = configuration.createSubset(JDO_OBJECTSTORE_CONFIG_PREFIX);
final IsisConfiguration dataNucleusConfig = configuration.createSubset(DATANUCLEUS_CONFIG_PREFIX);
final Map<String, String> datanucleusProps = dataNucleusConfig.asMap();
addDataNucleusPropertiesIfRequired(datanucleusProps);
- final RegisterEntities registerEntities = new RegisterEntities(configuration.asMap(), specificationLoader);
- final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
-
applicationComponents = new DataNucleusApplicationComponents(jdoObjectstoreConfig, specificationLoader,
datanucleusProps, classesToBePersisted);
}
[isis] 05/07: ISIS-1974: removes SpecificatoinLoader from the
construtor of DataNucleusApplicationComponents
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch maint-1.16.2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit a96e0fa9b5a9b3b6c2069807325ccedcc6790706
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Aug 22 13:37:51 2018 +0100
ISIS-1974: removes SpecificatoinLoader from the construtor of DataNucleusApplicationComponents
---
.../runtime/system/persistence/DataNucleusApplicationComponents.java | 3 ---
.../core/runtime/system/persistence/PersistenceSessionFactory.java | 2 +-
2 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
index 657ea78..bba5ba6 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
@@ -81,17 +81,14 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
private final Set<String> persistableClassNameSet;
private final IsisConfiguration jdoObjectstoreConfig;
- private final SpecificationLoader specificationLoader;
private final Map<String, String> datanucleusProps;
private PersistenceManagerFactory persistenceManagerFactory;
public DataNucleusApplicationComponents(
final IsisConfiguration configuration,
- final SpecificationLoader specificationLoader,
final Map<String, String> datanucleusProps,
final Set<String> persistableClassNameSet) {
- this.specificationLoader = specificationLoader;
this.datanucleusProps = datanucleusProps;
this.persistableClassNameSet = persistableClassNameSet;
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 4d05f28..7a275a0 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
@@ -101,7 +101,7 @@ public class PersistenceSessionFactory implements ApplicationScopedComponent, Fi
final Map<String, String> datanucleusProps = dataNucleusConfig.asMap();
addDataNucleusPropertiesIfRequired(datanucleusProps);
- applicationComponents = new DataNucleusApplicationComponents(jdoObjectstoreConfig, specificationLoader,
+ applicationComponents = new DataNucleusApplicationComponents(jdoObjectstoreConfig,
datanucleusProps, classesToBePersisted);
DataNucleusApplicationComponents.catalogNamedQueries(classesToBePersisted, specificationLoader);
[isis] 01/07: ISIS-1974: removes SpecificationLoader from
RegisterEntities as not used as a property.
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch maint-1.16.2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 14c6b11f1c25ac25a0c1ee1b7fa6bcdfb4c6ece6
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Aug 22 13:22:54 2018 +0100
ISIS-1974: removes SpecificationLoader from RegisterEntities as not used as a property.
---
.../apache/isis/objectstore/jdo/service/RegisterEntities.java | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
index ffcdfb4..ab192db 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
@@ -39,7 +39,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.isis.applib.AppManifest;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
public class RegisterEntities {
@@ -53,15 +52,13 @@ public class RegisterEntities {
//region > entityTypes
private final Set<String> entityTypes = Sets.newLinkedHashSet();
- private final SpecificationLoader specificationLoader;
public Set<String> getEntityTypes() {
return entityTypes;
}
//endregion
- public RegisterEntities(final Map<String, String> configuration, final SpecificationLoader specificationLoader) {
- this.specificationLoader = specificationLoader;
+ public RegisterEntities(final Map<String, String> configuration) {
Set<Class<?>> persistenceCapableTypes = AppManifest.Registry.instance().getPersistenceCapableTypes();
@@ -164,11 +161,6 @@ public class RegisterEntities {
};
}
- // //////////////////////////////////////
-
- SpecificationLoader getSpecificationLoader() {
- return specificationLoader;
- }
}
[isis] 03/07: ISIS-1974: makes catalogNamedQueries (the method that
populates SpecificatoinLoader) static.
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch maint-1.16.2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit a3d002b048d0fefde351d573eb64044c73b84d14
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Aug 22 13:24:46 2018 +0100
ISIS-1974: makes catalogNamedQueries (the method that populates SpecificatoinLoader) static.
---
.../runtime/system/persistence/DataNucleusApplicationComponents.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
index 52ac35b..ca45ec9 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
@@ -107,7 +107,7 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
private void initialize() {
persistenceManagerFactory = createPmfAndSchemaIfRequired(persistableClassNameSet, datanucleusProps);
- namedQueryByName = catalogNamedQueries(persistableClassNameSet);
+ namedQueryByName = catalogNamedQueries(persistableClassNameSet, specificationLoader);
}
private static boolean isSchemaAwareStoreManager(Map<String,String> datanucleusProps) {
@@ -232,7 +232,8 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
return properties;
}
- private Map<String, JdoNamedQuery> catalogNamedQueries(Set<String> persistableClassNames) {
+ static Map<String, JdoNamedQuery> catalogNamedQueries(
+ Set<String> persistableClassNames, final SpecificationLoader specificationLoader) {
final Map<String, JdoNamedQuery> namedQueryByName = Maps.newHashMap();
for (final String persistableClassName: persistableClassNames) {
final ObjectSpecification spec = specificationLoader.loadSpecification(persistableClassName);
[isis] 06/07: ISIS-1974: moves the responsibility for calling
catalogNamedQueries
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch maint-1.16.2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit b57533abaa2c87c3c42eb51aef276ee7d50acf3f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Aug 22 13:39:40 2018 +0100
ISIS-1974: moves the responsibility for calling catalogNamedQueries
... thereby removing SpecificatoinLoader from the main work that DNAC does bootstrapping the ORM
---
.../persistence/PersistenceSessionFactory.java | 48 +++++++++++-----------
.../system/session/IsisSessionFactoryBuilder.java | 8 ++--
2 files changed, 26 insertions(+), 30 deletions(-)
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 7a275a0..2466c89 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
@@ -72,42 +72,40 @@ public class PersistenceSessionFactory implements ApplicationScopedComponent, Fi
private DataNucleusApplicationComponents applicationComponents;
@Programmatic
- public void init(final SpecificationLoader specificationLoader) {
- this.applicationComponents = createDataNucleusApplicationComponents(configuration, specificationLoader);
- }
-
- @Programmatic
- public boolean isInitialized() {
- return this.applicationComponents != null;
- }
-
- private DataNucleusApplicationComponents createDataNucleusApplicationComponents(
- final IsisConfiguration configuration, final SpecificationLoader specificationLoader) {
-
+ public void init(final IsisConfigurationDefault configuration) {
final RegisterEntities registerEntities = new RegisterEntities(configuration.asMap());
-
- return createDataNucleusApplicationComponents(configuration, specificationLoader, registerEntities);
- }
-
- private DataNucleusApplicationComponents createDataNucleusApplicationComponents(
- final IsisConfiguration configuration,
- final SpecificationLoader specificationLoader, final RegisterEntities registerEntities) {
final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
- if (applicationComponents == null || applicationComponents.isStale()) {
+ if (shouldCreate(this.applicationComponents)) {
- final IsisConfiguration jdoObjectstoreConfig = configuration.createSubset(JDO_OBJECTSTORE_CONFIG_PREFIX);
- final IsisConfiguration dataNucleusConfig = configuration.createSubset(DATANUCLEUS_CONFIG_PREFIX);
+ final IsisConfiguration jdoObjectstoreConfig = this.configuration.createSubset(JDO_OBJECTSTORE_CONFIG_PREFIX);
+ final IsisConfiguration dataNucleusConfig = this.configuration.createSubset(DATANUCLEUS_CONFIG_PREFIX);
final Map<String, String> datanucleusProps = dataNucleusConfig.asMap();
addDataNucleusPropertiesIfRequired(datanucleusProps);
- applicationComponents = new DataNucleusApplicationComponents(jdoObjectstoreConfig,
+ DataNucleusApplicationComponents applicationComponents1 = new DataNucleusApplicationComponents(
+ jdoObjectstoreConfig,
datanucleusProps, classesToBePersisted);
- DataNucleusApplicationComponents.catalogNamedQueries(classesToBePersisted, specificationLoader);
+ this.applicationComponents = applicationComponents1;
+
}
+ }
+
+ @Programmatic
+ public void catalogNamedQueries(final SpecificationLoader specificationLoader) {
+ final RegisterEntities registerEntities = new RegisterEntities(configuration.asMap());
+ final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
+ DataNucleusApplicationComponents.catalogNamedQueries(classesToBePersisted, specificationLoader);
+ }
+
+ @Programmatic
+ public boolean isInitialized() {
+ return this.applicationComponents != null;
+ }
- return applicationComponents;
+ private boolean shouldCreate(final DataNucleusApplicationComponents applicationComponents) {
+ return applicationComponents == null || applicationComponents.isStale();
}
private static void addDataNucleusPropertiesIfRequired(
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
index 5c9e0b4..3e56fd6 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
@@ -163,7 +163,6 @@ public class IsisSessionFactoryBuilder {
// instantiate the IsisSessionFactory
isisSessionFactory = new IsisSessionFactory(deploymentCategory, servicesInjector, appManifest);
-
// now, add the IsisSessionFactory itself into ServicesInjector, so it can be @javax.inject.Inject'd
// into any internal domain services
servicesInjector.addFallbackIfRequired(IsisSessionFactory.class, isisSessionFactory);
@@ -178,8 +177,6 @@ public class IsisSessionFactoryBuilder {
// yet inject.
IsisContext.setSessionFactory(isisSessionFactory);
-
-
// time to initialize...
specificationLoader.init();
@@ -203,10 +200,11 @@ public class IsisSessionFactoryBuilder {
authenticationManager.init(deploymentCategory);
authorizationManager.init(deploymentCategory);
- persistenceSessionFactory.init(specificationLoader);
+ persistenceSessionFactory.init(configuration);
- isisSessionFactory.constructServices();
+ persistenceSessionFactory.catalogNamedQueries(specificationLoader);
+ isisSessionFactory.constructServices();
isisSessionFactory.doInSession(
new Runnable() {