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 2022/08/03 08:22:36 UTC

[isis] branch master updated: ISIS-3002: don't publish entity property change events for entities where disabled (JPA)

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

danhaywood 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 c4fc0fd157 ISIS-3002: don't publish entity property change events for entities where disabled (JPA)
c4fc0fd157 is described below

commit c4fc0fd1572a981f6364694fd34f60f6c02d4eaf
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Aug 3 00:19:13 2022 +0100

    ISIS-3002: don't publish entity property change events for entities where disabled (JPA)
---
 .../publish/ObjectLifecyclePublisherDefault.java   | 25 ++++++++++++++--------
 .../jpa/applib/integration/IsisEntityListener.java |  2 ++
 2 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ObjectLifecyclePublisherDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ObjectLifecyclePublisherDefault.java
index f3a7c64822..f1ff4e6a07 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ObjectLifecyclePublisherDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ObjectLifecyclePublisherDefault.java
@@ -43,6 +43,7 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFac
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet;
+import org.apache.isis.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet;
 import org.apache.isis.core.metamodel.services.objectlifecycle.ObjectLifecyclePublisher;
 import org.apache.isis.core.metamodel.services.objectlifecycle.PropertyChangeRecord;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -98,9 +99,11 @@ implements
         CallbackFacet.callCallback(entity, UpdatingCallbackFacet.class);
         postLifecycleEventIfRequired(entity, UpdatingLifecycleEventFacet.class);
 
-        entityPropertyChangePublisher.publishChangedProperties(
-                ObjectLifecyclePublisher
-                .publishingPayloadForUpdate(entity, changeRecords));
+        if(EntityChangePublishingFacet.isPublishingEnabled(entity.getSpecification())) {
+            entityPropertyChangePublisher.publishChangedProperties(
+                    ObjectLifecyclePublisher
+                    .publishingPayloadForUpdate(entity, changeRecords));
+        }
 
     }
 
@@ -109,9 +112,11 @@ implements
         CallbackFacet.callCallback(entity, RemovingCallbackFacet.class);
         postLifecycleEventIfRequired(entity, RemovingLifecycleEventFacet.class);
 
-        entityPropertyChangePublisher.publishChangedProperties(
-                ObjectLifecyclePublisher
-                .publishingPayloadForDeletion(entity));
+        if(EntityChangePublishingFacet.isPublishingEnabled(entity.getSpecification())) {
+            entityPropertyChangePublisher.publishChangedProperties(
+                    ObjectLifecyclePublisher
+                    .publishingPayloadForDeletion(entity));
+        }
     }
 
     @Override
@@ -119,9 +124,11 @@ implements
         CallbackFacet.callCallback(entity, PersistedCallbackFacet.class);
         postLifecycleEventIfRequired(entity, PersistedLifecycleEventFacet.class);
 
-        entityPropertyChangePublisher.publishChangedProperties(
-                ObjectLifecyclePublisher
-                .publishingPayloadForCreation(entity));
+        if(EntityChangePublishingFacet.isPublishingEnabled(entity.getSpecification())) {
+            entityPropertyChangePublisher.publishChangedProperties(
+                    ObjectLifecyclePublisher
+                    .publishingPayloadForCreation(entity));
+        }
     }
 
     @Override
diff --git a/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/integration/IsisEntityListener.java b/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/integration/IsisEntityListener.java
index 9fb4cb9fcc..fd70d1a2ff 100644
--- a/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/integration/IsisEntityListener.java
+++ b/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/integration/IsisEntityListener.java
@@ -33,6 +33,7 @@ import org.eclipse.persistence.sessions.changesets.DirectToFieldChangeRecord;
 
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet;
 import org.apache.isis.core.metamodel.facets.properties.property.entitychangepublishing.EntityPropertyChangePublishingPolicyFacet;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.core.metamodel.services.objectlifecycle.ObjectLifecyclePublisher;
@@ -91,6 +92,7 @@ public class IsisEntityListener {
             objectChanges
             .getChanges()
             .stream()
+            .filter(property-> EntityChangePublishingFacet.isPublishingEnabled(entity.getSpecification()))
             .filter(DirectToFieldChangeRecord.class::isInstance)
             .map(DirectToFieldChangeRecord.class::cast)
             .map(changeRecord -> {