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 -> {