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 2b3dda3830 ISIS-2651: don't notify JDO listeners with JPA entities
2b3dda3830 is described below

commit 2b3dda3830883142ebd7c2e297fc016f37b56961
Author: Andi Huber <[email protected]>
AuthorDate: Fri May 20 15:20:48 2022 +0200

    ISIS-2651: don't notify JDO listeners with JPA entities
---
 .../core/config/beans/IsisBeanTypeRegistry.java    | 19 ++++++++++++++
 .../config/beans/IsisBeanTypeRegistryDefault.java  |  4 ++-
 .../isis/core/config/beans}/PersistenceStack.java  |  2 +-
 .../facets/object/entity/EntityFacet.java          |  1 +
 .../object/entity/_EntityFacetForTesting.java      |  1 +
 .../isis/core/metamodel/spec/ManagedObjects.java   |  2 +-
 .../specloader/SpecificationLoaderDefault.java     |  2 +-
 .../isis/core/metamodel/specloader/_Util.java      | 15 -----------
 .../IsisModulePersistenceJdoDatanucleus.java       | 29 ++++++++++++++++------
 .../datanucleus/config/DatanucleusSettings.java    |  5 ++--
 .../metamodel/facets/entity/JdoEntityFacet.java    |  2 +-
 .../testing/AbstractFacetFactoryTest.java          |  2 +-
 .../integration/entity/JpaEntityFacetFactory.java  |  2 +-
 .../isis/testdomain/HasPersistenceStandard.java    |  2 +-
 .../testdomain/jdo/HasPersistenceStandardJdo.java  |  2 +-
 .../testdomain/jpa/HasPersistenceStandardJpa.java  |  2 +-
 16 files changed, 57 insertions(+), 35 deletions(-)

diff --git 
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistry.java
 
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistry.java
index e64e1a286c..bb8f9f0557 100644
--- 
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistry.java
+++ 
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistry.java
@@ -55,5 +55,24 @@ public interface IsisBeanTypeRegistry {
                 .map(IsisBeanMetaData::getBeanName);
     }
 
+    default Set<Class<?>> getEntityTypes(final PersistenceStack 
persistenceStack) {
+        return determineCurrentPersistenceStack().equals(persistenceStack)
+                ? getEntityTypes()
+                : Set.of();
+    }
+
+    /**
+     * Returns either 'JDO' or 'JPA' based on what {@link 
IsisBeanTypeClassifier} we find
+     * registered with <i>Spring</i>.
+     * Alternative implementations could be considered, however this works for 
now.
+     */
+    default PersistenceStack determineCurrentPersistenceStack() {
+        return IsisBeanTypeClassifier.get().stream()
+                .map(IsisBeanTypeClassifier::getClass)
+                .map(Class::getSimpleName)
+                .anyMatch(classifierName->classifierName.startsWith("Jdo"))
+                ? PersistenceStack.JDO
+                : PersistenceStack.JPA;
+    }
 
 }
\ No newline at end of file
diff --git 
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
 
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
index 9dfce0a533..c11d79ef55 100644
--- 
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
+++ 
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
@@ -65,7 +65,7 @@ public class IsisBeanTypeRegistryDefault implements 
IsisBeanTypeRegistry {
     // -- LOOKUPS
 
     @Override
-    public Optional<IsisBeanMetaData> lookupIntrospectableType(Class<?> type) {
+    public Optional<IsisBeanMetaData> lookupIntrospectableType(final Class<?> 
type) {
         return Optional.ofNullable(introspectableTypesByClass.get(type));
     }
 
@@ -117,4 +117,6 @@ public class IsisBeanTypeRegistryDefault implements 
IsisBeanTypeRegistry {
 
     }
 
+
+
 }
\ No newline at end of file
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/PersistenceStack.java
 
b/core/config/src/main/java/org/apache/isis/core/config/beans/PersistenceStack.java
similarity index 94%
rename from 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/PersistenceStack.java
rename to 
core/config/src/main/java/org/apache/isis/core/config/beans/PersistenceStack.java
index 22926c60e4..e0f56f6521 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/PersistenceStack.java
+++ 
b/core/config/src/main/java/org/apache/isis/core/config/beans/PersistenceStack.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.metamodel.facets.object.entity;
+package org.apache.isis.core.config.beans;
 
 public enum PersistenceStack {
     JPA,
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/EntityFacet.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/EntityFacet.java
index 195c075d97..d4537d1c43 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/EntityFacet.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/EntityFacet.java
@@ -24,6 +24,7 @@ import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.repository.EntityState;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.beans.PersistenceStack;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/_EntityFacetForTesting.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/_EntityFacetForTesting.java
index 157392c68b..42f30a64cc 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/_EntityFacetForTesting.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/entity/_EntityFacetForTesting.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.repository.EntityState;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.core.config.beans.PersistenceStack;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
index 6fe3fc2205..c2e5025c41 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
@@ -52,12 +52,12 @@ import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.commons.internal.debug._Debug;
 import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.core.config.beans.PersistenceStack;
 import org.apache.isis.core.metamodel.commons.CanonicalInvoker;
 import org.apache.isis.core.metamodel.commons.ClassExtensions;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.collections.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
-import org.apache.isis.core.metamodel.facets.object.entity.PersistenceStack;
 import org.apache.isis.core.metamodel.facets.object.title.TitleRenderRequest;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.interactions.InteractionHead;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
index b083fc687c..0b4dc8a6a8 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
@@ -295,7 +295,7 @@ public class SpecificationLoaderDefault implements 
SpecificationLoader {
 
         log.info(" - introspecting {} entities ({})",
                 isisBeanTypeRegistry.getEntityTypes().size(),
-                _Util.persistenceLayerName());
+                
isisBeanTypeRegistry.determineCurrentPersistenceStack().name());
 
         log.info(" - introspecting {} view models", 
isisBeanTypeRegistry.getViewModelTypes().size());
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/_Util.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/_Util.java
index 93caf9dc6e..6d6cee23d8 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/_Util.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/_Util.java
@@ -24,7 +24,6 @@ import java.util.stream.Collectors;
 
 import org.apache.logging.log4j.Logger;
 
-import org.apache.isis.core.config.beans.IsisBeanTypeClassifier;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 import lombok.val;
@@ -79,18 +78,4 @@ final class _Util {
                 cached.size(), cachedAfterNotBefore.size()));
     }
 
-    /**
-     * Returns either 'JDO' or 'JPA' based on what {@link 
IsisBeanTypeClassifier} we find
-     * registered with <i>Spring</i>.
-     * Alternative implementations could be considered, however this works for 
now.
-     */
-    String persistenceLayerName() {
-        return IsisBeanTypeClassifier.get().stream()
-            .map(IsisBeanTypeClassifier::getClass)
-            .map(Class::getSimpleName)
-            .anyMatch(classifierName->classifierName.startsWith("Jdo"))
-            ? "JDO"
-            : "JPA";
-    }
-
 }
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModulePersistenceJdoDatanucleus.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModulePersistenceJdoDatanucleus.java
index 69aca51c0e..38c46758d1 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModulePersistenceJdoDatanucleus.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModulePersistenceJdoDatanucleus.java
@@ -41,6 +41,7 @@ import org.apache.isis.commons.internal.assertions._Assert;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
+import org.apache.isis.core.config.beans.PersistenceStack;
 import 
org.apache.isis.core.config.beans.aoppatch.TransactionInterceptorFactory;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.transaction.changetracking.EntityChangeTracker;
@@ -145,14 +146,7 @@ public class IsisModulePersistenceJdoDatanucleus {
 
         val pmf = localPmfBean.getObject(); // created once per application 
lifecycle
 
-        val entityTypes = beanTypeRegistry.getEntityTypes();
-        if(! _NullSafe.isEmpty(entityTypes)) {
-            val dnProps = dnSettings.getAsProperties();
-            _NullSafe.stream(jdoEntityDiscoveryListeners)
-                    .forEach(listener->{
-                        listener.onEntitiesDiscovered(pmf, entityTypes, 
dnProps);
-                    });
-        }
+        notifyJdoEntityDiscoveryListeners(pmf, beanTypeRegistry, 
jdoEntityDiscoveryListeners, dnSettings);
 
         val tapmfProxy = new 
TransactionAwarePersistenceManagerFactoryProxy(metaModelContext);
         tapmfProxy.setTargetPersistenceManagerFactory(pmf);
@@ -214,6 +208,25 @@ public class IsisModulePersistenceJdoDatanucleus {
 
     // -- HELPER
 
+    private static void notifyJdoEntityDiscoveryListeners(
+            final PersistenceManagerFactory pmf,
+            final IsisBeanTypeRegistry beanTypeRegistry,
+            final List<JdoEntityDiscoveryListener> jdoEntityDiscoveryListeners,
+            final DatanucleusSettings dnSettings) {
+
+        if(_NullSafe.isEmpty(jdoEntityDiscoveryListeners)) {
+            return;
+        }
+        val jdoEntityTypes = 
beanTypeRegistry.getEntityTypes(PersistenceStack.JDO);
+        if(_NullSafe.isEmpty(jdoEntityTypes)) {
+            return;
+        }
+        val dnProps = dnSettings.getAsProperties();
+        _NullSafe.stream(jdoEntityDiscoveryListeners)
+                .forEach(listener->
+                    listener.onEntitiesDiscovered(pmf, jdoEntityTypes, 
dnProps));
+    }
+
     /**
      * integrates with settings from isis.persistence.schema.*
      */
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DatanucleusSettings.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DatanucleusSettings.java
index 20a325b2f2..9f1d06b168 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DatanucleusSettings.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DatanucleusSettings.java
@@ -20,7 +20,6 @@ package org.apache.isis.persistence.jdo.datanucleus.config;
 
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Locale;
 import java.util.Map;
 
 import javax.annotation.Priority;
@@ -99,6 +98,8 @@ public class DatanucleusSettings {
         return properties;
     }
 
+    // -- HELPER
+
     private void addFallbacks(final Map<String, Object> props) {
 
         val connectionFactoryName = (String) 
props.get(PropertyNames.PROPERTY_CONNECTION_FACTORY_NAME);
@@ -133,7 +134,7 @@ public class DatanucleusSettings {
 
     }
 
-    private static String sanitizeKey(String key) {
+    private static String sanitizeKey(final String key) {
         return key.replaceAll("-", "").toLowerCase();
     }
 
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacet.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacet.java
index 54299872d6..7460c6127f 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacet.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacet.java
@@ -47,10 +47,10 @@ import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.debug._Debug;
 import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.core.config.beans.PersistenceStack;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
-import org.apache.isis.core.metamodel.facets.object.entity.PersistenceStack;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
diff --git 
a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/testing/AbstractFacetFactoryTest.java
 
b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/testing/AbstractFacetFactoryTest.java
index b769472315..7f0ea1121f 100644
--- 
a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/testing/AbstractFacetFactoryTest.java
+++ 
b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/testing/AbstractFacetFactoryTest.java
@@ -31,6 +31,7 @@ import 
org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.applib.services.iactnlayer.InteractionContext;
 import org.apache.isis.applib.services.repository.EntityState;
 import org.apache.isis.commons.collections.ImmutableEnumSet;
+import org.apache.isis.core.config.beans.PersistenceStack;
 import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
 import org.apache.isis.core.metamodel._testing.MethodRemover_forTesting;
@@ -40,7 +41,6 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
-import org.apache.isis.core.metamodel.facets.object.entity.PersistenceStack;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.security.authentication.InteractionContextFactory;
diff --git 
a/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacetFactory.java
 
b/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacetFactory.java
index 9851d41230..35b5dace81 100644
--- 
a/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacetFactory.java
+++ 
b/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacetFactory.java
@@ -46,6 +46,7 @@ import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.commons.internal.memento._Mementos;
 import org.apache.isis.commons.internal.memento._Mementos.SerializingAdapter;
+import org.apache.isis.core.config.beans.PersistenceStack;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
@@ -53,7 +54,6 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
-import org.apache.isis.core.metamodel.facets.object.entity.PersistenceStack;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
diff --git 
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/HasPersistenceStandard.java
 
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/HasPersistenceStandard.java
index add3355275..781d88a596 100644
--- 
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/HasPersistenceStandard.java
+++ 
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/HasPersistenceStandard.java
@@ -19,7 +19,7 @@
 package org.apache.isis.testdomain;
 
 import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.facets.object.entity.PersistenceStack;
+import org.apache.isis.core.config.beans.PersistenceStack;
 
 public interface HasPersistenceStandard {
 
diff --git 
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/HasPersistenceStandardJdo.java
 
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/HasPersistenceStandardJdo.java
index b8a8e3985a..fbd3d15f4c 100644
--- 
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/HasPersistenceStandardJdo.java
+++ 
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/HasPersistenceStandardJdo.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.testdomain.jdo;
 
-import org.apache.isis.core.metamodel.facets.object.entity.PersistenceStack;
+import org.apache.isis.core.config.beans.PersistenceStack;
 import org.apache.isis.testdomain.HasPersistenceStandard;
 
 public interface HasPersistenceStandardJdo
diff --git 
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/HasPersistenceStandardJpa.java
 
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/HasPersistenceStandardJpa.java
index 5e246851ed..48cb2a62a7 100644
--- 
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/HasPersistenceStandardJpa.java
+++ 
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/HasPersistenceStandardJpa.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.testdomain.jpa;
 
-import org.apache.isis.core.metamodel.facets.object.entity.PersistenceStack;
+import org.apache.isis.core.config.beans.PersistenceStack;
 import org.apache.isis.testdomain.HasPersistenceStandard;
 
 public interface HasPersistenceStandardJpa

Reply via email to