Bug 549732 - Fix NPE with parameter monitor=null in run(...)
Change-Id: I5a746c92e7526bbd6b6afd835de9d0682fede4b9
Signed-off-by: Cornelius Dirmeier <cornelius.dirmeier@faktorzehn.de>
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMDebugger.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMDebugger.java
index cbe5f3c..b191a18 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMDebugger.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMDebugger.java
@@ -30,7 +30,6 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
@@ -150,8 +149,10 @@
@Override
public String showCommandLine(VMRunnerConfiguration configuration, ILaunch launch, IProgressMonitor monitor) throws CoreException {
- CommandDetails cmd = getCommandLine(configuration, launch, monitor);
- if (monitor.isCanceled()) {
+ SubMonitor subMonitor = SubMonitor.convert(monitor);
+
+ CommandDetails cmd = getCommandLine(configuration, launch, subMonitor);
+ if (subMonitor.isCanceled()) {
return ""; //$NON-NLS-1$
}
String[] cmdLine = cmd.getCommandLine();
@@ -160,11 +161,13 @@
}
private CommandDetails getCommandLine(VMRunnerConfiguration config, ILaunch launch, IProgressMonitor monitor) throws CoreException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
-
- }
IProgressMonitor subMonitor = SubMonitor.convert(monitor, 1);
+
+ // check for cancellation
+ if (subMonitor.isCanceled()) {
+ return null;
+ }
+
subMonitor.subTask(LaunchingMessages.StandardVMDebugger_Finding_free_socket____2);
int port= SocketUtil.findFreePort();
@@ -175,7 +178,7 @@
subMonitor.worked(1);
// check for cancellation
- if (monitor.isCanceled()) {
+ if (subMonitor.isCanceled()) {
return null;
}
@@ -269,7 +272,7 @@
arguments.toArray(cmdLine);
// check for cancellation
- if (monitor.isCanceled()) {
+ if (subMonitor.isCanceled()) {
return null;
}
File workingDir = getWorkingDir(config);
@@ -303,17 +306,15 @@
*/
@Override
public void run(VMRunnerConfiguration config, ILaunch launch, IProgressMonitor monitor) throws CoreException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- CommandDetails cmdDetails = getCommandLine(config, launch, monitor);
+ IProgressMonitor subMonitor = SubMonitor.convert(monitor, 1);
+ CommandDetails cmdDetails = getCommandLine(config, launch, subMonitor);
+
// check for cancellation
- if (monitor.isCanceled() || cmdDetails == null) {
+ if (subMonitor.isCanceled() || cmdDetails == null) {
return;
}
String[] cmdLine = cmdDetails.getCommandLine();
- IProgressMonitor subMonitor = SubMonitor.convert(monitor, 1);
subMonitor.beginTask(LaunchingMessages.StandardVMDebugger_Launching_VM____1, 4);
subMonitor.subTask(LaunchingMessages.StandardVMDebugger_Starting_virtual_machine____4);
ListeningConnector connector= getConnector();
@@ -327,7 +328,7 @@
try {
try {
// check for cancellation
- if (monitor.isCanceled()) {
+ if (subMonitor.isCanceled()) {
return;
}
@@ -339,7 +340,7 @@
}
// check for cancellation
- if (monitor.isCanceled()) {
+ if (subMonitor.isCanceled()) {
p.destroy();
return;
}
@@ -379,7 +380,7 @@
connectThread.setDaemon(true);
connectThread.start();
while (connectThread.isAlive()) {
- if (monitor.isCanceled()) {
+ if (subMonitor.isCanceled()) {
try {
connector.stopListening(map);
} catch (IOException ioe) {
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMRunner.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMRunner.java
index 3501323..38a24bd 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMRunner.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMRunner.java
@@ -27,7 +27,6 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.debug.core.DebugPlugin;
@@ -402,8 +401,10 @@
@Override
public String showCommandLine(VMRunnerConfiguration configuration, ILaunch launch, IProgressMonitor monitor) throws CoreException {
- CommandDetails cmd = getCommandLine(configuration, launch, monitor);
- if (monitor.isCanceled() || cmd == null) {
+ IProgressMonitor subMonitor = SubMonitor.convert(monitor, 1);
+
+ CommandDetails cmd = getCommandLine(configuration, launch, subMonitor);
+ if (subMonitor.isCanceled() || cmd == null) {
return ""; //$NON-NLS-1$
}
String[] cmdLine = cmd.getCommandLine();
@@ -412,10 +413,6 @@
}
private CommandDetails getCommandLine(VMRunnerConfiguration config, ILaunch launch, IProgressMonitor monitor) throws CoreException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
-
IProgressMonitor subMonitor = SubMonitor.convert(monitor, 1);
subMonitor.subTask(LaunchingMessages.StandardVMRunner_Constructing_command_line____2);
String program = constructProgramString(config);
@@ -490,18 +487,15 @@
@Override
public void run(VMRunnerConfiguration config, ILaunch launch, IProgressMonitor monitor) throws CoreException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
+ IProgressMonitor subMonitor = SubMonitor.convert(monitor, 1);
- CommandDetails cmdDetails = getCommandLine(config, launch, monitor);
+ CommandDetails cmdDetails = getCommandLine(config, launch, subMonitor);
// check for cancellation
- if (monitor.isCanceled() || cmdDetails == null) {
+ if (subMonitor.isCanceled() || cmdDetails == null) {
return;
}
String[] cmdLine = cmdDetails.getCommandLine();
- IProgressMonitor subMonitor = SubMonitor.convert(monitor, 1);
subMonitor.beginTask(LaunchingMessages.StandardVMRunner_Launching_VM____1, 2);
subMonitor.subTask(LaunchingMessages.StandardVMRunner_Starting_virtual_machine____3);
Process p = null;
@@ -511,7 +505,7 @@
}
// check for cancellation
- if (monitor.isCanceled()) {
+ if (subMonitor.isCanceled()) {
p.destroy();
return;
}