public static void notifyStatusChanged(
final Iterable<Pair<TaskRunnerListener, Executor>> listeners,
final String taskId,
final TaskStatus status
)
{
log.info("Task [%s] status changed to [%s].", taskId, status.getStatusCode());
for (final Pair<TaskRunnerListener, Executor> listener : listeners) {
try {
listener.rhs.execute(
new Runnable()
{
@Override
public void run()
{
listener.lhs.statusChanged(taskId, status);
}
}
);
}
catch (Exception e) {
log.makeAlert(e, "Unable to notify task listener")
.addData("taskId", taskId)
.addData("taskStatus", status.getStatusCode())
.addData("listener", listener.toString())
.emit();
}
}
}
}