/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.sa.engine;
/**
* An ExecutionTask which can be used to fail the currently running order.
*/
public class FailTask extends ExecutionTask<Void> {
private static final String DETAIL_SUFFIX = ".detail";
private static final String MESSAGE_SUFFIX = ".message";
private final String failMessage;
private final Exception exception;
public FailTask(String taskNameKey, Object[] detailArgs, Object[] failMessageArgs) {
this(taskNameKey, null, detailArgs, failMessageArgs);
}
public FailTask(String taskNameKey, Exception exception, Object[] detailArgs, Object[] failMessageArgs) {
setName(taskNameKey);
setDetail(taskNameKey + DETAIL_SUFFIX, detailArgs);
this.failMessage = getMessage(taskNameKey + MESSAGE_SUFFIX, failMessageArgs);
if (exception == null) {
exception = stateException("failTask.stateException", getMessage(taskNameKey), this.failMessage);
}
this.exception = exception;
}
public void execute() throws Exception {
logError(failMessage);
throw exception;
}
}