| package org.eclipse.e4.languages.javascript.rhino.jsdi.request; |
| |
| import org.eclipse.e4.languages.javascript.debug.connect.DisconnectException; |
| import org.eclipse.e4.languages.javascript.debug.connect.Request; |
| import org.eclipse.e4.languages.javascript.debug.connect.Response; |
| import org.eclipse.e4.languages.javascript.debug.connect.TimeoutException; |
| import org.eclipse.e4.languages.javascript.jsdi.Location; |
| import org.eclipse.e4.languages.javascript.jsdi.ThreadReference; |
| import org.eclipse.e4.languages.javascript.jsdi.request.BreakpointRequest; |
| import org.eclipse.e4.languages.javascript.rhino.jsdi.ScriptReferenceImpl; |
| import org.eclipse.e4.languages.javascript.rhino.jsdi.VirtualMachineImpl; |
| |
| public class BreakpointRequestImpl extends EventRequestImpl implements BreakpointRequest { |
| |
| private final Location location; |
| private ThreadReference thread; |
| private String condition; |
| private Long breakpointId; |
| |
| public BreakpointRequestImpl(VirtualMachineImpl vm, Location location) { |
| super(vm); |
| this.location = location; |
| } |
| |
| public synchronized void addThreadFilter(ThreadReference thread) { |
| checkDeleted(); |
| this.thread = thread; |
| } |
| |
| public synchronized ThreadReference thread() { |
| return thread; |
| } |
| |
| public synchronized void addConditionFilter(String condition) { |
| checkDeleted(); |
| this.condition = condition; |
| } |
| |
| public synchronized String condition() { |
| return condition; |
| } |
| |
| public Location location() { |
| return location; |
| } |
| |
| public synchronized void setEnabled(boolean enabled) { |
| checkDeleted(); |
| if (this.enabled == enabled) |
| return; |
| |
| if (enabled) { |
| ScriptReferenceImpl scriptReferenceImpl = (ScriptReferenceImpl) location.scriptReference(); |
| Long scriptId = scriptReferenceImpl.getScriptId(); |
| |
| Request request = new Request("setbreakpoint"); |
| request.getArguments().put("scriptId", scriptId); |
| if (location.functionName() != null) |
| request.getArguments().put("function", location.functionName()); |
| else |
| request.getArguments().put("line", new Integer(location.lineNumber())); |
| try { |
| Response response = vm.sendRequest(request); |
| breakpointId = new Long(((Number) response.getBody().get("breakpointId")).longValue()); |
| } catch (TimeoutException e) { |
| e.printStackTrace(); |
| } catch (DisconnectException e) { |
| e.printStackTrace(); |
| } |
| } else { |
| Request request = new Request("clearbreakpoint"); |
| request.getArguments().put("breakpointId", breakpointId); |
| try { |
| vm.sendRequest(request); |
| breakpointId = null; |
| } catch (TimeoutException e) { |
| e.printStackTrace(); |
| } catch (DisconnectException e) { |
| e.printStackTrace(); |
| } |
| } |
| this.enabled = enabled; |
| } |
| |
| public Long breakpointId() { |
| return breakpointId; |
| } |
| } |