@Override public void onBegin(final Task task) { for (final TaskListener listener : _listeners) { listener.onBegin(task); } }
private void invokeNested(final int count, final Task task) { if (count == 0) { if (_error == null) { logger.debug("Calling onComplete(...) on nested TaskListener ()"); _nestedTaskListener.onComplete(task); } else { logger.debug("Calling onError(...) on nested TaskListener ()"); _nestedTaskListener.onError(task, _error); } } } }
@Override public void run() { if (_listener == null) { // execute without listener try { _task.execute(); } catch (final Throwable t) { logger.warn("No TaskListener to inform of error!", t); } } else { // execute with listener _listener.onBegin(_task); try { if (_task != null) { _task.execute(); } _listener.onComplete(_task); } catch (final Throwable t) { _listener.onError(_task, t); } } }
@Override public void onError(final Task task, final Throwable throwable) { for (final TaskListener listener : _listeners) { listener.onError(task, throwable); } }
@Override public void onComplete(final Task task) { for (final TaskListener listener : _listeners) { listener.onComplete(task); } }
@Override public void onError(final Task task, final Throwable throwable) { _nextListener.onError(task, throwable); }
@Override public void onComplete(final Task task) { try { cleanup(); } catch (final Exception e) { onErrorInternal(task, e, false); return; } if (_nextTaskListener != null) { _nextTaskListener.onComplete(task); } }
@Override public void onError(final Task task, final Throwable throwable) { for (final TaskRunnable tr : _tasks) { final TaskListener listener = tr.getListener(); if (listener == null) { logger.warn("TaskListener for {} was null", tr); } else { listener.onError(task, throwable); } } } }
@Override public void onBegin(final Task task) { if (_nextTaskListener != null) { _nextTaskListener.onBegin(task); } }
@Override public void run(final Task task, final TaskListener taskListener) { if (isErrornous()) { taskListener.onError(task, _previousErrorsExistException); } else if (isCancelled()) { logger.info("Ignoring task because job has been cancelled: {}", task); taskListener.onError(task, _previousErrorsExistException); } else { _taskRunner.run(task, taskListener); } }
private void onErrorInternal(final Task task, final Throwable throwable, final boolean doCleanup) { final boolean previouslySuccessful = _success.getAndSet(false); if (doCleanup) { try { cleanup(); } catch (final Exception e) { throwable.addSuppressed(e); } } if (previouslySuccessful) { // only report the first such error _analysisListener.errorUnknown(_analysisJob, throwable); } if (_nextTaskListener != null) { _nextTaskListener.onError(task, throwable); } } }