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() {