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);