blob: 8c5aaf862bc6a114037c0752f8414a4cb05cb4a4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2010 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.update.configuration;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.update.core.IFeature;
import org.eclipse.update.core.IFeatureReference;
import org.eclipse.update.core.ISite;
import org.eclipse.update.core.IVerificationListener;
/**
* Configured Site.
* Represents an installation site "filtered" by configuration information.
* Configured site is the target of the feature update operations (install
* feature, remove feature, configure feature, unconfigure feature).
* <p>
* <b>Note:</b> This class/interface is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
* @since 2.0
* @deprecated The org.eclipse.update component has been replaced by Equinox p2.
* This API will be deleted in a future release. See bug 311590 for details.
*/
public interface IConfiguredSite extends IAdaptable {
/**
* Returns the underlying "unfiltered" site.
*
* @return the underlying site
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public ISite getSite();
/**
* Indicates whether updates can be applied to the site.
*
* <code>IStatus.isOk()</code> return <code>true</code> if
* the site can be updated, <code>false</code> otherwise.
*
* If updates cannot be aplied, the status contains the error message, and
* the possible exception.
*
* @see IStatus
* @return an IStatus
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public IStatus verifyUpdatableStatus();
/**
* Indicates whether updates can be applied to the site.
*
* A configuration site is tagged a non-updatable by reading
* the platform configuration for this site.
*
* @return <code>true</code> if the site can be updated,
* <code>false</code> otherwise
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public boolean isUpdatable();
/**
* Install the specified feature on this site.
*
* @param feature feature to install
* @param verificationListener verification listener, or <code>null</code>
* @param monitor progress monitor, or <code>null</code>
* @exception CoreException
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public IFeatureReference install(IFeature feature, IVerificationListener verificationListener, IProgressMonitor monitor) throws CoreException;
/**
* Install the specified feature on this site.
* Only the specified optional features will be installed
*
* @param feature feature to install
* @param optionalFeatures optional features to install
* @param verificationListener verification listener, or <code>null</code>
* @param monitor progress monitor, or <code>null</code>
* @exception CoreException
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public IFeatureReference install(IFeature feature, IFeatureReference[] optionalFeatures, IVerificationListener verificationListener, IProgressMonitor monitor) throws CoreException;
/**
* Remove (uninstall) the specified feature from this site
*
* @param feature feature to remove
* @param monitor progress monitor, or <code>null</code>
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public void remove(IFeature feature, IProgressMonitor monitor) throws CoreException;
/**
* Indicates if the specified feature is "broken". A feature is considered
* to be broken in the context of this site, if some of the plug-ins
* referenced by the feature are not installed on this site.
*
* The status code is <code>IStatus.ERROR</code> if the feature is considered
* broken. The Status may contain the reason why the feature is broken.
* The status code is <code>IStatus.OK</code> if the feature is not considered
* broken.
*
* @param feature the feature
* @return the status for this feature on this configured site
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public IStatus getBrokenStatus(IFeature feature);
/**
* Indicates if the specified feature is configured on this site.
*
* @param feature the feature
* @return <code>true</code> if the feature is configured,
* <code>false</code> otherwise
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public boolean isConfigured(IFeature feature);
/**
* Configure the specified feature on this site. The configured
* feature will be included on next startup.
*
* @param feature the feature
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public void configure(IFeature feature) throws CoreException;
/**
* Unconfigure the specified feature from this site. The unconfigured
* feature will be omitted on the next startup.
*
* @param feature the feature
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public boolean unconfigure(IFeature feature) throws CoreException;
/**
* Return references to features configured on this site.
*
* @return an array of feature references, or an empty array.
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public IFeatureReference[] getConfiguredFeatures();
/**
* Return all features installed on this site (configured as well
* as unconfigured). Note, that if the site requires reconciliation,
* the result may not match the result of the corresponding method
* on the underlying site.
*
* @see ISite#getFeatureReferences()
* @return an array of site feature references, or an empty array.
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public IFeatureReference[] getFeatureReferences();
/**
* Returns the install configuration object this site is part of.
*
* @return install configuration object
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public IInstallConfiguration getInstallConfiguration();
/**
* Adds a change listener to the configured site.
*
* @param listener the listener to add
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public void addConfiguredSiteChangedListener(IConfiguredSiteChangedListener listener);
/**
* Removes a change listener from the configured site.
*
* @param listener the listener to remove
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public void removeConfiguredSiteChangedListener(IConfiguredSiteChangedListener listener);
/**
* Indicates if the site is an extension site.
*
* @return <code>true</code> if the site is an extension site,
* <code>false</code> otherwise
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public boolean isExtensionSite();
/**
* Indicates if the site is a product site.
*
* @return <code>true</code> if the site is a product site,
* <code>false</code> otherwise
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public boolean isProductSite();
/**
* Indicates if the site is a private site.
* This does not check if this private site belongs to the
* product that is running.
*
* @return <code>true</code> if the site is a private site,
* <code>false</code> otherwise
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
* @deprecated private site are considered the same as extension site (3.0)
*/
public boolean isPrivateSite();
/**
* Indicates if the site has been linked by a native
* installer.
*
* @return <code>true</code> if the site is a natively linked site,
* <code>false</code> otherwise
* @since 2.0
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public boolean isNativelyLinked() throws CoreException;
/**
* Sets if the site is enabled
*
* @param value <code>true</code> if the site is enable, <code>false</code>
* otherwise
* @since 2.1
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public void setEnabled(boolean value);
/**
* Indicates if the site is enabled.
* If a site is not enable, all teh features are considered disabled.
*
* @return <code>true</code> if the site is enable, <code>false</code>
* otherwise
* @since 2.1
* <p>
* <b>Note:</b> This method is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public boolean isEnabled();
}