All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.rouz.task.TaskContextWithId Maven / Gradle / Ivy

The newest version!
package io.rouz.task;

import java.util.List;
import java.util.Optional;
import java.util.stream.Collector;

import io.rouz.task.dsl.TaskBuilder;

import static java.util.Objects.requireNonNull;

/**
 * A {@link TaskContext} that overrides {@link #currentTaskId()} to return a specific {@link TaskId}.
 */
class TaskContextWithId implements TaskContext {

  private final TaskContext delegate;
  private final TaskId taskId;

  private TaskContextWithId(TaskContext delegate, TaskId taskId) {
    this.delegate = requireNonNull(delegate);
    this.taskId = requireNonNull(taskId);
  }

  static TaskContext withId(TaskContext delegate, TaskId taskId) {
    return new TaskContextWithId(delegate, taskId);
  }

  @Override
  public Optional currentTaskId() {
    return Optional.of(taskId);
  }

  // === forwarding methods =======================================================================

  @Override
  public  Value evaluate(Task task) {
    return delegate.evaluate(task);
  }

  @Override
  public  Value invokeProcessFn(TaskId taskId, TaskBuilder.F0> processFn) {
    return delegate.invokeProcessFn(taskId, processFn);
  }

  @Override
  public  Value value(TaskBuilder.F0 value) {
    return delegate.value(value);
  }

  @Override
  public  Value immediateValue(T value) {
    return delegate.immediateValue(value);
  }

  @Override
  public  Promise promise() {
    return delegate.promise();
  }

  @Override
  public  Collector, ?, Value>> toValueList() {
    return delegate.toValueList();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy