You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/01/26 16:18:09 UTC

[isis] branch master updated: ISIS-2431: simplify ApplicationFeatureRepositoryDefault initialization

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

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 6a41f40  ISIS-2431: simplify ApplicationFeatureRepositoryDefault initialization
6a41f40 is described below

commit 6a41f40b3cc65027703f07fc2466745b3d84350e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 26 17:17:52 2021 +0100

    ISIS-2431: simplify ApplicationFeatureRepositoryDefault initialization
---
 .../core/metamodel/events/MetamodelEvent.java}     | 13 ++++-----
 .../ApplicationFeatureRepositoryDefault.java       | 33 ++++++++--------------
 .../services/metamodel/MetaModelExporter.java      |  4 +--
 .../metamodel/MetaModelServiceDefault.java         | 10 +------
 .../ApplicationFeatureRepositoryDefaultTest.java   |  1 -
 .../isis/core/runtime/IsisModuleCoreRuntime.java   |  4 +--
 ...ventService.java => MetamodelEventService.java} | 13 +++++----
 .../session/InteractionFactoryDefault.java         |  8 +++---
 .../dom/_infra/seed/SeedServiceAbstract.java       |  6 ++--
 .../jdo/JavaTimeOffsetDateTimeJdoSeedService.java  |  6 ++--
 .../jdo/JavaTimeOffsetTimeJdoSeedService.java      |  6 ++--
 .../jdo/JavaTimeZonedDateTimeJdoSeedService.java   |  6 ++--
 .../secman/jdo/seed/SeedSecurityModuleService.java |  6 ++--
 .../secman/jpa/seed/SeedSecurityModuleService.java |  6 ++--
 .../jdo/datanucleus/schema/JdoSchemaService.java   | 10 +++----
 .../applib/services/FixturesLifecycleService.java  |  6 ++--
 16 files changed, 59 insertions(+), 79 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/AppLifecycleEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/events/MetamodelEvent.java
similarity index 80%
rename from core/runtime/src/main/java/org/apache/isis/core/runtime/events/AppLifecycleEvent.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/events/MetamodelEvent.java
index e2f1add..dcf8961 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/AppLifecycleEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/events/MetamodelEvent.java
@@ -16,20 +16,19 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.runtime.events;
+package org.apache.isis.core.metamodel.events;
 
-public enum AppLifecycleEvent {
-        PRE_METAMODEL,
-        POST_METAMODEL,
-        //APP_PRE_DESTROY,
+public enum MetamodelEvent {
+        BEFORE_METAMODEL_LOADING,
+        AFTER_METAMODEL_LOADED,
         ;
 	
 	public boolean isPreMetamodel() {
-		return this == PRE_METAMODEL;
+		return this == BEFORE_METAMODEL_LOADING;
 	}
 	
 	public boolean isPostMetamodel() {
-		return this == POST_METAMODEL;
+		return this == AFTER_METAMODEL_LOADED;
 	}
 	
 }
\ No newline at end of file
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index 765b5fa..611f864 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -26,22 +26,21 @@ import java.util.SortedMap;
 import java.util.SortedSet;
 import java.util.stream.Collectors;
 
-import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Repository;
 
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
 import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.metamodel.services.ApplicationFeaturesInitConfiguration;
+import org.apache.isis.core.metamodel.events.MetamodelEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleIntValueFacet;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
@@ -74,35 +73,33 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
     private final SortedMap<ApplicationFeatureId, ApplicationFeature> actionFeatures = _Maps.newTreeMap();
 
     private final IsisConfiguration configuration;
-    private final ServiceRegistry serviceRegistry;
     private final SpecificationLoader specificationLoader;
     private final ApplicationFeatureFactory applicationFeatureFactory;
 
     @Inject
     public ApplicationFeatureRepositoryDefault(
             IsisConfiguration configuration,
-            ServiceRegistry serviceRegistry,
             SpecificationLoader specificationLoader,
             ApplicationFeatureFactory applicationFeatureFactory) {
         this.configuration = configuration;
-        this.serviceRegistry = serviceRegistry;
         this.specificationLoader = specificationLoader;
         this.applicationFeatureFactory = applicationFeatureFactory;
     }
 
     // -- init
-
-
-    @PostConstruct
-    public void init() {
-        if(isEagerInitialize()) {
+    @EventListener(MetamodelEvent.class)
+    public void onAppLifecycleEvent(MetamodelEvent event) {
+        if (event.isPostMetamodel()
+                && isEagerInitialize()) {
             initializeIfRequired();
         }
     }
 
     private boolean isEagerInitialize() {
-        ApplicationFeaturesInitConfiguration setting = configuration.getCore().getRuntimeServices().getApplicationFeatures().getInit();
-        return setting == ApplicationFeaturesInitConfiguration.EAGER || setting == ApplicationFeaturesInitConfiguration.EAGERLY;
+        ApplicationFeaturesInitConfiguration setting = 
+                configuration.getCore().getRuntimeServices().getApplicationFeatures().getInit();
+        return setting == ApplicationFeaturesInitConfiguration.EAGER 
+                || setting == ApplicationFeaturesInitConfiguration.EAGERLY;
     }
 
     // -- initializeIfRequired
@@ -118,19 +115,11 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
             return;
         }
         initializationState = InitializationState.INITIALIZED;
-        val allSpecs = primeMetaModel();
-        for (val spec : allSpecs) {
+        for (val spec : specificationLoader.snapshotSpecifications()) {
             createApplicationFeaturesFor(spec);
         }
     }
 
-    private Can<ObjectSpecification> primeMetaModel() {
-        log.warn("loading service specs here might be redundant");
-        serviceRegistry.streamRegisteredBeans()
-            .forEach(bean->specificationLoader.loadSpecification(bean.getBeanClass()));
-        return specificationLoader.snapshotSpecifications();
-    }
-
     void createApplicationFeaturesFor(final ObjectSpecification spec) {
 
         if (exclude(spec)) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelExporter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelExporter.java
index a072b4f..429017b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelExporter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelExporter.java
@@ -62,8 +62,8 @@ class MetaModelExporter {
 
     SpecificationLoader specificationLookup;
 
-    public MetaModelExporter(final SpecificationLoader specificationLookup) {
-        this.specificationLookup = specificationLookup;
+    public MetaModelExporter(final SpecificationLoader specificationLoader) {
+        this.specificationLookup = specificationLoader;
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index d3a0983..dfd0de1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.services.metamodel;
 import java.util.Collections;
 import java.util.List;
 
-import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 import javax.inject.Named;
 
@@ -64,13 +63,6 @@ public class MetaModelServiceDefault implements MetaModelService {
 
     @Inject private SpecificationLoader specificationLoader;
     @Inject private GridService gridService;
-    
-    private MetaModelExporter metaModelExporter;
-
-    @PostConstruct
-    public void init() {
-        metaModelExporter = new MetaModelExporter(specificationLoader);
-    }
 
     @Override
     public Class<?> fromObjectType(final String objectType) {
@@ -245,7 +237,7 @@ public class MetaModelServiceDefault implements MetaModelService {
 
     @Override
     public MetamodelDto exportMetaModel(final Config config) {
-        return metaModelExporter.exportMetaModel(config);
+        return new MetaModelExporter(specificationLoader).exportMetaModel(config);
     }
 
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
index 744164d..4e2b515 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
@@ -84,7 +84,6 @@ public class ApplicationFeatureRepositoryDefaultTest {
 
         applicationFeatureRepository = new ApplicationFeatureRepositoryDefault(
                 /*configuration*/ null, 
-                mockServiceRegistry, 
                 mockSpecificationLoader, 
                 applicationFeatureFactory);
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/IsisModuleCoreRuntime.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/IsisModuleCoreRuntime.java
index 4eeceb9..e135418 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/IsisModuleCoreRuntime.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/IsisModuleCoreRuntime.java
@@ -23,7 +23,7 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.isis.core.interaction.IsisModuleCoreInteraction;
 import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
-import org.apache.isis.core.runtime.events.AppLifecycleEventService;
+import org.apache.isis.core.runtime.events.MetamodelEventService;
 import org.apache.isis.core.runtime.events.TransactionEventEmitter;
 import org.apache.isis.core.transaction.IsisModuleCoreTransaction;
 
@@ -35,7 +35,7 @@ import org.apache.isis.core.transaction.IsisModuleCoreTransaction;
         IsisModuleCoreTransaction.class,
 
         // @Service's
-        AppLifecycleEventService.class,
+        MetamodelEventService.class,
         TransactionEventEmitter.class,
 
         // @Configuration's
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/AppLifecycleEventService.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/events/MetamodelEventService.java
similarity index 81%
rename from core/runtime/src/main/java/org/apache/isis/core/runtime/events/AppLifecycleEventService.java
rename to core/runtime/src/main/java/org/apache/isis/core/runtime/events/MetamodelEventService.java
index 7d8dfdf..ed883b4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/AppLifecycleEventService.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/events/MetamodelEventService.java
@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.applib.services.eventbus.EventBusService;
+import org.apache.isis.core.metamodel.events.MetamodelEvent;
 
 /**
  * 
@@ -36,22 +37,22 @@ import org.apache.isis.applib.services.eventbus.EventBusService;
  * post-construct phase has finished and before the pre-destroy phase has begun.
  */
 @Service
-@Named("isisRuntime.AppLifecycleEventService")
+@Named("isisRuntime.MetamodelEventService")
 @Order(OrderPrecedence.MIDPOINT)
 @Primary
 @Qualifier("Default")
-public class AppLifecycleEventService {
+public class MetamodelEventService {
     
     @Inject private EventBusService eventBusService;
 
    // -- APP
 
-    public void fireAppPreMetamodel() {
-        eventBusService.post(AppLifecycleEvent.PRE_METAMODEL);
+    public void fireBeforeMetamodelLoading() {
+        eventBusService.post(MetamodelEvent.BEFORE_METAMODEL_LOADING);
     }
 
-    public void fireAppPostMetamodel() {
-        eventBusService.post(AppLifecycleEvent.POST_METAMODEL);
+    public void fireAfterMetamodelLoaded() {
+        eventBusService.post(MetamodelEvent.AFTER_METAMODEL_LOADED);
     }
 
 }
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
index 5b3677b..d789978 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
@@ -66,7 +66,7 @@ import org.apache.isis.core.interaction.session.IsisInteraction;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.services.publishing.CommandPublisher;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.runtime.events.AppLifecycleEventService;
+import org.apache.isis.core.runtime.events.MetamodelEventService;
 import org.apache.isis.core.security.authentication.Authentication;
 import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
 
@@ -95,7 +95,7 @@ public class InteractionFactoryDefault
 implements InteractionFactory, InteractionTracker {
 
     @Inject AuthenticationManager authenticationManager;
-    @Inject AppLifecycleEventService runtimeEventService;
+    @Inject MetamodelEventService runtimeEventService;
     @Inject SpecificationLoader specificationLoader;
     @Inject MetaModelContext metaModelContext;
     @Inject IsisConfiguration configuration;
@@ -123,7 +123,7 @@ implements InteractionFactory, InteractionTracker {
         log.info("Initialising Isis System");
         log.info("working directory: {}", new File(".").getAbsolutePath());
 
-        runtimeEventService.fireAppPreMetamodel();
+        runtimeEventService.fireBeforeMetamodelLoading();
 
         val taskList = _ConcurrentTaskList.named("IsisInteractionFactoryDefault Init")
                 .addRunnable("SpecificationLoader::createMetaModel", specificationLoader::createMetaModel)
@@ -148,7 +148,7 @@ implements InteractionFactory, InteractionTracker {
             }
         }
 
-        runtimeEventService.fireAppPostMetamodel();
+        runtimeEventService.fireAfterMetamodelLoaded();
 
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/seed/SeedServiceAbstract.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/seed/SeedServiceAbstract.java
index 982c3bf..8bee67b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/seed/SeedServiceAbstract.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/seed/SeedServiceAbstract.java
@@ -24,7 +24,7 @@ import javax.inject.Inject;
 
 import org.springframework.context.event.EventListener;
 
-import org.apache.isis.core.runtime.events.AppLifecycleEvent;
+import org.apache.isis.core.metamodel.events.MetamodelEvent;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 
@@ -36,8 +36,8 @@ public abstract class SeedServiceAbstract implements SeedService {
         this.fixtureScriptSupplier = fixtureScriptSupplier;
     }
 
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+    @EventListener(MetamodelEvent.class)
+    public void onAppLifecycleEvent(MetamodelEvent event) {
         if (event.isPostMetamodel()) {
             fixtureScripts.run(fixtureScriptSupplier.get());
         }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/jdo/JavaTimeOffsetDateTimeJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/jdo/JavaTimeOffsetDateTimeJdoSeedService.java
index 754c828..f4511ee 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/jdo/JavaTimeOffsetDateTimeJdoSeedService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/jdo/JavaTimeOffsetDateTimeJdoSeedService.java
@@ -26,7 +26,7 @@ import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.core.runtime.events.AppLifecycleEvent;
+import org.apache.isis.core.metamodel.events.MetamodelEvent;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 
@@ -35,8 +35,8 @@ import demoapp.dom.types.Samples;
 @Service
 public class JavaTimeOffsetDateTimeJdoSeedService {
 
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+    @EventListener(MetamodelEvent.class)
+    public void onAppLifecycleEvent(MetamodelEvent event) {
 
     	if (event.isPostMetamodel()) {
             fixtureScripts.run(new TemporalJavaTimeOffsetDateTimeJdoEntityFixture());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/jdo/JavaTimeOffsetTimeJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/jdo/JavaTimeOffsetTimeJdoSeedService.java
index 896dbfd..a82d80f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/jdo/JavaTimeOffsetTimeJdoSeedService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/jdo/JavaTimeOffsetTimeJdoSeedService.java
@@ -26,7 +26,7 @@ import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.core.runtime.events.AppLifecycleEvent;
+import org.apache.isis.core.metamodel.events.MetamodelEvent;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 
@@ -35,8 +35,8 @@ import demoapp.dom.types.Samples;
 @Service
 public class JavaTimeOffsetTimeJdoSeedService {
 
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+    @EventListener(MetamodelEvent.class)
+    public void onAppLifecycleEvent(MetamodelEvent event) {
 
     	if (event.isPostMetamodel()) {
             fixtureScripts.run(new TemporalJavaTimeOffsetTimeJdoEntityFixture());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/jdo/JavaTimeZonedDateTimeJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/jdo/JavaTimeZonedDateTimeJdoSeedService.java
index bbdb56d..bfe6b22 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/jdo/JavaTimeZonedDateTimeJdoSeedService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/jdo/JavaTimeZonedDateTimeJdoSeedService.java
@@ -26,7 +26,7 @@ import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.core.runtime.events.AppLifecycleEvent;
+import org.apache.isis.core.metamodel.events.MetamodelEvent;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 
@@ -35,8 +35,8 @@ import demoapp.dom.types.Samples;
 @Service
 public class JavaTimeZonedDateTimeJdoSeedService {
 
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+    @EventListener(MetamodelEvent.class)
+    public void onAppLifecycleEvent(MetamodelEvent event) {
 
     	if (event.isPostMetamodel()) {
             fixtureScripts.run(new TemporalJavaTimeZonedDateTimeJdoEntityFixture());
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedSecurityModuleService.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedSecurityModuleService.java
index b566cac..04e10fd 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedSecurityModuleService.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedSecurityModuleService.java
@@ -27,7 +27,7 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.core.runtime.events.AppLifecycleEvent;
+import org.apache.isis.core.metamodel.events.MetamodelEvent;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 
 import lombok.extern.log4j.Log4j2;
@@ -46,8 +46,8 @@ public class SeedSecurityModuleService {
         this.fixtureScripts = fixtureScripts;
     }
 
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(final AppLifecycleEvent event) {
+    @EventListener(MetamodelEvent.class)
+    public void onAppLifecycleEvent(final MetamodelEvent event) {
 
         log.debug("received app lifecycle event {}", event);
 
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedSecurityModuleService.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedSecurityModuleService.java
index 3d9a521..574514f 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedSecurityModuleService.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedSecurityModuleService.java
@@ -27,7 +27,7 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.core.runtime.events.AppLifecycleEvent;
+import org.apache.isis.core.metamodel.events.MetamodelEvent;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 
 import lombok.extern.log4j.Log4j2;
@@ -46,8 +46,8 @@ public class SeedSecurityModuleService {
         this.fixtureScripts = fixtureScripts;
     }
 
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(final AppLifecycleEvent event) {
+    @EventListener(MetamodelEvent.class)
+    public void onAppLifecycleEvent(final MetamodelEvent event) {
 
         log.debug("received app lifecycle event {}", event);
 
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/JdoSchemaService.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/JdoSchemaService.java
index 49c44f6..1dcf63c 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/JdoSchemaService.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/JdoSchemaService.java
@@ -33,7 +33,7 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.runtime.events.AppLifecycleEvent;
+import org.apache.isis.core.metamodel.events.MetamodelEvent;
 import org.apache.isis.persistence.jdo.datanucleus.config.DnSettings;
 import org.apache.isis.persistence.jdo.spring.integration.TransactionAwarePersistenceManagerFactoryProxy;
 
@@ -70,15 +70,15 @@ public class JdoSchemaService {
         }
     }
 
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+    @EventListener(MetamodelEvent.class)
+    public void onAppLifecycleEvent(MetamodelEvent event) {
 
         log.debug("received app lifecycle event {}", event);
 
         switch (event) {
-        case PRE_METAMODEL:
+        case BEFORE_METAMODEL_LOADING:
             break;
-        case POST_METAMODEL:
+        case AFTER_METAMODEL_LOADED:
             new _DnApplication(metaModelContext, dnSettings); // creates schema
             break;
 
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/FixturesLifecycleService.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/FixturesLifecycleService.java
index 6ffcec7..d876087 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/FixturesLifecycleService.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/FixturesLifecycleService.java
@@ -34,7 +34,7 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.environment.IsisSystemEnvironment;
 import org.apache.isis.core.interaction.session.InteractionFactory;
-import org.apache.isis.core.runtime.events.AppLifecycleEvent;
+import org.apache.isis.core.metamodel.events.MetamodelEvent;
 import org.apache.isis.testing.fixtures.applib.clock.Clock;
 import org.apache.isis.testing.fixtures.applib.clock.FixtureClock;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
@@ -88,8 +88,8 @@ public class FixturesLifecycleService {
         }
     }
 
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(final AppLifecycleEvent event) {
+    @EventListener(MetamodelEvent.class)
+    public void onAppLifecycleEvent(final MetamodelEvent event) {
 
         log.debug("received app lifecycle event {}", event);