public class A { | |
public void launch(ILaunchConfiguration configuration, String mode, | |
ILaunch launch, IProgressMonitor monitor) throws CoreException { | |
try { | |
IJavaProject javaProject = getJavaProject(configuration); | |
if ((javaProject == null) || !javaProject.exists()) { | |
abort( | |
PDEPlugin | |
.getResourceString("JUnitLaunchConfiguration.error.invalidproject"), null, IJavaLaunchConfigurationConstants.ERR_NOT_A_JAVA_PROJECT); //$NON-NLS-1$ | |
} | |
IType[] testTypes = getTestTypes(configuration, javaProject, | |
new SubProgressMonitor(monitor, 1)); | |
if (testTypes.length == 0) { | |
abort( | |
PDEPlugin | |
.getResourceString("JUnitLaunchConfiguration.error.notests"), null, IJavaLaunchConfigurationConstants.ERR_UNSPECIFIED_MAIN_TYPE); //$NON-NLS-1$ | |
} | |
monitor.worked(1); | |
IVMInstall launcher = LauncherUtils.createLauncher(configuration); | |
monitor.worked(1); | |
int port = SocketUtil.findFreePort(); | |
VMRunnerConfiguration runnerConfig = createVMRunner(configuration, | |
testTypes, port, mode); | |
if (runnerConfig == null) { | |
monitor.setCanceled(true); | |
return; | |
} | |
monitor.worked(1); | |
launch.setAttribute(ILauncherSettings.CONFIG_LOCATION, | |
(configFile == null) ? null : configFile.getParent()); | |
String workspace = configuration.getAttribute(LOCATION + "0", | |
getDefaultWorkspace(configuration)); | |
LauncherUtils.clearWorkspace(configuration, workspace); | |
setDefaultSourceLocator(launch, configuration); | |
launch.setAttribute(PORT_ATTR, Integer.toString(port)); | |
launch.setAttribute(TESTTYPE_ATTR, testTypes[0] | |
.getHandleIdentifier()); | |
PDEPlugin.getDefault().getLaunchesListener().manage(launch); | |
launcher.getVMRunner(mode).run(runnerConfig, launch, monitor); | |
monitor.worked(1); | |
} catch (CoreException e) { | |
monitor.setCanceled(true); | |
throw e; | |
} | |
} | |
} |