private static SaveStatus validateCommandClass()

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);
        }
    }