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

commit bf6068e138720fe6bb6de2178a74c3e9a8960564
Author: Andi Huber <[email protected]>
AuthorDate: Thu Nov 19 19:29:22 2020 +0100

    ISIS-2464: reinstate optimization: only enlist entities that are enabled
    for auditing
---
 .../isis/applib/services/metrics/MetricsService.java      |  2 --
 .../persistence/changetracking/AdapterAndProperty.java    | 15 +++------------
 .../changetracking/ChangingEntitiesFactory.java           |  2 +-
 .../changetracking/EntityChangeTrackerDefault.java        | 14 ++++++--------
 .../publish/ChangingEntitiesDispatcherDefault.java        |  2 +-
 .../persistence/IsisPersistenceSessionJdoBase.java        |  4 ----
 .../isis/testdomain/conf/Configuration_headless.java      |  5 -----
 7 files changed, 11 insertions(+), 33 deletions(-)

diff --git 
a/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
 
b/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
index a81a02e..a6618d0 100644
--- 
a/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
+++ 
b/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
@@ -46,8 +46,6 @@ public interface MetricsService {
      */
     // tag::refguide[]
     int numberEntitiesDirtied();     // <.>
-    
-    int numberEntityPropertiesModified();
 
 }
 // end::refguide[]
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/AdapterAndProperty.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/AdapterAndProperty.java
index a1feab0..34afd73 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/AdapterAndProperty.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/AdapterAndProperty.java
@@ -18,8 +18,6 @@
  */
 package org.apache.isis.core.runtime.persistence.changetracking;
 
-import java.util.Map;
-
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -42,22 +40,19 @@ final class AdapterAndProperty {
     @Getter private final ObjectAssociation property;
     @Getter private final Bookmark bookmark;
     @Getter private final String propertyId;
-    @Getter private final boolean auditDispatchEnabled;
     
     private final String bookmarkStr;
 
     public static AdapterAndProperty of(
             final @NonNull ManagedObject adapter, 
-            final @NonNull ObjectAssociation property,
-            final boolean auditDispatchEnabled) {
-        return new AdapterAndProperty(adapter, property, auditDispatchEnabled);
+            final @NonNull ObjectAssociation property) {
+        return new AdapterAndProperty(adapter, property);
     }
 
-    private AdapterAndProperty(ManagedObject adapter, ObjectAssociation 
property, boolean auditDispatchEnabled) {
+    private AdapterAndProperty(ManagedObject adapter, ObjectAssociation 
property) {
         
         this.adapter = adapter;
         this.property = property;
-        this.auditDispatchEnabled = auditDispatchEnabled;
         this.propertyId = property.getId();
 
         this.bookmark = ManagedObjects.bookmarkElseFail(adapter);
@@ -74,9 +69,5 @@ final class AdapterAndProperty {
         return referencedAdapter == null ? null : referencedAdapter.getPojo();
     }
 
-    public static boolean isAuditDispatchEnabled(final 
Map.Entry<AdapterAndProperty, ?> enlistedEntry) {
-        val adapterAndProperty = enlistedEntry.getKey();
-        return adapterAndProperty.isAuditDispatchEnabled();
-    }
     
 }
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/ChangingEntitiesFactory.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/ChangingEntitiesFactory.java
index 0ee6a5b..69f7a52 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/ChangingEntitiesFactory.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/ChangingEntitiesFactory.java
@@ -59,7 +59,7 @@ class ChangingEntitiesFactory {
         val changingEntities = newChangingEntities(
                         entityChangeTracker.currentInteraction(),
                         entityChangeTracker.numberEntitiesLoaded(), 
-                        entityChangeTracker.numberEntityPropertiesModified(),
+                        
entityChangeTracker.numberAuditedEntityPropertiesModified(),
                         changeKindByPublishedAdapter);
         
         return changingEntities;
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityChangeTrackerDefault.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityChangeTrackerDefault.java
index d6d8e99..459aadd 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityChangeTrackerDefault.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityChangeTrackerDefault.java
@@ -256,7 +256,9 @@ implements
                     + "since changedObjectPropertiesRef was already prepared 
(memoized) for auditing.");
         }
         
-        val auditDispatchEnabled = 
AuditableFacet.isAuditingEnabled(entity.getSpecification());
+        if(!AuditableFacet.isAuditingEnabled(entity.getSpecification())) {
+            return; // ignore entities that are not enabled for auditing
+        }
 
         log.debug("enlist entity's property changes for auditing {}", entity);
 
@@ -264,11 +266,10 @@ implements
         .streamAssociations(Contributed.EXCLUDED)
         .filter(ObjectAssociation.Predicates.PROPERTIES)
         .filter(property->!property.isNotPersisted())
-        .map(property->AdapterAndProperty.of(entity, property, 
auditDispatchEnabled))
+        .map(property->AdapterAndProperty.of(entity, property))
         .filter(aap->!enlistedEntityPropertiesForAuditing.containsKey(aap)) // 
already enlisted, so ignore
         .forEach(aap->{
             enlistedEntityPropertiesForAuditing.put(aap, pre.apply(aap));
-            numberEntityPropertiesModified.increment();
         });
     }
 
@@ -280,7 +281,6 @@ implements
 
         val postValues = 
enlistedEntityPropertiesForAuditing.entrySet().stream()
                 .peek(this::updatePostOn) // set post values of audits, which 
have been left empty up to now
-                .filter(AdapterAndProperty::isAuditDispatchEnabled)
                 .filter(PreAndPostValues::shouldAudit)
                 .map(entry->AuditEntry.of(entry.getKey(), entry.getValue()))
                 .collect(_Sets.toUnmodifiable());
@@ -316,9 +316,8 @@ implements
         return changeKindByEnlistedAdapter.size();
     }
     
-    @Override
-    public int numberEntityPropertiesModified() {
-        return Math.toIntExact(numberEntityPropertiesModified.longValue());
+    int numberAuditedEntityPropertiesModified() {
+        return getEntityAuditEntries().size();
     }
 
     // -- ENTITY CHANGE TRACKING
@@ -374,7 +373,6 @@ implements
     }
     
     private final LongAdder numberEntitiesLoaded = new LongAdder();
-    private final LongAdder numberEntityPropertiesModified = new LongAdder();
     
     @Override
     public void incrementLoaded() {
diff --git 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ChangingEntitiesDispatcherDefault.java
 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ChangingEntitiesDispatcherDefault.java
index f63e161..6c13e5f 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ChangingEntitiesDispatcherDefault.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ChangingEntitiesDispatcherDefault.java
@@ -41,7 +41,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 /**
- * Wrapper around {@link 
org.apache.isis.applib.services.audit.EntityAuditListener}.
+ * Wrapper around {@link 
org.apache.isis.applib.services.audit.ChangingEntitiesListener}.
  */
 @Service
 @Named("isisRuntime.ChangingEntitiesDispatcher")
diff --git 
a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPersistenceSessionJdoBase.java
 
b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPersistenceSessionJdoBase.java
index cf0f7e4..e3cf7cc 100644
--- 
a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPersistenceSessionJdoBase.java
+++ 
b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPersistenceSessionJdoBase.java
@@ -29,7 +29,6 @@ import org.apache.isis.applib.services.clock.ClockService;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.iactn.InteractionContext;
 import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.applib.services.metrics.MetricsService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.user.UserService;
 import org.apache.isis.commons.internal.collections._Maps;
@@ -71,7 +70,6 @@ abstract class IsisPersistenceSessionJdoBase implements 
IsisPersistenceSessionJd
 
     protected final Supplier<EntityChangeTracker> entityChangeTrackerProvider;
     protected final Supplier<InteractionContext> interactionContextProvider;
-    protected final Supplier<MetricsService> metricsServiceProvider;
 
     /**
      * Used to create the {@link #persistenceManager} when {@link #open()}ed.
@@ -122,8 +120,6 @@ abstract class IsisPersistenceSessionJdoBase implements 
IsisPersistenceSessionJd
         
         this.interactionContextProvider = 
()->lookupService(InteractionContext.class);
         this.entityChangeTrackerProvider = 
()->lookupService(EntityChangeTracker.class);
-        this.metricsServiceProvider = ()->lookupService(MetricsService.class);
-        
 
         // sub-components
         this.persistenceQueryFactory = PersistenceQueryFactory.of(
diff --git 
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_headless.java
 
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_headless.java
index cca59a4..ce8146a 100644
--- 
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_headless.java
+++ 
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_headless.java
@@ -171,11 +171,6 @@ public class Configuration_headless {
                 return 0;
             }
 
-            @Override
-            public int numberEntityPropertiesModified() {
-                return 0;
-            }
-
         };
     }
 

Reply via email to