package org.drugis.common.threading.activity;
import java.util.Collections;
import java.util.List;
import org.drugis.common.threading.Task;
/**
* A ForkTransition initiates parallel activities.
*/
public class ForkTransition implements Transition {
private final Task d_source;
private final List<? extends Task> d_target;
public ForkTransition(Task source, List<? extends Task> target) {
d_source = source;
d_target = target;
}
public List<Task> getSources() {
return Collections.singletonList(d_source);
}
public List<Task> getTargets() {
return Collections.unmodifiableList(d_target);
}
public boolean isReady() {
return d_source.isFinished();
}
public List<Task> transition() {
if (!isReady()) {
throw new RuntimeException("Not ready for transition.");
}
return getTargets();
}
}