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 2021/06/17 10:10:21 UTC

[isis] 02/02: ISIS-2746: fixes the order in which fixtures and seed services are called once MetamodelEvent (post build) is fired

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

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

commit a71d8dc3b688d0c7300ecd800aa73f17c38b6812
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jun 17 11:09:50 2021 +0100

    ISIS-2746: fixes the order in which fixtures and seed services are called once MetamodelEvent (post build) is fired
---
 .../ApplicationFeatureRepositoryDefault.java       |  3 +++
 .../dom/_infra/seed/SeedServiceAbstract.java       |  3 +++
 .../applib/seed/SeedSecurityModuleService.java     | 18 ++++++++---------
 .../services/InitialFixtureScriptsInstaller.java   | 23 ++++++++++------------
 4 files changed, 24 insertions(+), 23 deletions(-)

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 9cfa93b..971c965 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
@@ -33,7 +33,9 @@ import javax.annotation.Nullable;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.springframework.context.event.EventListener;
+import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -91,6 +93,7 @@ implements ApplicationFeatureRepository {
     }
 
     // -- init
+    @Order(OrderPrecedence.MIDPOINT)
     @EventListener(MetamodelEvent.class)
     public void onMetamodelEvent(MetamodelEvent event) {
         if (event.isPostMetamodel()
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 2cc1f75..8621521 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
@@ -22,6 +22,7 @@ import java.util.function.Supplier;
 
 import javax.inject.Inject;
 
+import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.springframework.context.event.EventListener;
 
 import org.apache.isis.core.metamodel.events.MetamodelEvent;
@@ -33,6 +34,7 @@ import lombok.NonNull;
 import demoapp.dom._infra.values.ValueHolder;
 import demoapp.dom._infra.values.ValueHolderFixtureFactory;
 import demoapp.dom._infra.values.ValueHolderRepository;
+import org.springframework.core.annotation.Order;
 
 public abstract class SeedServiceAbstract implements SeedService {
 
@@ -49,6 +51,7 @@ public abstract class SeedServiceAbstract implements SeedService {
 
 
     @EventListener(MetamodelEvent.class)
+    @Order(OrderPrecedence.MIDPOINT)
     public void onAppLifecycleEvent(MetamodelEvent event) {
         if (event.isPostMetamodel()) {
             fixtureScripts.run(fixtureScriptSupplier.get());
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/seed/SeedSecurityModuleService.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/seed/SeedSecurityModuleService.java
index 09ffe08..e1f24f4 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/seed/SeedSecurityModuleService.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/seed/SeedSecurityModuleService.java
@@ -18,20 +18,18 @@
  */
 package org.apache.isis.extensions.secman.applib.seed;
 
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.event.EventListener;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
-
+import lombok.extern.log4j.Log4j2;
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.core.metamodel.events.MetamodelEvent;
 import org.apache.isis.extensions.secman.applib.seed.scripts.SeedUsersAndRolesFixtureScript;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.event.EventListener;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Service;
 
-import lombok.extern.log4j.Log4j2;
+import javax.inject.Inject;
+import javax.inject.Named;
 
 /**
  * Automatically seeds the built-in roles (and permissions) for both Secman
@@ -48,7 +46,6 @@ import lombok.extern.log4j.Log4j2;
  */
 @Service
 @Named("isis.ext.secman.SeedSecurityModuleService")
-@Order(OrderPrecedence.MIDPOINT)
 @Qualifier("Default")
 @Log4j2
 public class SeedSecurityModuleService {
@@ -60,6 +57,7 @@ public class SeedSecurityModuleService {
         this.fixtureScripts = fixtureScripts;
     }
 
+    @Order(OrderPrecedence.MIDPOINT - 100)
     @EventListener(MetamodelEvent.class)
     public void onMetamodelEvent(final MetamodelEvent event) {
 
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/InitialFixtureScriptsInstaller.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/InitialFixtureScriptsInstaller.java
index c090602..4683ace 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/InitialFixtureScriptsInstaller.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/services/InitialFixtureScriptsInstaller.java
@@ -18,31 +18,27 @@
  */
 package org.apache.isis.testing.fixtures.applib.services;
 
-import java.lang.reflect.InvocationTargetException;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Primary;
-import org.springframework.context.event.EventListener;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
-
+import lombok.extern.log4j.Log4j2;
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.core.config.IsisConfiguration;
 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;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Primary;
+import org.springframework.context.event.EventListener;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Service;
 
-import lombok.extern.log4j.Log4j2;
+import javax.inject.Inject;
+import javax.inject.Named;
+import java.lang.reflect.InvocationTargetException;
 
 /**
  * @since 2.0 {@index}
  */
 @Service
 @Named("isis.testing.fixtures.InitialFixtureScriptsInstaller")
-@Order(OrderPrecedence.MIDPOINT)
 @Primary
 @Qualifier("Default")
 @Log4j2
@@ -72,6 +68,7 @@ public class InitialFixtureScriptsInstaller {
     }
 
     @EventListener(MetamodelEvent.class)
+    @Order(OrderPrecedence.LAST - 100)
     public void onMetamodelEvent(final MetamodelEvent event) {
 
         log.debug("received metamodel event {}", event);