WorkflowOperationRejectedException.java
package org.hammer.audio.workflow.editor;
import java.util.List;
import java.util.Objects;
/**
* Thrown when a {@link org.hammer.audio.workflow.WorkflowOperation} produces a structurally invalid
* workflow.
*
* <p>The {@link #violations()} list contains human-readable descriptions of every constraint
* violation detected by {@link org.hammer.audio.workflow.WorkflowValidator}. Callers (e.g. an HTTP
* adapter) should translate this into a 422 response body.
*/
public final class WorkflowOperationRejectedException extends RuntimeException {
private final List<String> violationMessages;
/**
* Creates a new exception with the given validation violations.
*
* @param violations non-empty list of violation messages from {@code WorkflowValidator}
*/
public WorkflowOperationRejectedException(List<String> violations) {
super("Operation rejected: " + Objects.requireNonNull(violations, "violations"));
this.violationMessages = List.copyOf(violations);
}
/**
* Returns the list of constraint violations that caused the rejection.
*
* @return immutable, non-empty list of violation messages
*/
public List<String> violations() {
return violationMessages;
}
}