You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2026/06/19 06:47:31 UTC
(causeway) branch CAUSEWAY-4039 created (now 04c0f11686d)
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a change to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
at 04c0f11686d CAUSEWAY-4039: makes CommandManagerReplay also be a known participants tracker
This branch includes the following new commits:
new 8908b5a0fd2 CAUSEWAY-4024: updates the timestamp properly within the DTO
new 8c715d26ee2 CAUSEWAY-4039: renames CommandExport/ReplayManager, introduces stub abstract superclass
new f6828f1b9b8 CAUSEWAY-4039: moves injected services into ReplayContext
new dce5ee8c983 CAUSEWAY-4039: managers now inherit from abstract
new fcbdd513c9d CAUSEWAY-4039: baseline, limit and state moved to abstract
new 5bc20436423 CAUSEWAY-4039: more consolidation into superclass
new eb0d2fecead CAUSEWAY-4039: renames ReplayableCommand#isReplayable to isDoOp
new d78f7ff786f CAUSEWAY-4039: renames ReplayableCommand#isExportable to isKnownParticipants
new ed75b669bf9 CAUSEWAY-4039: reworks ReplayableCommand to use ReplayableCommandParticipantTracker
new a71c050e60c CAUSEWAY-4039: moves KnownParticipants validator to CommandManagerAbstract
new 04c0f11686d CAUSEWAY-4039: makes CommandManagerReplay also be a known participants tracker
The 11 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.
(causeway) 01/11: CAUSEWAY-4024: updates the timestamp properly within the DTO
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 8908b5a0fd21b41770d01004a451ffc7cee2969b
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jun 18 17:22:04 2026 +0100
CAUSEWAY-4024: updates the timestamp properly within the DTO
---
.../applib/util/schema/CommandDtoUtils.java | 29 +++++++++++
.../schema/CommandDtoUtils_copy_Approval_Test.java | 59 ++++++++++++++++++++++
...pproval_Test.marshals_command_copy.approved.txt | 14 +++++
..._Approval_Test.marshals_command_copy.input.yaml | 32 ++++++++++++
.../CommandExportManagerMovementSupport.java | 9 +++-
5 files changed, 141 insertions(+), 2 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/util/schema/CommandDtoUtils.java b/api/applib/src/main/java/org/apache/causeway/applib/util/schema/CommandDtoUtils.java
index 7a426769837..6ee9d70f70d 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/util/schema/CommandDtoUtils.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/util/schema/CommandDtoUtils.java
@@ -19,12 +19,18 @@
package org.apache.causeway.applib.util.schema;
import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
@@ -285,6 +291,29 @@ private JsonUtils.JacksonCustomizer yamlCommandDtoCustomizer() {
};
}
+ public static CommandDto copy(final CommandDto commandDto) {
+ if (commandDto == null) {
+ return null;
+ }
+ try {
+ final JAXBContext jaxbContext = JaxbUtils.jaxbContextFor(CommandDto.class);
+
+ // create marshaller and unmarshaller per-call (they are NOT thread-safe)
+ final Marshaller marshaller = jaxbContext.createMarshaller();
+ final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+
+ final StringWriter sw = new StringWriter();
+ marshaller.marshal(commandDto, sw);
+
+ final String xml = sw.toString();
+ try (final StringReader sr = new StringReader(xml)) {
+ return (CommandDto) unmarshaller.unmarshal(sr);
+ }
+ } catch (JAXBException e) {
+ throw new RuntimeException("Failed to deep-copy CommandDto", e);
+ }
+ }
+
public static class ImportedCommandDto {
private CommandDto command;
diff --git a/api/applib/src/test/java/org/apache/causeway/applib/util/schema/CommandDtoUtils_copy_Approval_Test.java b/api/applib/src/test/java/org/apache/causeway/applib/util/schema/CommandDtoUtils_copy_Approval_Test.java
new file mode 100644
index 00000000000..28a08c34c64
--- /dev/null
+++ b/api/applib/src/test/java/org/apache/causeway/applib/util/schema/CommandDtoUtils_copy_Approval_Test.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.causeway.applib.util.schema;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
+import org.approvaltests.Approvals;
+import org.approvaltests.core.Options;
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.springframework.util.StreamUtils;
+
+import org.apache.causeway.commons.io.DataSource;
+import org.apache.causeway.schema.cmd.v2.CommandDto;
+
+class CommandDtoUtils_copy_Approval_Test {
+
+ @Test
+ void marshals_command_copy() throws IOException {
+ // read YAML sample from classpath (existing test resource)
+ final String path = "CommandDtoUtils_copy_Approval_Test.marshals_command_copy.input.yaml";
+ try (InputStream is = getClass().getResourceAsStream(path)) {
+ final String yaml = StreamUtils.copyToString(is, StandardCharsets.UTF_8);
+
+ final List<CommandDto> commands = CommandDtoUtils.fromYaml(DataSource.ofStringUtf8(yaml));
+ Assertions.assertThat(commands).isNotEmpty();
+
+ final CommandDto original = commands.get(0);
+ final CommandDto copy = CommandDtoUtils.copy(original);
+
+ // ensure we actually created a different instance
+ Assertions.assertThat(copy).isNotSameAs(original);
+
+ // marshal the copy to its XML representation and approve
+ final String xml = CommandDtoUtils.dtoMapper().toString(copy);
+ Approvals.verify(xml);
+ }
+ }
+}
+
diff --git a/api/applib/src/test/java/org/apache/causeway/applib/util/schema/CommandDtoUtils_copy_Approval_Test.marshals_command_copy.approved.txt b/api/applib/src/test/java/org/apache/causeway/applib/util/schema/CommandDtoUtils_copy_Approval_Test.marshals_command_copy.approved.txt
new file mode 100644
index 00000000000..2d6411d2eb2
--- /dev/null
+++ b/api/applib/src/test/java/org/apache/causeway/applib/util/schema/CommandDtoUtils_copy_Approval_Test.marshals_command_copy.approved.txt
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<cmd:commandDto xmlns:com="https://causeway.apache.org/schema/common" xmlns:cmd="https://causeway.apache.org/schema/cmd">
+ <cmd:majorVersion>2</cmd:majorVersion>
+ <cmd:minorVersion>0</cmd:minorVersion>
+ <cmd:interactionId>08c210e1-55c0-4c45-83db-491f6581e621</cmd:interactionId>
+ <cmd:timestamp>2026-04-21T09:43:58.169Z</cmd:timestamp>
+ <cmd:username>estatio-admin</cmd:username>
+ <cmd:targets>
+ <com:oid type="outgoing.invoiceforlease.InvoiceForLease" id="419264"/>
+ </cmd:targets>
+ <cmd:member xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmd:actionDto" interactionType="action_invocation">
+ <cmd:logicalMemberIdentifier>outgoing.invoiceforlease.InvoiceForLease#approve</cmd:logicalMemberIdentifier>
+ </cmd:member>
+</cmd:commandDto>
diff --git a/api/applib/src/test/java/org/apache/causeway/applib/util/schema/CommandDtoUtils_copy_Approval_Test.marshals_command_copy.input.yaml b/api/applib/src/test/java/org/apache/causeway/applib/util/schema/CommandDtoUtils_copy_Approval_Test.marshals_command_copy.input.yaml
new file mode 100644
index 00000000000..81222d72ad7
--- /dev/null
+++ b/api/applib/src/test/java/org/apache/causeway/applib/util/schema/CommandDtoUtils_copy_Approval_Test.marshals_command_copy.input.yaml
@@ -0,0 +1,32 @@
+- majorVersion: "2"
+ minorVersion: "0"
+ interactionId: "08c210e1-55c0-4c45-83db-491f6581e621"
+ timestamp: "2026-04-21T09:43:58.169+00:00"
+ username: "estatio-admin"
+ targets:
+ oid:
+ - type: "outgoing.invoiceforlease.InvoiceForLease"
+ id: "419264"
+ member: !<ACT>
+ logicalMemberIdentifier: "outgoing.invoiceforlease.InvoiceForLease#approve"
+ interactionType: "action_invocation"
+- majorVersion: "2"
+ minorVersion: "0"
+ interactionId: "0e2ad15e-c1d8-48c5-8b63-b8cdde673715"
+ timestamp: "2026-04-21T09:45:07.409+00:00"
+ username: "estatio-admin"
+ targets:
+ oid:
+ - type: "outgoing.invoiceforlease.InvoiceForLease"
+ id: "419264"
+ member: !<ACT>
+ parameters:
+ parameter:
+ - localDate: "2026-04-20"
+ type: "localDate"
+ name: "Invoice Date"
+ - boolean: false
+ type: "boolean"
+ name: "Allow Invoice Date In Future"
+ logicalMemberIdentifier: "outgoing.invoiceforlease.InvoiceForLease#invoice"
+ interactionType: "action_invocation"
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerMovementSupport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerMovementSupport.java
index 5b46a5c656d..cecafcc5296 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerMovementSupport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerMovementSupport.java
@@ -28,8 +28,10 @@
import java.util.stream.Collectors;
import org.apache.causeway.applib.jaxb.JavaSqlXMLGregorianCalendarMarshalling;
+import org.apache.causeway.applib.util.schema.CommandDtoUtils;
import org.apache.causeway.core.config.CausewayConfiguration;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
+import org.apache.causeway.schema.cmd.v2.CommandDto;
class CommandExportManagerMovementSupport {
@@ -184,8 +186,11 @@ private static void setTimestamp(
private static void updateCommandDtoTimestamp(
final CommandLogEntry entry,
final Timestamp timestamp) {
- if (entry.getCommandDto() != null) {
- entry.getCommandDto().setTimestamp(JavaSqlXMLGregorianCalendarMarshalling.toXMLGregorianCalendar(timestamp));
+ final var commandDto = entry.getCommandDto();
+ if (commandDto != null) {
+ var commandDtoCopy = CommandDtoUtils.copy(commandDto);
+ commandDtoCopy.setTimestamp(JavaSqlXMLGregorianCalendarMarshalling.toXMLGregorianCalendar(timestamp));
+ entry.setCommandDto(commandDtoCopy);
}
}
(causeway) 11/11: CAUSEWAY-4039: makes CommandManagerReplay also be a known participants tracker
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 04c0f11686d32a25e17bc467c1da84a6be6d4ffb
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 19 07:47:20 2026 +0100
CAUSEWAY-4039: makes CommandManagerReplay also be a known participants tracker
---
.../applib/dom/replay/CommandManagerAbstract.java | 67 +++++++++++++++++++++-
.../applib/dom/replay/CommandManagerExport.java | 57 +-----------------
.../applib/dom/replay/CommandManagerReplay.java | 11 +++-
3 files changed, 78 insertions(+), 57 deletions(-)
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
index a7fc9162040..ee873c7b35d 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
@@ -24,20 +24,29 @@
import java.sql.Timestamp;
import java.time.Instant;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import java.util.UUID;
+import java.util.stream.Collectors;
import org.apache.causeway.applib.ViewModel;
import org.apache.causeway.applib.annotation.ObjectSupport;
+import org.apache.causeway.applib.annotation.Programmatic;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
import org.apache.causeway.applib.services.bookmark.Bookmark;
import org.apache.causeway.applib.services.command.CommandRecordingSuppressed;
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
+import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayReferenceDataService;
import static org.apache.causeway.extensions.commandlog.applib.dom.replay.TimestampMarshallUtil.fromString;
@RequiredArgsConstructor
-public abstract class CommandManagerAbstract implements ViewModel, HasBaseline, HasLimit, CommandRecordingSuppressed {
+public abstract class CommandManagerAbstract
+ implements ViewModel, HasBaseline, HasLimit, CommandRecordingSuppressed, ReplayableCommandParticipantTracker {
final ReplayContext replayContext;
@@ -78,6 +87,62 @@ public String viewModelMemento() {
return new State(baseline, limit).toMemento();
}
+ @Programmatic
+ Optional<CommandKnownParticipantsValidator.Failure> validateKnownTargets(
+ final List<CommandLogEntry> commandLogEntries) {
+ return isRecordingSupportEnabled()
+ ? validator().validate(baseline, commandLogEntries)
+ : Optional.empty();
+ }
+
+ @Override
+ @Programmatic
+ public boolean isKnownParticipants(final CommandLogEntry commandLogEntry) {
+ if (commandLogEntry == null || !isRecordingSupportEnabled()) {
+ return false;
+ }
+ return validator().validateParticipants(commandLogEntry, knownParticipantsAsOf(commandLogEntry.getInteractionId())).isEmpty();
+ }
+
+ @Programmatic
+ Set<Bookmark> knownParticipantsAsOf(final UUID interactionId) {
+ final Set<Bookmark> knownParticipants = new HashSet<>();
+ for (final CommandLogEntry entry : commandLogEntries().stream()
+ .sorted() // by timestamp
+ .collect(Collectors.toList())) {
+ if (sameInteractionId(entry, interactionId)) {
+ return knownParticipants;
+ }
+ Optional.ofNullable(entry.getResult())
+ .ifPresent(knownParticipants::add);
+ }
+ return knownParticipants;
+ }
+
+ private static boolean sameInteractionId(
+ final CommandLogEntry entry,
+ final UUID interactionId) {
+ return entry != null
+ && interactionId != null
+ && interactionId.equals(entry.getInteractionId());
+ }
+
+ ReplayableCommand replayableCommandFor(final CommandLogEntry entry) {
+ return new ReplayableCommand(
+ entry.getInteractionId(),
+ replayContext);
+ }
+
+ /**
+ * The sequence of {@link CommandLogEntry}s to be evaluated, specifically with respect to having known participants.
+ */
+ @Programmatic
+ abstract List<CommandLogEntry> commandLogEntries();
+
+ private boolean isRecordingSupportEnabled() {
+ return replayContext.causewayConfiguration() != null
+ && replayContext.causewayConfiguration().getExtensions().getCommandLog().getRecordingSupport().isEnabled();
+ }
CommandKnownParticipantsValidator validator() {
return new CommandKnownParticipantsValidator(this::isDomainServiceOrReferenceData);
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
index b4f11044683..2ab3e7e61d0 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
@@ -45,8 +45,7 @@
@DomainObjectLayout(cssClassFa = "solid share-from-square")
@Named(CommandManagerExport.LOGICAL_TYPE_NAME)
public final class CommandManagerExport
- extends CommandManagerAbstract
- implements ReplayableCommandParticipantTracker {
+ extends CommandManagerAbstract {
public static final String LOGICAL_TYPE_NAME = CausewayModuleExtCommandLogApplib.NAMESPACE + ".CommandExportManager";
@@ -87,7 +86,7 @@ public CommandManagerExport withLimit(final int limit) {
)
public List<ReplayableCommand> getCommands() {
ReplayableCommandParticipantTracker.putTrackerOnScratchpad(this, replayContext.scratchpad());
- return activeCommandLogEntries().stream()
+ return commandLogEntries().stream()
.filter(this::isDoOp)
.map(this::replayableCommandFor)
.collect(Collectors.toList());
@@ -133,53 +132,9 @@ public List<ReplayableCommand> commands(final Direction direction) {
}
}
- @Programmatic
- Optional<CommandKnownParticipantsValidator.Failure> validateKnownTargets(
- final List<CommandLogEntry> selectedCommandLogEntries) {
- return isRecordingSupportEnabled()
- ? validator().validate(baseline, selectedCommandLogEntries)
- : Optional.empty();
- }
-
- @Override
- @Programmatic
- public boolean isKnownParticipants(final CommandLogEntry commandLogEntry) {
- if (commandLogEntry == null || !isRecordingSupportEnabled()) {
- return false;
- }
- return validator().validateParticipants(commandLogEntry, knownParticipantsAsOf(commandLogEntry.getInteractionId())).isEmpty();
- }
-
- @Programmatic
- Set<Bookmark> knownParticipantsAsOf(final UUID interactionId) {
- final Set<Bookmark> knownParticipants = new HashSet<>();
- for (final CommandLogEntry entry : activeCommandLogEntries().stream()
- .sorted()
- .collect(Collectors.toList())) {
- if (sameInteractionId(entry, interactionId)) {
- return knownParticipants;
- }
- Optional.ofNullable(entry.getResult())
- .ifPresent(knownParticipants::add);
- }
- return knownParticipants;
- }
-
- private static boolean sameInteractionId(
- final CommandLogEntry entry,
- final UUID interactionId) {
- return entry != null
- && interactionId != null
- && interactionId.equals(entry.getInteractionId());
- }
-
- private boolean isRecordingSupportEnabled() {
- return replayContext.causewayConfiguration() != null
- && replayContext.causewayConfiguration().getExtensions().getCommandLog().getRecordingSupport().isEnabled();
- }
@Programmatic
- List<CommandLogEntry> activeCommandLogEntries() {
+ List<CommandLogEntry> commandLogEntries() {
return commandLogEntryRepository().findForegroundSinceTimestamp(baseline, limit).stream()
.filter(CommandManagerExport::isActiveCommand)
.filter(this::isDoOp)
@@ -190,12 +145,6 @@ private boolean isDoOp(final CommandLogEntry entry) {
return ReplayableCommand.Util.isDoOp(entry, replayContext.specificationLoader());
}
- private ReplayableCommand replayableCommandFor(final CommandLogEntry entry) {
- return new ReplayableCommand(
- entry.getInteractionId(),
- replayContext);
- }
-
private static boolean isActiveCommand(final CommandLogEntry entry) {
return entry != null
&& (entry.getReplayState() == ReplayState.UNDEFINED
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
index 2238ecfbc55..31c583497d7 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
@@ -89,8 +89,7 @@ public List<ReplayableCommand> getPendingOrFailed() {
}
@NonNull Stream<ReplayableCommand> streamPendingOrFailed() {
- return commandLogEntryRepository().findForegroundSinceTimestampAndWithReplayPendingOrFailed(baseline).stream()
- .filter(this::isDoOp)
+ return commandLogEntries().stream()
.map(entry -> new ReplayableCommand(
entry.getInteractionId(),
replayContext));
@@ -100,6 +99,14 @@ long sizePendingOrFailed() {
return streamPendingOrFailed().count();
}
+ @Override
+ @NonNull List<CommandLogEntry> commandLogEntries() {
+ return commandLogEntryRepository().findForegroundSinceTimestampAndWithReplayPendingOrFailed(baseline)
+ .stream()
+ .filter(this::isDoOp)
+ .collect(Collectors.toList());
+ }
+
// -- OK OR EXCLUDE
(causeway) 04/11: CAUSEWAY-4039: managers now inherit from abstract
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit dce5ee8c983303bf1b660aa6172a023abd1126f6
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jun 18 19:02:56 2026 +0100
CAUSEWAY-4039: managers now inherit from abstract
---
.../extensions/commandlog/applib/dom/replay/CommandManagerExport.java | 4 +++-
.../extensions/commandlog/applib/dom/replay/CommandManagerReplay.java | 4 +++-
.../applib/dom/replay/ReplayableCommandParticipantTracker.java | 4 ++++
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
index f9877ea502a..a711f3eafe9 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
@@ -59,7 +59,9 @@
@DomainObject(introspection = Introspection.ANNOTATION_REQUIRED)
@DomainObjectLayout(cssClassFa = "solid share-from-square")
@Named(CommandManagerExport.LOGICAL_TYPE_NAME)
-public final class CommandManagerExport implements ViewModel, HasBaseline, CommandRecordingSuppressed {
+public final class CommandManagerExport
+ extends CommandManagerAbstract
+ implements ViewModel, ReplayableCommandParticipantTracker {
public static final String LOGICAL_TYPE_NAME = CausewayModuleExtCommandLogApplib.NAMESPACE + ".CommandExportManager";
static final String SCRATCHPAD_KEY = LOGICAL_TYPE_NAME + "#current";
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
index c1a40bc713d..f2a9ceda0cf 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
@@ -50,7 +50,9 @@
@DomainObject(introspection = Introspection.ANNOTATION_REQUIRED)
@DomainObjectLayout(cssClassFa = "solid circle-play")
@Named(CommandManagerReplay.LOGICAL_TYPE_NAME)
-public final class CommandManagerReplay implements ViewModel, HasBaseline, CommandRecordingSuppressed {
+public final class CommandManagerReplay
+ extends CommandManagerAbstract
+ implements ViewModel {
public static final String LOGICAL_TYPE_NAME = CausewayModuleExtCommandLogApplib.NAMESPACE + ".CommandReplayManager";
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java
new file mode 100644
index 00000000000..2493fd5a325
--- /dev/null
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java
@@ -0,0 +1,4 @@
+package org.apache.causeway.extensions.commandlog.applib.dom.replay;
+
+public interface ReplayableCommandParticipantTracker {
+}
(causeway) 03/11: CAUSEWAY-4039: moves injected services into ReplayContext
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit f6828f1b9b831c1fadc6311b198061ab8553f5f9
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jun 18 19:00:44 2026 +0100
CAUSEWAY-4039: moves injected services into ReplayContext
---
.../applib/CausewayModuleExtCommandLogApplib.java | 17 ++++++++++-
.../applib/dom/replay/CommandManagerAbstract.java | 3 +-
.../applib/dom/replay/CommandManagerExport.java | 22 ++++++--------
.../CommandManagerExport_exportSelected.java | 8 -----
.../applib/dom/replay/CommandManagerReplay.java | 1 -
.../applib/dom/replay/ReplayContext.java | 34 ++++++++++++++++++++--
6 files changed, 58 insertions(+), 27 deletions(-)
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java
index f7a08bac1ef..dee0fde0360 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java
@@ -18,11 +18,16 @@
*/
package org.apache.causeway.extensions.commandlog.applib;
+import java.util.List;
+
import org.apache.causeway.applib.services.clock.ClockService;
import org.apache.causeway.applib.services.command.CommandExecutorService;
import org.apache.causeway.applib.services.iactnlayer.InteractionService;
+import org.apache.causeway.applib.services.metamodel.MetaModelService;
import org.apache.causeway.applib.services.repository.RepositoryService;
+import org.apache.causeway.applib.services.scratchpad.Scratchpad;
import org.apache.causeway.applib.services.xactn.TransactionService;
+import org.apache.causeway.core.config.CausewayConfiguration;
import org.apache.causeway.core.config.util.SpringProfileUtil;
import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
import org.apache.causeway.extensions.commandlog.applib.app.CommandLogMenu;
@@ -69,6 +74,7 @@
import org.apache.causeway.extensions.commandlog.applib.job.RunBackgroundCommandsJob;
import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayMappingListener;
import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayMappingListenerInMemory;
+import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayReferenceDataService;
import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayReferenceDataServiceForRefData;
import org.apache.causeway.extensions.commandlog.applib.spi.RunBackgroundCommandsJobListener;
import org.apache.causeway.extensions.commandlog.applib.subscriber.CommandLogPauseState;
@@ -191,11 +197,20 @@ public static void honorSystemEnvironment() {
final CommandExecutorService commandExecutorService,
final ClockService clockService,
final java.util.List<CommandReplayMappingListener> commandReplayMappingListeners,
+ final Scratchpad scratchpad,
+ final MetaModelService metaModelService,
+ final CausewayConfiguration causewayConfiguration,
+ final List<CommandReplayReferenceDataService> commandReplayReferenceDataServices,
final SpecificationLoader specificationLoader) {
return new ReplayContext(
repositoryService, interactionService, transactionService,
commandLogEntryRepository, commandExecutorService, clockService,
- commandReplayMappingListeners, specificationLoader);
+ commandReplayMappingListeners,
+ scratchpad,
+ metaModelService,
+ causewayConfiguration,
+ commandReplayReferenceDataServices,
+ specificationLoader);
}
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
index a11fc7dcbeb..a32d81d8439 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
@@ -18,10 +18,11 @@
*/
package org.apache.causeway.extensions.commandlog.applib.dom.replay;
+import java.sql.Timestamp;
+
import org.apache.causeway.applib.ViewModel;
import org.apache.causeway.applib.services.command.CommandRecordingSuppressed;
public abstract class CommandManagerAbstract implements HasBaseline, CommandRecordingSuppressed {
-
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
index 48b6c718a07..f9877ea502a 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
@@ -69,10 +69,6 @@ public static abstract class ActionDomainEvent<T>
ReplayContext replayContext;
- @Inject Scratchpad scratchpad;
- @Inject MetaModelService metaModelService;
- @Inject CausewayConfiguration causewayConfiguration;
- @Inject List<CommandReplayReferenceDataService> commandReplayReferenceDataServices;
@Inject
public CommandManagerExport(
@@ -208,8 +204,8 @@ private static boolean sameInteractionId(
}
private boolean isRecordingSupportEnabled() {
- return causewayConfiguration != null
- && causewayConfiguration.getExtensions().getCommandLog().getRecordingSupport().isEnabled();
+ return replayContext.causewayConfiguration() != null
+ && replayContext.causewayConfiguration().getExtensions().getCommandLog().getRecordingSupport().isEnabled();
}
private CommandExportKnownTargetValidator validator() {
@@ -218,12 +214,12 @@ private CommandExportKnownTargetValidator validator() {
private boolean isExportRootOrReferenceData(final Bookmark bookmark) {
return isExportRoot(bookmark)
- || CommandReplayReferenceDataService.isReferenceData(commandReplayReferenceDataServices, bookmark);
+ || CommandReplayReferenceDataService.isReferenceData(replayContext.commandReplayReferenceDataServices(), bookmark);
}
private boolean isExportRoot(final Bookmark bookmark) {
- return metaModelService != null
- && metaModelService.lookupLogicalTypeByName(bookmark.getLogicalTypeName())
+ return replayContext.metaModelService() != null
+ && replayContext.metaModelService().lookupLogicalTypeByName(bookmark.getLogicalTypeName())
.map(logicalType -> logicalType.correspondingClass().isAnnotationPresent(org.apache.causeway.applib.annotation.DomainService.class))
.orElse(false);
}
@@ -241,11 +237,11 @@ private boolean isReplayable(final CommandLogEntry entry) {
}
private ReplayableCommand replayableCommandInExportManagerContext(final CommandLogEntry entry) {
- return scratchpad != null
+ return replayContext.scratchpad() != null
? new ReplayableCommand(
entry.getInteractionId(),
replayContext,
- scratchpad)
+ replayContext.scratchpad())
: new ReplayableCommand(
entry.getInteractionId(),
replayContext,
@@ -264,8 +260,8 @@ private static boolean isExcludedCommand(final CommandLogEntry entry) {
}
private void putCurrentExportManagerOnScratchpad() {
- if (scratchpad != null) {
- scratchpad.put(SCRATCHPAD_KEY, this);
+ if (replayContext.scratchpad() != null) {
+ replayContext.scratchpad().put(SCRATCHPAD_KEY, this);
}
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
index f39b7393a92..fbbbaecba81 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
@@ -106,7 +106,6 @@ public boolean defaultFilenameTimestamp() {
@MemberSupport
public List<ReplayableCommand> defaultSelected() {
- syncInjectedServicesToManager();
return commandExportManager.getCommands().stream()
.filter(command -> Boolean.TRUE.equals(command.getExportable()))
.collect(Collectors.toList());
@@ -136,16 +135,9 @@ private List<CommandLogEntry> selectedCommandLogEntries(final List<ReplayableCom
private Optional<CommandExportKnownTargetValidator.Failure> validateKnownTargets(
final List<CommandLogEntry> selectedCommandLogEntries) {
- syncInjectedServicesToManager();
return commandExportManager.validateKnownTargets(selectedCommandLogEntries);
}
- private void syncInjectedServicesToManager() {
- commandExportManager.metaModelService = metaModelService;
- commandExportManager.causewayConfiguration = causewayConfiguration;
- commandExportManager.commandReplayReferenceDataServices = commandReplayReferenceDataServices;
- }
-
// TODO: shouldn't be required because of 'choicesFrom', but in v2 there seems to be a MM validation error due to a missing choicesFacet
@MemberSupport
public List<ReplayableCommand> choicesSelected() {
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
index 0554d6ca72d..c1a40bc713d 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
@@ -58,7 +58,6 @@ public static abstract class ActionDomainEvent<T>
extends CausewayModuleExtCommandLogApplib.ActionDomainEvent<T> { }
ReplayContext replayContext;
-
ReplayContext replayContext() {
return replayContext;
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayContext.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayContext.java
index e06a5021557..8c10b0adcbe 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayContext.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayContext.java
@@ -25,17 +25,24 @@
import org.apache.causeway.applib.services.clock.ClockService;
import org.apache.causeway.applib.services.command.CommandExecutorService;
import org.apache.causeway.applib.services.iactnlayer.InteractionService;
+import org.apache.causeway.applib.services.metamodel.MetaModelService;
import org.apache.causeway.applib.services.repository.RepositoryService;
+import org.apache.causeway.applib.services.scratchpad.Scratchpad;
import org.apache.causeway.applib.services.xactn.TransactionService;
+import org.apache.causeway.core.config.CausewayConfiguration;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepository;
import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayMappingListener;
import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
+import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayReferenceDataService;
+
import org.springframework.lang.Nullable;
import lombok.Value;
import lombok.experimental.Accessors;
+import javax.inject.Inject;
+
/**
* Bundles dependencies for the replay logic.
*/
@@ -48,7 +55,12 @@ public final class ReplayContext {
CommandExecutorService commandExecutorService;
ClockService clockService;
List<CommandReplayMappingListener> commandReplayMappingListeners;
- SpecificationLoader specificationLoader;
+ Scratchpad scratchpad;
+ MetaModelService metaModelService;
+ CausewayConfiguration causewayConfiguration;
+ List<CommandReplayReferenceDataService> commandReplayReferenceDataServices;
+
+ SpecificationLoader specificationLoader;
public ReplayContext(
final RepositoryService repositoryService,
@@ -57,7 +69,11 @@ public ReplayContext(
final CommandLogEntryRepository commandLogEntryRepository,
final CommandExecutorService commandExecutorService,
final ClockService clockService,
- final List<CommandReplayMappingListener> commandReplayMappingListeners) {
+ final List<CommandReplayMappingListener> commandReplayMappingListeners,
+ final Scratchpad scratchpad,
+ final MetaModelService metaModelService,
+ final CausewayConfiguration causewayConfiguration,
+ final List<CommandReplayReferenceDataService> commandReplayReferenceDataServices) {
this(
repositoryService,
interactionService,
@@ -66,6 +82,10 @@ public ReplayContext(
commandExecutorService,
clockService,
commandReplayMappingListeners,
+ scratchpad,
+ metaModelService,
+ causewayConfiguration,
+ commandReplayReferenceDataServices,
null);
}
@@ -77,6 +97,10 @@ public ReplayContext(
final CommandExecutorService commandExecutorService,
final ClockService clockService,
final List<CommandReplayMappingListener> commandReplayMappingListeners,
+ final Scratchpad scratchpad,
+ final MetaModelService metaModelService,
+ final CausewayConfiguration causewayConfiguration,
+ final List<CommandReplayReferenceDataService> commandReplayReferenceDataServices,
final SpecificationLoader specificationLoader) {
this.repositoryService = repositoryService;
this.interactionService = interactionService;
@@ -85,6 +109,10 @@ public ReplayContext(
this.commandExecutorService = commandExecutorService;
this.clockService = clockService;
this.commandReplayMappingListeners = commandReplayMappingListeners;
+ this.scratchpad = scratchpad;
+ this.metaModelService = metaModelService;
+ this.causewayConfiguration = causewayConfiguration;
+ this.commandReplayReferenceDataServices = commandReplayReferenceDataServices;
this.specificationLoader = specificationLoader;
}
@@ -93,5 +121,5 @@ public Optional<CommandLogEntry> lookupCommandLogEntry(final @Nullable UUID inte
? commandLogEntryRepository().findByInteractionId(interactionId)
: Optional.empty();
}
-
+
}
(causeway) 05/11: CAUSEWAY-4039: baseline, limit and state moved to abstract
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit fcbdd513c9d9a72e46180db49fecac99ea5b53ea
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jun 18 19:17:09 2026 +0100
CAUSEWAY-4039: baseline, limit and state moved to abstract
---
.../applib/dom/replay/CommandManagerAbstract.java | 85 +++++++++++++++++++++-
.../applib/dom/replay/CommandManagerExport.java | 70 +-----------------
.../applib/dom/replay/CommandManagerReplay.java | 36 +++------
.../CommandManagerReplay_importCommands.java | 2 +-
.../commandlog/applib/dom/replay/HasLimit.java | 18 +++++
.../dom/replay/CommandManagerExportStateTest.java | 20 ++---
6 files changed, 129 insertions(+), 102 deletions(-)
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
index a32d81d8439..228185e605e 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
@@ -18,11 +18,94 @@
*/
package org.apache.causeway.extensions.commandlog.applib.dom.replay;
+import lombok.Data;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
import java.sql.Timestamp;
+import java.time.Instant;
import org.apache.causeway.applib.ViewModel;
+import org.apache.causeway.applib.annotation.Programmatic;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
import org.apache.causeway.applib.services.command.CommandRecordingSuppressed;
-public abstract class CommandManagerAbstract implements HasBaseline, CommandRecordingSuppressed {
+import static org.apache.causeway.extensions.commandlog.applib.dom.replay.TimestampMarshallUtil.fromString;
+
+@RequiredArgsConstructor
+public abstract class CommandManagerAbstract implements ViewModel, HasBaseline, HasLimit, CommandRecordingSuppressed {
+
+ final ReplayContext replayContext;
+
+ ReplayContext replayContext() {
+ return replayContext;
+ }
+
+ @Property
+ @PropertyLayout(describedAs = "Only commands after this timestamp are available")
+ @Getter java.sql.Timestamp baseline;
+
+ @Property
+ @PropertyLayout(describedAs = "Number of commands per page")
+ @Getter int limit;
+
+
+ CommandManagerAbstract(
+ final State state,
+ final ReplayContext replayContext) {
+ this.baseline = state.timestamp;
+ this.limit = state.limit;
+ this.replayContext = replayContext;
+ }
+
+
+ // -- VM STATE
+
+ @Override
+ public String viewModelMemento() {
+ return new State(baseline, limit).toMemento();
+ }
+
+
+ @Data
+ public static class State {
+ private static final String DELIMITER = "--";
+
+ final Timestamp timestamp;
+ final int limit;
+
+ public static State from(Timestamp timestamp, final int limit) {
+ return new State(timestamp, limit);
+ }
+
+ public static State parseMemento(final String memento, final State fallback) {
+ if (memento == null || memento.isEmpty()) {
+ return fallback;
+ }
+ try {
+ final String[] parts = memento.split(DELIMITER, -1);
+ if (parts.length != 2) {
+ return fallback;
+ }
+
+ final Timestamp fallbackTimestamp = fallback != null
+ ? fallback.timestamp
+ : Timestamp.from(Instant.now());
+ final int fallbackLimit = fallback != null ? fallback.limit : 0;
+
+ final Timestamp timestamp = fromString(parts[0], fallbackTimestamp);
+ final int limit = parts[1].isBlank() ? fallbackLimit : Integer.parseInt(parts[1]);
+
+ return new State(timestamp, limit);
+ } catch (Exception e) {
+ return fallback;
+ }
+ }
+
+ public String toMemento() {
+ return TimestampMarshallUtil.toString(timestamp) + DELIMITER + limit;
+ }
+ }
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
index a711f3eafe9..c347ee48332 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
@@ -18,10 +18,7 @@
*/
package org.apache.causeway.extensions.commandlog.applib.dom.replay;
-import static org.apache.causeway.extensions.commandlog.applib.dom.replay.TimestampMarshallUtil.fromString;
-
import java.sql.Timestamp;
-import java.time.Instant;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
@@ -43,17 +40,13 @@
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
import org.apache.causeway.applib.services.bookmark.Bookmark;
-import org.apache.causeway.applib.services.command.CommandRecordingSuppressed;
-import org.apache.causeway.applib.services.metamodel.MetaModelService;
import org.apache.causeway.applib.services.scratchpad.Scratchpad;
-import org.apache.causeway.core.config.CausewayConfiguration;
import org.apache.causeway.extensions.commandlog.applib.CausewayModuleExtCommandLogApplib;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepository;
import org.apache.causeway.extensions.commandlog.applib.dom.ReplayState;
import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayReferenceDataService;
-import lombok.Data;
import lombok.Getter;
@DomainObject(introspection = Introspection.ANNOTATION_REQUIRED)
@@ -61,7 +54,7 @@
@Named(CommandManagerExport.LOGICAL_TYPE_NAME)
public final class CommandManagerExport
extends CommandManagerAbstract
- implements ViewModel, ReplayableCommandParticipantTracker {
+ implements ReplayableCommandParticipantTracker {
public static final String LOGICAL_TYPE_NAME = CausewayModuleExtCommandLogApplib.NAMESPACE + ".CommandExportManager";
static final String SCRATCHPAD_KEY = LOGICAL_TYPE_NAME + "#current";
@@ -69,8 +62,6 @@ public final class CommandManagerExport
public static abstract class ActionDomainEvent<T>
extends CausewayModuleExtCommandLogApplib.ActionDomainEvent<T> { }
- ReplayContext replayContext;
-
@Inject
public CommandManagerExport(
@@ -79,34 +70,23 @@ public CommandManagerExport(
this(State.parseMemento(memento, new State(replayContext.clockService().getClock().nowAsJavaSqlTimestamp(), 50)), replayContext);
}
- public CommandManagerExport(
+ CommandManagerExport(
final State state,
final ReplayContext replayContext) {
- this.baseline = state.timestamp;
- this.limit = state.limit;
- this.replayContext = replayContext;
+ super(state, replayContext);
}
@ObjectSupport public String title() {
return "Command Export Manager";
}
- @Property
- @PropertyLayout(describedAs = "Only commands after this timestamp are available")
- @Getter
- private java.sql.Timestamp baseline;
-
- @Property
- @PropertyLayout(describedAs = "Number of commands per page")
- @Getter
- private int limit;
-
@Override
@Programmatic
public CommandManagerExport withBaseline(final Timestamp baseline) {
return new CommandManagerExport(new State(baseline, this.limit), replayContext);
}
+ @Override
@Programmatic
public CommandManagerExport withLimit(final int limit) {
return new CommandManagerExport(new State(this.baseline, limit), replayContext);
@@ -274,52 +254,10 @@ static Optional<CommandManagerExport> currentExportManager(final Scratchpad scra
.map(CommandManagerExport.class::cast);
}
- // -- VM STATE
-
- @Override
- public String viewModelMemento() {
- return new State(baseline, limit).toMemento();
- }
// -- HELPER
private CommandLogEntryRepository commandLogEntryRepository() {
return replayContext.commandLogEntryRepository();
}
- @Data
- public static class State {
- private static final String DELIMITER = "--";
-
- private final Timestamp timestamp;
- private final int limit;
-
- public static State parseMemento(final String memento, final State fallback) {
- if (memento == null || memento.isEmpty()) {
- return fallback;
- }
- try {
- final String[] parts = memento.split(DELIMITER, -1);
- if (parts.length != 2) {
- return fallback;
- }
-
- final Timestamp fallbackTimestamp = fallback != null
- ? fallback.timestamp
- : Timestamp.from(Instant.now());
- final int fallbackLimit = fallback != null ? fallback.limit : 0;
-
- final Timestamp timestamp = fromString(parts[0], fallbackTimestamp);
- final int limit = parts[1].isBlank() ? fallbackLimit : Integer.parseInt(parts[1]);
-
- return new State(timestamp, limit);
- } catch (Exception e) {
- return fallback;
- }
- }
-
- public String toMemento() {
- return TimestampMarshallUtil.toString(timestamp) + DELIMITER + limit;
- }
- }
-
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
index f2a9ceda0cf..026fd082dc6 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
@@ -51,31 +51,25 @@
@DomainObjectLayout(cssClassFa = "solid circle-play")
@Named(CommandManagerReplay.LOGICAL_TYPE_NAME)
public final class CommandManagerReplay
- extends CommandManagerAbstract
- implements ViewModel {
+ extends CommandManagerAbstract {
public static final String LOGICAL_TYPE_NAME = CausewayModuleExtCommandLogApplib.NAMESPACE + ".CommandReplayManager";
public static abstract class ActionDomainEvent<T>
extends CausewayModuleExtCommandLogApplib.ActionDomainEvent<T> { }
- ReplayContext replayContext;
- ReplayContext replayContext() {
- return replayContext;
- }
@Inject
public CommandManagerReplay(
final String memento,
final ReplayContext replayContext) {
- this(fromString(memento, replayContext.clockService().getClock().nowAsJavaSqlTimestamp()), replayContext);
+ this(State.parseMemento(memento, new State(replayContext.clockService().getClock().nowAsJavaSqlTimestamp(), 50)), replayContext);
}
- public CommandManagerReplay(
- final java.sql.Timestamp baseline,
+ CommandManagerReplay(
+ final State state,
final ReplayContext replayContext) {
- this.baseline = baseline;
- this.replayContext = replayContext;
+ super(state, replayContext);
}
@ObjectSupport public String title() {
@@ -83,15 +77,16 @@ public CommandManagerReplay(
}
- @Property
- @PropertyLayout(describedAs = "Only commands after this baseline are listed for replay")
- @Getter
- private java.sql.Timestamp baseline;
+ @Override
+ @Programmatic
+ public CommandManagerReplay withBaseline(final Timestamp baseline) {
+ return new CommandManagerReplay(new State(baseline, this.limit), replayContext);
+ }
@Override
@Programmatic
- public CommandManagerReplay withBaseline(Timestamp baseline) {
- return new CommandManagerReplay(baseline, replayContext);
+ public CommandManagerReplay withLimit(final int limit) {
+ return new CommandManagerReplay(new State(this.baseline, limit), replayContext);
}
@@ -136,13 +131,6 @@ public List<ReplayableCommand> getSucceededOrExcluded() {
}
- // -- VM STATE
-
- @Override
- public String viewModelMemento() {
- return TimestampMarshallUtil.toString(this.baseline);
- }
-
// -- HELPER
private boolean isReplayable(final CommandLogEntry entry) {
return ReplayableCommandEligibility.isReplayable(entry, replayContext.specificationLoader());
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_importCommands.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_importCommands.java
index e74f636cb0f..2388388a511 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_importCommands.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_importCommands.java
@@ -56,7 +56,7 @@ public CommandManagerReplay act(
.map(CommandManagerReplay_importCommands::toJavaSqlTimestamp)
.sorted()
.findFirst()
- .map(timestamp -> new CommandManagerReplay(timestamp, commandReplayManager.replayContext))
+ .map(timestamp -> new CommandManagerReplay(new CommandManagerAbstract.State(timestamp, commandReplayManager.getLimit()), commandReplayManager.replayContext()))
.orElse(commandReplayManager);
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/HasLimit.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/HasLimit.java
new file mode 100644
index 00000000000..c2d3900a195
--- /dev/null
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/HasLimit.java
@@ -0,0 +1,18 @@
+package org.apache.causeway.extensions.commandlog.applib.dom.replay;
+
+import java.sql.Timestamp;
+import java.time.Instant;
+
+import org.apache.causeway.extensions.commandlog.applib.CausewayModuleExtCommandLogApplib;
+
+public interface HasLimit {
+
+ abstract class ActionDomainEvent<T>
+ extends CausewayModuleExtCommandLogApplib.ActionDomainEvent<T> { }
+
+
+ int getLimit();
+
+ HasLimit withLimit(int limit);
+
+}
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportStateTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportStateTest.java
index 9b4334a4928..6b4c0834566 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportStateTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportStateTest.java
@@ -23,7 +23,7 @@
import java.sql.Timestamp;
import java.time.Instant;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport.State;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerAbstract.State;
import org.junit.jupiter.api.Test;
class CommandManagerExportStateTest {
@@ -34,7 +34,7 @@ void roundtrip_toMemento_and_parseMemento() {
final var state = new State(timestamp, 25);
final String memento = state.toMemento();
- final State parsed = State.parseMemento(memento, null);
+ final State parsed = CommandManagerAbstract.State.parseMemento(memento, null);
assertThat(memento).isEqualTo(TimestampMarshallUtil.toString(timestamp) + "--25");
assertThat(parsed).isNotNull();
@@ -46,7 +46,7 @@ void roundtrip_toMemento_and_parseMemento() {
void parseMemento_null_returns_fallback() {
final State fallback = fallbackState();
- final State parsed = State.parseMemento(null, fallback);
+ final State parsed = CommandManagerAbstract.State.parseMemento(null, fallback);
assertThat(parsed).isSameAs(fallback);
}
@@ -55,7 +55,7 @@ void parseMemento_null_returns_fallback() {
void parseMemento_empty_returns_fallback() {
final State fallback = fallbackState();
- final State parsed = State.parseMemento("", fallback);
+ final State parsed = CommandManagerAbstract.State.parseMemento("", fallback);
assertThat(parsed).isSameAs(fallback);
}
@@ -64,7 +64,7 @@ void parseMemento_empty_returns_fallback() {
void parseMemento_invalid_part_count_returns_fallback() {
final State fallback = fallbackState();
- final State parsed = State.parseMemento("timestamp--limit--mode", fallback);
+ final State parsed = CommandManagerAbstract.State.parseMemento("timestamp--limit--mode", fallback);
assertThat(parsed).isSameAs(fallback);
}
@@ -75,7 +75,7 @@ void parseMemento_blank_limit_uses_fallback_value() {
final Timestamp timestamp = Timestamp.from(Instant.parse("2026-06-01T00:00:00.000Z"));
final String memento = TimestampMarshallUtil.toString(timestamp) + "--";
- final State parsed = State.parseMemento(memento, fallback);
+ final State parsed = CommandManagerAbstract.State.parseMemento(memento, fallback);
assertThat(parsed).isNotNull();
assertThat(parsed.getTimestamp()).isEqualTo(timestamp);
@@ -87,7 +87,7 @@ void parseMemento_invalid_limit_returns_fallback() {
final State fallback = fallbackState();
final String memento = TimestampMarshallUtil.toString(fallback.getTimestamp()) + "--abc";
- final State parsed = State.parseMemento(memento, fallback);
+ final State parsed = CommandManagerAbstract.State.parseMemento(memento, fallback);
assertThat(parsed).isSameAs(fallback);
}
@@ -96,7 +96,7 @@ void parseMemento_invalid_limit_returns_fallback() {
void parseMemento_invalid_timestamp_uses_fallback_timestamp() {
final State fallback = fallbackState();
- final State parsed = State.parseMemento("not-a-timestamp--10", fallback);
+ final State parsed = CommandManagerAbstract.State.parseMemento("not-a-timestamp--10", fallback);
assertThat(parsed).isNotNull();
assertThat(parsed.getTimestamp()).isEqualTo(fallback.getTimestamp());
@@ -108,14 +108,14 @@ void parseMemento_legacy_delimiter_returns_fallback() {
final State fallback = fallbackState();
final String memento = TimestampMarshallUtil.toString(fallback.getTimestamp()) + "|10";
- final State parsed = State.parseMemento(memento, fallback);
+ final State parsed = CommandManagerAbstract.State.parseMemento(memento, fallback);
assertThat(parsed).isSameAs(fallback);
}
@Test
void parseMemento_invalid_and_null_fallback_returns_null() {
- final State parsed = State.parseMemento("not-two-parts", null);
+ final State parsed = CommandManagerAbstract.State.parseMemento("not-two-parts", null);
assertThat(parsed).isNull();
}
(causeway) 07/11: CAUSEWAY-4039: renames ReplayableCommand#isReplayable to isDoOp
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit eb0d2fecead1a6063dbf1d3aa44ea8551497ebd5
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 19 06:51:20 2026 +0100
CAUSEWAY-4039: renames ReplayableCommand#isReplayable to isDoOp
---
.../applib/dom/replay/CommandManagerAbstract.java | 9 +++
.../applib/dom/replay/CommandManagerExport.java | 22 ++----
.../applib/dom/replay/CommandManagerReplay.java | 21 ++----
.../applib/dom/replay/ReplayableCommand.java | 61 +++++++++++++++--
.../dom/replay/ReplayableCommandEligibility.java | 78 ----------------------
...ityTest.java => ReplayableCommandUtilTest.java} | 14 ++--
6 files changed, 82 insertions(+), 123 deletions(-)
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
index 228185e605e..bbc7bcd2212 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
@@ -26,6 +26,7 @@
import java.time.Instant;
import org.apache.causeway.applib.ViewModel;
+import org.apache.causeway.applib.annotation.ObjectSupport;
import org.apache.causeway.applib.annotation.Programmatic;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
@@ -60,6 +61,14 @@ ReplayContext replayContext() {
}
+ @ObjectSupport
+ public String title() {
+ return this instanceof CommandManagerExport
+ ? "Command Export Manager"
+ : "Command Replay Manager";
+ }
+
+
// -- VM STATE
@Override
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
index 141769b17fc..c46a5b56b57 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
@@ -29,16 +29,12 @@
import javax.inject.Inject;
import javax.inject.Named;
-import org.apache.causeway.applib.ViewModel;
import org.apache.causeway.applib.annotation.Collection;
import org.apache.causeway.applib.annotation.CollectionLayout;
import org.apache.causeway.applib.annotation.DomainObject;
import org.apache.causeway.applib.annotation.DomainObjectLayout;
import org.apache.causeway.applib.annotation.Introspection;
-import org.apache.causeway.applib.annotation.ObjectSupport;
import org.apache.causeway.applib.annotation.Programmatic;
-import org.apache.causeway.applib.annotation.Property;
-import org.apache.causeway.applib.annotation.PropertyLayout;
import org.apache.causeway.applib.services.bookmark.Bookmark;
import org.apache.causeway.applib.services.scratchpad.Scratchpad;
import org.apache.causeway.extensions.commandlog.applib.CausewayModuleExtCommandLogApplib;
@@ -47,8 +43,6 @@
import org.apache.causeway.extensions.commandlog.applib.dom.ReplayState;
import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayReferenceDataService;
-import lombok.Getter;
-
@DomainObject(introspection = Introspection.ANNOTATION_REQUIRED)
@DomainObjectLayout(cssClassFa = "solid share-from-square")
@Named(CommandManagerExport.LOGICAL_TYPE_NAME)
@@ -76,10 +70,6 @@ public CommandManagerExport(
super(state, replayContext);
}
- @ObjectSupport public String title() {
- return "Command Export Manager";
- }
-
@Override
@Programmatic
public CommandManagerExport withBaseline(final Timestamp baseline) {
@@ -101,7 +91,7 @@ public CommandManagerExport withLimit(final int limit) {
public List<ReplayableCommand> getCommands() {
putCurrentExportManagerOnScratchpad();
return activeCommandLogEntries().stream()
- .filter(this::isReplayable)
+ .filter(this::isDoOp)
.map(this::replayableCommandInExportManagerContext)
.collect(Collectors.toList());
}
@@ -114,7 +104,7 @@ public List<ReplayableCommand> getCommands() {
public List<ReplayableCommand> getExcludedCommands() {
return commandLogEntryRepository().findForegroundSinceTimestamp(baseline, limit).stream()
.filter(CommandManagerExport::isExcludedCommand)
- .filter(this::isReplayable)
+ .filter(this::isDoOp)
.map(entry -> new ReplayableCommand(
entry.getInteractionId(),
replayContext))
@@ -124,7 +114,7 @@ public List<ReplayableCommand> getExcludedCommands() {
@Programmatic
public List<ReplayableCommand> getCommandsPrevious() {
return commandLogEntryRepository().findForegroundBeforeTimestamp(baseline, limit).stream()
- .filter(this::isReplayable)
+ .filter(this::isDoOp)
.map(entry -> new ReplayableCommand(
entry.getInteractionId(),
replayContext))
@@ -210,12 +200,12 @@ private boolean isExportRoot(final Bookmark bookmark) {
List<CommandLogEntry> activeCommandLogEntries() {
return commandLogEntryRepository().findForegroundSinceTimestamp(baseline, limit).stream()
.filter(CommandManagerExport::isActiveCommand)
- .filter(this::isReplayable)
+ .filter(this::isDoOp)
.collect(Collectors.toList());
}
- private boolean isReplayable(final CommandLogEntry entry) {
- return ReplayableCommandEligibility.isReplayable(entry, replayContext.specificationLoader());
+ private boolean isDoOp(final CommandLogEntry entry) {
+ return ReplayableCommand.Util.isDoOp(entry, replayContext.specificationLoader());
}
private ReplayableCommand replayableCommandInExportManagerContext(final CommandLogEntry entry) {
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
index b330f65d72a..2238ecfbc55 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
@@ -18,8 +18,6 @@
*/
package org.apache.causeway.extensions.commandlog.applib.dom.replay;
-import static org.apache.causeway.extensions.commandlog.applib.dom.replay.TimestampMarshallUtil.fromString;
-
import java.sql.Timestamp;
import java.util.List;
import java.util.stream.Collectors;
@@ -28,25 +26,18 @@
import javax.inject.Inject;
import javax.inject.Named;
-import org.apache.causeway.applib.ViewModel;
import org.apache.causeway.applib.annotation.Collection;
import org.apache.causeway.applib.annotation.CollectionLayout;
import org.apache.causeway.applib.annotation.DomainObject;
import org.apache.causeway.applib.annotation.DomainObjectLayout;
import org.apache.causeway.applib.annotation.Introspection;
-import org.apache.causeway.applib.annotation.ObjectSupport;
import org.apache.causeway.applib.annotation.Programmatic;
-import org.apache.causeway.applib.annotation.Property;
-import org.apache.causeway.applib.annotation.PropertyLayout;
-import org.apache.causeway.applib.services.command.CommandRecordingSuppressed;
import org.apache.causeway.extensions.commandlog.applib.CausewayModuleExtCommandLogApplib;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepository;
import org.jspecify.annotations.NonNull;
-import lombok.Getter;
-
@DomainObject(introspection = Introspection.ANNOTATION_REQUIRED)
@DomainObjectLayout(cssClassFa = "solid circle-play")
@Named(CommandManagerReplay.LOGICAL_TYPE_NAME)
@@ -72,10 +63,6 @@ public CommandManagerReplay(
super(state, replayContext);
}
- @ObjectSupport public String title() {
- return "Command Replay Manager";
- }
-
@Override
@Programmatic
@@ -103,7 +90,7 @@ public List<ReplayableCommand> getPendingOrFailed() {
@NonNull Stream<ReplayableCommand> streamPendingOrFailed() {
return commandLogEntryRepository().findForegroundSinceTimestampAndWithReplayPendingOrFailed(baseline).stream()
- .filter(this::isReplayable)
+ .filter(this::isDoOp)
.map(entry -> new ReplayableCommand(
entry.getInteractionId(),
replayContext));
@@ -123,7 +110,7 @@ long sizePendingOrFailed() {
)
public List<ReplayableCommand> getSucceededOrExcluded() {
return commandLogEntryRepository().findSinceAndWithReplayOkOrExcluded(baseline).stream()
- .filter(this::isReplayable)
+ .filter(this::isDoOp)
.map(entry->new ReplayableCommand(
entry.getInteractionId(),
replayContext))
@@ -132,8 +119,8 @@ public List<ReplayableCommand> getSucceededOrExcluded() {
// -- HELPER
- private boolean isReplayable(final CommandLogEntry entry) {
- return ReplayableCommandEligibility.isReplayable(entry, replayContext.specificationLoader());
+ private boolean isDoOp(final CommandLogEntry entry) {
+ return ReplayableCommand.Util.isDoOp(entry, replayContext.specificationLoader());
}
private CommandLogEntryRepository commandLogEntryRepository() {
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
index d11d9a376fb..f26ba5ffe35 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
@@ -31,6 +31,7 @@
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.causeway.applib.Identifier;
import org.apache.causeway.applib.ViewModel;
import org.apache.causeway.applib.annotation.Collection;
import org.apache.causeway.applib.annotation.CollectionLayout;
@@ -42,6 +43,7 @@
import org.apache.causeway.applib.annotation.Programmatic;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.SemanticsOf;
import org.apache.causeway.applib.annotation.Where;
import org.apache.causeway.applib.jaxb.JavaTimeXMLGregorianCalendarMarshalling;
import org.apache.causeway.applib.services.bookmark.Bookmark;
@@ -56,6 +58,9 @@
import org.apache.causeway.commons.io.JsonUtils;
import org.apache.causeway.commons.io.TextUtils;
import org.apache.causeway.commons.io.YamlUtils;
+import org.apache.causeway.core.metamodel.facets.actions.action.invocation.IdentifierUtil;
+import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
+import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
import org.apache.causeway.extensions.commandlog.applib.CausewayModuleExtCommandLogApplib;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
import org.apache.causeway.extensions.commandlog.applib.dom.ReplayState;
@@ -76,6 +81,7 @@
import lombok.Value;
import lombok.experimental.Accessors;
+import lombok.experimental.UtilityClass;
import lombok.extern.log4j.Log4j2;
/**
@@ -662,7 +668,7 @@ private Optional<CommandLogEntry> previousCommandLogEntry(final Timestamp timest
return replayContext.commandLogEntryRepository()
.findForegroundBeforeTimestamp(timestamp, null)
.stream()
- .filter(this::isReplayable)
+ .filter(this::isDoOp)
.findFirst();
}
@@ -671,12 +677,12 @@ private Optional<CommandLogEntry> nextCommandLogEntry(final Timestamp timestamp)
.findForegroundSinceTimestamp(timestamp, null)
.stream()
.filter(entry -> !interactionId.equals(entry.getInteractionId()))
- .filter(this::isReplayable)
+ .filter(this::isDoOp)
.findFirst();
}
- private boolean isReplayable(final CommandLogEntry entry) {
- return ReplayableCommandEligibility.isReplayable(entry, replayContext.specificationLoader());
+ private boolean isDoOp(final CommandLogEntry entry) {
+ return Util.isDoOp(entry, replayContext.specificationLoader());
}
// -- HELPER
@@ -865,4 +871,51 @@ private void notifyReplayResult(
}
@Inject BookmarkService bookmarkService;
+
+ @UtilityClass
+ static class Util {
+
+ boolean isDoOp(
+ final CommandLogEntry entry,
+ final SpecificationLoader specificationLoader) {
+ if (entry == null) {
+ return false;
+ }
+ if (!isSafeAction(entry, specificationLoader)) {
+ return true;
+ }
+ return entry.getResult() != null;
+ }
+
+ private boolean isSafeAction(
+ final CommandLogEntry entry,
+ final SpecificationLoader specificationLoader) {
+ if (specificationLoader == null
+ || entry.getCommandDto() == null
+ || !(entry.getCommandDto().getMember() instanceof ActionDto)) {
+ return false;
+ }
+ return Optional.ofNullable(entry.getLogicalMemberIdentifier())
+ .flatMap(logicalMemberIdentifier -> safeActionSemantics(specificationLoader, logicalMemberIdentifier))
+ .orElse(false);
+ }
+
+ private Optional<Boolean> safeActionSemantics(
+ final SpecificationLoader specificationLoader,
+ final String logicalMemberIdentifier) {
+ try {
+ final var identifier = IdentifierUtil.memberIdentifierFor(
+ specificationLoader,
+ Identifier.Type.ACTION,
+ logicalMemberIdentifier);
+ return specificationLoader.loadFeature(identifier)
+ .filter(ObjectAction.class::isInstance)
+ .map(ObjectAction.class::cast)
+ .map(ObjectAction::getSemantics)
+ .map(SemanticsOf::isSafeInNature);
+ } catch (final RuntimeException ex) {
+ return Optional.empty();
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandEligibility.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandEligibility.java
deleted file mode 100644
index ddd75639ea0..00000000000
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandEligibility.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.causeway.extensions.commandlog.applib.dom.replay;
-
-import java.util.Optional;
-
-import org.apache.causeway.applib.Identifier;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.core.metamodel.facets.actions.action.invocation.IdentifierUtil;
-import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
-import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
-import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
-import org.apache.causeway.schema.cmd.v2.ActionDto;
-
-import lombok.experimental.UtilityClass;
-
-@UtilityClass
-class ReplayableCommandEligibility {
-
- boolean isReplayable(
- final CommandLogEntry entry,
- final SpecificationLoader specificationLoader) {
- if (entry == null) {
- return false;
- }
- if (!isSafeAction(entry, specificationLoader)) {
- return true;
- }
- return entry.getResult() != null;
- }
-
- private boolean isSafeAction(
- final CommandLogEntry entry,
- final SpecificationLoader specificationLoader) {
- if (specificationLoader == null
- || entry.getCommandDto() == null
- || !(entry.getCommandDto().getMember() instanceof ActionDto)) {
- return false;
- }
- return Optional.ofNullable(entry.getLogicalMemberIdentifier())
- .flatMap(logicalMemberIdentifier -> safeActionSemantics(specificationLoader, logicalMemberIdentifier))
- .orElse(false);
- }
-
- private Optional<Boolean> safeActionSemantics(
- final SpecificationLoader specificationLoader,
- final String logicalMemberIdentifier) {
- try {
- final var identifier = IdentifierUtil.memberIdentifierFor(
- specificationLoader,
- Identifier.Type.ACTION,
- logicalMemberIdentifier);
- return specificationLoader.loadFeature(identifier)
- .filter(ObjectAction.class::isInstance)
- .map(ObjectAction.class::cast)
- .map(ObjectAction::getSemantics)
- .map(SemanticsOf::isSafeInNature);
- } catch (final RuntimeException ex) {
- return Optional.empty();
- }
- }
-}
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandEligibilityTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandUtilTest.java
similarity index 88%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandEligibilityTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandUtilTest.java
index 6f0dbdf7999..075da389593 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandEligibilityTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandUtilTest.java
@@ -31,19 +31,17 @@
import org.apache.causeway.applib.Identifier;
import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.id.LogicalType;
import org.apache.causeway.applib.services.bookmark.Bookmark;
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
-import org.apache.causeway.extensions.commandlog.applib.dom.ReplayState;
import org.apache.causeway.schema.cmd.v2.ActionDto;
import org.apache.causeway.schema.cmd.v2.CommandDto;
import org.apache.causeway.schema.cmd.v2.PropertyDto;
import org.apache.causeway.schema.common.v2.InteractionType;
-class ReplayableCommandEligibilityTest {
+class ReplayableCommandUtilTest {
private static final Bookmark RESULT = Bookmark.forLogicalTypeNameAndIdentifier("demo.Customer", "1");
@@ -51,7 +49,7 @@ class ReplayableCommandEligibilityTest {
void state_changing_property_command_remains_replayable_without_result() {
final var entry = propertyEntry(null);
- final var replayable = ReplayableCommandEligibility.isReplayable(entry, safeActionSpecificationLoader());
+ final var replayable = ReplayableCommand.Util.isDoOp(entry, safeActionSpecificationLoader());
assertThat(replayable).isTrue();
}
@@ -60,7 +58,7 @@ void state_changing_property_command_remains_replayable_without_result() {
void safe_action_with_single_result_is_replayable() {
final var entry = actionEntry(RESULT);
- final var replayable = ReplayableCommandEligibility.isReplayable(entry, safeActionSpecificationLoader());
+ final var replayable = ReplayableCommand.Util.isDoOp(entry, safeActionSpecificationLoader());
assertThat(replayable).isTrue();
}
@@ -69,7 +67,7 @@ void safe_action_with_single_result_is_replayable() {
void safe_action_without_result_is_not_replayable_and_is_not_mutated() {
final var entry = actionEntry(null);
- final var replayable = ReplayableCommandEligibility.isReplayable(entry, safeActionSpecificationLoader());
+ final var replayable = ReplayableCommand.Util.isDoOp(entry, safeActionSpecificationLoader());
assertThat(replayable).isFalse();
verify(entry, never()).setReplayState(any());
@@ -80,7 +78,7 @@ void safe_action_without_result_is_not_replayable_and_is_not_mutated() {
void non_safe_action_without_result_remains_replayable() {
final var entry = actionEntry(null);
- final var replayable = ReplayableCommandEligibility.isReplayable(entry, nonSafeActionSpecificationLoader());
+ final var replayable = ReplayableCommand.Util.isDoOp(entry, nonSafeActionSpecificationLoader());
assertThat(replayable).isTrue();
}
@@ -90,7 +88,7 @@ void unresolved_action_semantics_defaults_to_replayable() {
final var entry = actionEntry(null);
final var specificationLoader = mock(SpecificationLoader.class);
- final var replayable = ReplayableCommandEligibility.isReplayable(entry, specificationLoader);
+ final var replayable = ReplayableCommand.Util.isDoOp(entry, specificationLoader);
assertThat(replayable).isTrue();
}
(causeway) 09/11: CAUSEWAY-4039: reworks ReplayableCommand to use ReplayableCommandParticipantTracker
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit ed75b669bf9d2b7a1767dc56992dbf9d9dd50aff
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 19 07:11:05 2026 +0100
CAUSEWAY-4039: reworks ReplayableCommand to use ReplayableCommandParticipantTracker
---
.../applib/dom/replay/CommandManagerExport.java | 24 ++++------------
.../applib/dom/replay/ReplayableCommand.java | 33 ++++++----------------
.../ReplayableCommandParticipantTracker.java | 31 ++++++++++++++++++++
3 files changed, 45 insertions(+), 43 deletions(-)
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
index af57a5c2c78..e495401650f 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
@@ -36,7 +36,6 @@
import org.apache.causeway.applib.annotation.Introspection;
import org.apache.causeway.applib.annotation.Programmatic;
import org.apache.causeway.applib.services.bookmark.Bookmark;
-import org.apache.causeway.applib.services.scratchpad.Scratchpad;
import org.apache.causeway.extensions.commandlog.applib.CausewayModuleExtCommandLogApplib;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepository;
@@ -89,7 +88,7 @@ public CommandManagerExport withLimit(final int limit) {
describedAs = "Commands since the baseline"
)
public List<ReplayableCommand> getCommands() {
- putCurrentExportManagerOnScratchpad();
+ ReplayableCommandParticipantTracker.putTrackerOnScratchpad(this, replayContext.scratchpad());
return activeCommandLogEntries().stream()
.filter(this::isDoOp)
.map(this::replayableCommandInExportManagerContext)
@@ -144,10 +143,11 @@ Optional<CommandExportKnownTargetValidator.Failure> validateKnownTargets(
: Optional.empty();
}
+ @Override
@Programmatic
- Boolean isKnownParticipants(final CommandLogEntry commandLogEntry) {
+ public boolean isKnownParticipants(final CommandLogEntry commandLogEntry) {
if (commandLogEntry == null || !isRecordingSupportEnabled()) {
- return null;
+ return false;
}
return validator().validateParticipants(commandLogEntry, knownParticipantsAsOf(commandLogEntry.getInteractionId())).isEmpty();
}
@@ -212,8 +212,7 @@ private ReplayableCommand replayableCommandInExportManagerContext(final CommandL
return replayContext.scratchpad() != null
? new ReplayableCommand(
entry.getInteractionId(),
- replayContext,
- replayContext.scratchpad())
+ replayContext)
: new ReplayableCommand(
entry.getInteractionId(),
replayContext,
@@ -231,19 +230,6 @@ private static boolean isExcludedCommand(final CommandLogEntry entry) {
return entry != null && entry.getReplayState() == ReplayState.EXCLUDED;
}
- private void putCurrentExportManagerOnScratchpad() {
- if (replayContext.scratchpad() != null) {
- replayContext.scratchpad().put(SCRATCHPAD_KEY, this);
- }
- }
-
- static Optional<CommandManagerExport> currentExportManager(final Scratchpad scratchpad) {
- return Optional.ofNullable(scratchpad)
- .map(sp -> sp.get(SCRATCHPAD_KEY))
- .filter(CommandManagerExport.class::isInstance)
- .map(CommandManagerExport.class::cast);
- }
-
// -- HELPER
private CommandLogEntryRepository commandLogEntryRepository() {
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
index 1c288190962..95d065b505c 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
@@ -115,7 +115,7 @@ public ReplayContext replayContext() {
private final ObjectReference<CommandRecord> recordRef;
- private final CommandManagerExport commandExportManager;
+ private final ReplayableCommandParticipantTracker replayableCommandParticipantTracker;
public static final String LOGICAL_TYPE_NAME = CausewayModuleExtCommandLogApplib.NAMESPACE + ".ReplayableCommand";
@@ -181,26 +181,11 @@ public ReplayableCommand(
this(UUID.fromString(memento), replayContext);
}
- @Inject
- public ReplayableCommand(
- final String memento,
- final ReplayContext replayContext,
- final Scratchpad scratchpad) {
- this(UUID.fromString(memento), replayContext, scratchpad);
- }
-
ReplayableCommand(
final UUID interactionId,
final ReplayContext replayContext) {
- this(interactionId, replayContext, new ObjectReference<>(null), null);
- }
-
- ReplayableCommand(
- final UUID interactionId,
- final ReplayContext replayContext,
- final Scratchpad scratchpad) {
this(interactionId, replayContext, new ObjectReference<>(null),
- CommandManagerExport.currentExportManager(scratchpad).orElse(null));
+ ReplayableCommandParticipantTracker.current(replayContext.scratchpad()).orElse(null));
}
ReplayableCommand(
@@ -214,11 +199,11 @@ public ReplayableCommand(
final UUID interactionId,
final ReplayContext replayContext,
final ObjectReference<CommandRecord> recordRef,
- final CommandManagerExport commandExportManager) {
+ final ReplayableCommandParticipantTracker replayableCommandParticipantTracker) {
this.interactionId = interactionId;
this.replayContext = replayContext;
this.recordRef = recordRef;
- this.commandExportManager = commandExportManager;
+ this.replayableCommandParticipantTracker = replayableCommandParticipantTracker;
}
@ObjectSupport
@@ -343,13 +328,13 @@ public boolean getHasResult() {
describedAs = "Whether this command uses only known participants as target or action params. This determines whether the command is exportable/replayable in context of all commands since a baseline.",
hidden = Where.OBJECT_FORMS
)
- public Boolean isKnownParticipants() {
- if (commandExportManager == null) {
- return null;
+ public boolean isKnownParticipants() {
+ if (replayableCommandParticipantTracker == null) {
+ return false;
}
return commandLogEntry()
- .map(commandExportManager::isKnownParticipants)
- .orElse(null);
+ .map(replayableCommandParticipantTracker::isKnownParticipants)
+ .orElse(false);
}
@Property
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java
index 2493fd5a325..0f2e82870d5 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java
@@ -1,4 +1,35 @@
package org.apache.causeway.extensions.commandlog.applib.dom.replay;
+import java.util.Optional;
+
+import org.apache.causeway.applib.annotation.Programmatic;
+import org.apache.causeway.applib.services.scratchpad.Scratchpad;
+import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
+
+/**
+ * Keeps track of the {@link ReplayableCommandParticipant}s that have been encountered from the baseline.
+ *
+ * <p>
+ * The {@link ReplayableCommand} uses this to determine if it is {@link ReplayableCommand#isKnownParticipants() exportable/replayable}.
+ * </p>
+ */
public interface ReplayableCommandParticipantTracker {
+
+ static void putTrackerOnScratchpad(ReplayableCommandParticipantTracker value, Scratchpad scratchpad) {
+ if (scratchpad != null) {
+ scratchpad.put(CommandManagerExport.SCRATCHPAD_KEY, value);
+ }
+ }
+
+ static Optional<ReplayableCommandParticipantTracker> current(final Scratchpad scratchpad) {
+ return Optional.ofNullable(scratchpad)
+ .map(sp -> sp.get(CommandManagerExport.SCRATCHPAD_KEY))
+ .filter(ReplayableCommandParticipantTracker.class::isInstance)
+ .map(ReplayableCommandParticipantTracker.class::cast);
+ }
+
+ @Programmatic
+ boolean isKnownParticipants(final CommandLogEntry commandLogEntry);
+
+
}
(causeway) 08/11: CAUSEWAY-4039: renames ReplayableCommand#isExportable to isKnownParticipants
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit d78f7ff786fc55761b6e569def88a59eea140f9b
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 19 06:55:14 2026 +0100
CAUSEWAY-4039: renames ReplayableCommand#isExportable to isKnownParticipants
---
.../applib/dom/replay/CommandManagerExport.java | 2 +-
.../CommandManagerExport_excludeCommands.java | 2 +-
.../CommandManagerExport_exportSelected.java | 2 +-
.../ReplayableCommand.columnOrder.fallback.txt | 2 +-
.../applib/dom/replay/ReplayableCommand.java | 10 +++-------
.../CommandExportManagerSelectedTestExport.java | 22 +++++++++++-----------
.../dom/replay/ReplayableCommandMappingTest.java | 2 +-
7 files changed, 19 insertions(+), 23 deletions(-)
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
index c46a5b56b57..af57a5c2c78 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
@@ -145,7 +145,7 @@ Optional<CommandExportKnownTargetValidator.Failure> validateKnownTargets(
}
@Programmatic
- Boolean isExportable(final CommandLogEntry commandLogEntry) {
+ Boolean isKnownParticipants(final CommandLogEntry commandLogEntry) {
if (commandLogEntry == null || !isRecordingSupportEnabled()) {
return null;
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_excludeCommands.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_excludeCommands.java
index de98b893541..65d61cd0315 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_excludeCommands.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_excludeCommands.java
@@ -92,7 +92,7 @@ public String validateSelected(final List<ReplayableCommand> selected) {
@MemberSupport
public List<ReplayableCommand> defaultSelected() {
return commandExportManager.getCommands().stream()
- .filter(command -> Boolean.FALSE.equals(command.getExportable()))
+ .filter(command -> Boolean.FALSE.equals(command.isKnownParticipants()))
.collect(Collectors.toList());
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
index fbbbaecba81..9fd6b306390 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
@@ -107,7 +107,7 @@ public boolean defaultFilenameTimestamp() {
@MemberSupport
public List<ReplayableCommand> defaultSelected() {
return commandExportManager.getCommands().stream()
- .filter(command -> Boolean.TRUE.equals(command.getExportable()))
+ .filter(command -> Boolean.TRUE.equals(command.isKnownParticipants()))
.collect(Collectors.toList());
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.columnOrder.fallback.txt b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.columnOrder.fallback.txt
index e78a9abe4d7..ad3b55fd9dd 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.columnOrder.fallback.txt
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.columnOrder.fallback.txt
@@ -4,4 +4,4 @@ target
member
replayState
hasResult
-exportable
\ No newline at end of file
+knownParticipants
\ No newline at end of file
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
index f26ba5ffe35..1c288190962 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
@@ -114,10 +114,6 @@ public ReplayContext replayContext() {
private final ObjectReference<CommandRecord> recordRef;
- @Programmatic
- public ObjectReference<CommandRecord> recordRef() {
- return recordRef;
- }
private final CommandManagerExport commandExportManager;
@@ -344,15 +340,15 @@ public boolean getHasResult() {
@PropertyLayout(
sequence = "4.2",
fieldSetId = "details",
- describedAs = "Whether this command is exportable from the current command export manager context.",
+ describedAs = "Whether this command uses only known participants as target or action params. This determines whether the command is exportable/replayable in context of all commands since a baseline.",
hidden = Where.OBJECT_FORMS
)
- public Boolean getExportable() {
+ public Boolean isKnownParticipants() {
if (commandExportManager == null) {
return null;
}
return commandLogEntry()
- .map(commandExportManager::isExportable)
+ .map(commandExportManager::isKnownParticipants)
.orElse(null);
}
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerSelectedTestExport.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerSelectedTestExport.java
index cf216f24a8a..2f6065148d0 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerSelectedTestExport.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerSelectedTestExport.java
@@ -190,7 +190,7 @@ void act_guards_unknown_action_reference_parameter_when_ui_validation_is_bypasse
void exportable_is_true_for_first_domain_service_target_in_export_manager_context() {
final var commands = exportManagerCommandsWith(entry(T1, MENU_SERVICE));
- assertThat(commands.get(0).getExportable()).isTrue();
+ assertThat(commands.get(0).isKnownParticipants()).isTrue();
}
@Test
@@ -199,21 +199,21 @@ void exportable_is_true_for_command_with_known_target_in_export_manager_context(
final var actionOnFoundCustomer = entry(Timestamp.from(Instant.parse("2026-06-07T10:00:02Z")), CUSTOMER, null);
final var commands = exportManagerCommandsWith(finder, actionOnFoundCustomer);
- assertThat(commands.get(1).getExportable()).isTrue();
+ assertThat(commands.get(1).isKnownParticipants()).isTrue();
}
@Test
void exportable_is_false_for_command_with_unknown_target_in_export_manager_context() {
final var commands = exportManagerCommandsWith(entry(T1, CUSTOMER));
- assertThat(commands.get(0).getExportable()).isFalse();
+ assertThat(commands.get(0).isKnownParticipants()).isFalse();
}
@Test
void exportable_is_false_for_property_edit_with_unknown_target_in_export_manager_context() {
final var commands = exportManagerCommandsWith(propertyEditEntry(T1, CUSTOMER));
- assertThat(commands.get(0).getExportable()).isFalse();
+ assertThat(commands.get(0).isKnownParticipants()).isFalse();
}
@Test
@@ -222,7 +222,7 @@ void exportable_is_false_when_required_result_is_later_in_export_order() {
final var laterFinder = entry(Timestamp.from(Instant.parse("2026-06-07T10:00:02Z")), MENU_SERVICE, CUSTOMER);
final var commands = exportManagerCommandsWith(actionOnCustomer, laterFinder);
- assertThat(commands.get(0).getExportable()).isFalse();
+ assertThat(commands.get(0).isKnownParticipants()).isFalse();
}
@Test
@@ -232,16 +232,16 @@ void earlier_non_exportable_command_does_not_make_later_known_command_non_export
final var actionOnFoundCustomer = entry(Timestamp.from(Instant.parse("2026-06-07T10:00:03Z")), CUSTOMER, null);
final var commands = exportManagerCommandsWith(unknownCustomerAction, finder, actionOnFoundCustomer);
- assertThat(commands.get(0).getExportable()).isFalse();
- assertThat(commands.get(1).getExportable()).isTrue();
- assertThat(commands.get(2).getExportable()).isTrue();
+ assertThat(commands.get(0).isKnownParticipants()).isFalse();
+ assertThat(commands.get(1).isKnownParticipants()).isTrue();
+ assertThat(commands.get(2).isKnownParticipants()).isTrue();
}
@Test
void exportable_is_null_when_recording_support_is_disabled() {
final var commands = exportManagerCommandsWithRecordingSupport(RecordingSupport.DISABLED, entry(T1, CUSTOMER));
- assertThat(commands.get(0).getExportable()).isNull();
+ assertThat(commands.get(0).isKnownParticipants()).isNull();
}
@Test
@@ -253,7 +253,7 @@ void exportable_is_null_outside_export_manager_context() {
final var command = new ReplayableCommand(entry.getInteractionId(), replayContext);
- assertThat(command.getExportable()).isNull();
+ assertThat(command.isKnownParticipants()).isNull();
}
@Test
@@ -261,7 +261,7 @@ void exportable_computation_does_not_modify_replay_state() {
final var entry = entry(T1, CUSTOMER);
final var commands = exportManagerCommandsWith(entry);
- assertThat(commands.get(0).getExportable()).isFalse();
+ assertThat(commands.get(0).isKnownParticipants()).isFalse();
verify(entry, org.mockito.Mockito.never()).setReplayState(org.mockito.Mockito.any());
}
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java
index 3446b028c59..37deff5e525 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java
@@ -856,7 +856,7 @@ void has_result_does_not_require_result_bookmark_to_resolve_locally() {
void has_result_property_is_ordered_before_exportability_in_tables() throws Exception {
PropertyLayout hasResultLayout = ReplayableCommand.class.getMethod("getHasResult")
.getAnnotation(PropertyLayout.class);
- PropertyLayout exportableLayout = ReplayableCommand.class.getMethod("getExportable")
+ PropertyLayout exportableLayout = ReplayableCommand.class.getMethod("isKnownParticipants")
.getAnnotation(PropertyLayout.class);
assertThat(hasResultLayout.sequence()).isEqualTo("4.1");
(causeway) 06/11: CAUSEWAY-4039: more consolidation into superclass
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 5bc20436423f08f0985d1f91de5c9ea366d76fff
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jun 18 19:20:53 2026 +0100
CAUSEWAY-4039: more consolidation into superclass
---
.../applib/CausewayModuleExtCommandLogApplib.java | 4 ++--
.../extensions/commandlog/applib/app/CommandLogMenu.java | 11 ++++++++---
.../commandlog/applib/dom/replay/CommandManagerExport.java | 2 +-
.../commandlog/applib/dom/replay/CommandManagerReplay.java | 2 +-
...erExport_changeLimit.java => HasLimit_changeLimit.java} | 14 +++++++-------
5 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java
index dee0fde0360..059faa122b0 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java
@@ -42,7 +42,7 @@
import org.apache.causeway.extensions.commandlog.applib.dom.mixins.CommandLogEntry_siblingCommands;
import org.apache.causeway.extensions.commandlog.applib.dom.mixins.CommandReplayResultMapping_delete;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_changeLimit;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.HasLimit_changeLimit;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_deleteCommands;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_nextPage;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_previousPage;
@@ -120,7 +120,7 @@
CommandManagerExport_unexcludeCommands.class,
CommandManagerExport_previousPage.class,
CommandManagerExport_nextPage.class,
- CommandManagerExport_changeLimit.class,
+ HasLimit_changeLimit.class,
CommandManagerReplay_importCommands.class,
CommandManagerReplay_replayOrRetryNext.class,
CommandManagerReplay_replayOrRetrySelected.class,
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java
index 50d937a5e67..950654490ac 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java
@@ -50,8 +50,9 @@
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepository;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandReplayResultMapping;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandReplayResultMappingRepository;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerAbstract;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_changeLimit;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.HasLimit_changeLimit;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay_importCommands;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.ReplayContext;
@@ -315,7 +316,7 @@ public DomainEvent() { }
@ParameterLayout(describedAs = "Limits the commands shown; only commands since this timestamp are available for export. Set to a time immediately before the commands to be replayed.")
final java.sql.Timestamp since
) {
- return new CommandManagerExport(new CommandManagerExport.State(since, CommandManagerExport_changeLimit.MAX_LIMIT), replayContext);
+ return new CommandManagerExport(stateFor(since), replayContext);
}
@MemberSupport public java.sql.Timestamp defaultSince() {
@@ -345,7 +346,7 @@ public DomainEvent() { }
final Blob commandsYaml
) {
final var now = clockService.getClock().nowAsJavaSqlTimestamp();
- final var commandReplayManager = new CommandManagerReplay(now, replayContext);
+ final var commandReplayManager = new CommandManagerReplay(stateFor(now), replayContext);
return Optional.ofNullable(commandsYaml)
.map(yaml -> importCommands(commandReplayManager).act(yaml, true))
.orElse(commandReplayManager);
@@ -356,6 +357,10 @@ private CommandManagerReplay_importCommands importCommands(CommandManagerReplay
}
}
+ private static CommandManagerAbstract.@NonNull State stateFor(Timestamp timestamp) {
+ return new CommandManagerAbstract.State(timestamp, HasLimit_changeLimit.MAX_LIMIT);
+ }
+
private static @NonNull Timestamp truncatedTo(Timestamp now, ChronoUnit chronoUnit) {
return Timestamp.from(now.toInstant().truncatedTo(chronoUnit));
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
index c347ee48332..141769b17fc 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
@@ -70,7 +70,7 @@ public CommandManagerExport(
this(State.parseMemento(memento, new State(replayContext.clockService().getClock().nowAsJavaSqlTimestamp(), 50)), replayContext);
}
- CommandManagerExport(
+ public CommandManagerExport(
final State state,
final ReplayContext replayContext) {
super(state, replayContext);
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
index 026fd082dc6..b330f65d72a 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
@@ -66,7 +66,7 @@ public CommandManagerReplay(
this(State.parseMemento(memento, new State(replayContext.clockService().getClock().nowAsJavaSqlTimestamp(), 50)), replayContext);
}
- CommandManagerReplay(
+ public CommandManagerReplay(
final State state,
final ReplayContext replayContext) {
super(state, replayContext);
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_changeLimit.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/HasLimit_changeLimit.java
similarity index 68%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_changeLimit.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/HasLimit_changeLimit.java
index c4191b307ab..ab386a285a0 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_changeLimit.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/HasLimit_changeLimit.java
@@ -7,7 +7,7 @@
@Action(
semantics = SemanticsOf.SAFE,
commandPublishing = Publishing.DISABLED,
- domainEvent = CommandManagerExport_changeLimit.DomainEvent.class,
+ domainEvent = HasLimit_changeLimit.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -15,23 +15,23 @@
promptStyle = PromptStyle.INLINE_AS_IF_EDIT
)
@RequiredArgsConstructor
-public class CommandManagerExport_changeLimit {
+public class HasLimit_changeLimit {
public static int MAX_LIMIT = 100;
- public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<CommandManagerExport_changeLimit> { }
+ public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<HasLimit_changeLimit> { }
- private final CommandManagerExport commandExportManager;
+ private final HasLimit hasLimit;
@MemberSupport
- public CommandManagerExport act(int newLimit) {
- return commandExportManager.withLimit(newLimit);
+ public HasLimit act(int newLimit) {
+ return hasLimit.withLimit(newLimit);
}
@MemberSupport
public int defaultNewLimit() {
- return commandExportManager.getLimit();
+ return hasLimit.getLimit();
}
@MemberSupport
(causeway) 02/11: CAUSEWAY-4039: renames CommandExport/ReplayManager, introduces stub abstract superclass
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 8c715d26ee224693436cbec964523edf1f05ea28
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jun 18 18:55:09 2026 +0100
CAUSEWAY-4039: renames CommandExport/ReplayManager, introduces stub abstract superclass
---
.../applib/CausewayModuleExtCommandLogApplib.java | 68 +++++++++++-----------
.../commandlog/applib/app/CommandLogMenu.java | 20 +++----
.../applib/dom/replay/CommandManagerAbstract.java | 27 +++++++++
...xportManager.java => CommandManagerExport.java} | 26 ++++-----
...ml => CommandManagerExport.layout.fallback.xml} | 0
...va => CommandManagerExportMovementSupport.java} | 11 ++--
....java => CommandManagerExport_changeLimit.java} | 10 ++--
...va => CommandManagerExport_deleteCommands.java} | 12 ++--
...a => CommandManagerExport_excludeCommands.java} | 12 ++--
...va => CommandManagerExport_exportSelected.java} | 10 ++--
... => CommandManagerExport_moveCommandsDown.java} | 18 +++---
...va => CommandManagerExport_moveCommandsUp.java} | 18 +++---
...age.java => CommandManagerExport_nextPage.java} | 14 ++---
...java => CommandManagerExport_previousPage.java} | 14 ++---
...=> CommandManagerExport_unexcludeCommands.java} | 12 ++--
...eplayManager.java => CommandManagerReplay.java} | 13 ++---
...ml => CommandManagerReplay.layout.fallback.xml} | 0
...nagerReplay_deleteSelectedPendingOrFailed.java} | 10 ++--
...rReplay_deleteSelectedSucceededOrExcluded.java} | 10 ++--
...ndManagerReplay_excludeSelectedFromReplay.java} | 10 ++--
...va => CommandManagerReplay_importCommands.java} | 14 ++---
...=> CommandManagerReplay_replayOrRetryNext.java} | 10 ++--
...ommandManagerReplay_replayOrRetrySelected.java} | 10 ++--
.../applib/dom/replay/ReplayableCommand.java | 6 +-
.../CausewayModuleExtCommandLogApplibTest.java | 20 +++----
...=> CommandExportManagerSelectedTestExport.java} | 16 ++---
....java => CommandManagerExportCommandsTest.java} | 10 ++--
...=> CommandManagerExportDeleteCommandsTest.java} | 16 ++---
...> CommandManagerExportExcludeCommandsTest.java} | 16 ++---
...a => CommandManagerExportMoveCommandsTest.java} | 24 ++++----
...est.java => CommandManagerExportStateTest.java} | 4 +-
...CommandManagerExportUnexcludeCommandsTest.java} | 16 ++---
....java => CommandManagerReplayCommandsTest.java} | 18 +++---
... CommandManager_Replay_importCommandsTest.java} | 4 +-
.../dom/replay/ReplayableCommandMappingTest.java | 4 +-
35 files changed, 264 insertions(+), 239 deletions(-)
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java
index 2a8a7213633..f7a08bac1ef 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplib.java
@@ -36,26 +36,26 @@
import org.apache.causeway.extensions.commandlog.applib.dom.mixins.CommandLogEntry_openResultObject;
import org.apache.causeway.extensions.commandlog.applib.dom.mixins.CommandLogEntry_siblingCommands;
import org.apache.causeway.extensions.commandlog.applib.dom.mixins.CommandReplayResultMapping_delete;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_changeLimit;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_deleteCommands;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_nextPage;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_previousPage;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandReplayManager_replayOrRetryNext;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_changeLimit;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_deleteCommands;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_nextPage;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_previousPage;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay_replayOrRetryNext;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.HasBaseline_changeBaseline;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_excludeCommands;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_exportSelected;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_moveCommandsDown;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_moveCommandsUp;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_unexcludeCommands;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_excludeCommands;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_exportSelected;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_moveCommandsDown;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_moveCommandsUp;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_unexcludeCommands;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.HasBaseline_nextHour;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.HasBaseline_previousHour;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandReplayManager;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandReplayManager_deleteSelectedPendingOrFailed;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandReplayManager_deleteSelectedSucceededOrExcluded;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandReplayManager_excludeSelectedFromReplay;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandReplayManager_importCommands;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandReplayManager_replayOrRetrySelected;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay_deleteSelectedPendingOrFailed;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay_deleteSelectedSucceededOrExcluded;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay_excludeSelectedFromReplay;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay_importCommands;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay_replayOrRetrySelected;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.ReplayContext;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.ReplayableCommand_delete;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.ReplayableCommand_excludeFromReplay;
@@ -84,8 +84,8 @@
CommandLogMenu.class,
// viewmodels
- CommandExportManager.class,
- CommandReplayManager.class,
+ CommandManagerExport.class,
+ CommandManagerReplay.class,
// mixins
HasInteractionId_commandLogEntry.class,
@@ -106,21 +106,21 @@
HasBaseline_previousHour.class,
HasBaseline_previousHour.class,
HasBaseline_nextHour.class,
- CommandExportManager_exportSelected.class,
- CommandExportManager_excludeCommands.class,
- CommandExportManager_moveCommandsUp.class,
- CommandExportManager_moveCommandsDown.class,
- CommandExportManager_deleteCommands.class,
- CommandExportManager_unexcludeCommands.class,
- CommandExportManager_previousPage.class,
- CommandExportManager_nextPage.class,
- CommandExportManager_changeLimit.class,
- CommandReplayManager_importCommands.class,
- CommandReplayManager_replayOrRetryNext.class,
- CommandReplayManager_replayOrRetrySelected.class,
- CommandReplayManager_excludeSelectedFromReplay.class,
- CommandReplayManager_deleteSelectedSucceededOrExcluded.class,
- CommandReplayManager_deleteSelectedPendingOrFailed.class,
+ CommandManagerExport_exportSelected.class,
+ CommandManagerExport_excludeCommands.class,
+ CommandManagerExport_moveCommandsUp.class,
+ CommandManagerExport_moveCommandsDown.class,
+ CommandManagerExport_deleteCommands.class,
+ CommandManagerExport_unexcludeCommands.class,
+ CommandManagerExport_previousPage.class,
+ CommandManagerExport_nextPage.class,
+ CommandManagerExport_changeLimit.class,
+ CommandManagerReplay_importCommands.class,
+ CommandManagerReplay_replayOrRetryNext.class,
+ CommandManagerReplay_replayOrRetrySelected.class,
+ CommandManagerReplay_excludeSelectedFromReplay.class,
+ CommandManagerReplay_deleteSelectedSucceededOrExcluded.class,
+ CommandManagerReplay_deleteSelectedPendingOrFailed.class,
// @Component's
RunBackgroundCommandsJob.class,
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java
index e4b3548506c..50d937a5e67 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java
@@ -50,10 +50,10 @@
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepository;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandReplayResultMapping;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandReplayResultMappingRepository;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_changeLimit;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandReplayManager;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandReplayManager_importCommands;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_changeLimit;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerReplay_importCommands;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.ReplayContext;
import org.jspecify.annotations.NonNull;
import org.springframework.lang.Nullable;
@@ -311,11 +311,11 @@ public class DomainEvent extends ActionDomainEvent<exportManager> {
public DomainEvent() { }
}
- @MemberSupport public CommandExportManager act(
+ @MemberSupport public CommandManagerExport act(
@ParameterLayout(describedAs = "Limits the commands shown; only commands since this timestamp are available for export. Set to a time immediately before the commands to be replayed.")
final java.sql.Timestamp since
) {
- return new CommandExportManager(new CommandExportManager.State(since, CommandExportManager_changeLimit.MAX_LIMIT), replayContext);
+ return new CommandManagerExport(new CommandManagerExport.State(since, CommandManagerExport_changeLimit.MAX_LIMIT), replayContext);
}
@MemberSupport public java.sql.Timestamp defaultSince() {
@@ -337,7 +337,7 @@ public class DomainEvent extends ActionDomainEvent<replayManager> {
public DomainEvent() { }
}
- @MemberSupport public CommandReplayManager act(
+ @MemberSupport public CommandManagerReplay act(
@Parameter(
optionality = Optionality.OPTIONAL,
fileAccept = ".yml,.yaml"
@@ -345,14 +345,14 @@ public DomainEvent() { }
final Blob commandsYaml
) {
final var now = clockService.getClock().nowAsJavaSqlTimestamp();
- final var commandReplayManager = new CommandReplayManager(now, replayContext);
+ final var commandReplayManager = new CommandManagerReplay(now, replayContext);
return Optional.ofNullable(commandsYaml)
.map(yaml -> importCommands(commandReplayManager).act(yaml, true))
.orElse(commandReplayManager);
}
- private CommandReplayManager_importCommands importCommands(CommandReplayManager commandReplayManager) {
- return factoryService.mixin(CommandReplayManager_importCommands.class, commandReplayManager);
+ private CommandManagerReplay_importCommands importCommands(CommandManagerReplay commandReplayManager) {
+ return factoryService.mixin(CommandManagerReplay_importCommands.class, commandReplayManager);
}
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
new file mode 100644
index 00000000000..a11fc7dcbeb
--- /dev/null
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
@@ -0,0 +1,27 @@
+/*
+ * 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.causeway.extensions.commandlog.applib.dom.replay;
+
+import org.apache.causeway.applib.ViewModel;
+import org.apache.causeway.applib.services.command.CommandRecordingSuppressed;
+
+public abstract class CommandManagerAbstract implements HasBaseline, CommandRecordingSuppressed {
+
+
+}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
similarity index 94%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
index 5cb4ceada00..48b6c718a07 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
@@ -58,8 +58,8 @@
@DomainObject(introspection = Introspection.ANNOTATION_REQUIRED)
@DomainObjectLayout(cssClassFa = "solid share-from-square")
-@Named(CommandExportManager.LOGICAL_TYPE_NAME)
-public final class CommandExportManager implements ViewModel, HasBaseline, CommandRecordingSuppressed {
+@Named(CommandManagerExport.LOGICAL_TYPE_NAME)
+public final class CommandManagerExport implements ViewModel, HasBaseline, CommandRecordingSuppressed {
public static final String LOGICAL_TYPE_NAME = CausewayModuleExtCommandLogApplib.NAMESPACE + ".CommandExportManager";
static final String SCRATCHPAD_KEY = LOGICAL_TYPE_NAME + "#current";
@@ -75,13 +75,13 @@ public static abstract class ActionDomainEvent<T>
@Inject List<CommandReplayReferenceDataService> commandReplayReferenceDataServices;
@Inject
- public CommandExportManager(
+ public CommandManagerExport(
final String memento,
final ReplayContext replayContext) {
this(State.parseMemento(memento, new State(replayContext.clockService().getClock().nowAsJavaSqlTimestamp(), 50)), replayContext);
}
- public CommandExportManager(
+ public CommandManagerExport(
final State state,
final ReplayContext replayContext) {
this.baseline = state.timestamp;
@@ -105,13 +105,13 @@ public CommandExportManager(
@Override
@Programmatic
- public CommandExportManager withBaseline(final Timestamp baseline) {
- return new CommandExportManager(new State(baseline, this.limit), replayContext);
+ public CommandManagerExport withBaseline(final Timestamp baseline) {
+ return new CommandManagerExport(new State(baseline, this.limit), replayContext);
}
@Programmatic
- public CommandExportManager withLimit(final int limit) {
- return new CommandExportManager(new State(this.baseline, limit), replayContext);
+ public CommandManagerExport withLimit(final int limit) {
+ return new CommandManagerExport(new State(this.baseline, limit), replayContext);
}
// -- COMMANDS
@@ -135,7 +135,7 @@ public List<ReplayableCommand> getCommands() {
)
public List<ReplayableCommand> getExcludedCommands() {
return commandLogEntryRepository().findForegroundSinceTimestamp(baseline, limit).stream()
- .filter(CommandExportManager::isExcludedCommand)
+ .filter(CommandManagerExport::isExcludedCommand)
.filter(this::isReplayable)
.map(entry -> new ReplayableCommand(
entry.getInteractionId(),
@@ -231,7 +231,7 @@ private boolean isExportRoot(final Bookmark bookmark) {
@Programmatic
List<CommandLogEntry> activeCommandLogEntries() {
return commandLogEntryRepository().findForegroundSinceTimestamp(baseline, limit).stream()
- .filter(CommandExportManager::isActiveCommand)
+ .filter(CommandManagerExport::isActiveCommand)
.filter(this::isReplayable)
.collect(Collectors.toList());
}
@@ -269,11 +269,11 @@ private void putCurrentExportManagerOnScratchpad() {
}
}
- static Optional<CommandExportManager> currentExportManager(final Scratchpad scratchpad) {
+ static Optional<CommandManagerExport> currentExportManager(final Scratchpad scratchpad) {
return Optional.ofNullable(scratchpad)
.map(sp -> sp.get(SCRATCHPAD_KEY))
- .filter(CommandExportManager.class::isInstance)
- .map(CommandExportManager.class::cast);
+ .filter(CommandManagerExport.class::isInstance)
+ .map(CommandManagerExport.class::cast);
}
// -- VM STATE
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager.layout.fallback.xml b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.layout.fallback.xml
similarity index 100%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager.layout.fallback.xml
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.layout.fallback.xml
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerMovementSupport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportMovementSupport.java
similarity index 96%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerMovementSupport.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportMovementSupport.java
index cecafcc5296..f98575ce005 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerMovementSupport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportMovementSupport.java
@@ -31,9 +31,8 @@
import org.apache.causeway.applib.util.schema.CommandDtoUtils;
import org.apache.causeway.core.config.CausewayConfiguration;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
-import org.apache.causeway.schema.cmd.v2.CommandDto;
-class CommandExportManagerMovementSupport {
+class CommandManagerExportMovementSupport {
static final long MINIMUM_GAP_MILLIS = 10L;
static final long SQUASH_GAP_MILLIS = 1000L;
@@ -43,12 +42,12 @@ enum Direction {
DOWN
}
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
private final CausewayConfiguration causewayConfiguration;
private final Direction direction;
- CommandExportManagerMovementSupport(
- final CommandExportManager commandExportManager,
+ CommandManagerExportMovementSupport(
+ final CommandManagerExport commandExportManager,
final CausewayConfiguration causewayConfiguration,
final Direction direction) {
this.commandExportManager = commandExportManager;
@@ -122,7 +121,7 @@ List<ReplayableCommand> choicesSelected() {
return commandExportManager.getCommands();
}
- CommandExportManager move(
+ CommandManagerExport move(
final List<ReplayableCommand> selected,
final ReplayableCommand target,
final boolean squashTimings) {
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_changeLimit.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_changeLimit.java
similarity index 72%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_changeLimit.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_changeLimit.java
index 9a82c8a8937..c4191b307ab 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_changeLimit.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_changeLimit.java
@@ -7,7 +7,7 @@
@Action(
semantics = SemanticsOf.SAFE,
commandPublishing = Publishing.DISABLED,
- domainEvent = CommandExportManager_changeLimit.DomainEvent.class,
+ domainEvent = CommandManagerExport_changeLimit.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -15,16 +15,16 @@
promptStyle = PromptStyle.INLINE_AS_IF_EDIT
)
@RequiredArgsConstructor
-public class CommandExportManager_changeLimit {
+public class CommandManagerExport_changeLimit {
public static int MAX_LIMIT = 100;
- public static class DomainEvent extends CommandExportManager.ActionDomainEvent<CommandExportManager_changeLimit> { }
+ public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<CommandManagerExport_changeLimit> { }
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
@MemberSupport
- public CommandExportManager act(int newLimit) {
+ public CommandManagerExport act(int newLimit) {
return commandExportManager.withLimit(newLimit);
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_deleteCommands.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_deleteCommands.java
similarity index 86%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_deleteCommands.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_deleteCommands.java
index cd6088cd54a..9bdb13b3cb8 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_deleteCommands.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_deleteCommands.java
@@ -19,7 +19,7 @@
choicesFrom = "excludedCommands",
commandPublishing = Publishing.DISABLED,
semantics = SemanticsOf.NON_IDEMPOTENT,
- domainEvent = CommandExportManager_deleteCommands.DomainEvent.class,
+ domainEvent = CommandManagerExport_deleteCommands.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -27,19 +27,19 @@
cssClass = "btn-danger",
describedAs = "Permanently deletes selected excluded Command Log Entries. This cannot be undone."
)
-public class CommandExportManager_deleteCommands {
+public class CommandManagerExport_deleteCommands {
- public static class DomainEvent extends CommandExportManager.ActionDomainEvent<CommandExportManager_deleteCommands> {
+ public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<CommandManagerExport_deleteCommands> {
}
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
- public CommandExportManager_deleteCommands(final CommandExportManager commandExportManager) {
+ public CommandManagerExport_deleteCommands(final CommandManagerExport commandExportManager) {
this.commandExportManager = commandExportManager;
}
@MemberSupport
- public CommandExportManager act(final List<ReplayableCommand> selected) {
+ public CommandManagerExport act(final List<ReplayableCommand> selected) {
final String validation = validateAct(selected);
if (validation != null) {
throw new RecoverableException(validation);
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_excludeCommands.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_excludeCommands.java
similarity index 90%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_excludeCommands.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_excludeCommands.java
index 89d78e0fb03..de98b893541 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_excludeCommands.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_excludeCommands.java
@@ -23,7 +23,7 @@
choicesFrom = "commands",
commandPublishing = Publishing.DISABLED,
semantics = SemanticsOf.NON_IDEMPOTENT,
- domainEvent = CommandExportManager_excludeCommands.DomainEvent.class,
+ domainEvent = CommandManagerExport_excludeCommands.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -32,21 +32,21 @@
describedAs = "Marks selected active Commands as EXCLUDED so they are omitted from export, exportability, and movement. "
+ "Non-exportable commands are selected by default."
)
-public class CommandExportManager_excludeCommands {
+public class CommandManagerExport_excludeCommands {
- public static class DomainEvent extends CommandExportManager.ActionDomainEvent<CommandExportManager_excludeCommands> {
+ public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<CommandManagerExport_excludeCommands> {
}
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
@Inject CausewayConfiguration causewayConfiguration;
- public CommandExportManager_excludeCommands(final CommandExportManager commandExportManager) {
+ public CommandManagerExport_excludeCommands(final CommandManagerExport commandExportManager) {
this.commandExportManager = commandExportManager;
}
@MemberSupport
- public CommandExportManager act(final List<ReplayableCommand> selected) {
+ public CommandManagerExport act(final List<ReplayableCommand> selected) {
final String validation = validateAct(selected);
if (validation != null) {
throw new RecoverableException(validation);
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_exportSelected.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
similarity index 93%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_exportSelected.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
index 381643d4485..f39b7393a92 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_exportSelected.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
@@ -25,7 +25,7 @@
choicesFrom = "commands",
semantics = SemanticsOf.NON_IDEMPOTENT,
commandPublishing = Publishing.DISABLED,
- domainEvent = CommandExportManager_exportSelected.DomainEvent.class,
+ domainEvent = CommandManagerExport_exportSelected.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -35,19 +35,19 @@
describedAs = "Exports selected Commands as zipped DTOs for import later. "
+ "Refresh the page to see changed states."
)
-public class CommandExportManager_exportSelected {
+public class CommandManagerExport_exportSelected {
- public static class DomainEvent extends CommandExportManager.ActionDomainEvent<CommandExportManager_exportSelected> {
+ public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<CommandManagerExport_exportSelected> {
}
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
@Inject MetaModelService metaModelService;
@Inject CausewayConfiguration causewayConfiguration;
@Inject List<CommandReplayReferenceDataService> commandReplayReferenceDataServices;
@Inject
- public CommandExportManager_exportSelected(final CommandExportManager commandExportManager) {
+ public CommandManagerExport_exportSelected(final CommandManagerExport commandExportManager) {
this.commandExportManager = commandExportManager;
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_moveCommandsDown.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_moveCommandsDown.java
similarity index 86%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_moveCommandsDown.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_moveCommandsDown.java
index d1a1c1330ca..7f6d7ef4b28 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_moveCommandsDown.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_moveCommandsDown.java
@@ -37,7 +37,7 @@
choicesFrom = "commands",
commandPublishing = Publishing.DISABLED,
semantics = SemanticsOf.NON_IDEMPOTENT,
- domainEvent = CommandExportManager_moveCommandsDown.DomainEvent.class,
+ domainEvent = CommandManagerExport_moveCommandsDown.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -46,21 +46,21 @@
describedAs = "Moves selected Commands downward after another command by retimestamping them. "
+ "The first moved command is placed after the target; subsequent moved commands either preserve their original timing gaps or, when requested, are squashed to 1 second increments."
)
-public class CommandExportManager_moveCommandsDown {
+public class CommandManagerExport_moveCommandsDown {
- public static class DomainEvent extends CommandExportManager.ActionDomainEvent<CommandExportManager_moveCommandsDown> {
+ public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<CommandManagerExport_moveCommandsDown> {
}
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
@Inject CausewayConfiguration causewayConfiguration;
- public CommandExportManager_moveCommandsDown(final CommandExportManager commandExportManager) {
+ public CommandManagerExport_moveCommandsDown(final CommandManagerExport commandExportManager) {
this.commandExportManager = commandExportManager;
}
@MemberSupport
- public CommandExportManager act(
+ public CommandManagerExport act(
final List<ReplayableCommand> selected,
@ParameterLayout(describedAs = "Command after which the selected commands will be moved.") final ReplayableCommand target,
@ParameterLayout(
@@ -102,10 +102,10 @@ public boolean defaultSquashTimings() {
return false;
}
- private CommandExportManagerMovementSupport movementSupport() {
- return new CommandExportManagerMovementSupport(
+ private CommandManagerExportMovementSupport movementSupport() {
+ return new CommandManagerExportMovementSupport(
commandExportManager,
causewayConfiguration,
- CommandExportManagerMovementSupport.Direction.DOWN);
+ CommandManagerExportMovementSupport.Direction.DOWN);
}
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_moveCommandsUp.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_moveCommandsUp.java
similarity index 86%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_moveCommandsUp.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_moveCommandsUp.java
index d01d32fa05e..524fc96df19 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_moveCommandsUp.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_moveCommandsUp.java
@@ -37,7 +37,7 @@
choicesFrom = "commands",
commandPublishing = Publishing.DISABLED,
semantics = SemanticsOf.NON_IDEMPOTENT,
- domainEvent = CommandExportManager_moveCommandsUp.DomainEvent.class,
+ domainEvent = CommandManagerExport_moveCommandsUp.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -46,21 +46,21 @@
describedAs = "Moves selected Commands upward after another command by retimestamping them. "
+ "The first moved command is placed after the target; subsequent moved commands either preserve their original timing gaps or, when requested, are squashed to 1 second increments."
)
-public class CommandExportManager_moveCommandsUp {
+public class CommandManagerExport_moveCommandsUp {
- public static class DomainEvent extends CommandExportManager.ActionDomainEvent<CommandExportManager_moveCommandsUp> {
+ public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<CommandManagerExport_moveCommandsUp> {
}
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
@Inject CausewayConfiguration causewayConfiguration;
- public CommandExportManager_moveCommandsUp(final CommandExportManager commandExportManager) {
+ public CommandManagerExport_moveCommandsUp(final CommandManagerExport commandExportManager) {
this.commandExportManager = commandExportManager;
}
@MemberSupport
- public CommandExportManager act(
+ public CommandManagerExport act(
final List<ReplayableCommand> selected,
@ParameterLayout(describedAs = "Command after which the selected commands will be moved.") final ReplayableCommand target,
@ParameterLayout(
@@ -102,10 +102,10 @@ public boolean defaultSquashTimings() {
return false;
}
- private CommandExportManagerMovementSupport movementSupport() {
- return new CommandExportManagerMovementSupport(
+ private CommandManagerExportMovementSupport movementSupport() {
+ return new CommandManagerExportMovementSupport(
commandExportManager,
causewayConfiguration,
- CommandExportManagerMovementSupport.Direction.UP);
+ CommandManagerExportMovementSupport.Direction.UP);
}
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_nextPage.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_nextPage.java
similarity index 78%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_nextPage.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_nextPage.java
index e840c6c4987..66dfd317c89 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_nextPage.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_nextPage.java
@@ -4,12 +4,12 @@
import org.apache.causeway.applib.annotation.*;
-import static org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager.Direction.*;
+import static org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport.Direction.*;
@Action(
semantics = SemanticsOf.SAFE,
commandPublishing = Publishing.DISABLED,
- domainEvent = CommandExportManager_nextPage.DomainEvent.class,
+ domainEvent = CommandManagerExport_nextPage.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -19,14 +19,14 @@
describedAs = "Move forward to next page of commands"
)
@RequiredArgsConstructor
-public class CommandExportManager_nextPage {
+public class CommandManagerExport_nextPage {
- public static class DomainEvent extends CommandExportManager.ActionDomainEvent<CommandExportManager_nextPage> { }
+ public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<CommandManagerExport_nextPage> { }
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
@MemberSupport
- public CommandExportManager act() {
+ public CommandManagerExport act() {
final var commands = commandExportManager.commands(NEXT);
final var size = commands.size();
if (size == 0) {
@@ -47,7 +47,7 @@ public String disableAct() {
return commandExportManager(lastReplayable).commands(NEXT).isEmpty() ? "No more commands" : null;
}
- private CommandExportManager commandExportManager(final ReplayableCommand replayableCommand) {
+ private CommandManagerExport commandExportManager(final ReplayableCommand replayableCommand) {
final var timestamp = replayableCommand.getTimestamp().toInstant();
final var baselinePlus5Millis = HasBaseline.addMillis(timestamp, 5);
return commandExportManager.withBaseline(baselinePlus5Millis);
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_previousPage.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_previousPage.java
similarity index 77%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_previousPage.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_previousPage.java
index 278a3331c26..c631ec4fc3b 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_previousPage.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_previousPage.java
@@ -4,12 +4,12 @@
import org.apache.causeway.applib.annotation.*;
-import static org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager.Direction.*;
+import static org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport.Direction.*;
@Action(
semantics = SemanticsOf.SAFE,
commandPublishing = Publishing.DISABLED,
- domainEvent = CommandExportManager_previousPage.DomainEvent.class,
+ domainEvent = CommandManagerExport_previousPage.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -19,14 +19,14 @@
describedAs = "Move backwards to previous page of commands"
)
@RequiredArgsConstructor
-public class CommandExportManager_previousPage {
+public class CommandManagerExport_previousPage {
- public static class DomainEvent extends CommandExportManager.ActionDomainEvent<CommandExportManager_previousPage> { }
+ public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<CommandManagerExport_previousPage> { }
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
@MemberSupport
- public CommandExportManager act() {
+ public CommandManagerExport act() {
final var commands = commandExportManager.commands(PREVIOUS); // returns descending, latest (youngest) first
final var size = commands.size();
if (size == 0) {
@@ -43,7 +43,7 @@ public String disableAct() {
return size == 0 ? "No commands" : null;
}
- private CommandExportManager commandExportManager(final ReplayableCommand replayableCommand) {
+ private CommandManagerExport commandExportManager(final ReplayableCommand replayableCommand) {
final var timestamp = replayableCommand.getTimestamp().toInstant();
final var baselineMinus5Millis = HasBaseline.addMillis(timestamp, -5);
return commandExportManager.withBaseline(baselineMinus5Millis);
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_unexcludeCommands.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_unexcludeCommands.java
similarity index 89%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_unexcludeCommands.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_unexcludeCommands.java
index 35af49b62db..ceab42c3115 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManager_unexcludeCommands.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_unexcludeCommands.java
@@ -23,7 +23,7 @@
choicesFrom = "excludedCommands",
commandPublishing = Publishing.DISABLED,
semantics = SemanticsOf.NON_IDEMPOTENT,
- domainEvent = CommandExportManager_unexcludeCommands.DomainEvent.class,
+ domainEvent = CommandManagerExport_unexcludeCommands.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -31,21 +31,21 @@
cssClass = "btn-secondary",
describedAs = "Restores selected excluded Commands to the active export sequence by setting their replay state to UNDEFINED."
)
-public class CommandExportManager_unexcludeCommands {
+public class CommandManagerExport_unexcludeCommands {
- public static class DomainEvent extends CommandExportManager.ActionDomainEvent<CommandExportManager_unexcludeCommands> {
+ public static class DomainEvent extends CommandManagerExport.ActionDomainEvent<CommandManagerExport_unexcludeCommands> {
}
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
@Inject CausewayConfiguration causewayConfiguration;
- public CommandExportManager_unexcludeCommands(final CommandExportManager commandExportManager) {
+ public CommandManagerExport_unexcludeCommands(final CommandManagerExport commandExportManager) {
this.commandExportManager = commandExportManager;
}
@MemberSupport
- public CommandExportManager act(final List<ReplayableCommand> selected) {
+ public CommandManagerExport act(final List<ReplayableCommand> selected) {
final String validation = validateAct(selected);
if (validation != null) {
throw new RecoverableException(validation);
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
similarity index 93%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
index 5a5035ad2b4..0554d6ca72d 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.java
@@ -43,15 +43,14 @@
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepository;
-import org.eclipse.persistence.sessions.coordination.CommandManager;
import org.jspecify.annotations.NonNull;
import lombok.Getter;
@DomainObject(introspection = Introspection.ANNOTATION_REQUIRED)
@DomainObjectLayout(cssClassFa = "solid circle-play")
-@Named(CommandReplayManager.LOGICAL_TYPE_NAME)
-public final class CommandReplayManager implements ViewModel, HasBaseline, CommandRecordingSuppressed {
+@Named(CommandManagerReplay.LOGICAL_TYPE_NAME)
+public final class CommandManagerReplay implements ViewModel, HasBaseline, CommandRecordingSuppressed {
public static final String LOGICAL_TYPE_NAME = CausewayModuleExtCommandLogApplib.NAMESPACE + ".CommandReplayManager";
@@ -65,13 +64,13 @@ ReplayContext replayContext() {
}
@Inject
- public CommandReplayManager(
+ public CommandManagerReplay(
final String memento,
final ReplayContext replayContext) {
this(fromString(memento, replayContext.clockService().getClock().nowAsJavaSqlTimestamp()), replayContext);
}
- public CommandReplayManager(
+ public CommandManagerReplay(
final java.sql.Timestamp baseline,
final ReplayContext replayContext) {
this.baseline = baseline;
@@ -90,8 +89,8 @@ public CommandReplayManager(
@Override
@Programmatic
- public CommandReplayManager withBaseline(Timestamp baseline) {
- return new CommandReplayManager(baseline, replayContext);
+ public CommandManagerReplay withBaseline(Timestamp baseline) {
+ return new CommandManagerReplay(baseline, replayContext);
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager.layout.fallback.xml b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.layout.fallback.xml
similarity index 100%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager.layout.fallback.xml
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay.layout.fallback.xml
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_deleteSelectedPendingOrFailed.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_deleteSelectedPendingOrFailed.java
similarity index 79%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_deleteSelectedPendingOrFailed.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_deleteSelectedPendingOrFailed.java
index 43d65d2b9d3..1df3449b100 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_deleteSelectedPendingOrFailed.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_deleteSelectedPendingOrFailed.java
@@ -11,7 +11,7 @@
choicesFrom = "pendingOrFailed",
semantics = SemanticsOf.NON_IDEMPOTENT,
commandPublishing = Publishing.DISABLED,
- domainEvent = CommandReplayManager_deleteSelectedPendingOrFailed.DomainEvent.class,
+ domainEvent = CommandManagerReplay_deleteSelectedPendingOrFailed.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -20,13 +20,13 @@
describedAs = "Deletes selected Commands (cannot be undone)"
)
@RequiredArgsConstructor
-public class CommandReplayManager_deleteSelectedPendingOrFailed {
+public class CommandManagerReplay_deleteSelectedPendingOrFailed {
- public static class DomainEvent extends CommandReplayManager.ActionDomainEvent<CommandReplayManager_deleteSelectedPendingOrFailed> { }
+ public static class DomainEvent extends CommandManagerReplay.ActionDomainEvent<CommandManagerReplay_deleteSelectedPendingOrFailed> { }
- private final CommandReplayManager commandReplayManager;
+ private final CommandManagerReplay commandReplayManager;
- public CommandReplayManager act(final List<ReplayableCommand> selected) {
+ public CommandManagerReplay act(final List<ReplayableCommand> selected) {
selected.stream()
.forEach(ReplayableCommand::deleteObj); // filtered on its own responsibility
return commandReplayManager;
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_deleteSelectedSucceededOrExcluded.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_deleteSelectedSucceededOrExcluded.java
similarity index 79%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_deleteSelectedSucceededOrExcluded.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_deleteSelectedSucceededOrExcluded.java
index 1c6e246b0a3..873ee7595a8 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_deleteSelectedSucceededOrExcluded.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_deleteSelectedSucceededOrExcluded.java
@@ -10,7 +10,7 @@
restrictTo = RestrictTo.PROTOTYPING,
choicesFrom = "succeededOrExcluded",
semantics = SemanticsOf.IDEMPOTENT,
- domainEvent = CommandReplayManager_deleteSelectedSucceededOrExcluded.DomainEvent.class,
+ domainEvent = CommandManagerReplay_deleteSelectedSucceededOrExcluded.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -19,13 +19,13 @@
describedAs = "Deletes selected Commands (cannot be undone)"
)
@RequiredArgsConstructor
-public class CommandReplayManager_deleteSelectedSucceededOrExcluded {
+public class CommandManagerReplay_deleteSelectedSucceededOrExcluded {
- public static class DomainEvent extends CommandReplayManager.ActionDomainEvent<CommandReplayManager_deleteSelectedSucceededOrExcluded> { }
+ public static class DomainEvent extends CommandManagerReplay.ActionDomainEvent<CommandManagerReplay_deleteSelectedSucceededOrExcluded> { }
- private final CommandReplayManager commandReplayManager;
+ private final CommandManagerReplay commandReplayManager;
- public CommandReplayManager act(final List<ReplayableCommand> selected) {
+ public CommandManagerReplay act(final List<ReplayableCommand> selected) {
selected.stream()
.forEach(ReplayableCommand::deleteObj); // filtered on its own responsibility
return commandReplayManager;
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_excludeSelectedFromReplay.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_excludeSelectedFromReplay.java
similarity index 80%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_excludeSelectedFromReplay.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_excludeSelectedFromReplay.java
index ecd036ee658..c51cfb24428 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_excludeSelectedFromReplay.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_excludeSelectedFromReplay.java
@@ -11,7 +11,7 @@
choicesFrom = "pendingOrFailed",
semantics = SemanticsOf.NON_IDEMPOTENT,
commandPublishing = Publishing.DISABLED,
- domainEvent = CommandReplayManager_excludeSelectedFromReplay.DomainEvent.class,
+ domainEvent = CommandManagerReplay_excludeSelectedFromReplay.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -20,14 +20,14 @@
describedAs = "Marks selected Commands to be EXCLUDED from replay"
)
@RequiredArgsConstructor
-public class CommandReplayManager_excludeSelectedFromReplay {
+public class CommandManagerReplay_excludeSelectedFromReplay {
- public static class DomainEvent extends CommandReplayManager.ActionDomainEvent<CommandReplayManager_excludeSelectedFromReplay> { }
+ public static class DomainEvent extends CommandManagerReplay.ActionDomainEvent<CommandManagerReplay_excludeSelectedFromReplay> { }
- private final CommandReplayManager commandReplayManager;
+ private final CommandManagerReplay commandReplayManager;
@MemberSupport
- public CommandReplayManager act(final List<ReplayableCommand> selected) {
+ public CommandManagerReplay act(final List<ReplayableCommand> selected) {
selected.stream()
.forEach(ReplayableCommand::excludeFromReplay); // filtered on its own responsibility
return commandReplayManager;
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_importCommands.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_importCommands.java
similarity index 84%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_importCommands.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_importCommands.java
index c3915723c70..e74f636cb0f 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_importCommands.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_importCommands.java
@@ -20,7 +20,7 @@
restrictTo = RestrictTo.PROTOTYPING,
semantics = SemanticsOf.IDEMPOTENT,
commandPublishing = Publishing.DISABLED,
- domainEvent = CommandReplayManager_importCommands.DomainEvent.class,
+ domainEvent = CommandManagerReplay_importCommands.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -29,14 +29,14 @@
describedAs = "Imports commands from yaml format, then persists them with a replayState of PENDING."
)
@RequiredArgsConstructor
-public class CommandReplayManager_importCommands {
+public class CommandManagerReplay_importCommands {
- public static class DomainEvent extends CommandReplayManager.ActionDomainEvent<CommandReplayManager_importCommands> {
+ public static class DomainEvent extends CommandManagerReplay.ActionDomainEvent<CommandManagerReplay_importCommands> {
}
- private final CommandReplayManager commandReplayManager;
+ private final CommandManagerReplay commandReplayManager;
- public CommandReplayManager act(
+ public CommandManagerReplay act(
@Parameter(fileAccept = ".yml,.yaml") final Blob commandsYaml,
@ParameterLayout(describedAs = "Change the baseline to the timestamp of the oldest, so that they are listed at top") final boolean moveBaselineToOldest) {
var yamlDs = commandsYaml.asDataSource();
@@ -53,10 +53,10 @@ public CommandReplayManager act(
.filter(x -> moveBaselineToOldest)
.map(CommandDtoUtils.ImportedCommandDto::getCommand)
.map(CommandDto::getTimestamp)
- .map(CommandReplayManager_importCommands::toJavaSqlTimestamp)
+ .map(CommandManagerReplay_importCommands::toJavaSqlTimestamp)
.sorted()
.findFirst()
- .map(timestamp -> new CommandReplayManager(timestamp, commandReplayManager.replayContext))
+ .map(timestamp -> new CommandManagerReplay(timestamp, commandReplayManager.replayContext))
.orElse(commandReplayManager);
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_replayOrRetryNext.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_replayOrRetryNext.java
similarity index 81%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_replayOrRetryNext.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_replayOrRetryNext.java
index fc8aaa781f1..27412d21098 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_replayOrRetryNext.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_replayOrRetryNext.java
@@ -9,7 +9,7 @@
choicesFrom = "pendingOrFailed",
semantics = SemanticsOf.NON_IDEMPOTENT,
commandPublishing = Publishing.DISABLED,
- domainEvent = CommandReplayManager_replayOrRetrySelected.DomainEvent.class,
+ domainEvent = CommandManagerReplay_replayOrRetrySelected.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -18,14 +18,14 @@
cssClass = "btn-primary",
describedAs = "Executes the oldest command.")
@RequiredArgsConstructor
-public class CommandReplayManager_replayOrRetryNext {
+public class CommandManagerReplay_replayOrRetryNext {
- public static class DomainEvent extends CommandReplayManager.ActionDomainEvent<CommandReplayManager_replayOrRetrySelected> { }
+ public static class DomainEvent extends CommandManagerReplay.ActionDomainEvent<CommandManagerReplay_replayOrRetrySelected> { }
- private final CommandReplayManager commandReplayManager;
+ private final CommandManagerReplay commandReplayManager;
@MemberSupport
- public CommandReplayManager act() {
+ public CommandManagerReplay act() {
if (ReplayPendingBackgroundCommands.hasPendingBackgroundCommands(commandReplayManager.replayContext())) {
return commandReplayManager;
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_replayOrRetrySelected.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_replayOrRetrySelected.java
similarity index 87%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_replayOrRetrySelected.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_replayOrRetrySelected.java
index 7e54c92681b..648ee5aa21d 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_replayOrRetrySelected.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplay_replayOrRetrySelected.java
@@ -12,7 +12,7 @@
choicesFrom = "pendingOrFailed",
semantics = SemanticsOf.NON_IDEMPOTENT,
commandPublishing = Publishing.DISABLED,
- domainEvent = CommandReplayManager_replayOrRetrySelected.DomainEvent.class,
+ domainEvent = CommandManagerReplay_replayOrRetrySelected.DomainEvent.class,
executionPublishing = Publishing.DISABLED
)
@ActionLayout(
@@ -24,14 +24,14 @@
+ "its surrounding transaction is rolled back, but any successful commands so far are marked OK). "
+ "The command, that caused the failure, gets marked FAILED.")
@RequiredArgsConstructor
-public class CommandReplayManager_replayOrRetrySelected {
+public class CommandManagerReplay_replayOrRetrySelected {
- public static class DomainEvent extends CommandReplayManager.ActionDomainEvent<CommandReplayManager_replayOrRetrySelected> { }
+ public static class DomainEvent extends CommandManagerReplay.ActionDomainEvent<CommandManagerReplay_replayOrRetrySelected> { }
- private final CommandReplayManager commandReplayManager;
+ private final CommandManagerReplay commandReplayManager;
@MemberSupport
- public CommandReplayManager act(final List<ReplayableCommand> selected) {
+ public CommandManagerReplay act(final List<ReplayableCommand> selected) {
if (ReplayPendingBackgroundCommands.hasPendingBackgroundCommands(commandReplayManager.replayContext())) {
return commandReplayManager;
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
index a8792965efa..d11d9a376fb 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
@@ -113,7 +113,7 @@ public ObjectReference<CommandRecord> recordRef() {
return recordRef;
}
- private final CommandExportManager commandExportManager;
+ private final CommandManagerExport commandExportManager;
public static final String LOGICAL_TYPE_NAME = CausewayModuleExtCommandLogApplib.NAMESPACE + ".ReplayableCommand";
@@ -198,7 +198,7 @@ public ReplayableCommand(
final ReplayContext replayContext,
final Scratchpad scratchpad) {
this(interactionId, replayContext, new ObjectReference<>(null),
- CommandExportManager.currentExportManager(scratchpad).orElse(null));
+ CommandManagerExport.currentExportManager(scratchpad).orElse(null));
}
ReplayableCommand(
@@ -212,7 +212,7 @@ public ReplayableCommand(
final UUID interactionId,
final ReplayContext replayContext,
final ObjectReference<CommandRecord> recordRef,
- final CommandExportManager commandExportManager) {
+ final CommandManagerExport commandExportManager) {
this.interactionId = interactionId;
this.replayContext = replayContext;
this.recordRef = recordRef;
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplibTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplibTest.java
index 136648433b2..7c6fd339dbb 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplibTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/CausewayModuleExtCommandLogApplibTest.java
@@ -25,11 +25,11 @@
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Import;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_exportSelected;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_excludeCommands;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_moveCommandsDown;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager_moveCommandsUp;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_exportSelected;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_excludeCommands;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_moveCommandsDown;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport_moveCommandsUp;
import org.apache.causeway.extensions.commandlog.applib.dom.replay.ReplayableCommand_makeExportable;
class CausewayModuleExtCommandLogApplibTest {
@@ -41,11 +41,11 @@ void module_imports_current_command_export_manager_actions_without_obsolete_make
assertThat(imports)
.contains(
- CommandExportManager.class,
- CommandExportManager_exportSelected.class,
- CommandExportManager_excludeCommands.class,
- CommandExportManager_moveCommandsUp.class,
- CommandExportManager_moveCommandsDown.class,
+ CommandManagerExport.class,
+ CommandManagerExport_exportSelected.class,
+ CommandManagerExport_excludeCommands.class,
+ CommandManagerExport_moveCommandsUp.class,
+ CommandManagerExport_moveCommandsDown.class,
ReplayableCommand_makeExportable.class);
assertThat(imports)
.extracting(Class::getSimpleName)
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerExportSelectedTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerSelectedTestExport.java
similarity index 98%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerExportSelectedTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerSelectedTestExport.java
index e955475b39c..cf216f24a8a 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerExportSelectedTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerSelectedTestExport.java
@@ -57,7 +57,7 @@
import org.apache.causeway.schema.common.v2.OidsDto;
import org.apache.causeway.schema.common.v2.ValueType;
-class CommandExportManagerExportSelectedTest {
+class CommandExportManagerSelectedTestExport {
private static final Timestamp BASELINE = Timestamp.from(Instant.parse("2026-06-07T10:00:00Z"));
private static final Timestamp T1 = Timestamp.from(Instant.parse("2026-06-07T10:00:01Z"));
@@ -360,8 +360,8 @@ private static List<ReplayableCommand> exportManagerCommandsWithRecordingSupport
final CommandLogEntry... entries) {
final var repository = repositoryWith(entries);
final var replayContext = new ReplayContext(null, null, null, repository, null, null, List.of());
- final var manager = new CommandExportManager(
- new CommandExportManager.State(BASELINE, 50),
+ final var manager = new CommandManagerExport(
+ new CommandManagerExport.State(BASELINE, 50),
replayContext);
manager.scratchpad = scratchpad();
manager.metaModelService = metaModelServiceRecognizingMenuServiceRoot();
@@ -375,10 +375,10 @@ private static Fixture fixtureWithRecordingSupport(
final var repository = repositoryWith(entries);
final var replayContext = new ReplayContext(null, null, null, repository, null, null, List.of());
- final var manager = new CommandExportManager(
- new CommandExportManager.State(BASELINE, 50),
+ final var manager = new CommandManagerExport(
+ new CommandManagerExport.State(BASELINE, 50),
replayContext);
- final var action = new CommandExportManager_exportSelected(manager);
+ final var action = new CommandManagerExport_exportSelected(manager);
action.causewayConfiguration = causewayConfigurationWith(recordingSupport);
final var replayableCommands = java.util.Arrays.stream(entries)
.map(entry -> new ReplayableCommand(entry.getInteractionId(), replayContext))
@@ -514,11 +514,11 @@ private static class Customers {
}
private static class Fixture {
- final CommandExportManager_exportSelected action;
+ final CommandManagerExport_exportSelected action;
final List<ReplayableCommand> replayableCommands;
Fixture(
- final CommandExportManager_exportSelected action,
+ final CommandManagerExport_exportSelected action,
final List<ReplayableCommand> replayableCommands) {
this.action = action;
this.replayableCommands = replayableCommands;
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerCommandsTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportCommandsTest.java
similarity index 96%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerCommandsTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportCommandsTest.java
index 35012fdce6a..3ade0eadcc2 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerCommandsTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportCommandsTest.java
@@ -46,7 +46,7 @@
import org.apache.causeway.schema.cmd.v2.CommandDto;
import org.apache.causeway.schema.common.v2.InteractionType;
-class CommandExportManagerCommandsTest {
+class CommandManagerExportCommandsTest {
private static final Timestamp BASELINE = Timestamp.from(Instant.parse("2026-06-07T10:00:00Z"));
private static final Bookmark RESULT = Bookmark.forLogicalTypeNameAndIdentifier("demo.Customer", "1");
@@ -127,21 +127,21 @@ void previous_page_uses_unified_unfiltered_query() {
final var repository = repositoryReturning(List.of(), List.of(exported, excluded));
final var manager = manager(repository);
- final var commands = manager.commands(CommandExportManager.Direction.PREVIOUS);
+ final var commands = manager.commands(CommandManagerExport.Direction.PREVIOUS);
assertThat(interactionIds(commands))
.containsExactly(exported.getInteractionId(), excluded.getInteractionId());
}
- private static CommandExportManager manager(final CommandLogEntryRepository repository) {
+ private static CommandManagerExport manager(final CommandLogEntryRepository repository) {
return manager(repository, null);
}
- private static CommandExportManager manager(
+ private static CommandManagerExport manager(
final CommandLogEntryRepository repository,
final SpecificationLoader specificationLoader) {
final var replayContext = new ReplayContext(null, null, null, repository, null, null, List.of(), specificationLoader);
- return new CommandExportManager(new CommandExportManager.State(BASELINE, 50), replayContext);
+ return new CommandManagerExport(new CommandManagerExport.State(BASELINE, 50), replayContext);
}
private static CommandLogEntryRepository repositoryReturning(
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerDeleteCommandsTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportDeleteCommandsTest.java
similarity index 94%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerDeleteCommandsTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportDeleteCommandsTest.java
index fd2c8bff991..4552c3af825 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerDeleteCommandsTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportDeleteCommandsTest.java
@@ -43,7 +43,7 @@
import org.apache.causeway.schema.cmd.v2.CommandDto;
import org.apache.causeway.schema.common.v2.OidsDto;
-class CommandExportManagerDeleteCommandsTest {
+class CommandManagerExportDeleteCommandsTest {
private static final Timestamp BASELINE = Timestamp.from(Instant.parse("2026-06-07T10:00:00Z"));
private static final Timestamp T1 = Timestamp.from(Instant.parse("2026-06-07T10:00:01Z"));
@@ -132,10 +132,10 @@ private static Fixture fixtureWith(
final var repositoryService = mock(RepositoryService.class);
final var replayContext = new ReplayContext(repositoryService, null, null, repository, null, null, List.of());
- final var manager = new CommandExportManager(
- new CommandExportManager.State(BASELINE, 50),
+ final var manager = new CommandManagerExport(
+ new CommandManagerExport.State(BASELINE, 50),
replayContext);
- final var action = new CommandExportManager_deleteCommands(manager);
+ final var action = new CommandManagerExport_deleteCommands(manager);
return new Fixture(repositoryService, replayContext, manager, action);
}
@@ -167,14 +167,14 @@ private static List<UUID> interactionIds(final List<ReplayableCommand> commands)
private static class Fixture {
final RepositoryService repositoryService;
private final ReplayContext replayContext;
- final CommandExportManager manager;
- final CommandExportManager_deleteCommands action;
+ final CommandManagerExport manager;
+ final CommandManagerExport_deleteCommands action;
Fixture(
final RepositoryService repositoryService,
final ReplayContext replayContext,
- final CommandExportManager manager,
- final CommandExportManager_deleteCommands action) {
+ final CommandManagerExport manager,
+ final CommandManagerExport_deleteCommands action) {
this.repositoryService = repositoryService;
this.replayContext = replayContext;
this.manager = manager;
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerExcludeCommandsTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportExcludeCommandsTest.java
similarity index 95%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerExcludeCommandsTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportExcludeCommandsTest.java
index 134b35fe988..5edae269ba1 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerExcludeCommandsTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportExcludeCommandsTest.java
@@ -50,7 +50,7 @@
import org.apache.causeway.schema.cmd.v2.CommandDto;
import org.apache.causeway.schema.common.v2.OidsDto;
-class CommandExportManagerExcludeCommandsTest {
+class CommandManagerExportExcludeCommandsTest {
private static final Timestamp BASELINE = Timestamp.from(Instant.parse("2026-06-07T10:00:00Z"));
private static final Timestamp T1 = Timestamp.from(Instant.parse("2026-06-07T10:00:01Z"));
@@ -154,10 +154,10 @@ private static Fixture fixtureWith(
}
final var replayContext = new ReplayContext(null, null, null, repository, null, null, List.of());
- final var manager = new CommandExportManager(
- new CommandExportManager.State(BASELINE, 50),
+ final var manager = new CommandManagerExport(
+ new CommandManagerExport.State(BASELINE, 50),
replayContext);
- final var action = new CommandExportManager_excludeCommands(manager);
+ final var action = new CommandManagerExport_excludeCommands(manager);
action.causewayConfiguration = causewayConfigurationWith(recordingSupport);
return new Fixture(repository, replayContext, manager, action);
}
@@ -210,14 +210,14 @@ private static class Customers {
private static class Fixture {
final CommandLogEntryRepository repository;
private final ReplayContext replayContext;
- final CommandExportManager manager;
- final CommandExportManager_excludeCommands action;
+ final CommandManagerExport manager;
+ final CommandManagerExport_excludeCommands action;
Fixture(
final CommandLogEntryRepository repository,
final ReplayContext replayContext,
- final CommandExportManager manager,
- final CommandExportManager_excludeCommands action) {
+ final CommandManagerExport manager,
+ final CommandManagerExport_excludeCommands action) {
this.repository = repository;
this.replayContext = replayContext;
this.manager = manager;
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerMoveCommandsTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportMoveCommandsTest.java
similarity index 96%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerMoveCommandsTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportMoveCommandsTest.java
index d8db28c07ff..7a26359675d 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerMoveCommandsTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportMoveCommandsTest.java
@@ -55,7 +55,7 @@
import org.apache.causeway.schema.common.v2.OidsDto;
import org.apache.causeway.schema.common.v2.ValueType;
-class CommandExportManagerMoveCommandsTest {
+class CommandManagerExportMoveCommandsTest {
private static final Timestamp BASELINE = timestamp("2026-06-07T10:00:00Z");
private static final Timestamp BEFORE_BASELINE = timestamp("2026-06-07T09:59:59Z");
@@ -380,14 +380,14 @@ private static Fixture fixtureWithRecordingSupport(
}
final var replayContext = new ReplayContext(null, null, null, repository, null, null, List.of());
- final var manager = new CommandExportManager(
- new CommandExportManager.State(BASELINE, 50),
+ final var manager = new CommandManagerExport(
+ new CommandManagerExport.State(BASELINE, 50),
replayContext);
- final var moveUpAction = new CommandExportManager_moveCommandsUp(manager);
+ final var moveUpAction = new CommandManagerExport_moveCommandsUp(manager);
moveUpAction.causewayConfiguration = causewayConfigurationWith(recordingSupport);
- final var moveDownAction = new CommandExportManager_moveCommandsDown(manager);
+ final var moveDownAction = new CommandManagerExport_moveCommandsDown(manager);
moveDownAction.causewayConfiguration = causewayConfigurationWith(recordingSupport);
- final var exportAction = new CommandExportManager_exportSelected(manager);
+ final var exportAction = new CommandManagerExport_exportSelected(manager);
exportAction.causewayConfiguration = causewayConfigurationWith(recordingSupport);
return new Fixture(
replayContext,
@@ -493,15 +493,15 @@ private static class Customers {
private static class Fixture {
private final ReplayContext replayContext;
- final CommandExportManager_moveCommandsUp moveUpAction;
- final CommandExportManager_moveCommandsDown moveDownAction;
- final CommandExportManager_exportSelected exportAction;
+ final CommandManagerExport_moveCommandsUp moveUpAction;
+ final CommandManagerExport_moveCommandsDown moveDownAction;
+ final CommandManagerExport_exportSelected exportAction;
Fixture(
final ReplayContext replayContext,
- final CommandExportManager_moveCommandsUp moveUpAction,
- final CommandExportManager_moveCommandsDown moveDownAction,
- final CommandExportManager_exportSelected exportAction) {
+ final CommandManagerExport_moveCommandsUp moveUpAction,
+ final CommandManagerExport_moveCommandsDown moveDownAction,
+ final CommandManagerExport_exportSelected exportAction) {
this.replayContext = replayContext;
this.moveUpAction = moveUpAction;
this.moveDownAction = moveDownAction;
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerStateTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportStateTest.java
similarity index 98%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerStateTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportStateTest.java
index c1fd6f34488..9b4334a4928 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerStateTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportStateTest.java
@@ -23,10 +23,10 @@
import java.sql.Timestamp;
import java.time.Instant;
-import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandExportManager.State;
+import org.apache.causeway.extensions.commandlog.applib.dom.replay.CommandManagerExport.State;
import org.junit.jupiter.api.Test;
-class CommandExportManagerStateTest {
+class CommandManagerExportStateTest {
@Test
void roundtrip_toMemento_and_parseMemento() {
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerUnexcludeCommandsTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportUnexcludeCommandsTest.java
similarity index 95%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerUnexcludeCommandsTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportUnexcludeCommandsTest.java
index a0052094b99..f470501484e 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportManagerUnexcludeCommandsTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExportUnexcludeCommandsTest.java
@@ -45,7 +45,7 @@
import org.apache.causeway.schema.cmd.v2.CommandDto;
import org.apache.causeway.schema.common.v2.OidsDto;
-class CommandExportManagerUnexcludeCommandsTest {
+class CommandManagerExportUnexcludeCommandsTest {
private static final Timestamp BASELINE = Timestamp.from(Instant.parse("2026-06-07T10:00:00Z"));
private static final Timestamp T1 = Timestamp.from(Instant.parse("2026-06-07T10:00:01Z"));
@@ -137,10 +137,10 @@ private static Fixture fixtureWith(
}
final var replayContext = new ReplayContext(null, null, null, repository, null, null, List.of());
- final var manager = new CommandExportManager(
- new CommandExportManager.State(BASELINE, 50),
+ final var manager = new CommandManagerExport(
+ new CommandManagerExport.State(BASELINE, 50),
replayContext);
- final var action = new CommandExportManager_unexcludeCommands(manager);
+ final var action = new CommandManagerExport_unexcludeCommands(manager);
action.causewayConfiguration = causewayConfigurationWith(recordingSupport);
return new Fixture(replayContext, manager, action);
}
@@ -178,13 +178,13 @@ private static List<UUID> interactionIds(final List<ReplayableCommand> commands)
private static class Fixture {
private final ReplayContext replayContext;
- final CommandExportManager manager;
- final CommandExportManager_unexcludeCommands action;
+ final CommandManagerExport manager;
+ final CommandManagerExport_unexcludeCommands action;
Fixture(
final ReplayContext replayContext,
- final CommandExportManager manager,
- final CommandExportManager_unexcludeCommands action) {
+ final CommandManagerExport manager,
+ final CommandManagerExport_unexcludeCommands action) {
this.replayContext = replayContext;
this.manager = manager;
this.action = action;
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManagerCommandsTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplayCommandsTest.java
similarity index 96%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManagerCommandsTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplayCommandsTest.java
index fbe5c61c9fe..8e7c796bed3 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManagerCommandsTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerReplayCommandsTest.java
@@ -58,7 +58,7 @@
import org.apache.causeway.schema.common.v2.OidDto;
import org.apache.causeway.schema.common.v2.OidsDto;
-class CommandReplayManagerCommandsTest {
+class CommandManagerReplayCommandsTest {
private static final Timestamp BASELINE = Timestamp.from(Instant.parse("2026-06-07T10:00:00Z"));
private static final Bookmark RESULT = Bookmark.forLogicalTypeNameAndIdentifier("demo.Customer", "1");
@@ -114,7 +114,7 @@ void selected_replay_stops_after_command_creates_pending_background_work() {
final var commandExecutorService = commandExecutorSettingPendingBackground(pendingBackgroundCommands);
final var manager = manager(repository, transactionService, commandExecutorService, safeActionSpecificationLoader());
- new CommandReplayManager_replayOrRetrySelected(manager).act(manager.getPendingOrFailed());
+ new CommandManagerReplay_replayOrRetrySelected(manager).act(manager.getPendingOrFailed());
verify(commandExecutorService, times(1)).executeCommand(
eq(InteractionContextPolicy.SWITCH_USER_AND_TIME), any(CommandDto.class));
@@ -130,7 +130,7 @@ void selected_replay_continues_when_no_background_work_is_pending() {
final var commandExecutorService = commandExecutorReturningSuccess();
final var manager = manager(repository, transactionService, commandExecutorService, safeActionSpecificationLoader());
- new CommandReplayManager_replayOrRetrySelected(manager).act(manager.getPendingOrFailed());
+ new CommandManagerReplay_replayOrRetrySelected(manager).act(manager.getPendingOrFailed());
verify(commandExecutorService, times(2)).executeCommand(
eq(InteractionContextPolicy.SWITCH_USER_AND_TIME), any(CommandDto.class));
@@ -143,9 +143,9 @@ void selected_replay_is_disabled_while_background_work_is_pending() {
when(repository.findBackgroundAndNotYetStarted()).thenReturn(List.of(mock(CommandLogEntry.class)));
final var manager = manager(repository, safeActionSpecificationLoader());
- assertThat(new CommandReplayManager_replayOrRetrySelected(manager).disableAct())
+ assertThat(new CommandManagerReplay_replayOrRetrySelected(manager).disableAct())
.isEqualTo(ReplayPendingBackgroundCommands.WAIT_MESSAGE);
- assertThat(new CommandReplayManager_replayOrRetryNext(manager).disableAct())
+ assertThat(new CommandManagerReplay_replayOrRetryNext(manager).disableAct())
.isEqualTo(ReplayPendingBackgroundCommands.WAIT_MESSAGE);
}
@@ -156,23 +156,23 @@ void replay_next_is_enabled_after_background_work_completes() {
when(repository.findBackgroundAndNotYetStarted()).thenReturn(List.of());
final var manager = manager(repository, safeActionSpecificationLoader());
- assertThat(new CommandReplayManager_replayOrRetryNext(manager).disableAct()).isNull();
+ assertThat(new CommandManagerReplay_replayOrRetryNext(manager).disableAct()).isNull();
}
- private static CommandReplayManager manager(
+ private static CommandManagerReplay manager(
final CommandLogEntryRepository repository,
final SpecificationLoader specificationLoader) {
return manager(repository, null, null, specificationLoader);
}
- private static CommandReplayManager manager(
+ private static CommandManagerReplay manager(
final CommandLogEntryRepository repository,
final TransactionService transactionService,
final CommandExecutorService commandExecutorService,
final SpecificationLoader specificationLoader) {
final var replayContext = new ReplayContext(
null, null, transactionService, repository, commandExecutorService, null, List.of(), specificationLoader);
- return new CommandReplayManager(BASELINE, replayContext);
+ return new CommandManagerReplay(BASELINE, replayContext);
}
private static TransactionService transactionServiceExecutingCallable() {
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_importCommandsTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManager_Replay_importCommandsTest.java
similarity index 95%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_importCommandsTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManager_Replay_importCommandsTest.java
index 1e411b91d49..79c3701b95a 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandReplayManager_importCommandsTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManager_Replay_importCommandsTest.java
@@ -39,7 +39,7 @@
import org.apache.causeway.schema.common.v2.OidDto;
import org.apache.causeway.schema.common.v2.OidsDto;
-class CommandReplayManager_importCommandsTest {
+class CommandManager_Replay_importCommandsTest {
@Test
void imports_command_export_result_as_command_log_result() {
@@ -53,7 +53,7 @@ void imports_command_export_result_as_command_log_result() {
CommandLogEntryRepository commandLogEntryRepository = mock(CommandLogEntryRepository.class);
when(commandLogEntryRepository.saveForReplay(any(CommandDto.class))).thenReturn(commandLogEntry);
- CommandReplayManager_importCommands importCommands = new CommandReplayManager_importCommands(null);
+ CommandManagerReplay_importCommands importCommands = new CommandManagerReplay_importCommands(null);
importCommands.commandLogEntryRepository = commandLogEntryRepository;
importCommands.act(commandsYaml, false);
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java
index 53f8988ce81..3446b028c59 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java
@@ -77,8 +77,8 @@ class ReplayableCommandMappingTest {
@Test
void command_log_replay_helpers_suppress_command_recording() {
- assertThat(CommandRecordingSuppressed.class).isAssignableFrom(CommandReplayManager.class);
- assertThat(CommandRecordingSuppressed.class).isAssignableFrom(CommandExportManager.class);
+ assertThat(CommandRecordingSuppressed.class).isAssignableFrom(CommandManagerReplay.class);
+ assertThat(CommandRecordingSuppressed.class).isAssignableFrom(CommandManagerExport.class);
assertThat(CommandRecordingSuppressed.class).isAssignableFrom(ReplayableCommand.class);
assertThat(CommandRecordingSuppressed.class).isAssignableFrom(ReplayableCommandParticipant.class);
assertThat(CommandRecordingSuppressed.class).isAssignableFrom(CommandLogEntry.class);
(causeway) 10/11: CAUSEWAY-4039: moves KnownParticipants validator to CommandManagerAbstract
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit a71c050e60c5c179f64d35ee8b468ee28256f931
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 19 07:28:08 2026 +0100
CAUSEWAY-4039: moves KnownParticipants validator to CommandManagerAbstract
---
...java => CommandKnownParticipantsValidator.java} | 19 +++++------
.../applib/dom/replay/CommandManagerAbstract.java | 28 +++++++++++++++-
.../applib/dom/replay/CommandManagerExport.java | 36 ++++----------------
.../CommandManagerExport_exportSelected.java | 4 +--
.../applib/dom/replay/ReplayableCommand.java | 22 ++-----------
.../ReplayableCommandParticipantTracker.java | 6 ++--
... => CommandKnownParticipantsValidatorTest.java} | 38 +++++++++++-----------
7 files changed, 68 insertions(+), 85 deletions(-)
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportKnownTargetValidator.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandKnownParticipantsValidator.java
similarity index 91%
rename from extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportKnownTargetValidator.java
rename to extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandKnownParticipantsValidator.java
index e4343ec167f..4ffe10f0bc0 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportKnownTargetValidator.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandKnownParticipantsValidator.java
@@ -22,7 +22,6 @@
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
@@ -35,22 +34,22 @@
import org.apache.causeway.schema.common.v2.ValueType;
/**
- * Validates that an exported command sequence can reach every selected action target and reference parameter
- * from a root service or from a previously recorded result in the same baseline-bounded export sequence.
+ * Validates that in a sequence of commands, every action target or reference parameter argument is either
+ * a root service, is refdata, or is a previously recorded result in the same baseline-bounded export sequence.
*/
-final class CommandExportKnownTargetValidator {
+final class CommandKnownParticipantsValidator {
private final Predicate<Bookmark> exportRootPredicate;
- CommandExportKnownTargetValidator(final Predicate<Bookmark> exportRootPredicate) {
+ CommandKnownParticipantsValidator(final Predicate<Bookmark> exportRootPredicate) {
this.exportRootPredicate = exportRootPredicate;
}
Optional<Failure> validate(
final Timestamp baseline,
- final List<CommandLogEntry> selectedCommandLogEntries) {
+ final List<CommandLogEntry> commandLogEntries) {
final Set<Bookmark> knownTargets = new HashSet<>();
- for (final CommandLogEntry entry : selectedCommandLogEntries) {
+ for (final CommandLogEntry entry : commandLogEntries) {
if (isBeforeBaseline(baseline, entry)) {
continue;
}
@@ -100,14 +99,12 @@ private static List<Participant> participantsFor(final CommandLogEntry entry) {
.stream()
.flatMap(oidsDto -> oidsDto.getOid().stream())
.map(Bookmark::forOidDto)
- .filter(Objects::nonNull)
.map(Participant::target)
.forEach(participants::add);
if (participants.isEmpty() && entry.getTarget() != null) {
participants.add(Participant.target(entry.getTarget()));
}
- referenceParametersFor(entry)
- .forEach(participants::add);
+ participants.addAll(referenceParametersFor(entry));
return participants;
}
@@ -124,7 +121,7 @@ private static List<Participant> referenceParametersFor(final CommandLogEntry en
.map(ActionDto::getParameters)
.stream()
.flatMap(paramsDto -> paramsDto.getParameter().stream())
- .filter(CommandExportKnownTargetValidator::isReferenceParameter)
+ .filter(CommandKnownParticipantsValidator::isReferenceParameter)
.forEach(parameter -> participants.add(Participant.parameter(
parameterName(parameter, participants.size()),
Bookmark.forOidDto(parameter.getReference()))));
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
index bbc7bcd2212..a7fc9162040 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerAbstract.java
@@ -27,10 +27,12 @@
import org.apache.causeway.applib.ViewModel;
import org.apache.causeway.applib.annotation.ObjectSupport;
-import org.apache.causeway.applib.annotation.Programmatic;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.services.bookmark.Bookmark;
import org.apache.causeway.applib.services.command.CommandRecordingSuppressed;
+import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
+import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayReferenceDataService;
import static org.apache.causeway.extensions.commandlog.applib.dom.replay.TimestampMarshallUtil.fromString;
@@ -77,6 +79,29 @@ public String viewModelMemento() {
}
+ CommandKnownParticipantsValidator validator() {
+ return new CommandKnownParticipantsValidator(this::isDomainServiceOrReferenceData);
+ }
+
+ private boolean isDomainServiceOrReferenceData(final Bookmark bookmark) {
+ return isDomainService(bookmark)
+ || CommandReplayReferenceDataService.isReferenceData(replayContext.commandReplayReferenceDataServices(), bookmark);
+ }
+
+ private boolean isDomainService(final Bookmark bookmark) {
+ final var metaModelService = replayContext.metaModelService();
+ final var specificationLoader = replayContext.specificationLoader();
+ if (metaModelService == null || specificationLoader == null) {
+ // shouldn't happen, except perhaps in unit testing?
+ return false;
+ }
+ return metaModelService.lookupLogicalTypeByName(bookmark.getLogicalTypeName())
+ .flatMap(specificationLoader::specForLogicalType)
+ .map(ObjectSpecification::isDomainService)
+ .orElse(false);
+ }
+
+
@Data
public static class State {
private static final String DELIMITER = "--";
@@ -117,4 +142,5 @@ public String toMemento() {
return TimestampMarshallUtil.toString(timestamp) + DELIMITER + limit;
}
}
+
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
index e495401650f..b4f11044683 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport.java
@@ -40,7 +40,6 @@
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepository;
import org.apache.causeway.extensions.commandlog.applib.dom.ReplayState;
-import org.apache.causeway.extensions.commandlog.applib.spi.CommandReplayReferenceDataService;
@DomainObject(introspection = Introspection.ANNOTATION_REQUIRED)
@DomainObjectLayout(cssClassFa = "solid share-from-square")
@@ -50,7 +49,6 @@ public final class CommandManagerExport
implements ReplayableCommandParticipantTracker {
public static final String LOGICAL_TYPE_NAME = CausewayModuleExtCommandLogApplib.NAMESPACE + ".CommandExportManager";
- static final String SCRATCHPAD_KEY = LOGICAL_TYPE_NAME + "#current";
public static abstract class ActionDomainEvent<T>
extends CausewayModuleExtCommandLogApplib.ActionDomainEvent<T> { }
@@ -91,7 +89,7 @@ public List<ReplayableCommand> getCommands() {
ReplayableCommandParticipantTracker.putTrackerOnScratchpad(this, replayContext.scratchpad());
return activeCommandLogEntries().stream()
.filter(this::isDoOp)
- .map(this::replayableCommandInExportManagerContext)
+ .map(this::replayableCommandFor)
.collect(Collectors.toList());
}
@@ -136,7 +134,7 @@ public List<ReplayableCommand> commands(final Direction direction) {
}
@Programmatic
- Optional<CommandExportKnownTargetValidator.Failure> validateKnownTargets(
+ Optional<CommandKnownParticipantsValidator.Failure> validateKnownTargets(
final List<CommandLogEntry> selectedCommandLogEntries) {
return isRecordingSupportEnabled()
? validator().validate(baseline, selectedCommandLogEntries)
@@ -180,22 +178,6 @@ private boolean isRecordingSupportEnabled() {
&& replayContext.causewayConfiguration().getExtensions().getCommandLog().getRecordingSupport().isEnabled();
}
- private CommandExportKnownTargetValidator validator() {
- return new CommandExportKnownTargetValidator(this::isExportRootOrReferenceData);
- }
-
- private boolean isExportRootOrReferenceData(final Bookmark bookmark) {
- return isExportRoot(bookmark)
- || CommandReplayReferenceDataService.isReferenceData(replayContext.commandReplayReferenceDataServices(), bookmark);
- }
-
- private boolean isExportRoot(final Bookmark bookmark) {
- return replayContext.metaModelService() != null
- && replayContext.metaModelService().lookupLogicalTypeByName(bookmark.getLogicalTypeName())
- .map(logicalType -> logicalType.correspondingClass().isAnnotationPresent(org.apache.causeway.applib.annotation.DomainService.class))
- .orElse(false);
- }
-
@Programmatic
List<CommandLogEntry> activeCommandLogEntries() {
return commandLogEntryRepository().findForegroundSinceTimestamp(baseline, limit).stream()
@@ -208,16 +190,10 @@ private boolean isDoOp(final CommandLogEntry entry) {
return ReplayableCommand.Util.isDoOp(entry, replayContext.specificationLoader());
}
- private ReplayableCommand replayableCommandInExportManagerContext(final CommandLogEntry entry) {
- return replayContext.scratchpad() != null
- ? new ReplayableCommand(
- entry.getInteractionId(),
- replayContext)
- : new ReplayableCommand(
- entry.getInteractionId(),
- replayContext,
- new org.apache.causeway.commons.internal.base._Refs.ObjectReference<>(null),
- this);
+ private ReplayableCommand replayableCommandFor(final CommandLogEntry entry) {
+ return new ReplayableCommand(
+ entry.getInteractionId(),
+ replayContext);
}
private static boolean isActiveCommand(final CommandLogEntry entry) {
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
index 9fd6b306390..ef68ed7cc56 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandManagerExport_exportSelected.java
@@ -117,7 +117,7 @@ public String validateSelected(final List<ReplayableCommand> selected) {
return "Select at least one command to export";
}
return validateKnownTargets(selectedCommandLogEntries(selected))
- .map(CommandExportKnownTargetValidator.Failure::message)
+ .map(CommandKnownParticipantsValidator.Failure::message)
.orElse(null);
}
@@ -133,7 +133,7 @@ private List<CommandLogEntry> selectedCommandLogEntries(final List<ReplayableCom
.collect(Collectors.toList());
}
- private Optional<CommandExportKnownTargetValidator.Failure> validateKnownTargets(
+ private Optional<CommandKnownParticipantsValidator.Failure> validateKnownTargets(
final List<CommandLogEntry> selectedCommandLogEntries) {
return commandExportManager.validateKnownTargets(selectedCommandLogEntries);
}
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
index 95d065b505c..ac554d2ff02 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
@@ -50,7 +50,6 @@
import org.apache.causeway.applib.services.bookmark.BookmarkService;
import org.apache.causeway.applib.services.command.CommandExecutorService.InteractionContextPolicy;
import org.apache.causeway.applib.services.command.CommandRecordingSuppressed;
-import org.apache.causeway.applib.services.scratchpad.Scratchpad;
import org.apache.causeway.applib.util.schema.CommandDtoUtils;
import org.apache.causeway.commons.functional.Try;
import org.apache.causeway.commons.internal.base._NullSafe;
@@ -112,7 +111,7 @@ public ReplayContext replayContext() {
}
- private final ObjectReference<CommandRecord> recordRef;
+ private final ObjectReference<CommandRecord> recordRef = new ObjectReference<>(null);
private final ReplayableCommandParticipantTracker replayableCommandParticipantTracker;
@@ -184,26 +183,9 @@ public ReplayableCommand(
ReplayableCommand(
final UUID interactionId,
final ReplayContext replayContext) {
- this(interactionId, replayContext, new ObjectReference<>(null),
- ReplayableCommandParticipantTracker.current(replayContext.scratchpad()).orElse(null));
- }
-
- ReplayableCommand(
- final UUID interactionId,
- final ReplayContext replayContext,
- final ObjectReference<CommandRecord> recordRef) {
- this(interactionId, replayContext, recordRef, null);
- }
-
- ReplayableCommand(
- final UUID interactionId,
- final ReplayContext replayContext,
- final ObjectReference<CommandRecord> recordRef,
- final ReplayableCommandParticipantTracker replayableCommandParticipantTracker) {
this.interactionId = interactionId;
this.replayContext = replayContext;
- this.recordRef = recordRef;
- this.replayableCommandParticipantTracker = replayableCommandParticipantTracker;
+ this.replayableCommandParticipantTracker = ReplayableCommandParticipantTracker.current(replayContext.scratchpad()).orElse(null);
}
@ObjectSupport
diff --git a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java
index 0f2e82870d5..a47dbdccc1b 100644
--- a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java
+++ b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandParticipantTracker.java
@@ -15,15 +15,17 @@
*/
public interface ReplayableCommandParticipantTracker {
+ String SCRATCHPAD_KEY = CommandManagerExport.LOGICAL_TYPE_NAME + "#current";
+
static void putTrackerOnScratchpad(ReplayableCommandParticipantTracker value, Scratchpad scratchpad) {
if (scratchpad != null) {
- scratchpad.put(CommandManagerExport.SCRATCHPAD_KEY, value);
+ scratchpad.put(SCRATCHPAD_KEY, value);
}
}
static Optional<ReplayableCommandParticipantTracker> current(final Scratchpad scratchpad) {
return Optional.ofNullable(scratchpad)
- .map(sp -> sp.get(CommandManagerExport.SCRATCHPAD_KEY))
+ .map(sp -> sp.get(SCRATCHPAD_KEY))
.filter(ReplayableCommandParticipantTracker.class::isInstance)
.map(ReplayableCommandParticipantTracker.class::cast);
}
diff --git a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportKnownTargetValidatorTest.java b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandKnownParticipantsValidatorTest.java
similarity index 91%
rename from extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportKnownTargetValidatorTest.java
rename to extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandKnownParticipantsValidatorTest.java
index 4040a2551f2..05f6f42cfc2 100644
--- a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandExportKnownTargetValidatorTest.java
+++ b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/CommandKnownParticipantsValidatorTest.java
@@ -40,7 +40,7 @@
import org.apache.causeway.schema.common.v2.OidsDto;
import org.apache.causeway.schema.common.v2.ValueType;
-class CommandExportKnownTargetValidatorTest {
+class CommandKnownParticipantsValidatorTest {
private static final Timestamp BASELINE = Timestamp.from(Instant.parse("2026-06-07T10:00:00Z"));
private static final Timestamp BEFORE_BASELINE = Timestamp.from(Instant.parse("2026-06-07T09:59:59Z"));
@@ -54,7 +54,7 @@ class CommandExportKnownTargetValidatorTest {
@Test
void accepts_root_menu_service_target() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(action(T1, MENU_SERVICE, null)));
@@ -63,7 +63,7 @@ void accepts_root_menu_service_target() {
@Test
void accepts_target_returned_by_earlier_selected_command() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
action(T1, MENU_SERVICE, CUSTOMER),
@@ -74,7 +74,7 @@ void accepts_target_returned_by_earlier_selected_command() {
@Test
void accepts_target_returned_by_earlier_singleton_container_command() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var singletonContainerResult = CUSTOMER;
final var failure = validator.validate(BASELINE, List.of(
@@ -86,7 +86,7 @@ void accepts_target_returned_by_earlier_singleton_container_command() {
@Test
void accepts_reference_data_target_without_prior_result() {
- final var validator = new CommandExportKnownTargetValidator(bookmark -> MENU_SERVICE.equals(bookmark) || CATEGORY.equals(bookmark));
+ final var validator = new CommandKnownParticipantsValidator(bookmark -> MENU_SERVICE.equals(bookmark) || CATEGORY.equals(bookmark));
final var failure = validator.validate(BASELINE, List.of(action(T1, CATEGORY, null)));
@@ -95,7 +95,7 @@ void accepts_reference_data_target_without_prior_result() {
@Test
void rejects_unknown_non_root_target_and_reports_command_and_bookmark() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var selected = action(T1, CUSTOMER, null);
final var failure = validator.validate(BASELINE, List.of(selected));
@@ -110,7 +110,7 @@ void rejects_unknown_non_root_target_and_reports_command_and_bookmark() {
@Test
void ignores_result_before_baseline_when_validating_later_target() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
action(BEFORE_BASELINE, MENU_SERVICE, CUSTOMER),
@@ -122,7 +122,7 @@ void ignores_result_before_baseline_when_validating_later_target() {
@Test
void does_not_treat_locally_resolvable_object_as_root() {
- final var validator = new CommandExportKnownTargetValidator(__ -> false);
+ final var validator = new CommandKnownParticipantsValidator(__ -> false);
final var failure = validator.validate(BASELINE, List.of(action(T1, CUSTOMER, null)));
@@ -131,7 +131,7 @@ void does_not_treat_locally_resolvable_object_as_root() {
@Test
void later_result_does_not_validate_earlier_target() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
action(T1, CUSTOMER, null),
@@ -143,7 +143,7 @@ void later_result_does_not_validate_earlier_target() {
@Test
void safe_action_without_result_does_not_establish_unrelated_target() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
action(T1, MENU_SERVICE, null),
@@ -155,7 +155,7 @@ void safe_action_without_result_does_not_establish_unrelated_target() {
@Test
void property_commands_with_known_targets_establish_result_as_later_known_target() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
property(T1, MENU_SERVICE, CUSTOMER),
@@ -166,7 +166,7 @@ void property_commands_with_known_targets_establish_result_as_later_known_target
@Test
void accepts_reference_parameter_returned_by_earlier_selected_command() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
action(T1, MENU_SERVICE, CUSTOMER),
@@ -177,7 +177,7 @@ void accepts_reference_parameter_returned_by_earlier_selected_command() {
@Test
void accepts_reference_parameter_that_is_root_menu_service() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
actionWithReferenceParameter(T1, MENU_SERVICE, null, "menu", MENU_SERVICE)));
@@ -187,7 +187,7 @@ void accepts_reference_parameter_that_is_root_menu_service() {
@Test
void accepts_reference_data_reference_parameter_without_prior_result() {
- final var validator = new CommandExportKnownTargetValidator(bookmark -> MENU_SERVICE.equals(bookmark) || CATEGORY.equals(bookmark));
+ final var validator = new CommandKnownParticipantsValidator(bookmark -> MENU_SERVICE.equals(bookmark) || CATEGORY.equals(bookmark));
final var failure = validator.validate(BASELINE, List.of(
actionWithReferenceParameter(T1, MENU_SERVICE, null, "category", CATEGORY)));
@@ -197,7 +197,7 @@ void accepts_reference_data_reference_parameter_without_prior_result() {
@Test
void rejects_unknown_reference_parameter_and_reports_command_parameter_and_bookmark() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var selected = actionWithReferenceParameter(T1, MENU_SERVICE, null, "customer", CUSTOMER);
final var failure = validator.validate(BASELINE, List.of(selected));
@@ -213,7 +213,7 @@ void rejects_unknown_reference_parameter_and_reports_command_parameter_and_bookm
@Test
void later_result_does_not_validate_earlier_reference_parameter() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
actionWithReferenceParameter(T1, MENU_SERVICE, null, "customer", CUSTOMER),
@@ -227,7 +227,7 @@ void later_result_does_not_validate_earlier_reference_parameter() {
@Test
void result_before_baseline_does_not_validate_reference_parameter() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
action(BEFORE_BASELINE, MENU_SERVICE, CUSTOMER),
@@ -241,7 +241,7 @@ void result_before_baseline_does_not_validate_reference_parameter() {
@Test
void ignores_scalar_parameters_for_export_path_validation() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
actionWithScalarParameter(T1, MENU_SERVICE, null, "name")));
@@ -251,7 +251,7 @@ void ignores_scalar_parameters_for_export_path_validation() {
@Test
void ignores_reference_parameters_without_reference_bookmark() {
- final var validator = new CommandExportKnownTargetValidator(MENU_SERVICE::equals);
+ final var validator = new CommandKnownParticipantsValidator(MENU_SERVICE::equals);
final var failure = validator.validate(BASELINE, List.of(
actionWithReferenceParameter(T1, MENU_SERVICE, null, "customer", null)));