This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2050
in repository https://gitbox.apache.org/repos/asf/isis.git

commit dbc251bf7352f8bea5246d99ff21855ecdff3ec0
Author: danhaywood <d...@haywood-associates.co.uk>
AuthorDate: Thu Dec 13 00:24:21 2018 +0100

    ISIS-2050: removes SpecificationLoader#state; now responsibility of each 
ObjectSpecification to keep track of its own introspectionState.
---
 .../metamodel/specloader/SpecificationLoader.java  | 23 ++++------------------
 .../system/session/IsisSessionFactoryBuilder.java  |  2 ++
 2 files changed, 6 insertions(+), 19 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index ff8a9f5..5612994 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -91,7 +91,8 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
     private final static Logger LOG = 
LoggerFactory.getLogger(SpecificationLoader.class);
 
     public static final String INTROSPECTOR_PARALLELIZE_KEY = 
"isis.reflector.introspector.parallelize";
-    public static final boolean INTROSPECTOR_PARALLELIZE_DEFAULT = true;
+    //public static final boolean INTROSPECTOR_PARALLELIZE_DEFAULT = true;
+    public static final boolean INTROSPECTOR_PARALLELIZE_DEFAULT = false;
 
     //region > constructor, fields
     private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
@@ -107,11 +108,6 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
     private final List<LayoutMetadataReader> layoutMetadataReaders;
     private final PostProcessor postProcessor;
 
-    enum State {
-        NOT_INITIALIZED,
-        CACHING,
-        INTROSPECTING
-    }
 
 
     public SpecificationLoader(
@@ -131,8 +127,6 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
         this.postProcessor = new PostProcessor(programmingModel, 
servicesInjector);
 
         this.layoutMetadataReaders = layoutMetadataReaders;
-
-        this.state = State.NOT_INITIALIZED;
     }
 
     @Override
@@ -147,8 +141,6 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
 
     //region > internalInit
 
-    private State state;
-
     /**
      * Initializes and wires up, and primes the cache based on any service
      * classes (provided by the {@link ServicesInjector}).
@@ -174,8 +166,6 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
         metaModelValidator.init(this);
 
 
-        state = State.CACHING;
-
         // need to completely load services and mixins (synchronously)
         final List<ObjectSpecification> specificationsFromRegistry = 
Lists.newArrayList();
 
@@ -211,7 +201,6 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
                 specificationsFromRegistry, IntrospectionState.NOT_INTROSPECTED
         );
 
-        state = State.INTROSPECTING;
         final Collection<ObjectSpecification> cachedSpecifications = 
allCachedSpecifications();
 
         // for debugging only
@@ -326,8 +315,6 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
     public void shutdown() {
         LOG.info("shutting down {}", this);
 
-        state = State.NOT_INITIALIZED;
-
         cache.clear();
     }
 
@@ -468,10 +455,8 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
             // infinite loops
             cache.cache(typeName, specification);
 
-            if (state == State.INTROSPECTING) {
-                final ObjectSpecificationAbstract specSpi = 
(ObjectSpecificationAbstract) specification;
-                specSpi.introspectUpTo(upTo);
-            }
+            final ObjectSpecificationAbstract specSpi = 
(ObjectSpecificationAbstract) specification;
+            specSpi.introspectUpTo(upTo);
 
             return specification;
         }
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 6ca987e..612e18b 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
@@ -260,6 +260,8 @@ public class IsisSessionFactoryBuilder {
             );
 
             ThreadPoolSupport.getInstance().joinGatherFailures(futures);
+
+            // TODO: this is going to need to move into the 
ObjectSpecification#introspect stuff itself...
             specificationLoader.postProcess();
 
             persistenceSessionFactory.catalogNamedQueries(specificationLoader);

Reply via email to