blob: 971373bfc10d222e32a5c17fd4f01fd465f85790 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2008 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.equinox.internal.provisional.frameworkadmin;
/**
* This API is used for expecting bundles state virtually.
*
* This object is instantiated by {@link Manipulator#getBundlesState()}.
* At its instantiation, state of the bundles will be created in this object
* according to the parameters which the calling {@link Manipulator} object has.
* For its creation, information in the fw persistent data will be taken into account.
*
* Modification of this object after its instantiation never affects the parameters
* in the calling {@link Manipulator} object.
*
* XXX Implementation of Simple ConfiguratorManipulator needs the functions.
*
* @see Manipulator
*/
public interface BundlesState {
/** Return expected bundles state currently kept in this object.
*
* The implementation of this method will try to resolve the state
* if resolving a state is supported.
*
* @return bundle array of BundleInfo currently composed in this object.
* @throws FrameworkAdminRuntimeException - If the {@link FrameworkAdmin} service created the parent {@link Manipulator} is unregistered.
*/
BundleInfo[] getExpectedState() throws FrameworkAdminRuntimeException;
/**
* Return required bundles to be resolve the specified bInfo
* under the state currently composed.
*
* The implementation of this method will try to resolve the state
* if resolving a state is supported.
*
* @param bInfo bundleinfo whose prerequisite bundles will be searched.
* @return bundle array of BundleInfos required for the specified bInfo to be resolved.
*/
BundleInfo[] getPrerequisteBundles(BundleInfo bInfo);
/**
* Return a bundle to be used as a framework under the state currently composed.
* @return a bundle to be used as a framework under the state currently composed.
*/
public BundleInfo getSystemBundle();
/**
* Return bundles which are fragment bundles of the framework under the state currently composed.
* @return array of BundleInfos which are fragment bundles of the framework.
*/
public BundleInfo[] getSystemFragmentedBundles();
/**
* Return array of Strings which tells the unsatisfied constaints
* to resolve the specified bInfo under the state currently composed.
*
* If this implementation doesn't support resolving state,
* FrameworkAdminRuntimeException with a cause of {@value FrameworkAdminRuntimeException#UNSUPPORTED_OPERATION}
* will be thrown.
*
* XXX this method is prepared mainly for debugging.
*
* @param bInfo
* @return array of Strings which tells the unsatisfied constaints.
* @throws FrameworkAdminRuntimeException if this implementation doesn't support resolving state, FrameworkAdminRuntimeException with a cause of {@value FrameworkAdminRuntimeException#UNSUPPORTED_OPERATION} will be thrown.
*/
public String[] getUnsatisfiedConstraints(BundleInfo bInfo) throws FrameworkAdminRuntimeException;
/**
* Install the specified bInfo as a installed bundle to the current state virtually.
* Note that resolve this bundle is not done in this implementation.
*
* @param bInfo BundleInfo to be installed
* @throws FrameworkAdminRuntimeException - If the {@link FrameworkAdmin} service created the parent {@link Manipulator} is unregistered.
*/
void installBundle(BundleInfo bInfo) throws FrameworkAdminRuntimeException;
/**
* Return true if this implementation supports full functions,
* such as resolving bundles and .
* Otherwise false will be returend.
* @return true if this implementation supports resolving state. Otherwise false.
*/
boolean isFullySupported();
/**
* Return true if the state currently composed is resolved after the last change of the state.
* Otherwise false.
*
* If this implementation doesn't support resolving state,
* FrameworkAdminRuntimeException with a cause of {@value FrameworkAdminRuntimeException#UNSUPPORTED_OPERATION}
* will be thrown.
*
* @return true if the state currently composed is resolved after the last change of the state. Otherwise false.
* @throws FrameworkAdminRuntimeException if this implementation doesn't support resolving state, FrameworkAdminRuntimeException with a cause of {@value FrameworkAdminRuntimeException#UNSUPPORTED_OPERATION} will be thrown.
*/
public boolean isResolved() throws FrameworkAdminRuntimeException;
/**
* Return true if the specified bundle is resolved.
* Otherwise false.
*
* If this implementation doesn't support resolving state,
* FwLauncherException with a cause of {@value FwLauncherException#UNSUPPORTED_OPERATION}
* will be thrown.
*
* @return true if the specified bundle is resolved. Otherwise false.
* @throws FrameworkAdminRuntimeException if this implementation doesn't support resolving state, FrameworkAdminRuntimeException with a cause of {@value FrameworkAdminRuntimeException#UNSUPPORTED_OPERATION} will be thrown.
*/
public boolean isResolved(BundleInfo bInfo) throws FrameworkAdminRuntimeException;
/**
* Resolves the constraints contained in this state.
*
* If this implementation doesn't support resolving state,
* FrameworkAdminRuntimeException with a cause of {@value FrameworkAdminRuntimeException#UNSUPPORTED_OPERATION}
* will be thrown.
*
* @param incremental a flag controlling whether resolution should be incremental
* @throws FrameworkAdminRuntimeException
*/
void resolve(boolean increment) throws FrameworkAdminRuntimeException;
/**
* Uninstall the specified bInfo from the current state virtually.
*
* @param bInfo BundleInfo to be uninstalled
* @throws FrameworkAdminRuntimeException - If the {@link FrameworkAdmin} service created the parent {@link Manipulator} is unregistered.
*/
void uninstallBundle(BundleInfo bInfo) throws FrameworkAdminRuntimeException;;
}