| /******************************************************************************* |
| * Copyright (c) 2008, 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.equinox.simpleconfigurator.manipulator; |
| |
| import java.io.*; |
| import java.net.URI; |
| import org.eclipse.equinox.frameworkadmin.BundleInfo; |
| import org.osgi.framework.BundleContext; |
| |
| /** |
| * A ConfiguratorManipulator Service used to read and write bundles.info configuration files |
| * @since 2.0 |
| * @noimplement This interface is not intended to be implemented by clients. |
| */ |
| public interface SimpleConfiguratorManipulator { |
| /** |
| * A common location to find the bundle configuration file |
| */ |
| public static final String BUNDLES_INFO_PATH = "org.eclipse.equinox.simpleconfigurator/bundles.info"; //$NON-NLS-1$ |
| |
| /** |
| * A common location to find the source configuration file |
| */ |
| public static final String SOURCE_INFO_PATH = "org.eclipse.equinox.source/source.info"; //$NON-NLS-1$ |
| |
| /** |
| * Pass this to {@link #loadConfiguration(BundleContext, String)} to read the default source configuration file |
| */ |
| public static final String SOURCE_INFO = new String("source.info"); //$NON-NLS-1$ |
| |
| /** |
| * An instance of an ISimpleConfiguratorManipulator is registered as a ConfiguratorManipulator |
| * service with ConfiguratorManipulator.SERVICE_PROP_KEY_CONFIGURATOR_BUNDLESYMBOLICNAME = |
| * SERVICE_PROP_VALUE_CONFIGURATOR_SYMBOLICNAME. |
| */ |
| public static final String SERVICE_PROP_VALUE_CONFIGURATOR_SYMBOLICNAME = "org.eclipse.equinox.simpleconfigurator"; //$NON-NLS-1$ |
| |
| /** |
| * Load the configuration file for the currently running system. |
| * <p> |
| * Pass null for bundleInfoPath to read the bundle configuration file for the running system as |
| * specified by the "org.eclipse.equinox.simpleconfigurator.configUrl" system property. |
| * </p> |
| * <p>If bundleInfoPath == {@link #SOURCE_INFO} the default source configuration file for the running |
| * system will be loaded. |
| * </p> |
| * @param context - the BundleContext for the running system |
| * @param bundleInfoPath - pass null or a path to the bundle info file to read, relative to the configuration location. Pass {@link #SOURCE_INFO} |
| * to load the default source configuration. Common locations are {@link #BUNDLES_INFO_PATH} and {@link #SOURCE_INFO_PATH}. |
| * @return The loaded configuration. Bundles will have at least symbolic name, version and location information. |
| * @throws IOException |
| */ |
| public BundleInfo[] loadConfiguration(BundleContext context, String bundleInfoPath) throws IOException; |
| |
| /** |
| * Load the configuration from the given input stream |
| * The supplied input stream is consumed by this method and will be closed. |
| * |
| * @param configuration - the input stream to read the configuration from. The stream will be closed even if an exception is thrown |
| * @param installArea - Relative URIs from the configuration file will be resolved relative to here |
| * @return The loaded configuration. Bundles will have at least symbolic name, version and location information. |
| * @throws IOException |
| */ |
| public BundleInfo[] loadConfiguration(InputStream configuration, URI installArea) throws IOException; |
| |
| /** |
| * Save the configuration to the given output stream |
| * The output stream is flushed and left open. |
| * To be persisted, bundles are required to have at least a symbolic name, version and location. |
| * |
| * @param configuration - bundle information to save |
| * @param outputStream - the output stream to write to. Stream is not closed |
| * @param installArea - bundle locations are written as relative to this URI |
| * @throws IOException |
| */ |
| public void saveConfiguration(BundleInfo[] configuration, OutputStream outputStream, URI installArea) throws IOException; |
| |
| /** |
| * Save the configuration to the specified file |
| * To be persisted, bundles are required to have at least a symbolic name, version and location. |
| * |
| * @param configuration - bundle information to save |
| * @param configurationFile - file to save the configuration in |
| * @param installArea - bundle locations are written as relative to this URI |
| * |
| * @throws IOException |
| */ |
| public void saveConfiguration(BundleInfo[] configuration, File configurationFile, URI installArea) throws IOException; |
| } |