예제 #1
0
    @Override
    public void progressMade() {
      final List<FlowCallback> callbackList;
      synchronized (sync) {
        callbackList = callbacksToCall;
      }

      for (FlowCallback flowCallback : callbackList) {
        flowCallback.progressMade();
      }
    }
예제 #2
0
    @Override
    public void completed(final Status status) {
      final List<FlowCallback> callbackList;
      synchronized (sync) {
        updateState();
        callbackList = callbacksToCall; // Get the reference before leaving the synchronized
      }

      if (jobState == Status.SUCCEEDED && notifiedCallbackAlready.compareAndSet(false, true)) {
        callCallbacks(callbackList, Status.SUCCEEDED);
      } else if (jobState == Status.FAILED && notifiedCallbackAlready.compareAndSet(false, true)) {
        for (ExecutableFlow flow : flows) {
          exceptions.putAll(flow.getExceptions());
        }
        callCallbacks(callbackList, Status.FAILED);
      } else {
        for (FlowCallback flowCallback : callbackList) {
          flowCallback.progressMade();
        }
      }
    }