Bug 289478 - Provide script load breakpoints
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIScriptLoadBreakpoint.java b/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIScriptLoadBreakpoint.java
index 73bfad7..a8a4b38 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIScriptLoadBreakpoint.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIScriptLoadBreakpoint.java
@@ -14,8 +14,8 @@
import java.util.Map;
import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
@@ -45,19 +45,18 @@
/**
* Constructor
*
- * @param resource
* @param charstart
* @param charend
* @param attributes
* @param register
* @throws DebugException
*/
- public JSDIScriptLoadBreakpoint(final IResource resource, final int charstart, final int charend, final Map attributes, final boolean register) throws DebugException {
+ public JSDIScriptLoadBreakpoint(final int charstart, final int charend, final Map attributes, final boolean register) throws DebugException {
IWorkspaceRunnable wr = new IWorkspaceRunnable() {
public void run(IProgressMonitor monitor) throws CoreException {
// create the marker
- setMarker(resource.createMarker(JSDIBreakpoint.JSDI_SCRIPT_LOAD_BREAKPOINT));
+ setMarker(ResourcesPlugin.getWorkspace().getRoot().createMarker(JSDIBreakpoint.JSDI_SCRIPT_LOAD_BREAKPOINT));
// add attributes
attributes.put(IBreakpoint.ID, getModelIdentifier());
@@ -71,7 +70,7 @@
register(register);
}
};
- run(getMarkerRule(resource), wr);
+ run(getMarkerRule(ResourcesPlugin.getWorkspace().getRoot()), wr);
}
/*
@@ -120,6 +119,20 @@
/*
* (non-Javadoc)
*
+ * @see org.eclipse.e4.languages.javascript.debug.model.JSDIBreakpoint#deregisterRequest(org.eclipse.e4.languages.javascript.debug.model.JSDIDebugTarget, org.eclipse.e4.languages.javascript.jsdi.request.EventRequest)
+ */
+ protected void deregisterRequest(JSDIDebugTarget target, EventRequest request) {
+ target.removeJSDIEventListener(this, request);
+ try {
+ decrementInstallCount();
+ } catch (CoreException ce) {
+ // TODO log this
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.e4.languages.javascript.debug.model.JSDIBreakpoint#eventSetComplete(org.eclipse.e4.languages.javascript.jsdi.event.Event, org.eclipse.e4.languages.javascript.debug.model.JSDIDebugTarget, boolean, org.eclipse.e4.languages.javascript.jsdi.event.EventSet)
*/
public void eventSetComplete(Event event, JSDIDebugTarget target, boolean suspend, EventSet eventSet) {
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIThread.java b/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIThread.java
index 298c3c9..e0b17cb 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIThread.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIThread.java
@@ -402,6 +402,7 @@
synchronized void markResumed() {
this.state = RUNNING;
clearFrames();
+ this.breakpoints.clear();
}
/**
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.ui/src/org/eclipse/e4/languages/internal/javascript/debug/ui/actions/AddScriptLoadBreakpointAction.java b/bundles/org.eclipse.e4.languages.javascript.debug.ui/src/org/eclipse/e4/languages/internal/javascript/debug/ui/actions/AddScriptLoadBreakpointAction.java
index 47e871f..2ff2fa6 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.ui/src/org/eclipse/e4/languages/internal/javascript/debug/ui/actions/AddScriptLoadBreakpointAction.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.ui/src/org/eclipse/e4/languages/internal/javascript/debug/ui/actions/AddScriptLoadBreakpointAction.java
@@ -65,7 +65,7 @@
attributes.put(JSDIBreakpoint.TYPE_NAME, scriptname);
attributes.put(JSDIBreakpoint.SCRIPT_PATH, scriptpath);
try {
- new JSDIScriptLoadBreakpoint(ResourcesPlugin.getWorkspace().getRoot(), 0, 0, attributes, true);
+ new JSDIScriptLoadBreakpoint(0, 0, attributes, true);
}
catch(DebugException de) {
//TODO log this