Example #1
0
  /**
   * Starts the task.
   *
   * <p>The registered {@link TaskListener} will be notified on completion or failure.
   *
   * @param context the task context
   */
  public void start(TaskContext context) {
    this.context = context;

    condition.addTaskListener(
        new DefaultTaskListener() {
          @Override
          public void taskEvent(TaskEvent event) {
            onConditionEvent(event);
          }
        });
    task.addTaskListener(
        new DefaultTaskListener() {
          @Override
          public void taskEvent(TaskEvent event) {
            onTaskEvent(event);
          }
        });
    if (elseTask != null) {
      elseTask.addTaskListener(
          new DefaultTaskListener() {
            @Override
            public void taskEvent(TaskEvent event) {
              onTaskEvent(event);
            }
          });
    }
    start(condition, context);
  }
Example #2
0
 /**
  * Invoked when the condition task completes or is cancelled.
  *
  * @param event the event
  */
 private void onConditionEvent(TaskEvent event) {
   switch (event.getType()) {
     case SKIPPED:
       notifySkipped();
       break;
     case CANCELLED:
       notifyCancelled();
       break;
     case COMPLETED:
       if (condition.getValue()) {
         start(task, context);
       } else if (elseTask != null) {
         start(elseTask, context);
       } else {
         notifyCompleted();
       }
       break;
   }
 }