package jetbrains.mps.make.service;
/*Generated by MPS */
import jetbrains.mps.make.IMakeService;
import java.util.concurrent.Future;
import jetbrains.mps.make.script.IResult;
import jetbrains.mps.make.MakeSession;
import jetbrains.mps.make.resources.IResource;
import jetbrains.mps.progress.EmptyProgressMonitor;
import jetbrains.mps.make.script.IScript;
import jetbrains.mps.make.script.IScriptController;
import jetbrains.mps.make.script.IConfigMonitor;
import jetbrains.mps.internal.make.runtime.script.MessageFeedbackStrategy;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.make.script.IFeedback;
import jetbrains.mps.make.script.IOption;
import jetbrains.mps.make.script.IQuery;
public abstract class AbstractMakeService implements IMakeService {
public AbstractMakeService() {
}
@Override
public Future<IResult> make(MakeSession session, Iterable<? extends IResource> resources) {
return make(session, resources, null, null, new EmptyProgressMonitor());
}
@Override
public Future<IResult> make(MakeSession session, Iterable<? extends IResource> resources, IScript script) {
return make(session, resources, script, null, new EmptyProgressMonitor());
}
@Override
public Future<IResult> make(MakeSession session, Iterable<? extends IResource> resources, IScript script, IScriptController controller) {
return make(session, resources, script, controller, new EmptyProgressMonitor());
}
/**
* Reasonable defaults when no IScriptController is supplied by client
* I'm not certain there's great value in this distinct subclass of IConfigMonitor.Stub, perhaph, could move everything in there.
* Just don't understand why Stub.relayQuery is different, and whether we care to report feedback always.
*/
public static class DefaultMonitor extends IConfigMonitor.Stub {
private final MessageFeedbackStrategy myFeedback;
public DefaultMonitor(@NotNull MakeSession makeSession) {
super(makeSession);
myFeedback = new MessageFeedbackStrategy(makeSession.getMessageHandler());
}
@Override
public void reportFeedback(IFeedback fdbk) {
myFeedback.reportFeedback(fdbk);
}
@Override
public <T extends IOption> T relayQuery(IQuery<T> query) {
return query.defaultOption();
}
}
}