in accord-core/src/main/java/accord/local/Command.java [1533:1580]
private static SaveStatus validateCommandClass(TxnId txnId, SaveStatus status, Class<?> klass)
{
switch (status)
{
case Uninitialised:
case NotDefined:
return validateCommandClass(status, NotDefined.class, klass);
case PreAccepted:
case PreAcceptedWithDeps:
case PreAcceptedWithVote:
return validateCommandClass(status, PreAccepted.class, klass);
case AcceptedInvalidate:
return validateCommandClass(status, NotAcceptedWithoutDefinition.class, klass);
case AcceptedInvalidateWithDefinition:
case AcceptedMedium:
case AcceptedMediumWithDefinition:
case AcceptedMediumWithDefAndVote:
case AcceptedSlow:
case AcceptedSlowWithDefinition:
case AcceptedSlowWithDefAndVote:
case PreCommitted:
case PreCommittedWithDeps:
case PreCommittedWithFixedDeps:
case PreCommittedWithDefinition:
case PreCommittedWithDefAndDeps:
case PreCommittedWithDefAndFixedDeps:
return validateCommandClass(status, Accepted.class, klass);
case Committed:
case ReadyToExecute:
case Stable:
return validateCommandClass(status, Committed.class, klass);
case PreApplied:
case Applying:
case Applied:
return validateCommandClass(status, Executed.class, klass);
case TruncatedUnapplied:
case TruncatedApply:
case TruncatedApplyWithOutcome:
if (txnId.awaitsOnlyDeps())
return validateCommandClass(status, TruncatedAwaitsOnlyDeps.class, klass);
case Erased:
case Vestigial:
case Invalidated:
return validateCommandClass(status, Truncated.class, klass);
default:
throw illegalState("Unhandled status " + status);
}
}