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)); } } }