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