* revert API for IInterpreterInstall's
+ created Debug runner delegate class, to delegate debugger selection code.
diff --git a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/internal/launching/DebugRunnerDelegate.java b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/internal/launching/DebugRunnerDelegate.java
new file mode 100644
index 0000000..d245731
--- /dev/null
+++ b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/internal/launching/DebugRunnerDelegate.java
@@ -0,0 +1,71 @@
+package org.eclipse.dltk.internal.launching;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.dltk.core.DLTKLanguageManager;
+import org.eclipse.dltk.core.IDLTKLanguageToolkit;
+import org.eclipse.dltk.core.IScriptProject;
+import org.eclipse.dltk.launching.AbstractScriptLaunchConfigurationDelegate;
+import org.eclipse.dltk.launching.IInterpreterInstall;
+import org.eclipse.dltk.launching.IInterpreterRunner;
+import org.eclipse.dltk.launching.InterpreterConfig;
+import org.eclipse.dltk.launching.LaunchingMessages;
+import org.eclipse.dltk.launching.ScriptLaunchConfigurationConstants;
+import org.eclipse.dltk.launching.debug.DebuggingEngineManager;
+import org.eclipse.dltk.launching.debug.IDebuggingEngine;
+
+import com.ibm.icu.text.MessageFormat;
+
+/**
+ * Class used to delegate debug engine discovery before run operation is
+ * executed.
+ *
+ * @author haiodo
+ *
+ */
+public class DebugRunnerDelegate implements IInterpreterRunner {
+ private IInterpreterInstall install;
+
+ public DebugRunnerDelegate(IInterpreterInstall install) {
+ this.install = install;
+ }
+
+ public void run(InterpreterConfig config, ILaunch launch,
+ IProgressMonitor monitor) throws CoreException {
+ ILaunchConfiguration launchConfiguration = launch
+ .getLaunchConfiguration();
+ IScriptProject scriptProject = AbstractScriptLaunchConfigurationDelegate
+ .getScriptProject(launchConfiguration);
+
+ DebuggingEngineManager manager = DebuggingEngineManager.getInstance();
+ IDLTKLanguageToolkit toolkit = DLTKLanguageManager
+ .getLanguageToolkit(scriptProject);
+ IDebuggingEngine engine = manager.getSelectedDebuggingEngine(
+ scriptProject.getProject(), toolkit.getNatureId());
+
+ if (engine != null) {
+ IInterpreterRunner runner = engine.getRunner(install);
+ if (runner != null) {
+ runner.run(config, launch, monitor);
+ } else {
+ throw new CoreException(
+ new Status(
+ IStatus.ERROR,
+ DLTKLaunchingPlugin.PLUGIN_ID,
+ ScriptLaunchConfigurationConstants.ERR_INTERPRETER_RUNNER_DOES_NOT_EXIST,
+ MessageFormat
+ .format(
+ LaunchingMessages.InterpreterRunnerDoesntExist,
+ new String[] {
+ install.getName(),
+ ILaunchManager.DEBUG_MODE }),
+ null));
+ }
+ }
+ }
+}
diff --git a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractInterpreterInstall.java b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractInterpreterInstall.java
index da44ce8..31e252f 100644
--- a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractInterpreterInstall.java
+++ b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractInterpreterInstall.java
@@ -11,14 +11,12 @@
import java.io.File;
-import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.dltk.internal.launching.DLTKLaunchingPlugin;
-import org.eclipse.dltk.launching.debug.DebuggingEngineManager;
-import org.eclipse.dltk.launching.debug.IDebuggingEngine;
+import org.eclipse.dltk.internal.launching.DebugRunnerDelegate;
/**
* Abstract implementation of a interpreter install.
@@ -239,20 +237,13 @@
return null;
}
- protected IInterpreterRunner getDebugInterpreterRunner(IProject project) {
- DebuggingEngineManager manager = DebuggingEngineManager.getInstance();
- IDebuggingEngine engine = manager.getSelectedDebuggingEngine(project, getNatureId());
-
- if (engine != null) {
- return engine.getRunner(this);
- }
-
- return null;
+ protected IInterpreterRunner getDebugInterpreterRunner() {
+ return new DebugRunnerDelegate(this);
}
- public IInterpreterRunner getInterpreterRunner(String mode, IProject project) {
+ public IInterpreterRunner getInterpreterRunner(String mode) {
if (mode.equals(ILaunchManager.DEBUG_MODE)) {
- return getDebugInterpreterRunner(project);
+ return getDebugInterpreterRunner();
}
return null;
diff --git a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractScriptLaunchConfigurationDelegate.java b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractScriptLaunchConfigurationDelegate.java
index 954dec5..29d4bd2 100644
--- a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractScriptLaunchConfigurationDelegate.java
+++ b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractScriptLaunchConfigurationDelegate.java
@@ -789,7 +789,7 @@
// Getting IInterpreterRunner
monitor.subTask("Getting interpreter runner...");
final IInterpreterRunner runner = getInterpreterRunner(
- configuration, mode, project);
+ configuration, mode);
if (monitor.isCanceled()) {
return;
}
@@ -934,11 +934,11 @@
*
*/
public IInterpreterRunner getInterpreterRunner(
- ILaunchConfiguration configuration, String mode, IProject project)
+ ILaunchConfiguration configuration, String mode)
throws CoreException {
final IInterpreterInstall install = verifyInterpreterInstall(configuration);
- final IInterpreterRunner runner = install.getInterpreterRunner(mode, project);
+ final IInterpreterRunner runner = install.getInterpreterRunner(mode);
if (runner == null) {
abort(
diff --git a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/IInterpreterInstall.java b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/IInterpreterInstall.java
index 1037ed0..75aa8b1 100644
--- a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/IInterpreterInstall.java
+++ b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/IInterpreterInstall.java
@@ -11,12 +11,11 @@
import java.io.File;
-import org.eclipse.core.resources.IProject;
import org.eclipse.dltk.core.IBuiltinModuleProvider;
public interface IInterpreterInstall extends IBuiltinModuleProvider {
// Runner
- IInterpreterRunner getInterpreterRunner(String mode, IProject project);
+ IInterpreterRunner getInterpreterRunner(String mode);
String getNatureId();
diff --git a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/ScriptLaunchUtil.java b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/ScriptLaunchUtil.java
index 1e6bcd1..66dbab3 100644
--- a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/ScriptLaunchUtil.java
+++ b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/ScriptLaunchUtil.java
@@ -117,7 +117,7 @@
// will use 'instance scoped' interpreter here
IInterpreterRunner runner = install.getInterpreterRunner(launch
- .getLaunchMode(), null);
+ .getLaunchMode());
runner.run(config, launch, monitor);