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 36bc684 ISIS-2464: semantic renaming audit/dispatch -> publishing (4)
36bc684 is described below
commit 36bc6840472e4f0f98e68f94ebc9b802eea71b42
Author: Andi Huber <[email protected]>
AuthorDate: Fri Nov 20 09:59:15 2020 +0100
ISIS-2464: semantic renaming audit/dispatch -> publishing (4)
---
.../org/apache/isis/applib/IsisModuleApplib.java | 16 +++++-----
.../org/apache/isis/applib/annotation/Action.java | 8 ++---
.../apache/isis/applib/annotation/Property.java | 8 ++---
.../isis/applib/services/command/Command.java | 8 +++--
.../applib/services/iactn/spi/package-info.java | 28 ------------------
.../services/publishing/log/CommandLogger.java | 34 ++++++++++++++++++++++
.../EntityChangesLogger.java} | 6 ++--
.../EntityPropertyChangeLogger.java} | 6 ++--
.../log/ExecutionLogger.java} | 16 +++++-----
.../applib/services/publishing/package-info.java | 16 +++++++---
.../spi/CommandSubscriber.java} | 34 +++++-----------------
.../spi/ExecutionSubscriber.java} | 5 ++--
.../apache/isis/core/config/IsisConfiguration.java | 16 +++++-----
.../publish/ExecutionDispatchPropertyFacet.java | 4 +--
.../services/command/CommandPublisher.java | 20 +++++++++++++
...ispatcher.java => CommandPublisherDefault.java} | 13 +++++----
.../core/runtime/iactn/InteractionSession.java | 2 +-
.../changetracking/EntityChangeTrackerDefault.java | 2 +-
.../EntityPropertyChangePublisher.java | 10 ++++---
.../IsisModuleCoreRuntimeServices.java | 4 +--
.../publish/ExecutionDispatcherDefault.java | 6 ++--
...utionListenerToCaptureInteractionsInMemory.java | 4 +--
...nerForJdo.java => CommandSubscriberForJdo.java} | 9 ++----
.../persistence/IsisPersistenceSessionJdoBase.java | 6 ++--
.../persistence/PersistenceSession5.java | 3 +-
.../EntityChangesSubscriberForTesting.java | 4 +--
26 files changed, 156 insertions(+), 132 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 10d1fa2..f012cc6 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
@@ -32,16 +32,16 @@ import
org.apache.isis.applib.mixins.metamodel.Object_objectType;
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;
-import org.apache.isis.applib.services.command.spi.CommandListener;
import
org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto;
import
org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto;
import
org.apache.isis.applib.services.commanddto.processor.spi.CommandDtoProcessorServiceIdentity;
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.publishing.log.CommandLogger;
+import org.apache.isis.applib.services.publishing.log.EntityChangesLogger;
+import
org.apache.isis.applib.services.publishing.log.EntityPropertyChangeLogger;
+import org.apache.isis.applib.services.publishing.log.ExecutionLogger;
import org.apache.isis.applib.services.session.SessionLoggingServiceLogging;
import org.apache.isis.schema.IsisModuleSchema;
@@ -70,12 +70,12 @@ import org.apache.isis.schema.IsisModuleSchema;
// @Service's
ClockService.class,
CommandDtoProcessorServiceIdentity.class,
- CommandListener.Null.class,
+ CommandLogger.class,
ContentMappingServiceForCommandDto.class,
ContentMappingServiceForCommandsDto.class,
- EntityChangesLogging.class,
- EntityPropertyChangeLogging.class,
- ExecutionLogging.class,
+ EntityChangesLogger.class,
+ EntityPropertyChangeLogger.class,
+ ExecutionLogger.class,
SessionLoggingServiceLogging.class,
})
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/annotation/Action.java
b/api/applib/src/main/java/org/apache/isis/applib/annotation/Action.java
index 09f8b61..cbb4a55 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Action.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/Action.java
@@ -27,12 +27,12 @@ import java.lang.annotation.Target;
import org.apache.isis.applib.events.domain.ActionDomainEvent;
import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.spi.CommandListener;
import
org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto;
import
org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto;
import
org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.services.iactn.spi.ExecutionListener;
+import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
+import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
/**
* Domain semantics for domain object collection.
@@ -92,7 +92,7 @@ public @interface Action {
// end::refguide[]
/**
* Whether action invocations, captured as {@link Command}s,
- * should be dispatched to {@link CommandListener}s.
+ * should be dispatched to {@link CommandSubscriber}s.
*/
// tag::refguide[]
Dispatching commandDispatch() // <.>
@@ -141,7 +141,7 @@ public @interface Action {
// end::refguide[]
/**
* Whether {@link Interaction.Execution}s (triggered by action
invocations), should
- * be dispatched to {@link ExecutionListener}s.
+ * be dispatched to {@link ExecutionSubscriber}s.
*/
// tag::refguide[]
Dispatching executionDispatch() // <.>
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/annotation/Property.java
b/api/applib/src/main/java/org/apache/isis/applib/annotation/Property.java
index 2c50dfb..5f7055a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Property.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/Property.java
@@ -27,12 +27,12 @@ import java.lang.annotation.Target;
import org.apache.isis.applib.events.domain.PropertyDomainEvent;
import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.spi.CommandListener;
import
org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto;
import
org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto;
import
org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.services.iactn.spi.ExecutionListener;
+import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
+import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
import org.apache.isis.applib.spec.Specification;
import org.apache.isis.applib.value.Blob;
import org.apache.isis.applib.value.Clob;
@@ -55,7 +55,7 @@ public @interface Property {
// end::refguide[]
/**
* Whether property edits, captured as {@link Command}s,
- * should be dispatched to {@link CommandListener}s.
+ * should be dispatched to {@link CommandSubscriber}s.
*/
// tag::refguide[]
Dispatching commandDispatch() // <.>
@@ -123,7 +123,7 @@ public @interface Property {
/**
* Whether {@link Interaction.Execution}s
* (triggered property edits), should be dispatched to
- * {@link ExecutionListener}s.
+ * {@link ExecutionSubscriber}s.
*/
// tag::refguide[]
Dispatching executionDispatch() // <.>
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 d6e741c..2e53e26 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
@@ -34,6 +34,7 @@ import org.apache.isis.schema.cmd.v2.CommandDto;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import lombok.ToString;
import lombok.val;
import lombok.extern.log4j.Log4j2;
@@ -70,6 +71,7 @@ import lombok.extern.log4j.Log4j2;
* </p>
*/
@RequiredArgsConstructor
+@ToString
@Log4j2
// tag::refguide[]
public class Command implements HasUniqueId, HasUsername, HasCommandDto {
@@ -136,6 +138,7 @@ public class Command implements HasUniqueId, HasUsername,
HasCommandDto {
* from the provided {@link CommandDto}.
* </p>
*/
+ @ToString.Exclude
// tag::refguide[]
@Getter
private CommandDto commandDto; // <.>
@@ -177,6 +180,7 @@ public class Command implements HasUniqueId, HasUsername,
HasCommandDto {
* @see WrapperFactory#asyncWrapMixin(Class, Object, AsyncControl)
*
*/
+ @ToString.Exclude
// tag::refguide[]
@Getter
private Command parent; // <.>
@@ -252,7 +256,7 @@ public class Command implements HasUniqueId, HasUsername,
HasCommandDto {
* <p>
* This can be used as a hint to decide whether to persist the command
* to a datastore, for example for auditing (though
- * {@link org.apache.isis.applib.services.iactn.spi.ExecutionListener}
is
+ * {@link
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber} is
* an alternative for that use case) or so that it can be retrieved
* and replayed on another system, eg for regression testing.
* </p>
@@ -266,7 +270,7 @@ public class Command implements HasUniqueId, HasUsername,
HasCommandDto {
/**
* Whether this command has been enabled for dispatching,
- * that is {@link CommandListener}s will be notified when this Command
completes.
+ * that is {@link CommandSubscriber}s will be notified when this Command
completes.
*/
// tag::refguide[]
@Getter
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/spi/package-info.java
b/api/applib/src/main/java/org/apache/isis/applib/services/iactn/spi/package-info.java
deleted file mode 100644
index e05b8b7..0000000
---
a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/spi/package-info.java
+++ /dev/null
@@ -1,28 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.iactn.spi.ExecutionListener} API
is intended for coarse-grained
- * publish/subscribe for system-to-system interactions, from Apache Isis to
some other system. Events that can be
- * published are action invocations/property edits, and changed objects. A
typical use case is to publish onto a
- * pub/sub bus such as ActiveMQ with Camel to keep other systems up to date.
- *
- *
- */
-package org.apache.isis.applib.services.iactn.spi;
\ No newline at end of file
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/CommandLogger.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/CommandLogger.java
new file mode 100644
index 0000000..cc26abb
--- /dev/null
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/CommandLogger.java
@@ -0,0 +1,34 @@
+package org.apache.isis.applib.services.publishing.log;
+
+import javax.inject.Named;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
+
+import lombok.extern.log4j.Log4j2;
+
+@Service
+@Named("isisApplib.CommandLogger")
+@Order(OrderPrecedence.LATE)
+@Primary
+@Qualifier("Logging")
+@Log4j2
+public class CommandLogger implements CommandSubscriber {
+
+ @Override
+ public boolean isEnabled() {
+ return log.isDebugEnabled();
+ }
+
+ @Override
+ public void onCompleted(Command command) {
+ log.debug("completed: {}", command);
+ }
+
+}
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityChangesLogging.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityChangesLogger.java
similarity index 91%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityChangesLogging.java
rename to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityChangesLogger.java
index 407bb0e..54977f2 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityChangesLogging.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityChangesLogger.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services.publishing.logging;
+package org.apache.isis.applib.services.publishing.log;
import javax.inject.Named;
@@ -34,12 +34,12 @@ import org.apache.isis.schema.chg.v2.ChangesDto;
import lombok.extern.log4j.Log4j2;
@Service
-@Named("isisApplib.EntityChangesLogging")
+@Named("isisApplib.EntityChangesLogger")
@Order(OrderPrecedence.LATE)
@Primary
@Qualifier("Logging")
@Log4j2
-public class EntityChangesLogging implements EntityChangesSubscriber {
+public class EntityChangesLogger implements EntityChangesSubscriber {
@Override
public boolean isEnabled() {
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityPropertyChangeLogging.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityPropertyChangeLogger.java
similarity index 89%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityPropertyChangeLogging.java
rename to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityPropertyChangeLogger.java
index 4e63bcb..fcf05ae 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/logging/EntityPropertyChangeLogging.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityPropertyChangeLogger.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services.publishing.logging;
+package org.apache.isis.applib.services.publishing.log;
import javax.inject.Named;
@@ -32,12 +32,12 @@ import
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscr
import lombok.extern.log4j.Log4j2;
@Service
-@Named("isisApplib.EntityPropertyChangeLogging")
+@Named("isisApplib.EntityPropertyChangeLogger")
@Order(OrderPrecedence.LATE)
@Primary
@Qualifier("logging")
@Log4j2
-public class EntityPropertyChangeLogging implements
EntityPropertyChangeSubscriber {
+public class EntityPropertyChangeLogger implements
EntityPropertyChangeSubscriber {
@Override
public boolean isEnabled() {
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/spi/ExecutionLogging.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/ExecutionLogger.java
similarity index 84%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/iactn/spi/ExecutionLogging.java
rename to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/ExecutionLogger.java
index 24635cf..da30481 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/spi/ExecutionLogging.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/ExecutionLogger.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services.iactn.spi;
+package org.apache.isis.applib.services.publishing.log;
import javax.inject.Named;
@@ -27,26 +27,28 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
import org.apache.isis.applib.util.schema.InteractionDtoUtils;
import org.apache.isis.schema.ixn.v2.InteractionDto;
import lombok.extern.log4j.Log4j2;
@Service
-@Named("isisApplib.ExecutionLogging")
+@Named("isisApplib.ExecutionLogger")
@Order(OrderPrecedence.LATE)
@Primary
@Qualifier("Logging")
@Log4j2
-public class ExecutionLogging implements ExecutionListener {
+public class ExecutionLogger implements ExecutionSubscriber {
@Override
+ public boolean isEnabled() {
+ return log.isDebugEnabled();
+ }
+
+ @Override
public void onExecution(final Interaction.Execution<?, ?> execution) {
- if(!log.isDebugEnabled()) {
- return;
- }
-
final InteractionDto interactionDto =
InteractionDtoUtils.newInteractionDto(execution,
InteractionDtoUtils.Strategy.DEEP);
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/package-info.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/package-info.java
index 246e465..db645b8 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/package-info.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/package-info.java
@@ -18,9 +18,17 @@
*/
/**
- * 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.
- *
- *
+ * The {@link
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber}
+ * service provides a simple mechanism to capture changes to data.
+ * It is called for each property that has changed on any entity object
+ * (when enabled for publishing), as a set of pre- and post-values.
+ *
+ * The {@link
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber} API is
intended
+ * for coarse-grained publish/subscribe for system-to-system interactions,
from Apache Isis
+ * to some other system. Events that can be published are action
invocations/property edits,
+ * and changed objects. A typical use case is to publish onto a pub/sub bus
such as
+ * ActiveMQ with Camel to keep other systems up to date.
+ *
+ * TODO v2 publishing/subscribing now has even more participants
*/
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/command/spi/CommandListener.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/CommandSubscriber.java
similarity index 59%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/command/spi/CommandListener.java
rename to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/CommandSubscriber.java
index d700ce4..64b4d06 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/command/spi/CommandListener.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/CommandSubscriber.java
@@ -16,22 +16,19 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services.command.spi;
+package org.apache.isis.applib.services.publishing.spi;
-import javax.inject.Named;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.commons.having.HasEnabling;
/**
- * SPI
+ * Part of the <i>Publishing SPI</i>. A component to receive {@link Command}s
+ * (with publishing enabled) that just completed.
+ *
+ * @since 2.0
*/
// tag::refguide[]
-public interface CommandListener {
+public interface CommandSubscriber extends HasEnabling {
/**
* Notifies that the command has completed.
@@ -42,22 +39,7 @@ public interface CommandListener {
* </p>
*/
// tag::refguide[]
- void onComplete(final Command command); // <.>
-
- /**
- * At least one implementation is required to satisfy injection point
- * internal to the framework.
- */
- @Service
- @Named("isisApplib.CommandServiceListenerNull")
- @Order(OrderPrecedence.LATE)
- @Qualifier("Null")
- public static class Null implements CommandListener {
-
- @Override
- public void onComplete(Command command) {
+ void onCompleted(Command command); // <.>
- }
- }
}
// end::refguide[]
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/spi/ExecutionListener.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/ExecutionSubscriber.java
similarity index 91%
rename from
api/applib/src/main/java/org/apache/isis/applib/services/iactn/spi/ExecutionListener.java
rename to
api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/ExecutionSubscriber.java
index 2d10b6b..b224b1d 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/spi/ExecutionListener.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/ExecutionSubscriber.java
@@ -16,10 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.applib.services.iactn.spi;
+package org.apache.isis.applib.services.publishing.spi;
import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.util.schema.InteractionDtoUtils;
+import org.apache.isis.commons.having.HasEnabling;
/**
* SPI that allows individual interactions (action invocations or property
edits) to be
@@ -27,7 +28,7 @@ import org.apache.isis.applib.util.schema.InteractionDtoUtils;
* Note that re-publishing is not part of this SPI.
*/
// tag::refguide[]
-public interface ExecutionListener {
+public interface ExecutionSubscriber extends HasEnabling {
// end::refguide[]
/**
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 713424b..fbeaba2 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
@@ -185,10 +185,10 @@ public class IsisConfiguration {
/**
* The default for whether the identities of changed objects
should be sent through to the
- * {@link
org.apache.isis.applib.services.iactn.spi.ExecutionListener} for publishing.
+ * {@link
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber} for
publishing.
*
* <p>
- * The service's {@link
org.apache.isis.applib.services.iactn.spi.ExecutionListener#publish(EntityChanges)
publish}
+ * The service's {@link
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber#publish(EntityChanges)
publish}
* method is called only once per transaction, with {@link
EntityChanges} collecting details of
* all changed domain objects.
* </p>
@@ -654,7 +654,7 @@ public class IsisConfiguration {
* The default for whether action invocations should be reified
* as a {@link
org.apache.isis.applib.services.command.Command},
* to be sent to any registered
- * {@link
org.apache.isis.applib.services.command.spi.CommandListener}s,
+ * {@link
org.apache.isis.applib.services.publishing.spi.CommandSubscriber}s,
* either for auditing or for replayed against a secondary
* system, eg for regression testing.
*
@@ -714,10 +714,10 @@ public class IsisConfiguration {
/**
* The default for whether action invocations should be sent
through to the
- * {@link
org.apache.isis.applib.services.iactn.spi.ExecutionListener} for publishing.
+ * {@link
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber} for
publishing.
*
* <p>
- * The service's {@link
org.apache.isis.applib.services.iactn.spi.ExecutionListener#publish(Interaction.Execution)
publish}
+ * The service's {@link
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber#publish(Interaction.Execution)
publish}
* method is called only once per transaction, with
* {@link Interaction.Execution} collecting details of
* the identity of the target object, the action invoked,
the action arguments and the returned
@@ -835,7 +835,7 @@ public class IsisConfiguration {
* The default for whether property edits should be reified
* as a {@link
org.apache.isis.applib.services.command.Command},
* to be sent to any registered
- * {@link
org.apache.isis.applib.services.command.spi.CommandListener}s,
+ * {@link
org.apache.isis.applib.services.publishing.spi.CommandSubscriber}s,
* either for auditing or for replayed against a secondary
* system, eg for regression testing.
*
@@ -848,10 +848,10 @@ public class IsisConfiguration {
/**
* The default for whether property edits should be sent
through to the
- * {@link
org.apache.isis.applib.services.iactn.spi.ExecutionListener} for publishing.
+ * {@link
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber} for
publishing.
*
* <p>
- * The service's {@link
org.apache.isis.applib.services.iactn.spi.ExecutionListener#publish(Interaction.Execution)
publish}
+ * The service's {@link
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber#publish(Interaction.Execution)
publish}
* method is called only once per transaction, with
* {@link Interaction.Execution} collecting details of
* the identity of the target object, the property edited,
and the new value of the property.
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/publish/ExecutionDispatchPropertyFacet.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/publish/ExecutionDispatchPropertyFacet.java
index 42a59c7..4f35b0b 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/publish/ExecutionDispatchPropertyFacet.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/publish/ExecutionDispatchPropertyFacet.java
@@ -20,7 +20,7 @@
package org.apache.isis.core.metamodel.facets.properties.publish;
import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.services.iactn.spi.ExecutionListener;
+import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.services.publishing.ExecutionDispatcher;
@@ -31,7 +31,7 @@ import lombok.val;
/**
* Indicates that editing of the property, captured by an {@link
Interaction.Execution},
* should be dispatched via {@link ExecutionDispatcher} to all subscribed
- * {@link ExecutionListener}s.
+ * {@link ExecutionSubscriber}s.
*/
public interface ExecutionDispatchPropertyFacet extends Facet {
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandPublisher.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandPublisher.java
new file mode 100644
index 0000000..a02d7f3
--- /dev/null
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandPublisher.java
@@ -0,0 +1,20 @@
+package org.apache.isis.core.metamodel.services.command;
+
+import org.apache.isis.applib.services.command.Command;
+
+import lombok.NonNull;
+
+public interface CommandPublisher {
+
+ /**
+ * "Complete" the command, providing an opportunity ot persist
+ * a memento of the command if the
+ * {@link Command#isSystemStateChanged() system state has changed}.
+ *
+ * <p>
+ * The framework will automatically have set the {@link
Command#getCompletedAt()} property.
+ * </p>
+ */
+ void complete(@NonNull Command command);
+
+}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDispatcher.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandPublisherDefault.java
similarity index 85%
rename from
core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDispatcher.java
rename to
core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandPublisherDefault.java
index d455613..c5ebbce 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDispatcher.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandPublisherDefault.java
@@ -30,19 +30,19 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.spi.CommandListener;
+import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
import lombok.NonNull;
import lombok.extern.log4j.Log4j2;
@Service
-@Named("isisMetaModel.CommandDispatcher")
+@Named("isisMetaModel.CommandPublisher")
@Order(OrderPrecedence.MIDPOINT)
@Primary
@Qualifier("Internal")
@Log4j2
// tag::refguide[]
-public class CommandDispatcher {
+public class CommandPublisherDefault implements CommandPublisher {
// end::refguide[]
/**
@@ -55,6 +55,7 @@ public class CommandDispatcher {
* </p>
*/
// tag::refguide[]
+ @Override
public void complete(final @NonNull Command command) { // <.>
// ...
// end::refguide[]
@@ -67,15 +68,15 @@ public class CommandDispatcher {
return;
}
- log.debug("complete: {}, systemStateChanged {}",
+ log.debug("completed: {}, systemStateChanged {}",
command.getLogicalMemberIdentifier(),
command.isSystemStateChanged());
// tag::refguide[]
- commandListeners.forEach(commandListener ->
commandListener.onComplete(command));
+ subscribers.forEach(commandListener ->
commandListener.onCompleted(command));
}
- @Inject List<CommandListener> commandListeners;
+ @Inject List<CommandSubscriber> subscribers;
}
// end::refguide[]
diff --git
a/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/InteractionSession.java
b/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/InteractionSession.java
index e1bd91b..a75fc45 100644
---
a/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/InteractionSession.java
+++
b/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/InteractionSession.java
@@ -48,7 +48,7 @@ import lombok.Setter;
* captures the details of an action invocation or property edit (along
* with any nested calls to other actions through wrapper factory) for
* the purpose of publishing using
- * {@link org.apache.isis.applib.services.iactn.spi.ExecutionListener}.
+ * {@link
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber}.
* </p>
*
* @see IsisInteractionFactory
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 336688f..1b652da 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
@@ -186,7 +186,7 @@ implements
case AUDITING:
log.debug("about to dispatch audit entries and entity changes");
prepareAuditDispatching();
- entityAuditDispatcher.dispatchEntityAudits(this);
+ entityAuditDispatcher.publishEntityAudits(this);
changingEntitiesDispatcher.publishChangingEntities(this);
break;
case POST_AUDITING:
diff --git
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityPropertyChangePublisher.java
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityPropertyChangePublisher.java
index 1cf463c..588be88 100644
---
a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityPropertyChangePublisher.java
+++
b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/changetracking/EntityPropertyChangePublisher.java
@@ -70,14 +70,16 @@ public class EntityPropertyChangePublisher {
.filter(HasEnabling::isEnabled);
}
- public void dispatchEntityAudits(final
HasEnlistedEntityPropertyChangeRecords hasEnlistedForAuditing) {
- if(!canDispatch()) {
+ public void publishEntityAudits(
+ final HasEnlistedEntityPropertyChangeRecords
hasEnlistedEntityPropertyChangeRecords) {
+
+ if(!canPublish()) {
return;
}
val currentUser = userService.getUser().getName();
val currentTime = clockService.nowAsJavaSqlTimestamp();
- val propertyChangeRecords =
hasEnlistedForAuditing.getPropertyChangeRecords();
+ val propertyChangeRecords =
hasEnlistedEntityPropertyChangeRecords.getPropertyChangeRecords();
log.debug("about to process {} property changes",
()->propertyChangeRecords.size());
@@ -88,7 +90,7 @@ public class EntityPropertyChangePublisher {
// -- HELPER
- private boolean canDispatch() {
+ private boolean canPublish() {
return enabledSubscribers.isNotEmpty();
}
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
index afc4742..d2de80a 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
+++
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
@@ -27,7 +27,7 @@ import org.springframework.core.OrderComparator;
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
import org.apache.isis.core.codegen.bytebuddy.IsisModuleCoreCodegenByteBuddy;
-import org.apache.isis.core.metamodel.services.command.CommandDispatcher;
+import org.apache.isis.core.metamodel.services.command.CommandPublisherDefault;
import org.apache.isis.core.runtime.IsisModuleCoreRuntime;
import org.apache.isis.core.runtimeservices.bookmarks.BookmarkServiceDefault;
import
org.apache.isis.core.runtimeservices.command.CommandDtoServiceInternalDefault;
@@ -73,7 +73,7 @@ import
org.apache.isis.core.runtimeservices.xmlsnapshot.XmlSnapshotServiceDefaul
EntityChangesPublisherDefault.class,
CommandDtoServiceInternalDefault.class,
CommandExecutorServiceDefault.class,
- CommandDispatcher.class,
+ CommandPublisherDefault.class,
ConfigurationViewServiceDefault.class,
EmailNotificationServiceDefault.class,
EmailServiceDefault.class,
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ExecutionDispatcherDefault.java
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ExecutionDispatcherDefault.java
index ab57ba1..ff2c4bb 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ExecutionDispatcherDefault.java
+++
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/ExecutionDispatcherDefault.java
@@ -34,14 +34,14 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.IsisInteractionScope;
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.services.iactn.spi.ExecutionListener;
+import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
import org.apache.isis.core.metamodel.services.publishing.ExecutionDispatcher;
import lombok.RequiredArgsConstructor;
import lombok.val;
/**
- * Wrapper around {@link ExecutionListener}. Is a no-op if there is no
injected service.
+ * Wrapper around {@link ExecutionSubscriber}. Is a no-op if there is no
injected service.
*/
@Service
@Named("isisRuntimeServices.ExecutionDispatcherDefault")
@@ -54,7 +54,7 @@ import lombok.val;
public class ExecutionDispatcherDefault
implements ExecutionDispatcher {
- private final List<ExecutionListener> executionListeners;
+ private final List<ExecutionSubscriber> executionListeners;
@Override
public void dispatchActionInvoking(final Interaction.Execution<?,?>
execution) {
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_interactions/ExecutionListenerToCaptureInteractionsInMemory.java
b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_interactions/ExecutionListenerToCaptureInteractionsInMemory.java
index f592205..bbd87a1 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_interactions/ExecutionListenerToCaptureInteractionsInMemory.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/_interactions/ExecutionListenerToCaptureInteractionsInMemory.java
@@ -25,7 +25,7 @@ import java.util.stream.Stream;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.services.iactn.spi.ExecutionListener;
+import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
import org.apache.isis.applib.util.schema.InteractionDtoUtils;
import org.apache.isis.schema.ixn.v2.InteractionDto;
@@ -33,7 +33,7 @@ import lombok.val;
//tag::class[]
@Service
-public class ExecutionListenerToCaptureInteractionsInMemory implements
ExecutionListener {
+public class ExecutionListenerToCaptureInteractionsInMemory implements
ExecutionSubscriber {
private final List<InteractionDto> executions = new ArrayList<>();
diff --git
a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/CommandServiceListenerForJdo.java
b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/CommandSubscriberForJdo.java
similarity index 91%
rename from
extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/CommandServiceListenerForJdo.java
rename to
extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/CommandSubscriberForJdo.java
index d902cd8..6cbe4fe 100644
---
a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/CommandServiceListenerForJdo.java
+++
b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/CommandSubscriberForJdo.java
@@ -18,8 +18,6 @@
*/
package org.apache.isis.extensions.commandlog.impl;
-import java.util.Optional;
-
import javax.inject.Inject;
import javax.inject.Named;
@@ -29,11 +27,10 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.spi.CommandListener;
+import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
import org.apache.isis.applib.util.JaxbUtil;
import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdo;
import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
-import org.apache.isis.schema.cmd.v2.CommandDto;
import lombok.RequiredArgsConstructor;
import lombok.val;
@@ -45,12 +42,12 @@ import lombok.extern.log4j.Log4j2;
@Qualifier("Jdo")
@Log4j2
@RequiredArgsConstructor
-public class CommandServiceListenerForJdo implements CommandListener {
+public class CommandSubscriberForJdo implements CommandSubscriber {
@Inject final CommandJdoRepository commandJdoRepository;
@Override
- public void onComplete(Command command) {
+ public void onCompleted(Command command) {
if(!command.isSystemStateChanged()) {
return;
diff --git
a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPersistenceSessionJdoBase.java
b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPersistenceSessionJdoBase.java
index e3cf7cc..37b4198 100644
---
a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPersistenceSessionJdoBase.java
+++
b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPersistenceSessionJdoBase.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.commons.ToString;
import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.services.command.CommandDispatcher;
+import org.apache.isis.core.metamodel.services.command.CommandPublisher;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -62,7 +62,7 @@ abstract class IsisPersistenceSessionJdoBase implements
IsisPersistenceSessionJd
@Getter protected final MetaModelContext metaModelContext;
protected final ServiceInjector serviceInjector;
protected final ServiceRegistry serviceRegistry;
- protected final CommandDispatcher commandDispatcher;
+ protected final CommandPublisher commandPublisher;
protected final FactoryService factoryService;
protected final ClockService clockService;
protected final UserService userService;
@@ -113,7 +113,7 @@ abstract class IsisPersistenceSessionJdoBase implements
IsisPersistenceSessionJd
this.configuration = metaModelContext.getConfiguration();
this.specificationLoader = metaModelContext.getSpecificationLoader();
- this.commandDispatcher = lookupService(CommandDispatcher.class);
+ this.commandPublisher = lookupService(CommandPublisher.class);
this.factoryService = lookupService(FactoryService.class);
this.clockService = lookupService(ClockService.class);
this.userService = lookupService(UserService.class);
diff --git
a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSession5.java
b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSession5.java
index a758062..dd3922d 100644
---
a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSession5.java
+++
b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSession5.java
@@ -197,6 +197,7 @@ implements
IsisLifecycleListener.PersistenceSessionLifecycleManagement {
this.state = State.CLOSED;
}
+ @Deprecated //TODO[2464] should be the responsibility of the internal
Interaction lifecycle handler
private void completeCommandFromInteractionAndClearDomainEvents() {
val interaction =
interactionContextProvider.get().getInteractionElseFail();
@@ -221,7 +222,7 @@ implements
IsisLifecycleListener.PersistenceSessionLifecycleManagement {
command.updater().setCompletedAt(completedAt);
}
- commandDispatcher.complete(command);
+ commandPublisher.complete(command);
interaction.clear();
}
diff --git
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/publishing/EntityChangesSubscriberForTesting.java
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/publishing/EntityChangesSubscriberForTesting.java
index 84a1b7d..55054b5 100644
---
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/publishing/EntityChangesSubscriberForTesting.java
+++
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/publishing/EntityChangesSubscriberForTesting.java
@@ -27,9 +27,9 @@ import javax.inject.Inject;
import org.springframework.stereotype.Service;
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.services.publishing.spi.ExecutionSubscriber;
import org.apache.isis.applib.util.schema.ChangesDtoUtils;
import org.apache.isis.applib.util.schema.MemberExecutionDtoUtils;
import org.apache.isis.commons.collections.Can;
@@ -42,7 +42,7 @@ import lombok.extern.log4j.Log4j2;
@Log4j2
public class EntityChangesSubscriberForTesting
implements
- ExecutionListener,
+ ExecutionSubscriber,
EntityChangesSubscriber {
@Inject private KVStoreForTesting kvStore;