blob: f400e355f571402cd7abedf66e2997959e675bf5 [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.configuratormanipulator;
import java.io.File;
import java.io.IOException;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
/**
*
* This interface provides methods that enable client bundles to
* manipulate the corresponding ConfiguratorBundle.
*
* @see Configurator
*/
public interface ConfiguratorManipulator {
String SERVICE_PROP_KEY_CONFIGURATOR_BUNDLESYMBOLICNAME = "org.eclipse.equinox.configurator.BundleSymbolicName";
/**
* Save configuration for the corresponding Configurator Bundle so that
* Bundles kept by the specified {@link Manipulator} would be installed after completion of a launch.
* The location of a configuration file is determined by the parameters set to the Manipulator object
* and it depends on the corresponding ConfiguratorBundle implementation.
*
* While some parameters of the {@link Manipulator} object will be modified (for setting info about the
* location the ConfiguratorBundle would be able to refer in a future launch),
* the Bundles kept by the {@link Manipulator} object should not be modified.
*
* Instead, it will return BundleInfo[] to be managed not by the ConfiguratorBundle.
* These values are supposed to be saved into fw config files.
*
* If backup flag is true, a file have existed already under the same name
* will be renamed into another name as a backup.
*
* We assume that the implementation of {@link Manipulator#save(boolean)} will call this method.
*
* @return array of BundleInfo to be saved as installing bundles in fw config files.
* @param manipulator {@link Manipulator} object which contains the bundles to be installed finally.
* @param backup if files exists at the location to save, it will be copied as a backup.
* @throws IOException - If fail to save configuration for the corresponding Configurator Bundle.
*/
BundleInfo[] save(Manipulator manipulator, boolean backup) throws IOException;
/**
* Update bundles kept by the specified {@link Manipulator} object into installed bundles
* if {@link FrameworkAdmin#launch(Manipulator, File)} with the specified
* {@link Manipulator} is called taking the corresponding ConfiguratorBundle behaivior into account.
*
* If there is no corresponding ConfiguratorBundle in Manipulator.getConfigData().getBundles(),
* just return.
*
* The BundleInfo[] of the specified Manipulator object will be modified.
*
* This method is assumed to be called from {@link Manipulator#load()}.
*
* @param manipulator {@link Manipulator} object to be used and updated.
* @throws IOException - If fail to read configuration for the corresponding Configurator Bundle.
*/
void updateBundles(Manipulator manipulator) throws IOException;
void cleanup(Manipulator manipulator);
}