package org.testng.eclipse.launch; import org.testng.eclipse.ui.util.ConfigurationHelper; import org.testng.eclipse.util.JDTUtil; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.jdt.core.IJavaProject; public class LaunchConfigurationHelper { public static IJavaProject getJavaProject(final ILaunchConfiguration conf) throws CoreException { String projectName = ConfigurationHelper.getProjectName(conf); return JDTUtil.getJavaProject(projectName); } public static IProject getProject(final ILaunchConfiguration conf) throws CoreException { String projectName = ConfigurationHelper.getProjectName(conf); return ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); } public static IResource[] findTestResources(final ILaunchConfiguration conf) throws CoreException { Set<IResource> resources = new HashSet<>(); resources.addAll(Arrays.asList(findResources(conf, TestNGLaunchConfigurationConstants.DIRECTORY_TEST_LIST))); resources.addAll(Arrays.asList(findResources(conf, TestNGLaunchConfigurationConstants.CLASS_TEST_LIST))); resources.addAll(Arrays.asList(findResources(conf, TestNGLaunchConfigurationConstants.SOURCE_TEST_LIST))); resources.addAll(Arrays.asList(findResources(conf, TestNGLaunchConfigurationConstants.SUITE_TEST_LIST))); return (IResource[]) resources.toArray(new IResource[resources.size()]); } public static IResource[] findResources(final ILaunchConfiguration conf, final String key) throws CoreException { List<IResource> resources = new ArrayList<>(); List<String> containerPaths = conf.getAttribute(key, Collections.<String> emptyList()); IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); for(String resPath : containerPaths) { IResource res = root.findMember(resPath); if(null != res) { resources.add(res); } } return (IResource[]) resources.toArray(new IResource[resources.size()]); } }