/******************************************************************************* * 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.core; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; /** * Custom install handler. * Custom install handlers can optionally be associated with a feature. * The actual install handler implementation can be physically delivered * as part of the feature package, or can already be installed on the client * machine and registered via the <code>org.eclipse.update.core.installHandlers</code> * extension point. The install handler methods are called at predetermined * point during update actions. * <p> * Clients may implement this interface. However, in most cases clients should * directly subclass the provided implementation of this interface. * </p> * <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> * @see org.eclipse.update.core.BaseInstallHandler * @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 IInstallHandler { /** * Indicates the handler is being initialized for feature install. * @since 2.0 */ public static final int HANDLER_ACTION_INSTALL = 1; /** * Indicates the handler is being initialized for feature configure. * @since 2.0 */ public static final int HANDLER_ACTION_CONFIGURE = 2; /** * Indicates the handler is being initialized for feature unconfigure. * @since 2.0 */ public static final int HANDLER_ACTION_UNCONFIGURE = 3; /** * Indicates the handler is being initialized for feature uninstall. * @since 2.0 */ public static final int HANDLER_ACTION_UNINSTALL = 4; /** * Initialize the install handler. * Install handlers are always constructed using the default constructor. * The are initialized immediately following construction. * * @param type update action type * @param feature the target of the action * @param entry model entry that defines this handler * @param monitor optional progress monitor, can be <code>null</code> * @exception CoreException * @since 2.0 */ public void initialize( int type, IFeature feature, IInstallHandlerEntry entry, InstallMonitor monitor) throws CoreException; /** * Called at the start of the install action. At this point, no install * processing has taken place. * * @see #HANDLER_ACTION_INSTALL * @exception CoreException terminates the action * @since 2.0 */ public void installInitiated() throws CoreException; /** * Called after files corresponding to plug-in entries have been downloaded, * but before they are actully unpacked and installed. * * @see #HANDLER_ACTION_INSTALL * @param plugins downloaded plug-in entries. Note this may be a subset * of the plug-ins actually references by the feature. * @exception CoreException terminates the action * @since 2.0 */ public void pluginsDownloaded(IPluginEntry[] plugins) throws CoreException; /** * Called after files corresponding to non-plug-in entries have been * downloaded. The custom install handler can perform any custom * verification of the non-plug-in entries (these are not interpreted * in any way by the platform (beyond downloading)). * * @see #HANDLER_ACTION_INSTALL * @param nonPluginData downloaded non-plug-in entries. * @param listener verification listener, may be <code>null</code>. * @exception CoreException terminates the action * @since 2.0 */ public void nonPluginDataDownloaded( INonPluginEntry[] nonPluginData, IVerificationListener listener) throws CoreException; /** * Called after the feature files and any downloaded plug-ins have * been installed. Typically this is the point where the custom * install handler can install any non-plug-in entries (these are not * interpreted in any way by the platform (beyond downloading)). * * @see #HANDLER_ACTION_INSTALL * @param consumer content consumer for the feature. The install handler * can choose to use this consumer to install the non-plug-in data, * or can handle the data in any other way. If using the consumer, * the install handler should only call * @see IFeatureContentConsumer#store(ContentReference, IProgressMonitor) * and @see IFeatureContentConsumer#open(INonPluginEntry) * methods of the consumer. * @exception CoreException terminates the action * @since 2.0 */ public void completeInstall(IFeatureContentConsumer consumer) throws CoreException; /** * Called at the end of the install action. * * @see #HANDLER_ACTION_INSTALL * @param success indicates action success. * @exception CoreException terminates the action * @since 2.0 */ public void installCompleted(boolean success) throws CoreException; /** * Called at the start of the configure action * * @see #HANDLER_ACTION_CONFIGURE * @exception CoreException terminates the action * @since 2.0 */ public void configureInitiated() throws CoreException; /** * Called after the feature has been configured. The install handler * should perform any completion tasks. No arguments are passed * to the method. If needed, the install handler can use arguments * passed on the initialization call. * * @see #HANDLER_ACTION_CONFIGURE * @exception CoreException terminates the action * @since 2.0 */ public void completeConfigure() throws CoreException; /** * Called at the end of the configure action. * * @see #HANDLER_ACTION_CONFIGURE * @param success indicates action success. * @exception CoreException terminates the action * @since 2.0 */ public void configureCompleted(boolean success) throws CoreException; /** * Called at the start of the unconfigure action * * @see #HANDLER_ACTION_UNCONFIGURE * @exception CoreException terminates the action * @since 2.0 */ public void unconfigureInitiated() throws CoreException; /** * Called after the feature has been unconfigured. The install handler * should perform any completion tasks. No arguments are passed * to the method. If needed, the install handler can use arguments * passed on the initialization call. * * @see #HANDLER_ACTION_UNCONFIGURE * @exception CoreException terminates the action * @since 2.0 */ public void completeUnconfigure() throws CoreException; /** * Called at the end of the unconfigure action. * * @see #HANDLER_ACTION_UNCONFIGURE * @param success indicates action success. * @exception CoreException terminates the action * @since 2.0 */ public void unconfigureCompleted(boolean success) throws CoreException; /** * Called at the start of the uninstall action * * @see #HANDLER_ACTION_UNINSTALL * @exception CoreException terminates the action * @since 2.0 */ public void uninstallInitiated() throws CoreException; /** * Called after the feature has been uninstalled. The install handler * should perform any completion tasks. No arguments are passed * to the method. If needed, the install handler can use arguments * passed on the initialization call. Note, that at this point * the feature files and any unreferenced plug-ins have been * removed. * * @see #HANDLER_ACTION_UNINSTALL * @exception CoreException terminates the action * @since 2.0 */ public void completeUninstall() throws CoreException; /** * Called at the end of the uninstall action. * * @see #HANDLER_ACTION_UNINSTALL * @param success indicates action success. * @exception CoreException terminates the action * @since 2.0 */ public void uninstallCompleted(boolean success) throws CoreException; }