blob: cfbdb509b7ba98e691f851b7dd7dca27f2263140 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2012 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.launching.environments;
import java.util.Map;
import java.util.Properties;
import org.eclipse.jdt.core.IAccessRule;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.launching.IVMInstall;
import org.eclipse.jdt.launching.LibraryLocation;
/**
* An execution environment describes capabilities of
* a Java runtime environment (<code>IVMInstall</code>).
* <p>
* An execution environment is contributed in plug-in XML via the
* <code>org.eclipse.jdt.launching.executionEnvironments</code> extension
* point.
* </p>
* <p>
* Clients contributing execution environments may provide and implement execution environment
* analyzer delegates.
* </p>
* @since 3.2
* @see IExecutionEnvironmentAnalyzerDelegate
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
*/
public interface IExecutionEnvironment {
/**
* Returns a unique identifier for this execution environment.
* Corresponds to the <code>id</code> attribute in plug-in XML.
*
* @return unique identifier of this execution environment
*/
public String getId();
/**
* Returns a brief human-readable description of this environment.
*
* @return brief human-readable description of this environment.
*/
public String getDescription();
/**
* Returns a collection of VM installs compatible with this environment,
* possibly empty.
*
* @return a collection of VM installs compatible with this environment,
* possibly empty.
*/
public IVMInstall[] getCompatibleVMs();
/**
* Returns whether the specified VM install is strictly compatible with
* this environment. Returns <code>true</code> to indicate the VM install
* is strictly compatible with this environment and <code>false</code> to indicate
* the VM install represents a superset of this environment.
*
* @param vm VM install
* @return whether the VM install is strictly compatible with this environment
*/
public boolean isStrictlyCompatible(IVMInstall vm);
/**
* Returns the VM that is used by default for this execution environment,
* or <code>null</code> if none.
*
* @return default VM for this environment or <code>null</code> if none
*/
public IVMInstall getDefaultVM();
/**
* Sets the VM to use by default for this execution environment.
*
* @param vm VM to use by default for this execution environment,
* or <code>null</code> to clear the default setting
* @exception IllegalArgumentException if the given VM is not compatible with
* this environment
*/
public void setDefaultVM(IVMInstall vm);
/**
* Returns a collection of access rules to be applied to the specified VM
* libraries for this execution environment in the context of the given project.
* An array of access rules is returned for each library specified by
* <code>libraries</code>, possibly empty.
* <p>
* Access rules for an execution environment are defined by access rule participants
* contributed in a <code>org.eclipse.jdt.launching.executionEnvironments</code>
* extension.
* </p>
* @param vm the VM that access rules are requested for
* @param libraries the libraries that access rules are requested for
* @param project the project the access rules are requested for or <code>null</code> if none
* @return a collection of arrays of access rules - one array per library
* @since 3.3
*/
public IAccessRule[][] getAccessRules(IVMInstall vm, LibraryLocation[] libraries, IJavaProject project);
/**
* Returns the OSGi profile properties associated with this execution environment
* or <code>null</code> if none. Profile properties specify attributes such as
* {@link org.osgi.framework.Constants#FRAMEWORK_SYSTEMPACKAGES}. Profile properties
* can be optionally contributed with an execution environment extension.
*
* @return associated profile properties or <code>null</code> if none
* @since 3.5
*/
public Properties getProfileProperties();
/**
* Returns a collection of execution environments that are subsets of this environment.
*
* @return a collection of execution environments that are subsets of this environment
* @since 3.5
*/
public IExecutionEnvironment[] getSubEnvironments();
/**
* Returns a map of Eclipse Java compiler options specified as default settings to
* use when building with this profile, or <code>null</code> if unspecified.
*
* @return a map of Eclipse Java compiler options associated with this profile or
* <code>null</code>
* @since 3.5
*/
public Map<String, String> getComplianceOptions();
}