WorkflowSessionAppendCommand.java
package org.hammer.audio.workflow.collaboration.store;
import java.util.Objects;
/**
* Atomic durable append request for one accepted collaboration command.
*
* @param sessionId target collaboration-session identifier
* @param expectedRevision semantic revision required by the caller
* @param operation canonically serialized accepted operation
* @param workflowId identifier of the resulting canonical workflow
* @param workflowDsl deterministic serialized resulting workflow
* @param outboxEvent event to persist atomically with the operation
*/
public record WorkflowSessionAppendCommand(
String sessionId,
long expectedRevision,
WorkflowOperationPersistenceData operation,
String workflowId,
String workflowDsl,
WorkflowOutboxEventData outboxEvent) {
public WorkflowSessionAppendCommand {
sessionId = requireNotBlank(sessionId, "sessionId");
if (expectedRevision < 0) {
throw new IllegalArgumentException("expectedRevision must be >= 0");
}
Objects.requireNonNull(operation, "operation");
workflowId = requireNotBlank(workflowId, "workflowId");
workflowDsl = requireNotBlank(workflowDsl, "workflowDsl");
Objects.requireNonNull(outboxEvent, "outboxEvent");
}
private static String requireNotBlank(String value, String name) {
Objects.requireNonNull(value, name);
if (value.isBlank()) {
throw new IllegalArgumentException(name + " must not be blank");
}
return value;
}
}