1 8 package com.mountainminds.eclemma.core; 9 10 import java.io.IOException ; 11 import java.net.URL ; 12 import java.util.ArrayList ; 13 import java.util.List ; 14 15 import org.eclipse.core.runtime.CoreException; 16 import org.eclipse.core.runtime.IAdaptable; 17 import org.eclipse.core.runtime.IPath; 18 import org.eclipse.core.runtime.Path; 19 import org.eclipse.core.runtime.Platform; 20 import org.eclipse.debug.core.ILaunch; 21 import org.eclipse.debug.core.ILaunchConfiguration; 22 23 import com.mountainminds.eclemma.core.analysis.IJavaCoverageListener; 24 import com.mountainminds.eclemma.core.analysis.IJavaElementCoverage; 25 import com.mountainminds.eclemma.core.analysis.IJavaModelCoverage; 26 import com.mountainminds.eclemma.core.analysis.ILineCoverage; 27 import com.mountainminds.eclemma.core.launching.ICoverageLaunchConfigurationConstants; 28 import com.mountainminds.eclemma.core.launching.ICoverageLaunchInfo; 29 import com.mountainminds.eclemma.core.launching.ICoverageLauncher; 30 import com.mountainminds.eclemma.internal.core.CoverageSession; 31 import com.mountainminds.eclemma.internal.core.EclEmmaCorePlugin; 32 import com.mountainminds.eclemma.internal.core.SessionExporter; 33 import com.mountainminds.eclemma.internal.core.SessionImporter; 34 import com.mountainminds.eclemma.internal.core.launching.CoverageLaunchInfo; 35 36 43 public final class CoverageTools { 44 45 48 public static final String LAUNCH_MODE = "coverage"; 50 public static final int EXPORT_HTML = 0; 51 public static final int EXPORT_XML = 1; 52 public static final int EXPORT_TEXT = 2; 53 public static final int EXPORT_ES = 3; 54 55 60 public static ISessionManager getSessionManager() { 61 return EclEmmaCorePlugin.getInstance().getSessionManager(); 62 } 63 64 73 public static IJavaElementCoverage getCoverageInfo(Object object) { 74 if (object instanceof IAdaptable) { 75 return (IJavaElementCoverage) ((IAdaptable) object) 76 .getAdapter(IJavaElementCoverage.class); 77 } else { 78 return null; 79 } 80 } 81 82 90 public static ILineCoverage getLineCoverage(Object object) { 91 if (object instanceof IAdaptable) { 92 return (ILineCoverage) ((IAdaptable) object) 93 .getAdapter(ILineCoverage.class); 94 } else { 95 return null; 96 } 97 } 98 99 108 public static ICoverageLaunchInfo getLaunchInfo(ILaunch launch) { 109 return CoverageLaunchInfo.getInfo(launch); 110 } 111 112 119 public static IPath getEmmaJar() throws CoreException { 120 URL url = EclEmmaCorePlugin.getInstance().find(EclEmmaCorePlugin.EMMA_JAR); 121 try { 122 url = Platform.asLocalURL(url); 123 } catch (IOException e) { 124 throw new CoreException(EclEmmaStatus.NO_LOCAL_EMMAJAR_ERROR.getStatus(e)); 125 } 126 return new Path(url.getPath()); 127 } 128 129 136 public static IClassFiles[] getClassFiles() 137 throws CoreException { 138 List l = new ArrayList (EclEmmaCorePlugin.getInstance() 139 .getClassFiles().values()); 140 IClassFiles[] arr = new IClassFiles[l.size()]; 141 return (IClassFiles[]) l.toArray(arr); 142 } 143 144 156 public static IClassFiles[] getClassFiles(ILaunchConfiguration configuration, boolean includebinaries) throws CoreException { 157 ICoverageLauncher launcher = (ICoverageLauncher) 158 configuration.getType().getDelegate(LAUNCH_MODE); 159 return launcher.getClassFiles(configuration, includebinaries); 160 } 161 162 176 public static IClassFiles[] getClassFilesForInstrumentation(ILaunchConfiguration configuration, boolean inplace) throws CoreException { 177 IClassFiles[] all = getClassFiles(configuration, !inplace); 178 List filtered = new ArrayList (); 179 List selection = 180 configuration.getAttribute(ICoverageLaunchConfigurationConstants.ATTR_INSTRUMENTATION_PATHS, (List ) null); 181 for (int i = 0; i < all.length; i++) { 182 if (selection == null) { 183 if (!all[i].isBinary()) { 185 filtered.add(all[i]); 186 } 187 } else { 188 if (selection.contains(all[i].getLocation().toString())) { 189 filtered.add(all[i]); 190 } 191 } 192 } 193 return (IClassFiles[]) filtered.toArray(new IClassFiles[filtered.size()]); 194 } 195 196 public static ICoverageSession createCoverageSession(String description, 197 IInstrumentation[] instrumentations, IPath[] coveragedatafiles, 198 ILaunchConfiguration launchconfiguration) { 199 return new CoverageSession(description, instrumentations, coveragedatafiles, 200 launchconfiguration); 201 } 202 203 public static IJavaModelCoverage getJavaModelCoverage() { 204 return EclEmmaCorePlugin.getInstance().getJavaCoverageLoader() 205 .getJavaModelCoverage(); 206 } 207 208 public static void addJavaCoverageListener(IJavaCoverageListener l) { 209 EclEmmaCorePlugin.getInstance().getJavaCoverageLoader().addJavaCoverageListener(l); 210 } 211 212 public static void removeJavaCoverageListener(IJavaCoverageListener l) { 213 EclEmmaCorePlugin.getInstance().getJavaCoverageLoader().removeJavaCoverageListener(l); 214 } 215 216 public static ISessionExporter getExporter(ICoverageSession session) { 217 return new SessionExporter(session); 218 } 219 220 public static ISessionImporter getImporter() { 221 return new SessionImporter(); 222 } 223 224 230 public static void setPreferences(ICorePreferences preferences) { 231 EclEmmaCorePlugin.getInstance().setPreferences(preferences); 232 } 233 234 } 235 | Popular Tags |