WorkflowMergePreview.java
package org.hammer.audio.workflow.history;
import java.util.Objects;
import org.hammer.audio.workflow.Workflow;
import org.hammer.audio.workflow.merge.WorkflowMergeModels.Preview;
import org.hammer.audio.workflow.store.CommitId;
/**
* Authoritative stored workflows and deterministic semantic merge preview.
*
* @param targetBranch branch containing the local version
* @param remoteBranch branch containing the remote version
* @param baseCommit exact common-base commit
* @param localCommit exact local commit
* @param remoteCommit exact remote commit
* @param baseWorkflow parsed base workflow
* @param localWorkflow parsed local workflow
* @param remoteWorkflow parsed remote workflow
* @param merge deterministic automatic result, conflicts and validation impact
*/
public record WorkflowMergePreview(
String targetBranch,
String remoteBranch,
CommitId baseCommit,
CommitId localCommit,
CommitId remoteCommit,
Workflow baseWorkflow,
Workflow localWorkflow,
Workflow remoteWorkflow,
Preview merge) {
public WorkflowMergePreview {
requireText(targetBranch, "targetBranch");
requireText(remoteBranch, "remoteBranch");
Objects.requireNonNull(baseCommit, "baseCommit");
Objects.requireNonNull(localCommit, "localCommit");
Objects.requireNonNull(remoteCommit, "remoteCommit");
Objects.requireNonNull(baseWorkflow, "baseWorkflow");
Objects.requireNonNull(localWorkflow, "localWorkflow");
Objects.requireNonNull(remoteWorkflow, "remoteWorkflow");
Objects.requireNonNull(merge, "merge");
}
private static void requireText(String value, String name) {
if (value == null || value.isBlank()) {
throw new IllegalArgumentException(name + " must not be blank");
}
}
}