package jetbrains.mps.testbench; /*Generated by MPS */ import jetbrains.mps.make.service.AbstractMakeService; 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.make.script.IScript; import jetbrains.mps.make.script.IScriptController; import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.util.ProgressMonitor; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.messages.Message; import jetbrains.mps.messages.MessageKind; import jetbrains.mps.internal.make.runtime.util.FutureValue; import jetbrains.mps.make.dependencies.MakeSequence; import jetbrains.mps.make.service.CoreMakeTask; import jetbrains.mps.make.IMakeNotificationListener; /** * Simplistic make service tailored for MPS own tests */ public class TestMakeService extends AbstractMakeService implements IMakeService { public TestMakeService() { } @Override public Future<IResult> make(MakeSession session, Iterable<? extends IResource> resources, IScript script, IScriptController controller, @NotNull ProgressMonitor monitor) { String scrName = "Build"; if (Sequence.fromIterable(resources).isEmpty()) { String msg = scrName + " aborted: nothing to do"; session.getMessageHandler().handle(new Message(MessageKind.ERROR, msg)); return new FutureValue<IResult>(new IResult.FAILURE(null)); } MakeSequence makeSeq = new MakeSequence(resources, script, session); IScriptController ctl = this.completeController(controller, session); CoreMakeTask task = new CoreMakeTask(scrName, makeSeq, ctl, session.getMessageHandler()); task.run(monitor); return new FutureValue<IResult>(task.getResult()); } @Override public boolean isSessionActive() { return false; } @Override public boolean openNewSession(MakeSession session) { return false; } @Override public void closeSession(MakeSession session) { } @Override public void addListener(IMakeNotificationListener listener) { throw new UnsupportedOperationException(); } @Override public void removeListener(IMakeNotificationListener listener) { throw new UnsupportedOperationException(); } private IScriptController completeController(final IScriptController ctl, MakeSession makeSession) { if (ctl != null) { return ctl; } // it's MakeService client's responsibility to populate properties of possible facets, by default, we do nothing and use blank default controller return new IScriptController.Stub2(makeSession); } }