package hu.sztaki.ilab.longneck.process.kernel;
import hu.sztaki.ilab.longneck.Record;
/**
*
* @author Lukacs Gabor <lukacsg@sztaki.mta.hu>
*/
public class TryAllControl implements StartHandler, SuccessHandler, ErrorHandler {
/** Last executed case. */
public TryAllControl() {
}
@Override
public void beforeChildren(KernelState kernelState, Record record) {
record.saveState();
}
@Override
public void onSuccess(KernelState kernelState, Record record) {
record.removeState();
record.saveState();
}
@Override
public void onError(KernelState kernelState, Record record) {
// Roll back changes
record.restoreState();
record.saveState();
// Clear error
kernelState.clearError();
}
@Override
public TryAllControl clone() {
try {
return (TryAllControl) super.clone();
} catch (CloneNotSupportedException ex) {
throw new AssertionError(ex);
}
}
}