private void updateState()

in src/main/java/com/amazonaws/services/simpleworkflow/flow/core/TryCatchFinallyContext.java [210:251]


    private void updateState() {
        if (state == State.CLOSED || !executed) {
            return;
        }
        if (nonDaemonHeirsCount == 0) {
            if (heirs.isEmpty()) {
                if (state == State.TRYING) {
                    if (failure == null) {
                        state = State.FINALIZING;
                        execute();
                    }
                    else {
                        state = State.CATCHING;
                        execute();
                    }
                }
                else if (state == State.CATCHING) {
                    state = State.FINALIZING;
                    execute();
                }
                else if (state == State.FINALIZING) {
                    assert state != State.CLOSED;
                    state = State.CLOSED;
                    if (failure == null) {
                        parent.remove(this);
                    }
                    else {
                        parent.fail(this, failure);
                    }
                }
                else {
                    throw new IllegalStateException("Unknown state " + state);
                }
            }
            else {
                if (failure == null) {
                    daemondCausedCancellation = true;
                }
                cancelHeirs();
            }
        }
    }