}
}
public void setOutputAndComplete(ITaskDAOConnection dao,String taskID, Document output, String participantToken) throws AuthException,
UnavailableTaskException, InvalidTaskStateException, AccessDeniedException {
UserRoles credentials = _authProvider.authenticate(participantToken);
Task task = dao.fetchTaskIfExists(taskID);
checkIsAvailable(taskID, task, credentials);
if (task instanceof ITaskWithOutput && task instanceof ITaskWithState) {
((ITaskWithOutput) task).setOutput(output);
((ITaskWithState) task).setState(TaskState.COMPLETED);
dao.updateTask(task);
dao.commit();
if (_logger.isDebugEnabled())
_logger.debug(credentials.getUserID() + " has set output and completed Workflow Task " + task);
} else {
throw new UnavailableTaskException(credentials.getUserID()
+ " cannot set output and complete Workflow Task " + task);
}
}