public void cancel()

in src/main/java/com/amazonaws/services/simpleworkflow/flow/core/ExternalTaskContext.java [107:155]


    public void cancel(final Throwable cause) {
        if (completionHandle.failure != null || completionHandle.completed) {
            return;
        }
        if (cancelRequested) {
            return;
        }
        cancelRequested = true;
        if (cancellationHandler != null) {
            parent.getExecutor().execute(new Runnable() {

                @Override
                public void run() {
                    Error error = null;
                    try {
                        inCancellationHandler = true;
                        cancellationHandler.handleCancellation(cause);
                    }
                    catch (Throwable e) {
                        if (e instanceof Error) {
                            error = (Error) e;
                        }
                        else {
                            if (stackTrace != null && !parent.isRethrown(e)) {
                                AsyncStackTrace merged = new AsyncStackTrace(stackTrace, e.getStackTrace(), 0);
                                merged.setStartFrom(getParentTaskMethodName());
                                e.setStackTrace(merged.getStackTrace());
                            }
                            completionHandle.setDoExecuteFailed("ExternalTaskCancellationHandler.handleCancellation", e);
                        }
                    }
                    finally {
                        if (error != null) {
                            throw error;
                        }
                        inCancellationHandler = false;
                        if (completionHandle.getFailure() != null) {
                            failToParent(completionHandle.getFailure());
                        }
                        else if (completionHandle.isCompleted()) {
                            removeFromParent();
                        }
                    }
                }
            });
        } else {
            removeFromParent();
        }
    }