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: