/******************************************************************************* * 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(); }