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
The following commit(s) were added to refs/heads/master by this push:
new e99fd45 ISIS-2464: semantic renaming audit/dispatch -> publishing (2)
e99fd45 is described below
commit e99fd45de9e3c1e21ba92236607fbbe65245e767
Author: Andi Huber <[email protected]>
AuthorDate: Fri Nov 20 08:06:31 2020 +0100
ISIS-2464: semantic renaming audit/dispatch -> publishing (2)
---
.../org/apache/isis/applib/IsisModuleApplib.java | 8 +--
.../isis/applib/annotation/DomainObject.java | 6 +--
.../isis/applib/services/DomainChangeRecord.java | 2 +
.../RepresentsInteractionMemberExecution.java | 1 +
.../audit/AuditEntryPropertyValueType.java | 33 ------------
.../audit/spi/ChangingEntitiesListener.java | 9 ----
.../services/audit/spi/EntityAuditListener.java | 55 --------------------
.../isis/applib/services/command/Command.java | 4 +-
.../isis/applib/services/iactn/Interaction.java | 2 +-
.../logging/EntityChangesLogging.java} | 21 ++++----
.../logging/EntityPropertyChangeLogging.java} | 33 +++---------
.../{audit => publishing}/package-info.java | 4 +-
.../spi/EntityChanges.java} | 8 +--
.../spi/EntityChangesSubscriber.java} | 24 ++++-----
.../publishing/spi/EntityPropertyChange.java | 59 ++++++++++++++++++++++
.../spi/EntityPropertyChangeSubscriber.java} | 21 ++++----
.../services/session/SessionLoggingService.java | 5 +-
.../isis/applib/services/xactn/TransactionId.java | 2 +-
.../isis/applib/types/MemberIdentifierType.java | 2 +-
.../apache/isis/applib/types/TargetActionType.java | 2 +-
.../apache/isis/applib/types/TargetClassType.java | 2 +-
.../apache/isis/commons/having/HasEnabling.java | 17 +++----
.../apache/isis/commons/having}/HasUniqueId.java | 2 +-
.../apache/isis/commons/having}/HasUsername.java | 2 +-
.../apache/isis/core/config/IsisConfiguration.java | 10 ++--
.../action/ActionAnnotationFacetFactory.java | 2 +-
.../DomainObjectAnnotationFacetFactory.java | 2 +-
.../property/PropertyAnnotationFacetFactory.java | 2 +-
.../action/ActionAnnotationFacetFactoryTest.java | 2 +-
.../DomainObjectAnnotationFacetFactoryTest.java | 2 +-
.../isis/core/runtime/IsisModuleCoreRuntime.java | 4 +-
.../changetracking/ChangingEntitiesFactory.java | 6 +--
.../changetracking/EntityChangeTrackerDefault.java | 6 +--
...her.java => EntityPropertyChangePublisher.java} | 31 +++++++-----
.../HasEnlistedChangingEntities.java | 4 +-
.../changetracking/SimpleChangingEntities.java | 4 +-
.../publish/ChangingEntitiesDispatcherDefault.java | 10 ++--
...ChangesSubscriberToCaptureChangesInMemory.java} | 10 ++--
.../_changes/ExposeCapturedChanges_changes.java | 4 +-
.../_changes/ExposeCapturedChanges_clear.java | 4 +-
.../impl/mixins/HasUniqueId_command.java | 5 +-
.../mixins/HasUsername_recentCommandsByUser.java | 2 +-
.../impl/mixins/Object_recentCommands.java | 2 +-
.../secman/api/user/ApplicationUser.java | 2 +-
.../secman/model/dom/user/HasUsername_open.java | 2 +-
.../auditing/EntityPrePostValueAuditingTest.java | 4 +-
...figuration_usingEntityPrePostValueAuditing.java | 2 +-
... EntityPropertyChangeSubscriberForTesting.java} | 21 ++++----
.../ChangingEntitiesListenerForTesting.java | 24 ++++-----
.../commons/InteractionTestAbstract.java | 18 +++----
.../entitychangetracking/ChangedObjectsTest.java | 4 +-
51 files changed, 224 insertions(+), 289 deletions(-)
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
b/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
index b13439c..10d1fa2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
@@ -29,8 +29,6 @@ import
org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel;
import org.apache.isis.applib.mixins.metamodel.Object_downloadMetamodelXml;
import org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier;
import org.apache.isis.applib.mixins.metamodel.Object_objectType;
-import org.apache.isis.applib.services.audit.ChangingEntitiesLogging;
-import org.apache.isis.applib.services.audit.EntityAuditLogging;
import org.apache.isis.applib.services.bookmark.BookmarkHolder_lookup;
import org.apache.isis.applib.services.bookmark.BookmarkHolder_object;
import org.apache.isis.applib.services.clock.ClockService;
@@ -42,6 +40,8 @@ import
org.apache.isis.applib.services.confview.ConfigurationMenu;
import org.apache.isis.applib.services.iactn.spi.ExecutionLogging;
import org.apache.isis.applib.services.layout.LayoutServiceMenu;
import org.apache.isis.applib.services.metamodel.MetaModelServiceMenu;
+import org.apache.isis.applib.services.publishing.logging.EntityChangesLogging;
+import
org.apache.isis.applib.services.publishing.logging.EntityPropertyChangeLogging;
import org.apache.isis.applib.services.session.SessionLoggingServiceLogging;
import org.apache.isis.schema.IsisModuleSchema;
@@ -68,14 +68,14 @@ import org.apache.isis.schema.IsisModuleSchema;
MetaModelServiceMenu.class,
// @Service's
- EntityAuditLogging.class,
ClockService.class,
CommandDtoProcessorServiceIdentity.class,
CommandListener.Null.class,
ContentMappingServiceForCommandDto.class,
ContentMappingServiceForCommandsDto.class,
+ EntityChangesLogging.class,
+ EntityPropertyChangeLogging.class,
ExecutionLogging.class,
- ChangingEntitiesLogging.class,
SessionLoggingServiceLogging.class,
})
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java
b/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java
index f8a8814..c3f8ab3 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java
@@ -64,9 +64,9 @@ public @interface DomainObject {
// end::refguide-domain-events[]
/**
* Whether entity changes should be dispatched to
- * {@link org.apache.isis.applib.services.audit.spi.EntityAuditListener}s
- * and whether entity changes, captured as {@link
org.apache.isis.applib.services.audit.spi.ChangingEntities},
- * should be dispatched to {@link
org.apache.isis.applib.services.audit.spi.ChangingEntitiesListener}s.
+ * {@link
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber}s
+ * and whether entity changes, captured as {@link
org.apache.isis.applib.services.publishing.spi.EntityChanges},
+ * should be dispatched to {@link
org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber}s.
* @apiNote does only apply to entity objects
*/
// tag::refguide[]
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/DomainChangeRecord.java
b/api/applib/src/main/java/org/apache/isis/applib/services/DomainChangeRecord.java
index 7cfc48d..af23836 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/DomainChangeRecord.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/DomainChangeRecord.java
@@ -37,6 +37,8 @@ import
org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.applib.services.message.MessageService;
import org.apache.isis.applib.services.metamodel.BeanSort;
import org.apache.isis.applib.services.metamodel.MetaModelService;
+import org.apache.isis.commons.having.HasUniqueId;
+import org.apache.isis.commons.having.HasUsername;
import lombok.Getter;
import lombok.Setter;
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/RepresentsInteractionMemberExecution.java
b/api/applib/src/main/java/org/apache/isis/applib/services/RepresentsInteractionMemberExecution.java
index f9d27bc..4834752 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/RepresentsInteractionMemberExecution.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/RepresentsInteractionMemberExecution.java
@@ -19,6 +19,7 @@
package org.apache.isis.applib.services;
import org.apache.isis.applib.services.wrapper.WrapperFactory;
+import org.apache.isis.commons.having.HasUniqueId;
import org.apache.isis.schema.ixn.v2.InteractionDto;
/**
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/AuditEntryPropertyValueType.java
b/api/applib/src/main/java/org/apache/isis/applib/services/audit/AuditEntryPropertyValueType.java
deleted file mode 100644
index 613b0c2..0000000
---
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/AuditEntryPropertyValueType.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.applib.services.audit;
-
-public class AuditEntryPropertyValueType {
-
- private AuditEntryPropertyValueType() {}
-
- public static class Meta {
-
- public static final int MAX_LEN = 255;
-
- private Meta() {}
-
- }
-
-}
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/spi/ChangingEntitiesListener.java
b/api/applib/src/main/java/org/apache/isis/applib/services/audit/spi/ChangingEntitiesListener.java
deleted file mode 100644
index 4603a2b..0000000
---
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/spi/ChangingEntitiesListener.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.apache.isis.applib.services.audit.spi;
-
-public interface ChangingEntitiesListener {
-
- /**
- * Publish all changed entities at end of the transaction (during
pre-commit phase).
- */
- void onEntitiesChanging(ChangingEntities changingEntities); // <.>
-}
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/spi/EntityAuditListener.java
b/api/applib/src/main/java/org/apache/isis/applib/services/audit/spi/EntityAuditListener.java
deleted file mode 100644
index bae640c..0000000
---
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/spi/EntityAuditListener.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.applib.services.audit.spi;
-
-import java.sql.Timestamp;
-import java.util.UUID;
-
-import org.apache.isis.applib.services.audit.EntityAuditLogging;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-
-/**
- * Will be called whenever an auditable entity has changed its state.
- *
- * <p>
- * Typically entities are marked as auditable using the {@link
org.apache.isis.applib.annotation.Audited}
- * annotation.
- *
- * <p>
- * see also {@link EntityAuditLogging}.
- *
- * <p>
- * To use either service, must include on the classpath and also register the
service (eg in <tt>application.properties</tt>).
- */
-// tag::refguide[]
-public interface EntityAuditListener {
-
- boolean isEnabled(); // <.>
-
- void audit(
- final UUID interactionId, final int sequence, // <.>
- final String targetClassName,
- final Bookmark target, // <.>
- final String memberIdentifier,
- final String propertyName, // <.>
- final String preValue, final String postValue, // <.>
- final String user, final Timestamp timestamp); // <.>
-
-}
-// end::refguide[]
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
b/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
index f0e261b..d6e741c 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
@@ -23,13 +23,13 @@ import java.util.UUID;
import org.apache.isis.applib.events.domain.ActionDomainEvent;
import org.apache.isis.applib.jaxb.JavaSqlXMLGregorianCalendarMarshalling;
-import org.apache.isis.applib.services.HasUniqueId;
-import org.apache.isis.applib.services.HasUsername;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.commanddto.HasCommandDto;
import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.services.wrapper.WrapperFactory;
import org.apache.isis.applib.services.wrapper.control.AsyncControl;
+import org.apache.isis.commons.having.HasUniqueId;
+import org.apache.isis.commons.having.HasUsername;
import org.apache.isis.schema.cmd.v2.CommandDto;
import lombok.Getter;
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
b/api/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
index 7a6b15e..5e0f9c7 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
@@ -31,13 +31,13 @@ import
org.apache.isis.applib.events.domain.AbstractDomainEvent;
import org.apache.isis.applib.events.domain.ActionDomainEvent;
import org.apache.isis.applib.events.domain.PropertyDomainEvent;
import org.apache.isis.applib.jaxb.JavaSqlXMLGregorianCalendarMarshalling;
-import org.apache.isis.applib.services.HasUniqueId;
import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.services.command.Command;
import org.apache.isis.applib.services.eventbus.EventBusService;
import org.apache.isis.applib.services.metrics.MetricsService;
import org.apache.isis.applib.services.wrapper.WrapperFactory;
import org.apache.isis.applib.util.schema.MemberExecutionDtoUtils;
+import org.apache.isis.commons.having.HasUniqueId;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.schema.common.v2.DifferenceDto;
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/ChangingEntitiesLogging.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityChangesLogging.java
similarity index 75%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/audit/ChangingEntitiesLogging.java
rename to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityChangesLogging.java
index 7b967d4..407bb0e 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/ChangingEntitiesLogging.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityChangesLogging.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services.audit;
+package org.apache.isis.applib.services.publishing.logging;
import javax.inject.Named;
@@ -26,27 +26,28 @@ import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.services.audit.spi.ChangingEntities;
-import org.apache.isis.applib.services.audit.spi.ChangingEntitiesListener;
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
+import org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber;
import org.apache.isis.applib.util.schema.ChangesDtoUtils;
import org.apache.isis.schema.chg.v2.ChangesDto;
import lombok.extern.log4j.Log4j2;
@Service
-@Named("isisApplib.ChangingEntitiesLogging")
+@Named("isisApplib.EntityChangesLogging")
@Order(OrderPrecedence.LATE)
@Primary
@Qualifier("Logging")
@Log4j2
-public class ChangingEntitiesLogging implements ChangingEntitiesListener {
+public class EntityChangesLogging implements EntityChangesSubscriber {
@Override
- public void onEntitiesChanging(final ChangingEntities changingEntities) {
-
- if(!log.isDebugEnabled()) {
- return;
- }
+ public boolean isEnabled() {
+ return log.isDebugEnabled();
+ }
+
+ @Override
+ public void onChanging(final EntityChanges changingEntities) {
final ChangesDto changesDto = changingEntities.getDto();
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/EntityAuditLogging.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityPropertyChangeLogging.java
similarity index 56%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/audit/EntityAuditLogging.java
rename to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityPropertyChangeLogging.java
index 7eb6c33..4e63bcb 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/EntityAuditLogging.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityPropertyChangeLogging.java
@@ -16,12 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services.audit;
+package org.apache.isis.applib.services.publishing.logging;
-import java.sql.Timestamp;
-import java.util.UUID;
-
-import javax.annotation.PostConstruct;
import javax.inject.Named;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -30,22 +26,18 @@ import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.services.audit.spi.EntityAuditListener;
-import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.publishing.spi.EntityPropertyChange;
+import
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber;
import lombok.extern.log4j.Log4j2;
@Service
-@Named("isisApplib.EntityAuditLogging")
+@Named("isisApplib.EntityPropertyChangeLogging")
@Order(OrderPrecedence.LATE)
@Primary
@Qualifier("logging")
@Log4j2
-public class EntityAuditLogging implements EntityAuditListener {
-
- @PostConstruct
- public void init() {
- }
+public class EntityPropertyChangeLogging implements
EntityPropertyChangeSubscriber {
@Override
public boolean isEnabled() {
@@ -53,19 +45,8 @@ public class EntityAuditLogging implements
EntityAuditListener {
}
@Override
- public void audit(
- final UUID interactionId, int sequence,
- final String targetClassName, final Bookmark target,
- final String memberId, final String propertyName,
- final String preValue, final String postValue,
- final String user, final Timestamp timestamp) {
-
- if(log.isDebugEnabled()) {
- String auditMessage =
- interactionId + "," + sequence + ": " +
- target.toString() + " by " + user + ", " +
propertyName + ": " + preValue + " -> " + postValue;
- log.debug(auditMessage);
- }
+ public void onChanging(final EntityPropertyChange entityPropertyChange) {
+ log.debug(entityPropertyChange.toString());
}
}
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/package-info.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/package-info.java
similarity index 83%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/audit/package-info.java
rename to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/package-info.java
index b4ab557..246e465 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/package-info.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/package-info.java
@@ -18,9 +18,9 @@
*/
/**
- * The {@link org.apache.isis.applib.services.audit.spi.EntityAuditListener}
auditing service provides a simple mechanism to
+ * The {@link
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber}
auditing service provides a simple mechanism to
* capture changes to data. It is called for each property that has changed on
any domain object, as a set of pre- and post-values.
*
*
*/
-package org.apache.isis.applib.services.audit;
\ No newline at end of file
+package org.apache.isis.applib.services.publishing;
\ No newline at end of file
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/spi/ChangingEntities.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java
similarity index 87%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/audit/spi/ChangingEntities.java
rename to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java
index 4b83342..a2e343d 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/spi/ChangingEntities.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java
@@ -16,16 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services.audit.spi;
+package org.apache.isis.applib.services.publishing.spi;
import java.sql.Timestamp;
-import org.apache.isis.applib.services.HasUniqueId;
-import org.apache.isis.applib.services.HasUsername;
+import org.apache.isis.commons.having.HasUniqueId;
+import org.apache.isis.commons.having.HasUsername;
import org.apache.isis.schema.chg.v2.ChangesDto;
// tag::refguide[]
-public interface ChangingEntities
+public interface EntityChanges
extends HasUniqueId, // <.>
HasUsername { // <.>
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/HasUniqueId.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChangesSubscriber.java
similarity index 60%
copy from
api/applib/src/main/java/org/apache/isis/applib/services/HasUniqueId.java
copy to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChangesSubscriber.java
index 57245db..2c275a6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/HasUniqueId.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChangesSubscriber.java
@@ -16,25 +16,21 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services;
-
-import java.util.UUID;
+package org.apache.isis.applib.services.publishing.spi;
+import org.apache.isis.commons.having.HasEnabling;
/**
- * Mix-in interface for objects (usually created by service implementations)
that are be persistable,
- * and so can be associated together using a unique identifier.
- *
+ * Part of the <i>Publishing SPI</i>. A component to receive the entire set of
entities
+ * (with publishing enabled) that are about to change, serializable as
ChangesDto.
+ *
+ * @since 2.0
*/
-// tag::refguide[]
-public interface HasUniqueId {
+public interface EntityChangesSubscriber extends HasEnabling {
- // end::refguide[]
/**
- * The unique identifier (a GUID) of the request/interaction/transaction.
+ * Receives all changing entities (with publishing enabled) at then end of
the a
+ * transaction during the pre-commit phase.
*/
- // tag::refguide[]
- UUID getUniqueId();
-
+ void onChanging(EntityChanges entityChanges); // <.>
}
-// end::refguide[]
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java
new file mode 100644
index 0000000..490b9da
--- /dev/null
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.applib.services.publishing.spi;
+
+import java.sql.Timestamp;
+import java.util.UUID;
+
+import org.apache.isis.applib.services.bookmark.Bookmark;
+
+import lombok.Value;
+
+/**
+ * Immutable data record for {@link EntityPropertyChangeSubscriber}s.
+ *
+ * @since 2.0
+ */
+@Value(staticConstructor = "of")
+public class EntityPropertyChange {
+
+ private final UUID interactionId;
+ private final int sequence;
+ private final String targetClassName;
+ private final Bookmark target;
+ private final String memberIdentifier;
+ private final String propertyName;
+ private final String preValue;
+ private final String postValue;
+ private final String user;
+ private final Timestamp timestamp;
+
+ @Override
+ public String toString() {
+ return String.format("%s,%d: %s by %s, %s: %s -> %s",
+ getInteractionId(),
+ getSequence(),
+ getTarget().toString(),
+ getUser(),
+ getPropertyName(),
+ getPreValue(),
+ getPostValue());
+ }
+
+}
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/HasUniqueId.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChangeSubscriber.java
similarity index 61%
copy from
api/applib/src/main/java/org/apache/isis/applib/services/HasUniqueId.java
copy to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChangeSubscriber.java
index 57245db..340e077 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/HasUniqueId.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChangeSubscriber.java
@@ -16,25 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services;
-
-import java.util.UUID;
+package org.apache.isis.applib.services.publishing.spi;
+import org.apache.isis.commons.having.HasEnabling;
/**
- * Mix-in interface for objects (usually created by service implementations)
that are be persistable,
- * and so can be associated together using a unique identifier.
- *
+ * Part of the <i>Publishing SPI</i>. A component to receive pre-post property
values
+ * for each changed entity (with publishing enabled).
+ *
+ * @since 2.0
*/
// tag::refguide[]
-public interface HasUniqueId {
+public interface EntityPropertyChangeSubscriber extends HasEnabling {
- // end::refguide[]
/**
- * The unique identifier (a GUID) of the request/interaction/transaction.
+ * Receives all pre-post property values for entities (with publishing
enabled)
+ * at then end of the transaction during the pre-commit phase.
*/
- // tag::refguide[]
- UUID getUniqueId();
+ void onChanging(EntityPropertyChange entityPropertyChange); // <.>
}
// end::refguide[]
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
b/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
index 296ed1e..9ae9797 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
@@ -20,10 +20,9 @@ package org.apache.isis.applib.services.session;
import java.util.Date;
-import org.apache.isis.applib.annotation.Programmatic;
-
/**
- * Similar to the {@link
org.apache.isis.applib.services.audit.spi.EntityAuditListener}, this defines an
API to track
+ * Similar to the {@link
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber},
+ * this defines an API to track
* the status of the current sessions ("users logged on") on the
system.
*/
// tag::refguide[]
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionId.java
b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionId.java
index 08f15fd..93a52ba 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionId.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionId.java
@@ -20,7 +20,7 @@ package org.apache.isis.applib.services.xactn;
import java.util.UUID;
-import org.apache.isis.applib.services.HasUniqueId;
+import org.apache.isis.commons.having.HasUniqueId;
import lombok.Data;
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/types/MemberIdentifierType.java
b/api/applib/src/main/java/org/apache/isis/applib/types/MemberIdentifierType.java
index 974dfb4..dbbc2d5 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/types/MemberIdentifierType.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/types/MemberIdentifierType.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.services.command.Command;
import lombok.experimental.UtilityClass;
/**
- * As per {@link Command#getMemberIdentifier()} and {@link
org.apache.isis.applib.services.audit.spi.EntityAuditListener#audit(UUID, int,
String, Bookmark, String, String, String, String, String, Timestamp)}.
+ * As per {@link Command#getMemberIdentifier()} and {@link
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber#audit(UUID,
int, String, Bookmark, String, String, String, String, String, Timestamp)}.
*/
public class MemberIdentifierType {
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/types/TargetActionType.java
b/api/applib/src/main/java/org/apache/isis/applib/types/TargetActionType.java
index cf44d26..6349c5b 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/types/TargetActionType.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/types/TargetActionType.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.services.command.Command;
import lombok.experimental.UtilityClass;
/**
- * A user-friendly name of an action, as per {@link
Command#getTargetAction()}, {@link
org.apache.isis.applib.services.audit.spi.EntityAuditListener#audit(UUID, int,
String, Bookmark, String, String, String, String, String, Timestamp)}.
+ * A user-friendly name of an action, as per {@link
Command#getTargetAction()}, {@link
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber#audit(UUID,
int, String, Bookmark, String, String, String, String, String, Timestamp)}.
*/
@UtilityClass
public class TargetActionType {
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/types/TargetClassType.java
b/api/applib/src/main/java/org/apache/isis/applib/types/TargetClassType.java
index a85a71d..e453c1d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/types/TargetClassType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/types/TargetClassType.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.services.command.Command;
import lombok.experimental.UtilityClass;
/**
- * A user-friendly name of a class, as per {@link Command#getTargetClass()},
{@link
org.apache.isis.applib.services.audit.spi.EntityAuditListener#audit(UUID, int,
String, Bookmark, String, String, String, String, String, Timestamp)}.
+ * A user-friendly name of a class, as per {@link Command#getTargetClass()},
{@link
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber#audit(UUID,
int, String, Bookmark, String, String, String, String, String, Timestamp)}.
*/
@UtilityClass
public class TargetClassType {
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/AuditEntryPropertyIdType.java
b/commons/src/main/java/org/apache/isis/commons/having/HasEnabling.java
similarity index 77%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/audit/AuditEntryPropertyIdType.java
rename to commons/src/main/java/org/apache/isis/commons/having/HasEnabling.java
index 5a7af43..b3c5806 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/audit/AuditEntryPropertyIdType.java
+++ b/commons/src/main/java/org/apache/isis/commons/having/HasEnabling.java
@@ -16,18 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services.audit;
+package org.apache.isis.commons.having;
-public class AuditEntryPropertyIdType {
-
- private AuditEntryPropertyIdType() {}
-
- public static class Meta {
-
- public static final int MAX_LEN = 50;
-
- private Meta() {}
+public interface HasEnabling {
+ default boolean isEnabled() {
+ // enabled by default
+ return true;
}
-
+
}
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/HasUniqueId.java
b/commons/src/main/java/org/apache/isis/commons/having/HasUniqueId.java
similarity index 96%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/HasUniqueId.java
rename to commons/src/main/java/org/apache/isis/commons/having/HasUniqueId.java
index 57245db..72f52a7 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/HasUniqueId.java
+++ b/commons/src/main/java/org/apache/isis/commons/having/HasUniqueId.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services;
+package org.apache.isis.commons.having;
import java.util.UUID;
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/HasUsername.java
b/commons/src/main/java/org/apache/isis/commons/having/HasUsername.java
similarity index 97%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/HasUsername.java
rename to commons/src/main/java/org/apache/isis/commons/having/HasUsername.java
index 4860b92..dc5c4c8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/HasUsername.java
+++ b/commons/src/main/java/org/apache/isis/commons/having/HasUsername.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services;
+package org.apache.isis.commons.having;
/**
* Mix-in interface for objects (usually created by service implementations)
that are be persistable,
diff --git
a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
index ae254cd..713424b 100644
---
a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
+++
b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
@@ -58,10 +58,10 @@ import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.LabelPosition;
import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.services.audit.spi.ChangingEntities;
-import org.apache.isis.applib.services.audit.spi.EntityAuditListener;
import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
+import
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber;
import org.apache.isis.applib.services.userreg.EmailNotificationService;
import org.apache.isis.applib.services.userreg.UserRegistrationService;
import org.apache.isis.commons.internal.context._Context;
@@ -161,7 +161,7 @@ public class IsisConfiguration {
/**
* The default for whether <i>domain entities</i> should be
audited or not (meaning that any changes are
- * sent through to the {@link EntityAuditListener}.
+ * sent through to the {@link EntityPropertyChangeSubscriber}.
*
* <p>
* This setting can be overridden on a case-by-case basis
using {@link org.apache.isis.applib.annotation.DomainObject#auditing()}
DomainObject#getAuditing()}
@@ -188,8 +188,8 @@ public class IsisConfiguration {
* {@link
org.apache.isis.applib.services.iactn.spi.ExecutionListener} for publishing.
*
* <p>
- * The service's {@link
org.apache.isis.applib.services.iactn.spi.ExecutionListener#publish(ChangingEntities)
publish}
- * method is called only once per transaction, with {@link
ChangingEntities} collecting details of
+ * The service's {@link
org.apache.isis.applib.services.iactn.spi.ExecutionListener#publish(EntityChanges)
publish}
+ * method is called only once per transaction, with {@link
EntityChanges} collecting details of
* all changed domain objects.
* </p>
*
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index c0daee1..ffb1467 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -23,7 +23,7 @@ import java.util.Optional;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.events.domain.ActionDomainEvent;
-import org.apache.isis.applib.services.HasUniqueId;
+import org.apache.isis.commons.having.HasUniqueId;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Collections;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
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 fc0459d..0172951 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
@@ -37,7 +37,7 @@ import
org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent;
import org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent;
import org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent;
import org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent;
-import org.apache.isis.applib.services.HasUniqueId;
+import org.apache.isis.commons.having.HasUniqueId;
import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
index 8d67e26..9607833 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
@@ -28,7 +28,7 @@ import org.apache.isis.applib.annotation.Contributed;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.events.domain.PropertyDomainEvent;
-import org.apache.isis.applib.services.HasUniqueId;
+import org.apache.isis.commons.having.HasUniqueId;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
index a0e15b3..3327868 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
@@ -27,7 +27,7 @@ import org.jmock.auto.Mock;
import org.junit.After;
import org.junit.Before;
-import org.apache.isis.applib.services.HasUniqueId;
+import org.apache.isis.commons.having.HasUniqueId;
import
org.apache.isis.core.config.metamodel.facets.PublishActionsConfiguration;
import
org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
import
org.apache.isis.core.metamodel.facets.object.domainobject.domainevents.ActionDomainEventDefaultFacetForDomainObjectAnnotation;
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index a40b49a..dce8cd3 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -33,7 +33,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import org.apache.isis.applib.annotation.Bounding;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.services.HasUniqueId;
+import org.apache.isis.commons.having.HasUniqueId;
import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.core.config.metamodel.facets.AuditObjectsConfiguration;
import
org.apache.isis.core.config.metamodel.facets.EditingObjectsConfiguration;
diff --git
a/core/runtime/src/main/java/org/apache/isis/core/runtime/IsisModuleCoreRuntime.java
b/core/runtime/src/main/java/org/apache/isis/core/runtime/IsisModuleCoreRuntime.java
index b726b5b..820331f 100644
---
a/core/runtime/src/main/java/org/apache/isis/core/runtime/IsisModuleCoreRuntime.java
+++
b/core/runtime/src/main/java/org/apache/isis/core/runtime/IsisModuleCoreRuntime.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import org.apache.isis.core.runtime.events.RuntimeEventService;
import org.apache.isis.core.runtime.events.persistence.TimestampService;
import
org.apache.isis.core.runtime.iactn.scope.IsisInteractionScopeBeanFactoryPostProcessor;
-import
org.apache.isis.core.runtime.persistence.changetracking.EntityAuditDispatcher;
+import
org.apache.isis.core.runtime.persistence.changetracking.EntityPropertyChangePublisher;
import
org.apache.isis.core.runtime.persistence.changetracking.EntityChangeTrackerDefault;
@Configuration
@@ -38,7 +38,7 @@ import
org.apache.isis.core.runtime.persistence.changetracking.EntityChangeTrack
// @Service's
RuntimeEventService.class,
TimestampService.class,
- EntityAuditDispatcher.class,
+ EntityPropertyChangePublisher.class,
EntityChangeTrackerDefault.class,
// @Configuration's
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 8f3b8f6..3178a6c 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
@@ -27,9 +27,9 @@ import javax.annotation.Nullable;
import org.apache.isis.applib.annotation.EntityChangeKind;
import org.apache.isis.applib.jaxb.JavaSqlXMLGregorianCalendarMarshalling;
-import org.apache.isis.applib.services.audit.spi.ChangingEntities;
import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
import org.apache.isis.applib.services.user.UserService;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Maps;
@@ -51,7 +51,7 @@ class ChangingEntitiesFactory {
private final UserService userService;
@Nullable
- public ChangingEntities createChangingEntities(
+ public EntityChanges createChangingEntities(
final EntityChangeTrackerDefault entityChangeTracker) {
// take a copy of enlisted adapters ... the JDO implementation of the
PublishingService
@@ -76,7 +76,7 @@ class ChangingEntitiesFactory {
// -- HELPER
- private ChangingEntities newChangingEntities(
+ private EntityChanges newChangingEntities(
final Interaction interaction,
final int numberEntitiesLoaded,
final int numberEntityPropertiesModified,
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 93d3b12..b199121 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
@@ -37,12 +37,12 @@ import
org.apache.isis.applib.annotation.IsisInteractionScope;
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.events.lifecycle.AbstractLifecycleEvent;
import org.apache.isis.applib.services.TransactionScopeListener;
-import org.apache.isis.applib.services.audit.spi.ChangingEntities;
import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.services.eventbus.EventBusService;
import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.services.iactn.InteractionContext;
import org.apache.isis.applib.services.metrics.MetricsService;
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
import org.apache.isis.applib.services.user.UserService;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.collections._Maps;
@@ -94,7 +94,7 @@ implements
// end::refguide[]
- @Inject private EntityAuditDispatcher entityAuditDispatcher;
+ @Inject private EntityPropertyChangePublisher entityAuditDispatcher;
@Inject private ChangingEntitiesDispatcher changingEntitiesDispatcher;
@Inject private EventBusService eventBusService;
@Inject private Provider<InteractionContext> interactionContextProvider;
@@ -208,7 +208,7 @@ implements
}
@Override
- public ChangingEntities getChangingEntities(ClockService clockService,
UserService userService) {
+ public EntityChanges getChangingEntities(ClockService clockService,
UserService userService) {
return ChangingEntitiesFactory.of(clockService,
userService).createChangingEntities(this);
}
diff --git
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityAuditDispatcher.java
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityPropertyChangePublisher.java
similarity index 76%
rename from
core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityAuditDispatcher.java
rename to
core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityPropertyChangePublisher.java
index af9c597..967f51c 100644
---
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityAuditDispatcher.java
+++
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityPropertyChangePublisher.java
@@ -31,9 +31,10 @@ import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.services.audit.spi.EntityAuditListener;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.clock.ClockService;
+import org.apache.isis.applib.services.publishing.spi.EntityPropertyChange;
+import
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber;
import org.apache.isis.applib.services.user.UserService;
import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.commons.collections.Can;
@@ -44,28 +45,28 @@ import lombok.val;
import lombok.extern.log4j.Log4j2;
/**
- * Wrapper around {@link
org.apache.isis.applib.services.audit.spi.EntityAuditListener}.
+ * Notifies {@link
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber}s.
*/
@Service
-@Named("isisRuntime.EntityAuditDispatcher")
+@Named("isisRuntime.EntityPropertyChangePublisher")
@Order(OrderPrecedence.EARLY)
@Primary
@Qualifier("Default")
@RequiredArgsConstructor(onConstructor_ = {@Inject})
@Log4j2
-public class EntityAuditDispatcher {
+public class EntityPropertyChangePublisher {
- private final List<EntityAuditListener> auditerServices;
+ private final List<EntityPropertyChangeSubscriber> subscribers;
private final UserService userService;
private final ClockService clockService;
private final TransactionService transactionService;
- private Can<EntityAuditListener> enabledAuditListeners;
+ private Can<EntityPropertyChangeSubscriber> enabledSubscribers;
@PostConstruct
public void init() {
- enabledAuditListeners = Can.ofCollection(auditerServices)
- .filter(EntityAuditListener::isEnabled);
+ enabledSubscribers = Can.ofCollection(subscribers)
+ .filter(EntityPropertyChangeSubscriber::isEnabled);
}
public void dispatchEntityAudits(final HasEnlistedEntityAudits
hasEnlistedForAuditing) {
@@ -80,17 +81,17 @@ public class EntityAuditDispatcher {
log.debug("about to process {} audits", ()->auditEntries.size());
for (val auditEntry : auditEntries) {
- auditChangedProperty(currentTime, currentUser, auditEntry);
+ publishChangedProperty(currentTime, currentUser, auditEntry);
}
}
// -- HELPER
private boolean canDispatch() {
- return enabledAuditListeners.isNotEmpty();
+ return enabledSubscribers.isNotEmpty();
}
- private void auditChangedProperty(
+ private void publishChangedProperty(
final java.sql.Timestamp timestamp,
final String user,
final AuditEntry auditEntry) {
@@ -113,9 +114,11 @@ public class EntityAuditDispatcher {
final UUID transactionId = txId.getUniqueId();
final int sequence = txId.getSequence();
- for (val auditListener : enabledAuditListeners) {
- auditListener
- .audit(transactionId, sequence, targetClass, target, memberId,
propertyId, preValue, postValue, user, timestamp);
+ for (val subscriber : enabledSubscribers) {
+ subscriber.onChanging(
+ EntityPropertyChange
+ .of(transactionId, sequence, targetClass, target,
+ memberId, propertyId, preValue, postValue,
user, timestamp));
}
}
diff --git
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/HasEnlistedChangingEntities.java
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/HasEnlistedChangingEntities.java
index 231ce67..c3d1ae0 100644
---
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/HasEnlistedChangingEntities.java
+++
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/HasEnlistedChangingEntities.java
@@ -18,12 +18,12 @@
*/
package org.apache.isis.core.runtime.persistence.changetracking;
-import org.apache.isis.applib.services.audit.spi.ChangingEntities;
import org.apache.isis.applib.services.clock.ClockService;
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
import org.apache.isis.applib.services.user.UserService;
public interface HasEnlistedChangingEntities {
- ChangingEntities getChangingEntities(ClockService clockService,
UserService userService);
+ EntityChanges getChangingEntities(ClockService clockService, UserService
userService);
}
diff --git
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/SimpleChangingEntities.java
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/SimpleChangingEntities.java
index ba27404..04be96d 100644
---
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/SimpleChangingEntities.java
+++
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/SimpleChangingEntities.java
@@ -24,7 +24,7 @@ import java.util.UUID;
import java.util.function.Supplier;
import org.apache.isis.applib.services.RepresentsInteractionMemberExecution;
-import org.apache.isis.applib.services.audit.spi.ChangingEntities;
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
import org.apache.isis.schema.chg.v2.ChangesDto;
import lombok.NonNull;
@@ -34,7 +34,7 @@ import lombok.ToString;
* Captures which objects were created, updated or deleted in the course of a
transaction.
*/
@ToString
-class SimpleChangingEntities implements ChangingEntities,
RepresentsInteractionMemberExecution {
+class SimpleChangingEntities implements EntityChanges,
RepresentsInteractionMemberExecution {
private UUID transactionUuid;
private final int sequence;
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 d162c4d..46842a2 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
@@ -30,8 +30,8 @@ import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.services.audit.spi.ChangingEntitiesListener;
import org.apache.isis.applib.services.clock.ClockService;
+import org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber;
import org.apache.isis.applib.services.user.UserService;
import org.apache.isis.commons.collections.Can;
import
org.apache.isis.core.runtime.persistence.changetracking.ChangingEntitiesDispatcher;
@@ -41,7 +41,7 @@ import lombok.RequiredArgsConstructor;
import lombok.val;
/**
- * Wrapper around {@link
org.apache.isis.applib.services.audit.spi.ChangingEntitiesListener}.
+ * Wrapper around {@link
org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber}.
*/
@Service
@Named("isisRuntime.ChangingEntitiesDispatcher")
@@ -52,11 +52,11 @@ import lombok.val;
//@Log4j2
public class ChangingEntitiesDispatcherDefault implements
ChangingEntitiesDispatcher {
- private final List<ChangingEntitiesListener>
changingEntitiesListenersNullable;
+ private final List<EntityChangesSubscriber>
changingEntitiesListenersNullable;
private final ClockService clockService;
private final UserService userService;
- private Can<ChangingEntitiesListener> changingEntitiesListeners;
+ private Can<EntityChangesSubscriber> changingEntitiesListeners;
@PostConstruct
public void init() {
@@ -76,7 +76,7 @@ public class ChangingEntitiesDispatcherDefault implements
ChangingEntitiesDispat
}
for (val changingEntitiesListener : changingEntitiesListeners) {
- changingEntitiesListener.onEntitiesChanging(changingEntities);
+ changingEntitiesListener.onChanging(changingEntities);
}
}
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ChangingEntitiesListenerToCaptureChangesInMemory.java
b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/EntityChangesSubscriberToCaptureChangesInMemory.java
similarity index 82%
rename from
examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ChangingEntitiesListenerToCaptureChangesInMemory.java
rename to
examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/EntityChangesSubscriberToCaptureChangesInMemory.java
index fba562a..91a8f78 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ChangingEntitiesListenerToCaptureChangesInMemory.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/EntityChangesSubscriberToCaptureChangesInMemory.java
@@ -24,21 +24,21 @@ import java.util.stream.Stream;
import org.springframework.stereotype.Service;
-import org.apache.isis.applib.services.audit.spi.ChangingEntities;
-import org.apache.isis.applib.services.audit.spi.ChangingEntitiesListener;
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
+import org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber;
import org.apache.isis.schema.chg.v2.ChangesDto;
import lombok.val;
//tag::class[]
@Service
-public class ChangingEntitiesListenerToCaptureChangesInMemory implements
ChangingEntitiesListener {
+public class EntityChangesSubscriberToCaptureChangesInMemory implements
EntityChangesSubscriber {
private final List<ChangesDto> changedEntities = new ArrayList<>();
@Override
- public void onEntitiesChanging(
- ChangingEntities changingEntities // <.>
+ public void onChanging(
+ EntityChanges changingEntities // <.>
) {
val dto = changingEntities.getDto();
this.changedEntities.add(dto);
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ExposeCapturedChanges_changes.java
b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ExposeCapturedChanges_changes.java
index 0410d88..edadfda 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ExposeCapturedChanges_changes.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ExposeCapturedChanges_changes.java
@@ -41,13 +41,13 @@ public class ExposeCapturedChanges_changes {
//tag::class[]
public List<ChangesDto> coll() {
val list = new LinkedList<ChangesDto>();
- changingEntitiesListenerToCaptureChangesInMemory
+ entityChangesSubscriberToCaptureChangesInMemory
.streamChangedEntities()
.forEach(list::push); // reverse order
return list;
}
@Inject
- ChangingEntitiesListenerToCaptureChangesInMemory
changingEntitiesListenerToCaptureChangesInMemory;
+ EntityChangesSubscriberToCaptureChangesInMemory
entityChangesSubscriberToCaptureChangesInMemory;
}
//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ExposeCapturedChanges_clear.java
b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ExposeCapturedChanges_clear.java
index 3ce39f5..624c030 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ExposeCapturedChanges_clear.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_changes/ExposeCapturedChanges_clear.java
@@ -43,11 +43,11 @@ public class ExposeCapturedChanges_clear {
//tag::class[]
public DomainObjectAuditingVm act() {
- changingEntitiesListenerToCaptureChangesInMemory.clear();
+ entityChangesSubscriberToCaptureChangesInMemory.clear();
return domainObjectAuditingVm;
}
@Inject
- ChangingEntitiesListenerToCaptureChangesInMemory
changingEntitiesListenerToCaptureChangesInMemory;
+ EntityChangesSubscriberToCaptureChangesInMemory
entityChangesSubscriberToCaptureChangesInMemory;;
}
//end::class[]
diff --git
a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUniqueId_command.java
b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUniqueId_command.java
index 2da3594..1725f81 100644
---
a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUniqueId_command.java
+++
b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUniqueId_command.java
@@ -25,9 +25,8 @@ import javax.inject.Inject;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.HasUniqueId;
import org.apache.isis.applib.services.command.Command;
-
+import org.apache.isis.commons.having.HasUniqueId;
import org.apache.isis.extensions.commandlog.impl.IsisModuleExtCommandLogImpl;
import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdo;
import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
@@ -35,7 +34,7 @@ import
org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
/**
* This mixin contributes a <tt>command</tt> action to any (non-command)
implementation of
- * {@link org.apache.isis.applib.services.HasUniqueId}; that is: audit
entries, and published events. Thus, it
+ * {@link org.apache.isis.commons.having.HasUniqueId}; that is: audit entries,
and published events. Thus, it
* is possible to navigate from the effect back to the cause.
*/
@Action(
diff --git
a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.java
b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.java
index 89460fd..8c5fbc4 100644
---
a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.java
+++
b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.java
@@ -26,7 +26,7 @@ import javax.inject.Inject;
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.services.HasUsername;
+import org.apache.isis.commons.having.HasUsername;
import org.apache.isis.extensions.commandlog.impl.IsisModuleExtCommandLogImpl;
import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdo;
import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
diff --git
a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/Object_recentCommands.java
b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/Object_recentCommands.java
index eeeb9c3..f85b7ba 100644
---
a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/Object_recentCommands.java
+++
b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/Object_recentCommands.java
@@ -28,9 +28,9 @@ import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Mixin;
import org.apache.isis.applib.annotation.RestrictTo;
import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.HasUniqueId;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.commons.having.HasUniqueId;
import org.apache.isis.extensions.commandlog.impl.IsisModuleExtCommandLogImpl;
import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdo;
import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
diff --git
a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java
b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java
index c27a06a..d783b74 100644
---
a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java
+++
b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java
@@ -20,7 +20,7 @@ package org.apache.isis.extensions.secman.api.user;
import java.util.SortedSet;
-import org.apache.isis.applib.services.HasUsername;
+import org.apache.isis.commons.having.HasUsername;
import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
import
org.apache.isis.extensions.secman.api.permission.ApplicationPermissionValueSet;
import org.apache.isis.extensions.secman.api.role.ApplicationRole;
diff --git
a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/HasUsername_open.java
b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/HasUsername_open.java
index 4d4919e..25f8c0c 100644
---
a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/HasUsername_open.java
+++
b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/HasUsername_open.java
@@ -26,8 +26,8 @@ import org.apache.isis.applib.annotation.Contributed;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Mixin;
import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.HasUsername;
import org.apache.isis.applib.services.i18n.TranslatableString;
+import org.apache.isis.commons.having.HasUsername;
import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
import org.apache.isis.extensions.secman.api.user.ApplicationUser;
import org.apache.isis.extensions.secman.api.user.ApplicationUserRepository;
diff --git
a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/applayer/auditing/EntityPrePostValueAuditingTest.java
b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/applayer/auditing/EntityPrePostValueAuditingTest.java
index 690c16c..c424a8e 100644
---
a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/applayer/auditing/EntityPrePostValueAuditingTest.java
+++
b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/applayer/auditing/EntityPrePostValueAuditingTest.java
@@ -65,7 +65,7 @@ class EntityPrePostValueAuditingTest extends
IsisIntegrationTestAbstract {
}
private void given() {
- EntityAuditListenerForTesting.clearAuditEntries(kvStore);
+ EntityPropertyChangeSubscriberForTesting.clearAuditEntries(kvStore);
}
private void verify(VerificationStage verificationStage) {
@@ -86,7 +86,7 @@ class EntityPrePostValueAuditingTest extends
IsisIntegrationTestAbstract {
// -- HELPER
private void assertHasAuditEntries(Can<String> expectedAuditEntries) {
- val actualAuditEntries =
EntityAuditListenerForTesting.getAuditEntries(kvStore);
+ val actualAuditEntries =
EntityPropertyChangeSubscriberForTesting.getAuditEntries(kvStore);
CollectionAssertions.assertComponentWiseEquals(expectedAuditEntries,
actualAuditEntries);
}
diff --git
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/auditing/Configuration_usingEntityPrePostValueAuditing.java
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/auditing/Configuration_usingEntityPrePostValueAuditing.java
index 9ec9a17..981322a 100644
---
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/auditing/Configuration_usingEntityPrePostValueAuditing.java
+++
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/auditing/Configuration_usingEntityPrePostValueAuditing.java
@@ -23,7 +23,7 @@ import org.springframework.context.annotation.Import;
@Configuration
@Import({
- EntityAuditListenerForTesting.class
+ EntityPropertyChangeSubscriberForTesting.class
})
public class Configuration_usingEntityPrePostValueAuditing {
diff --git
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/auditing/EntityAuditListenerForTesting.java
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/auditing/EntityPropertyChangeSubscriberForTesting.java
similarity index 72%
rename from
regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/auditing/EntityAuditListenerForTesting.java
rename to
regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/auditing/EntityPropertyChangeSubscriberForTesting.java
index 8196468..a6e1468 100644
---
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/auditing/EntityAuditListenerForTesting.java
+++
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/auditing/EntityPropertyChangeSubscriberForTesting.java
@@ -18,18 +18,16 @@
*/
package org.apache.isis.testdomain.applayer.auditing;
-import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
-import java.util.UUID;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
-import org.apache.isis.applib.services.audit.spi.EntityAuditListener;
-import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.publishing.spi.EntityPropertyChange;
+import
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.testdomain.util.kv.KVStoreForTesting;
@@ -37,7 +35,7 @@ import lombok.val;
import lombok.extern.log4j.Log4j2;
@Service @Log4j2
-public class EntityAuditListenerForTesting implements EntityAuditListener {
+public class EntityPropertyChangeSubscriberForTesting implements
EntityPropertyChangeSubscriber {
@Inject private KVStoreForTesting kvStore;
@@ -52,12 +50,9 @@ public class EntityAuditListenerForTesting implements
EntityAuditListener {
}
@Override
- public void audit(UUID interactionId, int sequence, String
targetClassName, Bookmark target,
- String memberIdentifier, String propertyName, String preValue,
String postValue, String user,
- Timestamp timestamp) {
+ public void onChanging(final EntityPropertyChange entityPropertyChange) {
- val auditEntry = String.format("%s/%s: '%s' -> '%s'",
- targetClassName, propertyName, preValue, postValue);
+ val auditEntry = entityPropertyChange.toString();
@SuppressWarnings("unchecked")
val auditEntries = (List<String>) kvStore.get(this,
"audit").orElseGet(ArrayList::new);
@@ -73,12 +68,14 @@ public class EntityAuditListenerForTesting implements
EntityAuditListener {
@SuppressWarnings("unchecked")
public static Can<String> getAuditEntries(KVStoreForTesting kvStore) {
return Can.ofCollection(
- (List<String>)
kvStore.get(EntityAuditListenerForTesting.class, "audit")
+ (List<String>)
kvStore.get(EntityPropertyChangeSubscriberForTesting.class, "audit")
.orElse(null));
}
public static void clearAuditEntries(KVStoreForTesting kvStore) {
- kvStore.clear(EntityAuditListenerForTesting.class);
+ kvStore.clear(EntityPropertyChangeSubscriberForTesting.class);
}
+
+
}
\ No newline at end of file
diff --git
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/publishing/ChangingEntitiesListenerForTesting.java
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/publishing/ChangingEntitiesListenerForTesting.java
index 987c49d..9aa61db 100644
---
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/publishing/ChangingEntitiesListenerForTesting.java
+++
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/publishing/ChangingEntitiesListenerForTesting.java
@@ -26,10 +26,10 @@ import javax.inject.Inject;
import org.springframework.stereotype.Service;
-import org.apache.isis.applib.services.audit.spi.ChangingEntities;
-import org.apache.isis.applib.services.audit.spi.ChangingEntitiesListener;
import org.apache.isis.applib.services.iactn.Interaction.Execution;
import org.apache.isis.applib.services.iactn.spi.ExecutionListener;
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
+import org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber;
import org.apache.isis.applib.util.schema.ChangesDtoUtils;
import org.apache.isis.applib.util.schema.MemberExecutionDtoUtils;
import org.apache.isis.commons.collections.Can;
@@ -43,7 +43,7 @@ import lombok.extern.log4j.Log4j2;
public class ChangingEntitiesListenerForTesting
implements
ExecutionListener,
- ChangingEntitiesListener {
+ EntityChangesSubscriber {
@Inject private KVStoreForTesting kvStore;
@@ -66,11 +66,11 @@ implements
}
@Override
- public void onEntitiesChanging(ChangingEntities publishedObjects) {
+ public void onChanging(EntityChanges publishedObjects) {
@SuppressWarnings("unchecked")
val publishedEntries =
- (List<ChangingEntities>) kvStore.get(this,
"publishedObjects").orElseGet(ArrayList::new);
+ (List<EntityChanges>) kvStore.get(this,
"publishedObjects").orElseGet(ArrayList::new);
publishedEntries.add(publishedObjects);
@@ -82,9 +82,9 @@ implements
// -- UTILITIES
@SuppressWarnings("unchecked")
- public static Can<ChangingEntities> getPublishedObjects(KVStoreForTesting
kvStore) {
+ public static Can<EntityChanges> getPublishedObjects(KVStoreForTesting
kvStore) {
return Can.ofCollection(
- (List<ChangingEntities>)
kvStore.get(ChangingEntitiesListenerForTesting.class, "publishedObjects")
+ (List<EntityChanges>)
kvStore.get(ChangingEntitiesListenerForTesting.class, "publishedObjects")
.orElse(null));
}
@@ -101,27 +101,27 @@ implements
public static int getCreated(KVStoreForTesting kvStore) {
val publishedObjects = getPublishedObjects(kvStore);
- return
publishedObjects.stream().mapToInt(ChangingEntities::getNumberCreated).sum();
+ return
publishedObjects.stream().mapToInt(EntityChanges::getNumberCreated).sum();
}
public static int getDeleted(KVStoreForTesting kvStore) {
val publishedObjects = getPublishedObjects(kvStore);
- return
publishedObjects.stream().mapToInt(ChangingEntities::getNumberDeleted).sum();
+ return
publishedObjects.stream().mapToInt(EntityChanges::getNumberDeleted).sum();
}
public static int getLoaded(KVStoreForTesting kvStore) {
val publishedObjects = getPublishedObjects(kvStore);
- return
publishedObjects.stream().mapToInt(ChangingEntities::getNumberLoaded).sum();
+ return
publishedObjects.stream().mapToInt(EntityChanges::getNumberLoaded).sum();
}
public static int getUpdated(KVStoreForTesting kvStore) {
val publishedObjects = getPublishedObjects(kvStore);
- return
publishedObjects.stream().mapToInt(ChangingEntities::getNumberUpdated).sum();
+ return
publishedObjects.stream().mapToInt(EntityChanges::getNumberUpdated).sum();
}
public static int getModified(KVStoreForTesting kvStore) {
val publishedObjects = getPublishedObjects(kvStore);
- return
publishedObjects.stream().mapToInt(ChangingEntities::getNumberPropertiesModified).sum();
+ return
publishedObjects.stream().mapToInt(EntityChanges::getNumberPropertiesModified).sum();
}
diff --git
a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/commons/InteractionTestAbstract.java
b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/commons/InteractionTestAbstract.java
index 5a3edfd..2fb0590 100644
---
a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/commons/InteractionTestAbstract.java
+++
b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/commons/InteractionTestAbstract.java
@@ -43,7 +43,7 @@ import
org.apache.isis.core.metamodel.interactions.managed.PropertyInteraction;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
import
org.apache.isis.core.runtime.persistence.changetracking.EntityChangeTrackerDefault;
-import
org.apache.isis.testdomain.applayer.auditing.EntityAuditListenerForTesting;
+import
org.apache.isis.testdomain.applayer.auditing.EntityPropertyChangeSubscriberForTesting;
import org.apache.isis.testdomain.util.CollectionAssertions;
import org.apache.isis.testdomain.util.kv.KVStoreForTesting;
import
org.apache.isis.testing.integtestsupport.applib.IsisIntegrationTestAbstract;
@@ -164,7 +164,7 @@ public abstract class InteractionTestAbstract extends
IsisIntegrationTestAbstrac
// -- ASSERTIONS (AUDITING)
protected void assertEmptyAudits() {
- val audits =
EntityAuditListenerForTesting.getAuditEntries(kvStoreForTesting);
+ val audits =
EntityPropertyChangeSubscriberForTesting.getAuditEntries(kvStoreForTesting);
assertTrue(audits.isEmpty());
}
@@ -186,13 +186,13 @@ public abstract class InteractionTestAbstract extends
IsisIntegrationTestAbstrac
"Jdo Book/name: '[NEW]' -> 'Sample Book'",
"Jdo Inventory/name: '[NEW]' -> 'Sample Inventory'");
- val actualAudits =
EntityAuditListenerForTesting.getAuditEntries(kvStoreForTesting)
+ val actualAudits =
EntityPropertyChangeSubscriberForTesting.getAuditEntries(kvStoreForTesting)
.stream()
.collect(Collectors.toCollection(TreeSet::new));
assertEquals(expectedAudits, actualAudits);
- EntityAuditListenerForTesting.clearAuditEntries(kvStoreForTesting);
+
EntityPropertyChangeSubscriberForTesting.clearAuditEntries(kvStoreForTesting);
}
@@ -207,13 +207,13 @@ public abstract class InteractionTestAbstract extends
IsisIntegrationTestAbstrac
"Jdo Book/publisher: 'Sample Publisher' -> '[DELETED]'",
"Jdo Inventory/name: 'Sample Inventory' -> '[DELETED]'");
- val actualAudits =
EntityAuditListenerForTesting.getAuditEntries(kvStoreForTesting)
+ val actualAudits =
EntityPropertyChangeSubscriberForTesting.getAuditEntries(kvStoreForTesting)
.stream()
.collect(Collectors.toCollection(TreeSet::new));
assertEquals(expectedAudits, actualAudits);
- EntityAuditListenerForTesting.clearAuditEntries(kvStoreForTesting);
+
EntityPropertyChangeSubscriberForTesting.clearAuditEntries(kvStoreForTesting);
}
@@ -222,19 +222,19 @@ public abstract class InteractionTestAbstract extends
IsisIntegrationTestAbstrac
val expectedAudits = _Sets.ofSorted(
"Jdo Book/price: '99.0' -> '12.0'");
- val actualAudits =
EntityAuditListenerForTesting.getAuditEntries(kvStoreForTesting)
+ val actualAudits =
EntityPropertyChangeSubscriberForTesting.getAuditEntries(kvStoreForTesting)
.stream()
.collect(Collectors.toCollection(TreeSet::new));
assertEquals(expectedAudits, actualAudits);
- EntityAuditListenerForTesting.clearAuditEntries(kvStoreForTesting);
+
EntityPropertyChangeSubscriberForTesting.clearAuditEntries(kvStoreForTesting);
}
// -- UTILTITIES
protected void dumpAudits() {
- val audits =
EntityAuditListenerForTesting.getAuditEntries(kvStoreForTesting);
+ val audits =
EntityPropertyChangeSubscriberForTesting.getAuditEntries(kvStoreForTesting);
System.err.println("==AUDITS==");
audits.forEach(System.err::println);
System.err.println("==========");
diff --git
a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/entitychangetracking/ChangedObjectsTest.java
b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/entitychangetracking/ChangedObjectsTest.java
index 0905cc0..88c4053 100644
---
a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/entitychangetracking/ChangedObjectsTest.java
+++
b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/entitychangetracking/ChangedObjectsTest.java
@@ -30,7 +30,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.config.presets.IsisPresets;
-import
org.apache.isis.testdomain.applayer.auditing.EntityAuditListenerForTesting;
+import
org.apache.isis.testdomain.applayer.auditing.EntityPropertyChangeSubscriberForTesting;
import
org.apache.isis.testdomain.applayer.auditing.Configuration_usingEntityPrePostValueAuditing;
import
org.apache.isis.testdomain.applayer.publishing.Configuration_usingEntityChangeKindAuditing;
import org.apache.isis.testdomain.commons.InteractionBoundaryProbe;
@@ -68,7 +68,7 @@ class ChangedObjectsTest extends InteractionTestAbstract {
System.err.println("===BEFORE SETUP");
// cleanup
- EntityAuditListenerForTesting.clearAuditEntries(kvStoreForTesting);
+
EntityPropertyChangeSubscriberForTesting.clearAuditEntries(kvStoreForTesting);
// given
fixtureScripts.runPersona(JdoTestDomainPersona.InventoryWith1Book);