package jetbrains.mps.baseLanguage.unitTest.execution.server;
/*Generated by MPS */
import org.junit.runner.Runner;
import org.junit.runner.Request;
import org.junit.runner.notification.RunNotifier;
import org.junit.runner.Description;
public class StoppableRunner extends Runner {
private final Object myLock = "";
protected final Request myRequest;
private boolean myStopping;
private RunNotifier myNotifier = null;
public StoppableRunner(Request request, boolean stopping) {
myRequest = request;
myStopping = stopping;
}
@Override
public Description getDescription() {
return myRequest.getRunner().getDescription();
}
@Override
public void run(RunNotifier notifier) {
synchronized (myLock) {
if (myStopping) {
notifier.pleaseStop();
}
myNotifier = notifier;
}
doRun(notifier);
}
protected void doRun(RunNotifier notifier) {
myRequest.getRunner().run(notifier);
}
public void pleaseStop() {
synchronized (myLock) {
if (myNotifier != null) {
myNotifier.pleaseStop();
}
myStopping = true;
}
}
}