You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/04/14 04:20:21 UTC

[isis] branch master updated: ISIS-3003: decouples primary replay rest and ui domain objects from each other

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 b13615b750 ISIS-3003: decouples primary replay rest and ui domain objects from each other
b13615b750 is described below

commit b13615b750b952193398c2bca6408b0f512c23b2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 14 06:20:16 2022 +0200

    ISIS-3003: decouples primary replay rest and ui domain objects from each
    other
    
    - also moving them back into the primary replay module
---
 .../model/command/CommandModelRepository.java      | 30 ++++++++++++++--
 .../commandlog/jdo/IsisModuleExtCommandLogJdo.java |  4 ---
 .../primary/IsisModuleExtCommandReplayPrimary.java |  4 +++
 .../restapi}/CommandRetrievalOnPrimaryService.java | 40 ++++++----------------
 .../primary}/ui/CommandReplayOnPrimaryService.java | 25 ++++----------
 5 files changed, 48 insertions(+), 55 deletions(-)

diff --git a/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/model/command/CommandModelRepository.java b/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/model/command/CommandModelRepository.java
index 668e8a2b8b..0a0767ef4e 100644
--- a/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/model/command/CommandModelRepository.java
+++ b/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/model/command/CommandModelRepository.java
@@ -23,10 +23,15 @@ import java.util.List;
 import java.util.Optional;
 import java.util.UUID;
 
+import org.springframework.lang.Nullable;
+
+import org.apache.isis.applib.exceptions.RecoverableException;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 import org.apache.isis.schema.cmd.v2.CommandsDto;
 
+import lombok.Getter;
+
 public interface CommandModelRepository<C extends CommandModel> {
 
     Optional<C> findByInteractionId(UUID interactionId);
@@ -70,7 +75,7 @@ public interface CommandModelRepository<C extends CommandModel> {
      * the primary.
      *
      * @param interactionId - the identifier of the {@link CommandModel command} being
-     *                   the replay hwm (using {@link #findMostRecentReplayed()} on the
+     *                   the replay HWM (using {@link #findMostRecentReplayed()} on the
      *                   secondary), or null if no HWM was found there.
      * @param batchSize - to restrict the number returned (so that replay
      *                   commands can be batched).
@@ -113,6 +118,27 @@ public interface CommandModelRepository<C extends CommandModel> {
 
     void truncateLog();
 
-
+    // --
+
+    public static class NotFoundException extends RecoverableException {
+        private static final long serialVersionUID = 1L;
+        @Getter
+        private final UUID interactionId;
+        public NotFoundException(final UUID interactionId) {
+            super("Command not found");
+            this.interactionId = interactionId;
+        }
+    }
+
+    default List<C> findCommandsOnPrimaryElseFail(
+            final @Nullable UUID interactionId,
+            final @Nullable Integer batchSize) throws NotFoundException {
+
+        final List<C> commands = findSince(interactionId, batchSize);
+        if(commands == null) {
+            throw new NotFoundException(interactionId);
+        }
+        return commands;
+    }
 
 }
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 fd58a50e86..c83447f223 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
@@ -24,9 +24,7 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.isis.extensions.commandlog.jdo.entities.CommandJdo;
 import org.apache.isis.extensions.commandlog.jdo.entities.CommandJdoRepository;
-import org.apache.isis.extensions.commandlog.jdo.ui.CommandReplayOnPrimaryService;
 import org.apache.isis.extensions.commandlog.jdo.ui.CommandServiceMenu;
-import org.apache.isis.extensions.commandlog.jdo.ui.rest.CommandRetrievalOnPrimaryService;
 import org.apache.isis.extensions.commandlog.model.command.CommandModel;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAbstract;
@@ -41,8 +39,6 @@ import org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAb
         , CommandServiceMenu.class
 
         // @Service's
-        , CommandReplayOnPrimaryService.class
-        , CommandRetrievalOnPrimaryService.class
         , CommandJdo.TableColumnOrderDefault.class
 
         // entities
diff --git a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.java
index 0bb7ff920b..264d059030 100644
--- a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.java
@@ -25,7 +25,9 @@ import org.springframework.context.annotation.Profile;
 import org.apache.isis.extensions.commandlog.model.IsisModuleExtCommandLogApplib;
 import org.apache.isis.extensions.commandreplay.primary.config.PrimaryConfig;
 import org.apache.isis.extensions.commandreplay.primary.mixins.Object_openOnSecondary;
+import org.apache.isis.extensions.commandreplay.primary.restapi.CommandRetrievalOnPrimaryService;
 import org.apache.isis.extensions.commandreplay.primary.spiimpl.CaptureResultOfCommand;
+import org.apache.isis.extensions.commandreplay.primary.ui.CommandReplayOnPrimaryService;
 
 /**
  * @since 2.0 {@index}
@@ -36,6 +38,8 @@ import org.apache.isis.extensions.commandreplay.primary.spiimpl.CaptureResultOfC
 
         // @Service's
         CaptureResultOfCommand.class,
+        CommandRetrievalOnPrimaryService.class,
+        CommandReplayOnPrimaryService.class,
         PrimaryConfig.class,
 
         // mixins
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/ui/rest/CommandRetrievalOnPrimaryService.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalOnPrimaryService.java
similarity index 72%
rename from extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/ui/rest/CommandRetrievalOnPrimaryService.java
rename to extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalOnPrimaryService.java
index 54c8bb1092..27628dae62 100644
--- a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/ui/rest/CommandRetrievalOnPrimaryService.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalOnPrimaryService.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.commandlog.jdo.ui.rest;
+package org.apache.isis.extensions.commandreplay.primary.restapi;
 
 import java.util.List;
 import java.util.UUID;
@@ -26,7 +26,6 @@ import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.springframework.context.annotation.Profile;
-import org.springframework.lang.Nullable;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.DomainService;
@@ -37,21 +36,20 @@ import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.exceptions.RecoverableException;
-import org.apache.isis.extensions.commandlog.jdo.entities.CommandJdo;
 import org.apache.isis.extensions.commandlog.model.IsisModuleExtCommandLogApplib;
+import org.apache.isis.extensions.commandlog.model.command.CommandModel;
 import org.apache.isis.extensions.commandlog.model.command.CommandModelRepository;
+import org.apache.isis.extensions.commandlog.model.command.CommandModelRepository.NotFoundException;
+import org.apache.isis.extensions.commandreplay.primary.IsisModuleExtCommandReplayPrimary;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 
-import lombok.Getter;
-
 /**
  * @since 2.0 {@index}
  */
 @DomainService(
     nature = NatureOfService.REST
 )
-@Named(IsisModuleExtCommandLogApplib.NAMESPACE_REPLAY_PRIMARY + ".CommandRetrievalOnPrimaryService")
+@Named(IsisModuleExtCommandReplayPrimary.NAMESPACE + ".CommandRetrievalOnPrimaryService")
 @javax.annotation.Priority(PriorityPrecedence.EARLY)
 @Profile("command-replay-primary")
 public class CommandRetrievalOnPrimaryService {
@@ -60,15 +58,8 @@ public class CommandRetrievalOnPrimaryService {
             extends IsisModuleExtCommandLogApplib.ActionDomainEvent<CommandRetrievalOnPrimaryService> { }
 
     public static class FindCommandsOnPrimaryFromDomainEvent extends ActionDomainEvent { }
-    public static class NotFoundException extends RecoverableException {
-        private static final long serialVersionUID = 1L;
-        @Getter
-        private final UUID interactionId;
-        public NotFoundException(final UUID interactionId) {
-            super("Command not found");
-            this.interactionId = interactionId;
-        }
-    }
+
+    @Inject CommandModelRepository<? extends CommandModel> commandModelRepository;
 
     /**
      * TODO: outdated info ...
@@ -93,25 +84,14 @@ public class CommandRetrievalOnPrimaryService {
             @ParameterLayout(named="Batch size")
             final Integer batchSize) throws NotFoundException {
 
-        return findCommandsOnPrimary(interactionId, batchSize).stream()
-                .map(CommandJdo::getCommandDto)
+        return commandModelRepository.findCommandsOnPrimaryElseFail(interactionId, batchSize)
+                .stream()
+                .map(CommandModel::getCommandDto)
                 .collect(Collectors.toList());
     }
     @MemberSupport public Integer default1FindCommandsOnPrimaryAsDto() {
         return 25;
     }
 
-    public List<CommandJdo> findCommandsOnPrimary(
-            final @Nullable UUID interactionId,
-            final @Nullable Integer batchSize) throws NotFoundException {
-
-        final List<CommandJdo> commands = commandModelRepository.findSince(interactionId, batchSize);
-        if(commands == null) {
-            throw new NotFoundException(interactionId);
-        }
-        return commands;
-    }
-
-    @Inject CommandModelRepository<CommandJdo> commandModelRepository;
 }
 
diff --git a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/ui/CommandReplayOnPrimaryService.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java
similarity index 88%
rename from extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/ui/CommandReplayOnPrimaryService.java
rename to extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java
index 06c5d3e55c..bfdad16219 100644
--- a/extensions/core/command-log/jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/ui/CommandReplayOnPrimaryService.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.commandlog.jdo.ui;
+package org.apache.isis.extensions.commandreplay.primary.ui;
 
 import java.util.List;
 import java.util.UUID;
@@ -36,20 +36,18 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.exceptions.RecoverableException;
 import org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto;
 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.jdo.IsisModuleExtCommandLogJdo;
-import org.apache.isis.extensions.commandlog.jdo.ui.rest.CommandRetrievalOnPrimaryService;
 import org.apache.isis.extensions.commandlog.model.IsisModuleExtCommandLogApplib;
 import org.apache.isis.extensions.commandlog.model.command.CommandModel;
 import org.apache.isis.extensions.commandlog.model.command.CommandModelRepository;
+import org.apache.isis.extensions.commandlog.model.command.CommandModelRepository.NotFoundException;
+import org.apache.isis.extensions.commandreplay.primary.IsisModuleExtCommandReplayPrimary;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 import org.apache.isis.schema.cmd.v2.CommandsDto;
 
-import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
 /**
@@ -62,7 +60,7 @@ import lombok.RequiredArgsConstructor;
     named = "Activity",
     menuBar = DomainServiceLayout.MenuBar.SECONDARY
 )
-@Named(IsisModuleExtCommandLogJdo.NAMESPACE + ".CommandReplayOnPrimaryService")
+@Named(IsisModuleExtCommandReplayPrimary.NAMESPACE + ".CommandReplayOnPrimaryService")
 @javax.annotation.Priority(PriorityPrecedence.EARLY)
 @Profile("command-replay-primary")
 @RequiredArgsConstructor
@@ -73,22 +71,11 @@ public class CommandReplayOnPrimaryService {
     @Inject final JaxbService jaxbService;
     @Inject final MessageService messageService;
     @Inject final ContentMappingServiceForCommandsDto contentMappingServiceForCommandsDto;
-    @Inject final CommandRetrievalOnPrimaryService commandRetrievalOnPrimaryService;
 
     public static abstract class ActionDomainEvent<T>
     extends IsisModuleExtCommandLogApplib.ActionDomainEvent<T> { }
 
 
-    public static class NotFoundException extends RecoverableException {
-        private static final long serialVersionUID = 1L;
-        @Getter
-        private final UUID interactionId;
-        public NotFoundException(final UUID interactionId) {
-            super("Command not found");
-            this.interactionId = interactionId;
-        }
-    }
-
     @Action(domainEvent = findCommands.ActionEvent.class, semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa = "fa-search", sequence="40")
     public class findCommands{
@@ -111,10 +98,10 @@ public class CommandReplayOnPrimaryService {
                 @ParameterLayout(named="Batch size")
                 final Integer batchSize)
                 throws NotFoundException {
-            return commandRetrievalOnPrimaryService.findCommandsOnPrimary(interactionId, batchSize);
+            return commandModelRepository.findCommandsOnPrimaryElseFail(interactionId, batchSize);
         }
         @MemberSupport public Integer default1Act() {
-            return commandRetrievalOnPrimaryService.default1FindCommandsOnPrimaryAsDto();
+            return 25;
         }
 
     }