Interface ApprovalDecision

All Known Implementing Classes:
ApprovalDecision.Approved, ApprovalDecision.Modified, ApprovalDecision.Rejected

public sealed interface ApprovalDecision permits ApprovalDecision.Approved, ApprovalDecision.Rejected, ApprovalDecision.Modified
Outcome of a human approval request.

Three mutually exclusive variants are modeled as records inside this sealed interface, enabling exhaustive switch expressions with full compiler enforcement (Java 21+):


 ApprovalDecision decision = gate.requestApproval(request).join();
 switch (decision) {
     case ApprovalDecision.Approved a  -> executeAction(request.payload());
     case ApprovalDecision.Rejected r  -> log.warn("Rejected: {}", r.reason());
     case ApprovalDecision.Modified m  -> executeAction(m.newPayload());
 }
 
Since:
0.13.0
See Also: