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:56 UTC

[isis] 06/07: ISIS-1974: moves the responsibility for calling catalogNamedQueries

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