You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/09/22 05:31:01 UTC

[isis] branch ISIS-2735-command-log updated (85ddb0e -> bea28e1)

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

danhaywood pushed a change to branch ISIS-2735-command-log
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 85ddb0e  ISIS-2735: wip - fixes up jdo PublishedCommandForJdo
     new f2434dd  ISIS-2735: fixes compile issue
     new bea28e1  ISIS-2735: factoring out PublishedCommandRepositoryAbstract

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../primary/restapi/CommandRetrievalService.adoc   |   6 +-
 .../primary/ui/CommandReplayOnPrimaryService.adoc  |  14 +-
 .../secondary/mixins/CommandJdo_replayQueue.adoc   |   2 +-
 .../apache/isis/applib/util/ObjectContracts.java   |   2 +-
 .../ExposePersistedCommands_commands.java          |   2 +-
 .../commandlog/applib/dom/PublishedCommand.java    |   2 +-
 .../dom/PublishedCommandRepositoryAbstract.java}   | 155 +++++++++++----------
 .../jdo/src/main/java/META-INF/persistence.xml     |   2 +-
 .../commandlog/jdo/CommandSubscriberForJdo.java    |   4 +-
 .../commandlog/jdo/IsisModuleExtCommandLogJdo.java |   6 +-
 .../entities/PublishedCommandForJdoRepository.java |  44 +++---
 .../jdo/mixins/HasInteractionId_command.java       |   4 +-
 .../mixins/HasUsername_recentCommandsByUser.java   |   4 +-
 .../jdo/mixins/Object_recentCommands.java          |   4 +-
 .../extensions/commandlog/jdo/mixins/T_recent.java |   4 +-
 .../commandlog/jdo/ui/CommandServiceMenu.java      |   4 +-
 .../primary/restapi/CommandRetrievalService.java   |   7 +-
 .../primary/spiimpl/CaptureResultOfCommand.java    |  15 +-
 .../primary/ui/CommandReplayOnPrimaryService.java  |   7 +-
 .../secondary/analyser/CommandReplayAnalyser.java  |   6 +-
 .../analyser/CommandReplayAnalyserException.java   |   7 +-
 .../analyser/CommandReplayAnalyserResult.java      |   7 +-
 .../analysis/CommandReplayAnalysisService.java     |  11 +-
 .../secondary/fetch/CommandFetcher.java            |   5 +-
 .../jobcallables/ReplicateAndRunCommands.java      |  26 ++--
 ..._exclude.java => PublishedCommand_exclude.java} |  18 +--
 ...ueue.java => PublishedCommand_replayQueue.java} |  14 +-
 .../ui/CommandReplayOnSecondaryService.java        |   5 +-
 28 files changed, 197 insertions(+), 190 deletions(-)
 rename extensions/core/command-log/{jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/entities/CommandJdoRepository.java => applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/PublishedCommandRepositoryAbstract.java} (59%)
 copy viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java => extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/entities/PublishedCommandForJdoRepository.java (54%)
 rename extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/{CommandModel_exclude.java => PublishedCommand_exclude.java} (80%)
 rename extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/{CommandJdo_replayQueue.java => PublishedCommand_replayQueue.java} (81%)

[isis] 02/02: ISIS-2735: factoring out PublishedCommandRepositoryAbstract

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit bea28e19a33311357dfda623c8b5805a05f03de5
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Sep 21 07:29:03 2021 +0100

    ISIS-2735: factoring out PublishedCommandRepositoryAbstract
---
 .../primary/restapi/CommandRetrievalService.adoc   |   6 +-
 .../primary/ui/CommandReplayOnPrimaryService.adoc  |  14 +-
 .../secondary/mixins/CommandJdo_replayQueue.adoc   |   2 +-
 .../ExposePersistedCommands_commands.java          |   2 +-
 .../dom/PublishedCommandRepositoryAbstract.java}   | 155 +++++++++++----------
 .../jdo/src/main/java/META-INF/persistence.xml     |   2 +-
 .../commandlog/jdo/CommandSubscriberForJdo.java    |   4 +-
 .../commandlog/jdo/IsisModuleExtCommandLogJdo.java |   6 +-
 .../entities/PublishedCommandForJdoRepository.java |  55 ++++++++
 .../jdo/mixins/HasInteractionId_command.java       |   4 +-
 .../mixins/HasUsername_recentCommandsByUser.java   |   4 +-
 .../jdo/mixins/Object_recentCommands.java          |   4 +-
 .../extensions/commandlog/jdo/mixins/T_recent.java |   4 +-
 .../commandlog/jdo/ui/CommandServiceMenu.java      |   4 +-
 .../primary/restapi/CommandRetrievalService.java   |   7 +-
 .../primary/spiimpl/CaptureResultOfCommand.java    |  15 +-
 .../primary/ui/CommandReplayOnPrimaryService.java  |   7 +-
 .../secondary/analyser/CommandReplayAnalyser.java  |   6 +-
 .../analyser/CommandReplayAnalyserException.java   |   7 +-
 .../analyser/CommandReplayAnalyserResult.java      |   7 +-
 .../analysis/CommandReplayAnalysisService.java     |  11 +-
 .../secondary/fetch/CommandFetcher.java            |   5 +-
 .../jobcallables/ReplicateAndRunCommands.java      |  26 ++--
 ..._exclude.java => PublishedCommand_exclude.java} |  18 +--
 ...ueue.java => PublishedCommand_replayQueue.java} |  14 +-
 .../ui/CommandReplayOnSecondaryService.java        |   5 +-
 26 files changed, 230 insertions(+), 164 deletions(-)

diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc
index 689b0ec..da42ac4 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc
@@ -8,7 +8,7 @@
 ----
 class CommandRetrievalService {
   public static final String LOGICAL_TYPE_NAME;
-  List<? extends CommandModel> findCommandsOnPrimaryFrom(final UUID interactionId, final Integer batchSize)     // <.>
+  List<PublishedCommand> findCommandsOnPrimaryFrom(final UUID interactionId, final Integer batchSize)     // <.>
   Integer default1FindCommandsOnPrimaryFrom()
 }
 ----
@@ -16,7 +16,7 @@ class CommandRetrievalService {
 <.> xref:#findCommandsOnPrimaryFrom__UUID_Integer[findCommandsOnPrimaryFrom(UUID, Integer)]
 +
 --
-These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"` 
+These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"`
 --
 
 == Members
@@ -24,4 +24,4 @@ These actions should be called with HTTP Accept Header set to: `application/xml;
 [#findCommandsOnPrimaryFrom__UUID_Integer]
 === findCommandsOnPrimaryFrom(UUID, Integer)
 
-These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"` 
+These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"`
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
index 53e06ef..60d157b 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
@@ -8,7 +8,7 @@
 ----
 class CommandReplayOnPrimaryService {
   public static final String LOGICAL_TYPE_NAME;
-  List<? extends CommandModel> findCommands(final UUID interactionId, final Integer batchSize)     // <.>
+  List<PublishedCommand> findCommands(final UUID interactionId, final Integer batchSize)     // <.>
   Integer default1FindCommandsOnPrimaryFrom()
   Clob downloadCommands(final UUID interactionId, final Integer batchSize, final String filenamePrefix)     // <.>
   Integer default1DownloadCommands()
@@ -21,17 +21,17 @@ class CommandReplayOnPrimaryService {
 <.> xref:#findCommands__UUID_Integer[findCommands(UUID, Integer)]
 +
 --
-These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"` 
+These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"`
 --
 <.> xref:#downloadCommands__UUID_Integer_String[downloadCommands(UUID, Integer, String)]
 +
 --
-These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"` 
+These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"`
 --
 <.> xref:#downloadCommandById__UUID_String[downloadCommandById(UUID, String)]
 +
 --
-This action should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandDto"` 
+This action should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandDto"`
 --
 
 == Members
@@ -39,14 +39,14 @@ This action should be called with HTTP Accept Header set to: `application/xml;pr
 [#findCommands__UUID_Integer]
 === findCommands(UUID, Integer)
 
-These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"` 
+These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"`
 
 [#downloadCommands__UUID_Integer_String]
 === downloadCommands(UUID, Integer, String)
 
-These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"` 
+These actions should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"`
 
 [#downloadCommandById__UUID_String]
 === downloadCommandById(UUID, String)
 
-This action should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandDto"` 
+This action should be called with HTTP Accept Header set to: `application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandDto"`
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
index 822489a..0ed1b41 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
@@ -7,7 +7,7 @@
 .CommandJdo_replayQueue.java
 ----
 class CommandJdo_replayQueue {
-  List<? extends CommandModel> coll()
+  List<PublishedCommand> coll()
   boolean hideColl()
 }
 ----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_commands/ExposePersistedCommands_commands.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_commands/ExposePersistedCommands_commands.java
index f544f65..bc16811 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_commands/ExposePersistedCommands_commands.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/_commands/ExposePersistedCommands_commands.java
@@ -38,7 +38,7 @@ public class ExposePersistedCommands_commands {
     private final ExposePersistedCommands exposePersistedCommands;
 
     //tag::class[]
-    public List<? extends CommandModel> coll() {
+    public List<PublishedCommand> coll() {
         return commandJdoRepository.findCompleted();
     }
 
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/entities/CommandJdoRepository.java b/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/PublishedCommandRepositoryAbstract.java
similarity index 59%
rename from extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/entities/CommandJdoRepository.java
rename to extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/PublishedCommandRepositoryAbstract.java
index 3b1e60c..0b9c81a 100644
--- a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/entities/CommandJdoRepository.java
+++ b/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/PublishedCommandRepositoryAbstract.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.commandlog.jdo.entities;
+package org.apache.isis.extensions.commandlog.applib.dom;
 
 import java.sql.Timestamp;
 import java.time.Instant;
@@ -28,14 +28,12 @@ import java.util.List;
 import java.util.Optional;
 import java.util.UUID;
 
-import org.springframework.lang.Nullable;
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Provider;
 
-import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Service;
+import org.springframework.lang.Nullable;
+import org.springframework.stereotype.Repository;
 
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.jaxb.JavaSqlXMLGregorianCalendarMarshalling;
@@ -45,91 +43,92 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.util.schema.CommandDtoUtils;
-import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommandRepository;
-import org.apache.isis.extensions.commandlog.applib.dom.ReplayState;
-import org.apache.isis.persistence.jdo.applib.services.JdoSupportService;
+import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 import org.apache.isis.schema.cmd.v2.CommandsDto;
 import org.apache.isis.schema.cmd.v2.MapDto;
 import org.apache.isis.schema.common.v2.InteractionType;
 import org.apache.isis.schema.common.v2.OidDto;
 
-import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 /**
  * Provides supporting functionality for querying and persisting
- * {@link PublishedCommandForJdo command} entities.
+ * {@link PublishedCommand command} entities.
  */
-@Service
-@Named("isis.ext.commandLog.CommandJdoRepository")
-@javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
-@Qualifier("Jdo")
-@RequiredArgsConstructor
-//@Log4j2
-public class CommandJdoRepository
-implements PublishedCommandRepository<PublishedCommandForJdo> {
-
-    @Inject final Provider<InteractionProvider> interactionProviderProvider;
-    @Inject final Provider<RepositoryService> repositoryServiceProvider;
-    @Inject final JdoSupportService jdoSupport;
+@Repository
+@Named("isis.ext.commandLog.PublishedCommandRepository")
+public abstract class PublishedCommandRepositoryAbstract<PC extends PublishedCommand>
+implements PublishedCommandRepository {
+
+    private final Class<PC> publishedCommandClass;
+
+    @Inject Provider<InteractionProvider> interactionProviderProvider;
+    @Inject Provider<RepositoryService> repositoryServiceProvider;
+
+    protected PublishedCommandRepositoryAbstract(
+            final Class<PC> publishedCommandClass) {
+        this.publishedCommandClass = publishedCommandClass;
+    }
 
     @Override
-    public List<PublishedCommandForJdo> findByFromAndTo(
+    public List<PublishedCommand> findByFromAndTo(
             final @Nullable LocalDate from,
             final @Nullable LocalDate to) {
         final Timestamp fromTs = toTimestampStartOfDayWithOffset(from, 0);
         final Timestamp toTs = toTimestampStartOfDayWithOffset(to, 1);
 
-        final Query<PublishedCommandForJdo> query;
+        final Query<PC> query;
         if(from != null) {
             if(to != null) {
-                query = Query.named(PublishedCommandForJdo.class, "findByTimestampBetween")
+                query = Query.named(publishedCommandClass, "findByTimestampBetween")
                         .withParameter("from", fromTs)
                         .withParameter("to", toTs);
             } else {
-                query = Query.named(PublishedCommandForJdo.class, "findByTimestampAfter")
+                query = Query.named(publishedCommandClass, "findByTimestampAfter")
                         .withParameter("from", fromTs);
             }
         } else {
             if(to != null) {
-                query = Query.named(PublishedCommandForJdo.class, "findByTimestampBefore")
+                query = Query.named(publishedCommandClass, "findByTimestampBefore")
                         .withParameter("to", toTs);
             } else {
-                query = Query.named(PublishedCommandForJdo.class, "find");
+                query = Query.named(publishedCommandClass, "find");
             }
         }
-        return repositoryService().allMatches(query);
+        return _Casts.uncheckedCast(
+                repositoryService().allMatches(query));
     }
 
     @Override
-    public Optional<PublishedCommandForJdo> findByInteractionId(final UUID interactionId) {
-        return repositoryService().firstMatch(
-                Query.named(PublishedCommandForJdo.class, "findByInteractionIdStr")
-                    .withParameter("interactionIdStr", interactionId.toString()));
+    public Optional<PublishedCommand> findByInteractionId(final UUID interactionId) {
+        return _Casts.uncheckedCast(
+                repositoryService().firstMatch(
+                Query.named(publishedCommandClass, "findByInteractionIdStr")
+                    .withParameter("interactionIdStr", interactionId.toString())));
     }
 
     @Override
-    public List<PublishedCommandForJdo> findByParent(final CommandModel parent) {
+    public List<PublishedCommand> findByParent(final PublishedCommand parent) {
         return repositoryService().allMatches(
-                Query.named(PublishedCommandForJdo.class, "findByParent")
+                Query.named(publishedCommandClass, "findByParent")
                     .withParameter("parent", parent));
     }
 
     @Override
-    public List<PublishedCommandForJdo> findCurrent() {
+    public List<PublishedCommand> findCurrent() {
         return repositoryService().allMatches(
-                Query.named(PublishedCommandForJdo.class, "findCurrent"));
+                Query.named(publishedCommandClass, "findCurrent"));
     }
 
     @Override
-    public List<PublishedCommandForJdo> findCompleted() {
+    public List<PublishedCommand> findCompleted() {
         return repositoryService().allMatches(
-                Query.named(PublishedCommandForJdo.class, "findCompleted"));
+                Query.named(publishedCommandClass, "findCompleted"));
     }
 
     @Override
-    public List<PublishedCommandForJdo> findByTargetAndFromAndTo(
+    public List<PublishedCommand> findByTargetAndFromAndTo(
             final Bookmark target,
             final @Nullable LocalDate from,
             final @Nullable LocalDate to) {
@@ -137,25 +136,25 @@ implements PublishedCommandRepository<PublishedCommandForJdo> {
         final Timestamp fromTs = toTimestampStartOfDayWithOffset(from, 0);
         final Timestamp toTs = toTimestampStartOfDayWithOffset(to, 1);
 
-        final Query<PublishedCommandForJdo> query;
+        final Query<PublishedCommand> query;
         if(from != null) {
             if(to != null) {
-                query = Query.named(PublishedCommandForJdo.class, "findByTargetAndTimestampBetween")
+                query = Query.named(publishedCommandClass, "findByTargetAndTimestampBetween")
                         .withParameter("target", target)
                         .withParameter("from", fromTs)
                         .withParameter("to", toTs);
             } else {
-                query = Query.named(PublishedCommandForJdo.class, "findByTargetAndTimestampAfter")
+                query = Query.named(publishedCommandClass, "findByTargetAndTimestampAfter")
                         .withParameter("target", target)
                         .withParameter("from", fromTs);
             }
         } else {
             if(to != null) {
-                query = Query.named(PublishedCommandForJdo.class, "findByTargetAndTimestampBefore")
+                query = Query.named(publishedCommandClass, "findByTargetAndTimestampBefore")
                         .withParameter("target", target)
                         .withParameter("to", toTs);
             } else {
-                query = Query.named(PublishedCommandForJdo.class, "findByTarget")
+                query = Query.named(publishedCommandClass, "findByTarget")
                         .withParameter("target", target);
             }
         }
@@ -167,58 +166,58 @@ implements PublishedCommandRepository<PublishedCommandForJdo> {
             final int daysOffset) {
 
         return dt!=null
-                ? new java.sql.Timestamp(
+                ? new Timestamp(
                         Instant.from(dt.atStartOfDay().plusDays(daysOffset).atZone(ZoneId.systemDefault()))
                         .toEpochMilli())
                 : null;
     }
 
     @Override
-    public List<PublishedCommandForJdo> findRecentByUsername(final String username) {
+    public List<PublishedCommand> findRecentByUsername(final String username) {
         return repositoryService().allMatches(
-                Query.named(PublishedCommandForJdo.class, "findRecentByUsername")
+                Query.named(publishedCommandClass, "findRecentByUsername")
                     .withParameter("username", username));
     }
 
     @Override
-    public List<PublishedCommandForJdo> findRecentByTarget(final Bookmark target) {
+    public List<PublishedCommand> findRecentByTarget(final Bookmark target) {
         return repositoryService().allMatches(
-                Query.named(PublishedCommandForJdo.class, "findRecentByTarget")
+                Query.named(publishedCommandClass, "findRecentByTarget")
                     .withParameter("target", target));
     }
 
     @Override
-    public List<PublishedCommandForJdo> findSince(final UUID interactionId, final Integer batchSize) {
+    public List<PublishedCommand> findSince(final UUID interactionId, final Integer batchSize) {
         if(interactionId == null) {
             return findFirst();
         }
-        final PublishedCommandForJdo from = findByInteractionIdElseNull(interactionId);
+        final PublishedCommand from = findByInteractionIdElseNull(interactionId);
         if(from == null) {
             return Collections.emptyList();
         }
         return findSince(from.getTimestamp(), batchSize);
     }
 
-    private List<PublishedCommandForJdo> findFirst() {
-        Optional<PublishedCommandForJdo> firstCommandIfAny = repositoryService().firstMatch(
-                Query.named(PublishedCommandForJdo.class, "findFirst"));
+    private List<PublishedCommand> findFirst() {
+        Optional<PublishedCommand> firstCommandIfAny = repositoryService().firstMatch(
+                Query.named(publishedCommandClass, "findFirst"));
         return firstCommandIfAny
                 .map(Collections::singletonList)
                 .orElse(Collections.emptyList());
     }
 
 
-    private PublishedCommandForJdo findByInteractionIdElseNull(final UUID interactionId) {
-        val tsq = jdoSupport.newTypesafeQuery(PublishedCommandForJdo.class);
+    private PublishedCommand findByInteractionIdElseNull(final UUID interactionId) {
+        val tsq = jdoSupport.newTypesafeQuery(publishedCommandClass);
         val cand = QCommandJdo.candidate();
         val q = tsq.filter(
-                cand.interactionIdStr.eq(tsq.parameter("interactionIdStr", String.class))
+                cand.interactionIdStr.eq(tsq.parameter("interactionId", String.class))
         );
-        q.setParameter("interactionIdStr", interactionId.toString());
+        q.setParameter("interactionId", interactionId);
         return q.executeUnique();
     }
 
-    private List<PublishedCommandForJdo> findSince(
+    private List<PublishedCommand> findSince(
             final Timestamp timestamp,
             final Integer batchSize) {
 
@@ -226,13 +225,13 @@ implements PublishedCommandRepository<PublishedCommandForJdo> {
         // XXX that's a historic workaround, should rather be fixed upstream
         val needsTrimFix = batchSize != null && batchSize == 1;
 
-        val q = Query.named(PublishedCommandForJdo.class, "findSince")
+        val q = Query.named(publishedCommandClass, "findSince")
                 .withParameter("timestamp", timestamp)
                 .withRange(QueryRange.limit(
                         needsTrimFix ? 2L : batchSize
                 ));
 
-        final List<PublishedCommandForJdo> publishedCommands = repositoryService().allMatches(q);
+        final List<PublishedCommand> publishedCommands = repositoryService().allMatches(q);
         return needsTrimFix && publishedCommands.size() > 1
                     ? publishedCommands.subList(0,1)
                     : publishedCommands;
@@ -240,34 +239,34 @@ implements PublishedCommandRepository<PublishedCommandForJdo> {
 
 
     @Override
-    public Optional<PublishedCommandForJdo> findMostRecentReplayed() {
+    public Optional<PublishedCommand> findMostRecentReplayed() {
 
         return repositoryService().firstMatch(
-                Query.named(PublishedCommandForJdo.class, "findMostRecentReplayed"));
+                Query.named(publishedCommandClass, "findMostRecentReplayed"));
     }
 
     @Override
-    public Optional<PublishedCommandForJdo> findMostRecentCompleted() {
+    public Optional<PublishedCommand> findMostRecentCompleted() {
         return repositoryService().firstMatch(
-                Query.named(PublishedCommandForJdo.class, "findMostRecentCompleted"));
+                Query.named(publishedCommandClass, "findMostRecentCompleted"));
     }
 
     @Override
-    public List<PublishedCommandForJdo> findNotYetReplayed() {
+    public List<PublishedCommand> findNotYetReplayed() {
         return repositoryService().allMatches(
-                Query.named(PublishedCommandForJdo.class, "findNotYetReplayed"));
+                Query.named(publishedCommandClass, "findNotYetReplayed"));
     }
 
     @Override
-    public List<PublishedCommandForJdo> findReplayedOnSecondary() {
+    public List<PublishedCommand> findReplayedOnSecondary() {
         return repositoryService().allMatches(
-                Query.named(PublishedCommandForJdo.class, "findReplayableMostRecentStarted"));
+                Query.named(publishedCommandClass, "findReplayableMostRecentStarted"));
     }
 
     @Override
-    public List<PublishedCommandForJdo> saveForReplay(final CommandsDto commandsDto) {
+    public List<PublishedCommand> saveForReplay(final CommandsDto commandsDto) {
         List<CommandDto> commandDto = commandsDto.getCommandDto();
-        List<PublishedCommandForJdo> commands = new ArrayList<>();
+        List<PublishedCommand> commands = new ArrayList<>();
         for (final CommandDto dto : commandDto) {
             commands.add(saveForReplay(dto));
         }
@@ -276,7 +275,7 @@ implements PublishedCommandRepository<PublishedCommandForJdo> {
 
     @Programmatic
     @Override
-    public PublishedCommandForJdo saveForReplay(final CommandDto dto) {
+    public PublishedCommand saveForReplay(final CommandDto dto) {
 
         if(dto.getMember().getInteractionType() == InteractionType.ACTION_INVOCATION) {
             final MapDto userData = dto.getUserData();
@@ -287,9 +286,9 @@ implements PublishedCommandRepository<PublishedCommandForJdo> {
             }
         }
 
-        final PublishedCommandForJdo publishedCommand = new PublishedCommandForJdo();
+        final PublishedCommand publishedCommand = newPublishedCommand();
 
-        publishedCommand.setInteractionIdStr(dto.getInteractionId());
+        publishedCommand.setInteractionId(UUID.fromString(dto.getInteractionId()));
         publishedCommand.setTimestamp(JavaSqlXMLGregorianCalendarMarshalling.toTimestamp(dto.getTimestamp()));
         publishedCommand.setUsername(dto.getUser());
 
@@ -305,14 +304,16 @@ implements PublishedCommandRepository<PublishedCommandForJdo> {
         return publishedCommand;
     }
 
+    protected abstract PublishedCommand newPublishedCommand();
+
     @Override
-    public void persist(final PublishedCommandForJdo publishedCommand) {
+    public void persist(final PublishedCommand publishedCommand) {
         repositoryService().persist(publishedCommand);
     }
 
     @Override
     public void truncateLog() {
-        repositoryService().removeAll(PublishedCommandForJdo.class);
+        repositoryService().removeAll(PublishedCommand.class);
     }
 
     private RepositoryService repositoryService() {
diff --git a/extensions/core/command-log/jdo/src/main/java/META-INF/persistence.xml b/extensions/core/command-log/jdo/src/main/java/META-INF/persistence.xml
index 7719606..9a6b5df 100644
--- a/extensions/core/command-log/jdo/src/main/java/META-INF/persistence.xml
+++ b/extensions/core/command-log/jdo/src/main/java/META-INF/persistence.xml
@@ -14,6 +14,6 @@
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
 
     <persistence-unit name="org-apache-isis-extensions-commandlog">
-        <class>org.apache.isis.extensions.commandlog.jdo.entities.CommandModel</class>
+        <class>org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdo</class>
     </persistence-unit>
 </persistence>
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/CommandSubscriberForJdo.java b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/CommandSubscriberForJdo.java
index f3ab1d2..13a9e24 100644
--- a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/CommandSubscriberForJdo.java
+++ b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/CommandSubscriberForJdo.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
 import org.apache.isis.applib.util.JaxbUtil;
 import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdo;
-import org.apache.isis.extensions.commandlog.jdo.entities.CommandJdoRepository;
+import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdoRepository;
 
 import lombok.RequiredArgsConstructor;
 import lombok.val;
@@ -46,7 +46,7 @@ import lombok.extern.log4j.Log4j2;
 @RequiredArgsConstructor
 public class CommandSubscriberForJdo implements CommandSubscriber {
 
-    @Inject final CommandJdoRepository commandJdoRepository;
+    @Inject final PublishedCommandForJdoRepository commandJdoRepository;
 
     @Override
     public void onCompleted(Command command) {
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/IsisModuleExtCommandLogJdo.java b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/IsisModuleExtCommandLogJdo.java
index 9b2911e..2a06374 100644
--- a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/IsisModuleExtCommandLogJdo.java
+++ b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/IsisModuleExtCommandLogJdo.java
@@ -23,7 +23,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
 import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdo;
-import org.apache.isis.extensions.commandlog.jdo.entities.CommandJdoRepository;
+import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdoRepository;
 import org.apache.isis.extensions.commandlog.jdo.ui.CommandServiceMenu;
 import org.apache.isis.extensions.commandlog.applib.IsisModuleExtCommandLogApplib;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
@@ -35,7 +35,7 @@ import org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAb
 @Configuration
 @Import({
         // @DomainService's
-        CommandJdoRepository.class
+        PublishedCommandForJdoRepository.class
         , CommandServiceMenu.class
 
         // @Service's
@@ -61,7 +61,7 @@ implements IsisModuleExtCommandLogApplib {
         return new TeardownFixtureJdoAbstract() {
             @Override
             protected void execute(final ExecutionContext executionContext) {
-                deleteFrom(CommandModel.class);
+                deleteFrom(PublishedCommandForJdo.class);
             }
         };
     }
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/entities/PublishedCommandForJdoRepository.java b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/entities/PublishedCommandForJdoRepository.java
new file mode 100644
index 0000000..e049961
--- /dev/null
+++ b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/entities/PublishedCommandForJdoRepository.java
@@ -0,0 +1,55 @@
+/*
+ *  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.extensions.commandlog.jdo.entities;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommandRepositoryAbstract;
+import org.apache.isis.persistence.jdo.applib.services.JdoSupportService;
+
+import lombok.RequiredArgsConstructor;
+
+/**
+ * Provides supporting functionality for querying and persisting
+ * {@link PublishedCommandForJdo command} entities.
+ */
+@Service
+@Named("isis.ext.commandLog.PublishedCommandRepository")
+@javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
+@Qualifier("Jdo")
+public class PublishedCommandForJdoRepository
+extends PublishedCommandRepositoryAbstract<PublishedCommandForJdo> {
+
+    @Inject JdoSupportService jdoSupport;
+
+    public PublishedCommandForJdoRepository() {
+        super(PublishedCommandForJdo.class);
+    }
+
+
+    @Override protected PublishedCommand newPublishedCommand() {
+        return new PublishedCommandForJdo();
+    }
+}
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/HasInteractionId_command.java b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/HasInteractionId_command.java
index feb4fcc..da0213f 100644
--- a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/HasInteractionId_command.java
+++ b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/HasInteractionId_command.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.mixins.system.HasInteractionId;
 import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.extensions.commandlog.jdo.IsisModuleExtCommandLogJdo;
 import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdo;
-import org.apache.isis.extensions.commandlog.jdo.entities.CommandJdoRepository;
+import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdoRepository;
 
 import lombok.RequiredArgsConstructor;
 
@@ -75,5 +75,5 @@ public class HasInteractionId_command {
                 .orElse(null);
     }
 
-    @Inject CommandJdoRepository commandServiceRepository;
+    @Inject PublishedCommandForJdoRepository commandServiceRepository;
 }
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/HasUsername_recentCommandsByUser.java b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/HasUsername_recentCommandsByUser.java
index cb59296..2de12bf 100644
--- a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/HasUsername_recentCommandsByUser.java
+++ b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/HasUsername_recentCommandsByUser.java
@@ -28,7 +28,7 @@ import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.mixins.security.HasUsername;
 import org.apache.isis.extensions.commandlog.jdo.IsisModuleExtCommandLogJdo;
 import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdo;
-import org.apache.isis.extensions.commandlog.jdo.entities.CommandJdoRepository;
+import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdoRepository;
 
 
 /**
@@ -61,5 +61,5 @@ public class HasUsername_recentCommandsByUser {
         return hasUsername.getUsername() == null;
     }
 
-    @Inject CommandJdoRepository commandServiceRepository;
+    @Inject PublishedCommandForJdoRepository commandServiceRepository;
 }
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/Object_recentCommands.java b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/Object_recentCommands.java
index 85a4401..16ad916 100644
--- a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/Object_recentCommands.java
+++ b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/Object_recentCommands.java
@@ -34,7 +34,7 @@ import org.apache.isis.applib.mixins.system.HasInteractionId;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.extensions.commandlog.jdo.IsisModuleExtCommandLogJdo;
 import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdo;
-import org.apache.isis.extensions.commandlog.jdo.entities.CommandJdoRepository;
+import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdoRepository;
 
 import lombok.RequiredArgsConstructor;
 
@@ -79,7 +79,7 @@ public class Object_recentCommands {
         return (domainObject instanceof HasInteractionId);
     }
 
-    @Inject CommandJdoRepository commandServiceRepository;
+    @Inject PublishedCommandForJdoRepository commandServiceRepository;
     @Inject BookmarkService bookmarkService;
 
 }
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/T_recent.java b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/T_recent.java
index 7b90bf7..128e914 100644
--- a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/T_recent.java
+++ b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/mixins/T_recent.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
 import org.apache.isis.extensions.commandlog.jdo.IsisModuleExtCommandLogJdo;
 import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdo;
-import org.apache.isis.extensions.commandlog.jdo.entities.CommandJdoRepository;
+import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdoRepository;
 
 @Collection(
     domainEvent = T_recent.CollectionDomainEvent.class
@@ -61,7 +61,7 @@ public abstract class T_recent<T> {
         .orElse(Collections.emptyList());
     }
 
-    @Inject CommandJdoRepository commandJdoRepository;
+    @Inject PublishedCommandForJdoRepository commandJdoRepository;
     @Inject BookmarkService bookmarkService;
     @Inject QueryResultsCache queryResultsCache;
 
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/ui/CommandServiceMenu.java b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/ui/CommandServiceMenu.java
index 2c3d511..e50a186 100644
--- a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/ui/CommandServiceMenu.java
+++ b/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/ui/CommandServiceMenu.java
@@ -44,7 +44,7 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.clock.ClockService;
 import org.apache.isis.extensions.commandlog.jdo.IsisModuleExtCommandLogJdo;
 import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdo;
-import org.apache.isis.extensions.commandlog.jdo.entities.CommandJdoRepository;
+import org.apache.isis.extensions.commandlog.jdo.entities.PublishedCommandForJdoRepository;
 
 import lombok.RequiredArgsConstructor;
 
@@ -75,7 +75,7 @@ public class CommandServiceMenu {
             extends IsisModuleExtCommandLogJdo.ActionDomainEvent<CommandServiceMenu> {
     }
 
-    final CommandJdoRepository commandServiceRepository;
+    final PublishedCommandForJdoRepository commandServiceRepository;
     final ClockService clockService;
 
     public static class ActiveCommandsDomainEvent extends ActionDomainEvent { }
diff --git a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalService.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalService.java
index 1c129f9..73bb01e 100644
--- a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalService.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalService.java
@@ -28,6 +28,7 @@ import javax.inject.Named;
 import org.apache.isis.applib.annotation.*;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.exceptions.RecoverableException;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommandRepository;
 import org.apache.isis.extensions.commandreplay.primary.IsisModuleExtCommandReplayPrimary;
 
@@ -69,7 +70,7 @@ public class CommandRetrievalService {
      * @throws NotFoundException - if the command with specified transaction cannot be found.
      */
     @Action(domainEvent = FindCommandsOnPrimaryFromDomainEvent.class, semantics = SemanticsOf.SAFE)
-    public List<? extends CommandModel> findCommandsOnPrimaryFrom(
+    public List<PublishedCommand> findCommandsOnPrimaryFrom(
             @Nullable
             @ParameterLayout(named="Interaction Id")
             final UUID interactionId,
@@ -77,7 +78,7 @@ public class CommandRetrievalService {
             @ParameterLayout(named="Batch size")
             final Integer batchSize)
             throws NotFoundException {
-        final List<? extends CommandModel> commands = publishedCommandRepository.findSince(interactionId, batchSize);
+        final List<PublishedCommand> commands = publishedCommandRepository.findSince(interactionId, batchSize);
         if(commands == null) {
             throw new NotFoundException(interactionId);
         }
@@ -88,6 +89,6 @@ public class CommandRetrievalService {
     }
 
     @Inject
-    PublishedCommandRepository<? extends CommandModel> publishedCommandRepository;
+    PublishedCommandRepository publishedCommandRepository;
 }
 
diff --git a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/spiimpl/CaptureResultOfCommand.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/spiimpl/CaptureResultOfCommand.java
index fd53083..66e9b49 100644
--- a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/spiimpl/CaptureResultOfCommand.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/spiimpl/CaptureResultOfCommand.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.applib.services.commanddto.conmap.UserDataKeys;
 import org.apache.isis.applib.services.commanddto.processor.spi.CommandDtoProcessorService;
 import org.apache.isis.applib.util.schema.CommandDtoUtils;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 
 import lombok.val;
@@ -50,16 +51,16 @@ public class CaptureResultOfCommand implements CommandDtoProcessorService {
     @Override
     public CommandDto process(final Object domainObject, CommandDto commandDto) {
 
-        if (!(domainObject instanceof CommandModel)) {
+        if (!(domainObject instanceof PublishedCommand)) {
             return commandDto;
         }
 
-        val commandModel = (CommandModel) domainObject;
+        val publishedCommand = (PublishedCommand) domainObject;
         if(commandDto == null) {
-            commandDto = commandModel.getCommandDto();
+            commandDto = publishedCommand.getCommandDto();
         }
 
-        final Bookmark result = commandModel.getResult();
+        final Bookmark result = publishedCommand.getResult();
         CommandDtoUtils.setUserData(commandDto, UserDataKeys.RESULT, result);
 
         // knowing whether there was an exception is on the primary is
@@ -67,11 +68,11 @@ public class CaptureResultOfCommand implements CommandDtoProcessorService {
         // secondary if an exception occurs there also
         CommandDtoUtils.setUserData(commandDto,
                 UserDataKeys.EXCEPTION,
-                commandModel.getException());
+                publishedCommand.getException());
 
         val timings = CommandDtoUtils.timingsFor(commandDto);
-        timings.setStartedAt(JavaSqlXMLGregorianCalendarMarshalling.toXMLGregorianCalendar(commandModel.getStartedAt()));
-        timings.setCompletedAt(JavaSqlXMLGregorianCalendarMarshalling.toXMLGregorianCalendar(commandModel.getCompletedAt()));
+        timings.setStartedAt(JavaSqlXMLGregorianCalendarMarshalling.toXMLGregorianCalendar(publishedCommand.getStartedAt()));
+        timings.setCompletedAt(JavaSqlXMLGregorianCalendarMarshalling.toXMLGregorianCalendar(publishedCommand.getCompletedAt()));
 
         return commandDto;
     }
diff --git a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java
index 6508a86..13c911f 100644
--- a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java
@@ -40,6 +40,7 @@ import org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceFo
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.value.Clob;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommandRepository;
 import org.apache.isis.extensions.commandreplay.primary.IsisModuleExtCommandReplayPrimary;
 import org.apache.isis.extensions.commandreplay.primary.restapi.CommandRetrievalService;
@@ -68,7 +69,7 @@ public class CommandReplayOnPrimaryService {
 
     public static final String LOGICAL_TYPE_NAME = IsisModuleExtCommandReplayPrimary.NAMESPACE + ".CommandReplayOnPrimaryService";
 
-    @Inject final PublishedCommandRepository<? extends CommandModel> publishedCommandRepository;
+    @Inject final PublishedCommandRepository publishedCommandRepository;
     @Inject final JaxbService jaxbService;
     @Inject final MessageService messageService;
     @Inject final ContentMappingServiceForCommandsDto contentMappingServiceForCommandsDto;
@@ -101,7 +102,7 @@ public class CommandReplayOnPrimaryService {
          * @param batchSize - the maximum number of commands to return.  If not specified, all found will be returned.
          * @throws NotFoundException - if the command with specified transaction cannot be found.
          */
-        @MemberSupport public List<? extends CommandModel> act(
+        @MemberSupport public List<PublishedCommand> act(
                 @Nullable
                 @ParameterLayout(named="Interaction Id")
                 final UUID interactionId,
@@ -140,7 +141,7 @@ public class CommandReplayOnPrimaryService {
                 @Nullable
                 final Integer batchSize,
                 final String filenamePrefix) {
-            final List<? extends CommandModel> commands = publishedCommandRepository.findSince(interactionId, batchSize);
+            final List<PublishedCommand> commands = publishedCommandRepository.findSince(interactionId, batchSize);
             if(commands == null) {
                 messageService.informUser("No commands found");
             }
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.java
index 4d6a0fe..72e7d2a 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.extensions.commandreplay.secondary.analyser;
 
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
+
 /**
  * @since 2.0 {@index}
  */
@@ -25,9 +27,9 @@ public interface CommandReplayAnalyser {
 
     /**
      *
-     * @param commandJdo
+     * @param publishedCommand
      * @return - if not <code>null</code>, indicates the reason that there was an issue replaying the command.
      */
-    String analyzeReplay(final CommandModel commandJdo);
+    String analyzeReplay(final PublishedCommand publishedCommand);
 
 }
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.java
index e0c6ed3..ac3e09a 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.java
@@ -30,6 +30,7 @@ import org.apache.isis.applib.services.commanddto.conmap.UserDataKeys;
 import org.apache.isis.applib.util.schema.CommandDtoUtils;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.config.IsisConfiguration;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.schema.common.v2.InteractionType;
 
 import lombok.RequiredArgsConstructor;
@@ -53,12 +54,12 @@ public class CommandReplayAnalyserException implements CommandReplayAnalyser {
     }
 
     @Override
-    public String analyzeReplay(final CommandModel commandModel) {
+    public String analyzeReplay(final PublishedCommand publishedCommand) {
         if(!enabled) {
             return null;
         }
 
-        val dto = commandModel.getCommandDto();
+        val dto = publishedCommand.getCommandDto();
         if(dto.getMember().getInteractionType() == InteractionType.PROPERTY_EDIT) {
             return null;
         }
@@ -68,7 +69,7 @@ public class CommandReplayAnalyserException implements CommandReplayAnalyser {
             return null;
         }
 
-        val replayedException = commandModel.getException();
+        val replayedException = publishedCommand.getException();
 
         val primaryExceptionTrimmed = trimmed(primaryException);
         val replayedExceptionTrimmed = trimmed(replayedException);
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.java
index ad94192..7dd2516 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.java
@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.apache.isis.applib.services.commanddto.conmap.UserDataKeys;
 import org.apache.isis.applib.util.schema.CommandDtoUtils;
 import org.apache.isis.core.config.IsisConfiguration;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.schema.common.v2.InteractionType;
 
 import lombok.RequiredArgsConstructor;
@@ -52,12 +53,12 @@ public class CommandReplayAnalyserResult implements CommandReplayAnalyser {
     }
 
     @Override
-    public String analyzeReplay(final CommandModel commandModel) {
+    public String analyzeReplay(final PublishedCommand publishedCommand) {
         if(!enabled) {
             return null;
         }
 
-        val dto = commandModel.getCommandDto();
+        val dto = publishedCommand.getCommandDto();
         if(dto.getMember().getInteractionType() == InteractionType.PROPERTY_EDIT) {
             return null;
         }
@@ -66,7 +67,7 @@ public class CommandReplayAnalyserResult implements CommandReplayAnalyser {
         // ... either the same result when replayed
         val primaryResultStr = CommandDtoUtils.getUserData(dto, UserDataKeys.RESULT);
 
-        val secondaryResult = commandModel.getResult();
+        val secondaryResult = publishedCommand.getResult();
         val secondaryResultStr =
                 secondaryResult != null ? secondaryResult.toString() : null;
         return Objects.equals(primaryResultStr, secondaryResultStr)
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.java
index 6679cd0..ea2e678 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.java
@@ -26,6 +26,7 @@ import javax.inject.Named;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.springframework.stereotype.Service;
 
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.extensions.commandreplay.secondary.analyser.CommandReplayAnalyser;
 
 import lombok.extern.log4j.Log4j2;
@@ -44,17 +45,17 @@ public class CommandReplayAnalysisService {
      * as in error.
      * This will effectively block the running of any further commands until the administrator fixes the issue.
      */
-    public void analyse(final CommandModel commandModel) {
-        final String analysis = analyseReplay(commandModel);
+    public void analyse(final PublishedCommand publishedCommand) {
+        final String analysis = analyseReplay(publishedCommand);
 
-        commandModel.saveAnalysis(analysis);
+        publishedCommand.saveAnalysis(analysis);
     }
 
-    private String analyseReplay(final CommandModel commandJdo) {
+    private String analyseReplay(final PublishedCommand publishedCommand) {
 
         for (final CommandReplayAnalyser analyser : analysers) {
             try {
-                String reason = analyser.analyzeReplay(commandJdo);
+                String reason = analyser.analyzeReplay(publishedCommand);
                 if (reason != null) {
                     return reason;
                 }
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/fetch/CommandFetcher.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/fetch/CommandFetcher.java
index 316892a..2a1c0a8 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/fetch/CommandFetcher.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/fetch/CommandFetcher.java
@@ -34,6 +34,7 @@ import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.jaxb.JaxbService.Simple;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.extensions.commandreplay.secondary.SecondaryStatus;
 import org.apache.isis.extensions.commandreplay.secondary.StatusException;
 import org.apache.isis.extensions.commandreplay.secondary.config.SecondaryConfig;
@@ -66,7 +67,7 @@ public class CommandFetcher {
      * @throws StatusException
      */
     public List<CommandDto> fetchCommand(
-            final @Nullable CommandModel previousHwmIfAny)
+            final @Nullable PublishedCommand previousHwmIfAny)
             throws StatusException {
 
         log.debug("finding command on primary ...");
@@ -82,7 +83,7 @@ public class CommandFetcher {
      * @param previousHwmIfAny
      * @throws StatusException
      */
-    private CommandsDto fetchCommands(final CommandModel previousHwmIfAny)
+    private CommandsDto fetchCommands(final PublishedCommand previousHwmIfAny)
             throws StatusException {
 
         final UUID transactionId = previousHwmIfAny != null ? previousHwmIfAny.getInteractionId() : null;
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.java
index 27d0332..1ae6ecf 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.java
@@ -28,6 +28,7 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.services.command.CommandExecutorService;
 import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommandRepository;
 import org.apache.isis.extensions.commandlog.applib.dom.ReplayState;
 import org.apache.isis.extensions.commandreplay.secondary.SecondaryStatus;
@@ -57,8 +58,7 @@ public class ReplicateAndRunCommands implements Callable<SecondaryStatus> {
     @Inject CommandExecutorService commandExecutorService;
     @Inject TransactionService transactionService;
     @Inject CommandFetcher commandFetcher;
-    @Inject
-    PublishedCommandRepository<? extends CommandModel> publishedCommandRepository;
+    @Inject PublishedCommandRepository publishedCommandRepository;
     @Inject CommandReplayAnalysisService analysisService;
     @Inject Optional<ReplayCommandExecutionController> controller;
 
@@ -79,7 +79,7 @@ public class ReplicateAndRunCommands implements Callable<SecondaryStatus> {
             return;
         }
 
-        List<? extends CommandModel> commandsToReplay;
+        List<PublishedCommand> commandsToReplay;
 
         while(isRunning()) {
 
@@ -90,7 +90,7 @@ public class ReplicateAndRunCommands implements Callable<SecondaryStatus> {
             if(commandsToReplay.isEmpty()) {
 
                 // look for previously replayed on secondary
-                CommandModel hwm = publishedCommandRepository.findMostRecentReplayed().orElse(null);
+                PublishedCommand hwm = publishedCommandRepository.findMostRecentReplayed().orElse(null);
 
                 if (hwm != null) {
                     // give up if there was a failure; admin will need to fix issue and retry
@@ -131,16 +131,16 @@ public class ReplicateAndRunCommands implements Callable<SecondaryStatus> {
      * @param commandsToReplay
      * @apiNote could return, whether there was a command to process (and so continue)
      */
-    private void replay(List<? extends CommandModel> commandsToReplay) {
+    private void replay(List<PublishedCommand> commandsToReplay) {
 
-        commandsToReplay.forEach(commandModel -> {
+        commandsToReplay.forEach(publishedCommand -> {
 
-            log.info("replaying {}", commandModel.getInteractionId());
+            log.info("replaying {}", publishedCommand.getInteractionId());
 
             //
             // run command
             //
-            val replayState = executeCommandInTranAndAnalyse(commandModel);
+            val replayState = executeCommandInTranAndAnalyse(publishedCommand);
             if(replayState.isFailed()) {
                 // will effectively block the running of any further commands
                 // until the issue is fixed.
@@ -150,7 +150,7 @@ public class ReplicateAndRunCommands implements Callable<SecondaryStatus> {
             //
             // find child commands, and run them
             //
-            val parent = commandModel;
+            val parent = publishedCommand;
 
             val childCommands =
                     transactionService.callWithinCurrentTransactionElseCreateNew(
@@ -170,18 +170,18 @@ public class ReplicateAndRunCommands implements Callable<SecondaryStatus> {
 
     }
 
-    private ReplayState executeCommandInTranAndAnalyse(final CommandModel commandJdo) {
+    private ReplayState executeCommandInTranAndAnalyse(final PublishedCommand publishedCommand) {
         transactionService.runWithinCurrentTransactionElseCreateNew(
                 () -> {
                     commandExecutorService.executeCommand(
-                        CommandExecutorService.InteractionContextPolicy.SWITCH_USER_AND_TIME, commandJdo.getCommandDto(), commandJdo.outcomeHandler());
+                        CommandExecutorService.InteractionContextPolicy.SWITCH_USER_AND_TIME, publishedCommand.getCommandDto(), publishedCommand.outcomeHandler());
                 });
 
         transactionService.runWithinCurrentTransactionElseCreateNew(() -> {
-            analysisService.analyse(commandJdo);
+            analysisService.analyse(publishedCommand);
         });
 
-        return commandJdo.getReplayState();
+        return publishedCommand.getReplayState();
 
     }
 
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandModel_exclude.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/PublishedCommand_exclude.java
similarity index 80%
rename from extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandModel_exclude.java
rename to extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/PublishedCommand_exclude.java
index 9cfcbc6..b8430aa 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandModel_exclude.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/PublishedCommand_exclude.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.extensions.commandlog.applib.IsisModuleExtCommandLogApplib;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.extensions.commandlog.applib.dom.ReplayState;
 import org.apache.isis.extensions.commandreplay.secondary.config.SecondaryConfig;
 
@@ -37,21 +38,20 @@ import lombok.RequiredArgsConstructor;
  */
 @Action(
     semantics = SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE,
-    domainEvent = CommandModel_exclude.ActionDomainEvent.class
+    domainEvent = PublishedCommand_exclude.ActionDomainEvent.class
 )
 @ActionLayout(associateWith = "executeIn", sequence = "2")
 @RequiredArgsConstructor
-//@Log4j2
-public class CommandModel_exclude {
+public class PublishedCommand_exclude {
 
     public static class ActionDomainEvent
-            extends IsisModuleExtCommandLogApplib.ActionDomainEvent<CommandModel_exclude> { }
+            extends IsisModuleExtCommandLogApplib.ActionDomainEvent<PublishedCommand_exclude> { }
 
-    final CommandModel commandModel;
+    final PublishedCommand publishedCommand;
 
-    public CommandModel act() {
-        commandModel.setReplayState(ReplayState.EXCLUDED);
-        return commandModel;
+    public PublishedCommand act() {
+        publishedCommand.setReplayState(ReplayState.EXCLUDED);
+        return publishedCommand;
     }
 
     public boolean hideAct() {
@@ -59,7 +59,7 @@ public class CommandModel_exclude {
     }
     public String disableAct() {
         final boolean notInError =
-                commandModel.getReplayState() == null || !commandModel.getReplayState().isFailed();
+                publishedCommand.getReplayState() == null || !publishedCommand.getReplayState().isFailed();
         return notInError
                 ? "This command is not in error, so cannot be excluded."
                 : null;
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_replayQueue.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/PublishedCommand_replayQueue.java
similarity index 81%
rename from extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_replayQueue.java
rename to extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/PublishedCommand_replayQueue.java
index 8b119d1..43ac934 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_replayQueue.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/PublishedCommand_replayQueue.java
@@ -24,6 +24,7 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.CollectionLayout;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommandRepository;
 import org.apache.isis.extensions.commandreplay.secondary.IsisModuleExtCommandReplaySecondary;
 import org.apache.isis.extensions.commandreplay.secondary.config.SecondaryConfig;
@@ -34,21 +35,21 @@ import lombok.RequiredArgsConstructor;
  * @since 2.0 {@index}
  */
 @Collection(
-    domainEvent = CommandJdo_replayQueue.CollectionDomainEvent.class
+    domainEvent = PublishedCommand_replayQueue.CollectionDomainEvent.class
 )
 @CollectionLayout(
     defaultView = "table",
     sequence = "100.100"
 )
 @RequiredArgsConstructor
-public class CommandJdo_replayQueue {
+public class PublishedCommand_replayQueue {
 
     public static class CollectionDomainEvent
-            extends IsisModuleExtCommandReplaySecondary.CollectionDomainEvent<CommandJdo_replayQueue, CommandModel> { }
+            extends IsisModuleExtCommandReplaySecondary.CollectionDomainEvent<PublishedCommand_replayQueue, PublishedCommand> { }
 
-    final CommandModel commandModel;
+    final PublishedCommand publishedCommand;
 
-    public List<? extends CommandModel> coll() {
+    public List<PublishedCommand> coll() {
         return publishedCommandRepository.findReplayedOnSecondary();
     }
     public boolean hideColl() {
@@ -56,7 +57,6 @@ public class CommandJdo_replayQueue {
     }
 
     @Inject SecondaryConfig secondaryConfig;
-    @Inject
-    PublishedCommandRepository<? extends CommandModel> publishedCommandRepository;
+    @Inject PublishedCommandRepository publishedCommandRepository;
 
 }
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.java
index c096938..91c8dd8 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.annotation.*;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.value.Clob;
+import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommand;
 import org.apache.isis.extensions.commandlog.applib.dom.PublishedCommandRepository;
 import org.apache.isis.extensions.commandreplay.secondary.IsisModuleExtCommandReplaySecondary;
 import org.apache.isis.schema.cmd.v2.CommandDto;
@@ -56,7 +57,7 @@ public class CommandReplayOnSecondaryService {
     public static final String LOGICAL_TYPE_NAME = IsisModuleExtCommandReplaySecondary.NAMESPACE + ".CommandReplayOnSecondaryService";
 
     @Inject
-    PublishedCommandRepository<? extends CommandModel> publishedCommandRepository;
+    PublishedCommandRepository publishedCommandRepository;
     @Inject final JaxbService jaxbService;
 
     public static abstract class ActionDomainEvent<T> extends IsisModuleExtCommandReplaySecondary.ActionDomainEvent<T> { }
@@ -67,7 +68,7 @@ public class CommandReplayOnSecondaryService {
 
         public class ActionEvent extends ActionDomainEvent<findMostRecentReplayed> { }
 
-        @MemberSupport public CommandModel act() {
+        @MemberSupport public PublishedCommand act() {
             return publishedCommandRepository.findMostRecentReplayed().orElse(null);
         }
     }

[isis] 01/02: ISIS-2735: fixes compile issue

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f2434ddda8b8c035f05df64f67a60bf328f30c31
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Sep 21 06:56:18 2021 +0100

    ISIS-2735: fixes compile issue
---
 .../src/main/java/org/apache/isis/applib/util/ObjectContracts.java      | 2 +-
 .../apache/isis/extensions/commandlog/applib/dom/PublishedCommand.java  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java b/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
index e579372..9b3f7f6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
@@ -32,7 +32,7 @@ import lombok.extern.log4j.Log4j2;
  * @deprecated heavily relies on reflection, there are probably better alternatives, eg. lombok
  * @since 1.x revised for 2.0 {@index}
  */
-@Deprecated(forRemoval = true, since = "2.0.0-M7")
+//@Deprecated(forRemoval = true, since = "2.0.0-M7")
 @Log4j2
 public final class ObjectContracts {
 
diff --git a/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/PublishedCommand.java b/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/PublishedCommand.java
index de8be99..486ab79 100644
--- a/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/PublishedCommand.java
+++ b/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/PublishedCommand.java
@@ -826,7 +826,7 @@ public abstract class PublishedCommand implements DomainChangeRecord {
             }
 
             @Override
-            public void setResult(final org.apache.isis.commons.functional.Result resultBookmark) {
+            public void setResult(final org.apache.isis.commons.functional.Result<Bookmark> resultBookmark) {
                 PublishedCommand.this.setResult(resultBookmark.getValue().orElse(null));
                 PublishedCommand.this.setException(resultBookmark.getFailure().orElse(null));
             }