blob: f7f58ac277e2c8ea78bf4bd49d577e34be3b54b2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 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
* Rob Harrop - SpringSource Inc. (bug 247522)
*******************************************************************************/
package org.eclipse.osgi.service.resolver;
import org.osgi.framework.BundleException;
/**
* Framework service which allows bundle programmers to inspect the bundles and
* packages known to the Framework. The PlatformAdmin service also allows bundles
* with sufficient privileges to update the state of the framework by committing a new
* configuration of bundles and packages.
*
* If present, there will only be a single instance of this service
* registered with the Framework.
* <p>
* This interface is not intended to be implemented by clients.
* </p>
* @since 3.1
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface PlatformAdmin {
/**
* Returns a mutable state representing the current system.
* <p>
* This is a convenience method, fully equivalent to
* <code>getState(true)</code>.
* </p>
* @return a state representing the current framework.
*/
public State getState();
/**
* Returns a state representing the current system. If there is need to make
* changes to the returned state, a mutable state must be requested.
* Otherwise, an immutable state should be requested. In this case, invoking
* any of the operations that could cause the state to be changed will throw
* an <code>java.lang.UnsupportedOperationException</code>.
* <p>
* If a mutable state is requested, the resulting state will <strong>not</strong>
* be resolved.
* </p>
* @param mutable whether the returned state should mutable
* @return a state representing the current framework.
*/
public State getState(boolean mutable);
/**
* Returns a state helper object. State helpers provide convenience methods
* for manipulating states.
* <p>
* A possible implementation for this
* method would provide the same single StateHelper instance to all clients.
* </p>
*
* @return a state helper
* @see StateHelper
*/
public StateHelper getStateHelper();
/**
* Commit the differences between the current state and the given state.
* The given state must return true from State.isResolved() or an exception
* is thrown. The resolved state is committed verbatim, as-is.
*
* @param state the future state of the framework
* @throws BundleException if the id of the given state does not match that of the
* current state or if the given state is not resolved.
*/
public void commit(State state) throws BundleException;
/**
* Returns a resolver supplied by the system. The returned resolver
* will not be associated with any state.
* @return a system resolver
* @deprecated in favour of {@link #createResolver()}.
*/
public Resolver getResolver();
/**
* Creates a new {@link Resolver} that is not associated with any {@link State}.
* @return the new <code>Resolver</code>.
* @since 3.5
*/
public Resolver createResolver();
/**
* Returns a factory that knows how to create state objects, such as bundle
* descriptions and the different types of version constraints.
* @return a state object factory
*/
public StateObjectFactory getFactory();
/**
* Adds the disabled info to the state managed by this platform admin.
* If a disable info already exists for the specified policy and the specified bundle
* then it is replaced with the given disabled info.
* @param disabledInfo the disabled info to add.
* @throws IllegalArgumentException if the <code>BundleDescription</code> for
* the specified disabled info does not exist in the state managed by this platform admin.
* @since 3.4
*/
public void addDisabledInfo(DisabledInfo disabledInfo);
/**
* Removes the disabled info from the state managed by this platform admin.
* @param disabledInfo the disabled info to remove
* @since 3.4
*/
public void removeDisabledInfo(DisabledInfo disabledInfo);
}