Bug 312397 - fixed few possible NPE's and warnings

The changes from commit 7e4d78772a616693a55ef16be754fe0780259e81 caused
11 new test failures in I20180728-0805. This commit fixes those NPE's
plus additionally other potential NPE's and some warnings in code.

Change-Id: I00645e044de583fa5fad0043936dc8dcef199c46
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
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 e81a77b..6006c31 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
@@ -26,7 +26,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.ILaunch;
 import org.eclipse.debug.core.ILaunchConfiguration;
@@ -404,7 +404,7 @@
 			monitor = new NullProgressMonitor();
 		}
 
-		IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1);
+		IProgressMonitor subMonitor = SubMonitor.convert(monitor, 1);
 		subMonitor.subTask(LaunchingMessages.StandardVMRunner_Constructing_command_line____2);
 		String program = constructProgramString(config);
 
@@ -467,26 +467,21 @@
 		return cmd;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jdt.launching.IVMRunner#run(org.eclipse.jdt.launching.VMRunnerConfiguration, org.eclipse.debug.core.ILaunch,
-	 * org.eclipse.core.runtime.IProgressMonitor)
-	 */
 	@Override
 	public void run(VMRunnerConfiguration config, ILaunch launch, IProgressMonitor monitor) throws CoreException {
-
+		if (monitor == null) {
+			monitor = new NullProgressMonitor();
+		}
 
 		CommandDetails cmdDetails = getCommandLine(config, launch, monitor);
 		String[] cmdLine = cmdDetails.getCommandLine();
 
-
 		// check for cancellation
 		if (monitor.isCanceled()) {
 			return;
 		}
 
-		IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1);
+		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;
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaLaunchDelegate.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaLaunchDelegate.java
index cf518cf..e197c1f 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaLaunchDelegate.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaLaunchDelegate.java
@@ -41,7 +41,10 @@
 			monitor = new NullProgressMonitor();
 		}
 		try {
-			VMRunnerConfiguration runConfig = getVMRunnerConfiguration(configuration, mode, launch, monitor);
+			VMRunnerConfiguration runConfig = getVMRunnerConfiguration(configuration, mode, monitor);
+			if (runConfig == null) {
+				return ""; //$NON-NLS-1$
+			}
 			IVMRunner runner = getVMRunner(configuration, mode);
 			String cmdLine = runner.showCommandLine(runConfig, launch, monitor);
 
@@ -55,8 +58,7 @@
 		}
 	}
 
-	private VMRunnerConfiguration getVMRunnerConfiguration(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException {
-
+	private VMRunnerConfiguration getVMRunnerConfiguration(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException {
 
 		monitor.beginTask(NLS.bind("{0}...", new String[]{configuration.getName()}), 3); //$NON-NLS-1$
 		// check for cancellation
@@ -128,12 +130,6 @@
 		return runConfig;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate#launch(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String,
-	 * org.eclipse.debug.core.ILaunch, org.eclipse.core.runtime.IProgressMonitor)
-	 */
 	@Override
 	public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException {
 		if (monitor == null) {
@@ -141,7 +137,10 @@
 		}
 		try {
 
-			VMRunnerConfiguration runConfig = getVMRunnerConfiguration(configuration, mode, launch, monitor);
+			VMRunnerConfiguration runConfig = getVMRunnerConfiguration(configuration, mode, monitor);
+			if (runConfig == null) {
+				return;
+			}
 			// stop in main
 			prepareStopInMain(configuration);