| 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; |
| } |
| } |
| } |