package jetbrains.mps.debugger.java.runtime.state.watchables;
/*Generated by MPS */
import com.sun.jdi.event.Event;
import java.util.List;
import jetbrains.mps.debug.api.programState.IWatchable;
import com.sun.jdi.ThreadReference;
import com.sun.jdi.event.ExceptionEvent;
import com.sun.jdi.ObjectReference;
import com.sun.jdi.event.MethodEntryEvent;
import com.sun.jdi.Method;
import com.sun.jdi.event.MethodExitEvent;
import com.sun.jdi.Value;
import com.sun.jdi.event.AccessWatchpointEvent;
import com.sun.jdi.Field;
import com.sun.jdi.event.ModificationWatchpointEvent;
public class EventWatchablesCreator {
public EventWatchablesCreator() {
}
public void addWatchablesFromEvent(Event event, List<IWatchable> watchables, ThreadReference threadReference) {
if (event instanceof ExceptionEvent) {
ObjectReference exception = ((ExceptionEvent) event).exception();
watchables.add(new JavaExceptionWatchable(exception, threadReference));
} else
if (event instanceof MethodEntryEvent) {
Method method = ((MethodEntryEvent) event).method();
watchables.add(new JavaMethodWatchable(method, true, threadReference));
} else
if (event instanceof MethodExitEvent) {
Method method = ((MethodExitEvent) event).method();
Value value = ((MethodExitEvent) event).returnValue();
watchables.add(new JavaMethodWatchable(method, false, threadReference));
watchables.add(new JavaReturnWatchable(value, threadReference));
} else
if (event instanceof AccessWatchpointEvent) {
Field field = ((AccessWatchpointEvent) event).field();
Value value = ((AccessWatchpointEvent) event).valueCurrent();
watchables.add(new JavaWatchpointWatchable(field, value, threadReference));
} else
if (event instanceof ModificationWatchpointEvent) {
Field field = ((ModificationWatchpointEvent) event).field();
Value currentValue = ((ModificationWatchpointEvent) event).valueCurrent();
Value valueToBe = ((ModificationWatchpointEvent) event).valueToBe();
watchables.add(new JavaWatchpointWatchable(field, currentValue, valueToBe, threadReference));
}
}
}