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/02 17:26:04 UTC

[isis] 01/01: ISIS-3108: removes special case processing, we now always install the facet

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

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

commit 3807ee7d4df0716481f1c6b795048bc892fadda3
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Aug 2 18:25:43 2022 +0100

    ISIS-3108: removes special case processing, we now always install the facet
---
 .../DomainObjectAnnotationFacetFactory.java        | 10 ---------
 .../applib/dom/CommandLogEntryRepository.java      |  7 +++++--
 .../applib/dom/ExecutionLogEntryRepository.java    |  4 ++++
 .../applib/dom/ExecutionOutboxEntryRepository.java |  4 ++++
 .../applib/dom/AuditTrailEntryRepository.java      |  9 ++++++--
 .../CmdExecAuditSessLog_IntegTestAbstract.java     | 24 ++++++++++++++++++++++
 .../src/test/resources/application-test.yml        |  5 +++++
 7 files changed, 49 insertions(+), 14 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 47eefe9b48..41252a92b0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -198,16 +198,6 @@ implements
         val cls = processClassContext.getCls();
         val facetHolder = processClassContext.getFacetHolder();
 
-        //
-        // this rule originally implemented only in AuditableFacetFromConfigurationFactory
-        // but think should apply in general
-        //
-        if(HasInteractionId.class.isAssignableFrom(cls)) {
-            // do not install on any implementation of HasInteractionId
-            // (ie commands, audit entries, published events).
-            return;
-        }
-
         // check for @DomainObject(entityChangePublishing=....)
         val entityChangePublishing = domainObjectIfAny
                 .map(DomainObject::entityChangePublishing);
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntryRepository.java b/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
index 4a972911f6..fbc603c489 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
@@ -53,8 +53,6 @@ import lombok.val;
 
 public abstract class CommandLogEntryRepository<C extends CommandLogEntry> {
 
-
-
     public static class NotFoundException extends RecoverableException {
         private static final long serialVersionUID = 1L;
         @Getter
@@ -71,10 +69,15 @@ public abstract class CommandLogEntryRepository<C extends CommandLogEntry> {
 
     private final Class<C> commandLogEntryClass;
 
+
     protected CommandLogEntryRepository(Class<C> commandLogEntryClass) {
         this.commandLogEntryClass = commandLogEntryClass;
     }
 
+    public Class<C> getEntityClass() {
+        return commandLogEntryClass;
+    }
+
     public C createEntryAndPersist(final Command command, CommandLogEntry parentEntryIfAny) {
         C c = factoryService.detachedEntity(commandLogEntryClass);
         c.init(command);
diff --git a/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java b/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
index a095c8b6cc..cf72d07707 100644
--- a/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
+++ b/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
@@ -62,6 +62,10 @@ public abstract class ExecutionLogEntryRepository<E extends ExecutionLogEntry> {
         this.executionLogEntryClass = executionLogEntryClass;
     }
 
+    public Class<E> getEntityClass() {
+        return executionLogEntryClass;
+    }
+
 
     /**
      * for testing only.
diff --git a/extensions/core/executionoutbox/applib/src/main/java/org/apache/isis/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryRepository.java b/extensions/core/executionoutbox/applib/src/main/java/org/apache/isis/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryRepository.java
index 203cc8e49c..17169503f3 100644
--- a/extensions/core/executionoutbox/applib/src/main/java/org/apache/isis/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryRepository.java
+++ b/extensions/core/executionoutbox/applib/src/main/java/org/apache/isis/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryRepository.java
@@ -68,6 +68,10 @@ public abstract class ExecutionOutboxEntryRepository<E extends ExecutionOutboxEn
         this.executionOutboxEntryClass = executionOutboxEntryClass;
     }
 
+    public Class<E> getEntityClass() {
+        return executionOutboxEntryClass;
+    }
+
 
     /**
      * for testing only.
diff --git a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntryRepository.java b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntryRepository.java
index a08ff3d9d4..7c57e09518 100644
--- a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntryRepository.java
+++ b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntryRepository.java
@@ -47,6 +47,13 @@ public abstract class AuditTrailEntryRepository<E extends AuditTrailEntry> {
 
     private final Class<E> auditTrailEntryClass;
 
+    @Inject RepositoryService repositoryService;
+    @Inject FactoryService factoryService;
+
+    public Class<E> getEntityClass() {
+        return auditTrailEntryClass;
+    }
+
     public AuditTrailEntry createFor(final EntityPropertyChange change) {
         E entry = factoryService.detachedEntity(auditTrailEntryClass);
         entry.init(change);
@@ -172,7 +179,5 @@ public abstract class AuditTrailEntryRepository<E extends AuditTrailEntry> {
         repositoryService.removeAll(auditTrailEntryClass);
     }
 
-    @Inject RepositoryService repositoryService;
-    @Inject FactoryService factoryService;
 
 }
diff --git a/regressiontests/stable-cmdexecauditsess/generic/src/main/java/org/apache/isis/regressiontests/cmdexecauditsess/generic/integtest/CmdExecAuditSessLog_IntegTestAbstract.java b/regressiontests/stable-cmdexecauditsess/generic/src/main/java/org/apache/isis/regressiontests/cmdexecauditsess/generic/integtest/CmdExecAuditSessLog_IntegTestAbstract.java
index 4dcf09a926..e5b4d79780 100644
--- a/regressiontests/stable-cmdexecauditsess/generic/src/main/java/org/apache/isis/regressiontests/cmdexecauditsess/generic/integtest/CmdExecAuditSessLog_IntegTestAbstract.java
+++ b/regressiontests/stable-cmdexecauditsess/generic/src/main/java/org/apache/isis/regressiontests/cmdexecauditsess/generic/integtest/CmdExecAuditSessLog_IntegTestAbstract.java
@@ -22,6 +22,7 @@ import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 
+import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -37,6 +38,9 @@ import org.apache.isis.applib.services.sudo.SudoService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
 import org.apache.isis.core.config.presets.IsisPresets;
+import org.apache.isis.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry;
 import org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntryRepository;
 import org.apache.isis.extensions.commandlog.applib.dom.CommandLogEntry;
@@ -93,6 +97,26 @@ public abstract class CmdExecAuditSessLog_IntegTestAbstract extends IsisIntegrat
 
     protected abstract Counter newCounter(String name);
 
+    @Inject SpecificationLoader specificationLoader;
+
+
+    @Test
+    void check_facets() {
+        assertEntityPublishingDisabledFor(auditTrailEntryRepository.getEntityClass());
+        assertEntityPublishingDisabledFor(commandLogEntryRepository.getEntityClass());
+        assertEntityPublishingDisabledFor(executionLogEntryRepository.getEntityClass());
+        assertEntityPublishingDisabledFor(executionOutboxEntryRepository.getEntityClass());
+
+    }
+
+    private void assertEntityPublishingDisabledFor(Class<?> entityClass) {
+        val objectSpecification = specificationLoader.loadSpecification(entityClass);
+        EntityChangePublishingFacet facet = objectSpecification.getFacet(EntityChangePublishingFacet.class);
+        Assertions.assertThat(facet)
+                        .satisfies(f -> assertThat(f).isNotNull())
+                        .satisfies(f -> assertThat(f.isEnabled()).isFalse())
+        ;
+    }
 
     @Test
     void invoke_mixin() {
diff --git a/regressiontests/stable-cmdexecauditsess/persistence-jpa/src/test/resources/application-test.yml b/regressiontests/stable-cmdexecauditsess/persistence-jpa/src/test/resources/application-test.yml
index 98d17b83a8..67eec1b7ba 100644
--- a/regressiontests/stable-cmdexecauditsess/persistence-jpa/src/test/resources/application-test.yml
+++ b/regressiontests/stable-cmdexecauditsess/persistence-jpa/src/test/resources/application-test.yml
@@ -27,6 +27,11 @@ isis:
   extensions:
     session-log:
       auto-logout-on-restart: false
+  core:
+    meta-model:
+      introspector:
+        mode: full
+
 
 spring:
   jpa: