package jetbrains.mps.debugger.java.runtime.engine.events; /*Generated by MPS */ import com.sun.jdi.event.EventSet; import com.sun.jdi.ThreadReference; import org.jetbrains.annotations.NotNull; import com.sun.jdi.event.LocatableEvent; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.internal.collections.runtime.ISequenceClosure; import com.sun.jdi.event.Event; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.debugger.java.runtime.engine.RequestManager; public class EventContext implements Context { private final EventSet myEventSet; private int myVotesToVote; private final EventsProcessor myEventProcessor; private final ThreadReference myThreadReference; public EventContext(@NotNull EventsProcessor eventProcessor, @NotNull EventSet eventSet) { myEventSet = eventSet; myEventProcessor = eventProcessor; myVotesToVote = eventSet.size(); LocatableEvent event = (LocatableEvent) Sequence.fromIterable(Sequence.fromClosure(new ISequenceClosure<Event>() { public Iterable<Event> iterable() { return myEventSet; } })).findFirst(new IWhereFilter<Event>() { public boolean accept(Event it) { return it instanceof LocatableEvent; } }); myThreadReference = check_gqjtnu_a0f0e(event); } @Override public int getSuspendPolicy() { return myEventSet.suspendPolicy(); } @Override public ThreadReference getThread() { return myThreadReference; } public RequestManager getRequestManager() { return myEventProcessor.getRequestManager(); } /*package*/ void vote() { // only called from ContextManager myVotesToVote--; } /*package*/ boolean isProcessed() { // only called from ContextManager return myVotesToVote == 0; } /*package*/ void resume() { // only called from ContextManager myEventSet.resume(); } @NotNull public EventSet getEventSet() { return myEventSet; } private static ThreadReference check_gqjtnu_a0f0e(LocatableEvent checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.thread(); } return null; } }