/*******************************************************************************
* Copyright (c) 2006, 2016 Mountainminds GmbH & Co. KG and Contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Marc R. Hoffmann - initial API and implementation
*
******************************************************************************/
package com.mountainminds.eclemma.core;
import java.util.Set;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.jdt.core.IPackageFragmentRoot;
/**
* A coverage session is the result of a coverage run (or multiple merged runs)
* or coverage data imported from an external source. It is an immutable
* container for all data necessary to
*
* <ul>
* <li>provide coverage highlighting in Java editors,</li>
* <li>populate the coverage view and</li>
* <li>export coverage reports.</li>
* </ul>
*
* This interface is not intended to be implemented by clients.
*
* @see CoverageTools#createCoverageSession(String, IClassFiles[],
* org.eclipse.core.runtime.IPath[], ILaunchConfiguration)
*/
public interface ICoverageSession extends IAdaptable, IExecutionDataSource {
/**
* Returns a readable description for this coverage session.
*
* @return readable description
*/
public String getDescription();
/**
* Returns the set of package fragment roots defining the scope of this
* session.
*
* @return session scope as set of {@link IPackageFragmentRoot}
*/
public Set<IPackageFragmentRoot> getScope();
/**
* If this session was the result of a Eclipse launch this method returns the
* respective launch configuration. Otherwise <code>null</code> is returned.
*
* @return launch configuration or <code>null</code>
*/
public ILaunchConfiguration getLaunchConfiguration();
}