blob: fbd55c155248f26721bc7dda72dd670ae2405ff7 [file] [log] [blame]
/*******************************************************************************
* 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;
}