/******************************************************************************* * 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.simpleconfigurator; import java.util.Dictionary; import java.util.Hashtable; import org.eclipse.equinox.internal.provisional.configurator.Configurator; import org.eclipse.equinox.internal.simpleconfigurator.utils.EquinoxUtils; import org.eclipse.equinox.internal.simpleconfigurator.utils.SimpleConfiguratorConstants; import org.osgi.framework.*; /** * At its start, SimpleConfigurator bundle does the followings. * * 1. A value will be gotten by @{link BundleContext#getProperty(key)} with * {@link SimpleConfiguratorConstants#PROP_KEY_CONFIGURL} as a key. * The value will be used for the referal URL. Under the url, there must be a simple * bundles list file to be installed with thier start level and flag of marked as started. * * 2. If the value is null, do nothing any more. * 3. Otherwise, retrieve the bundles list from the url and install, * set start level of and start bundles, as specified. * * 4. A value will be gotten by @{link BundleContext#getProperty(key)} with * {@link SimpleConfiguratorConstants#PROP_KEY_EXCLUSIVE_INSTALLATION} as a key. * * 5. If it equals "false", it will do exclusive installation, which means that * the bundles will not be listed in the specified url but installed at the time * of the method call except SystemBundle will be uninstalled. * Otherwise, no uninstallation will not be done. * */ public class Activator implements BundleActivator { public final static boolean DEBUG = false; private ServiceRegistration configuratorRegistration; private ServiceRegistration commandRegistration; public void start(BundleContext context) throws Exception { SimpleConfiguratorImpl bundleConfigurator = new SimpleConfiguratorImpl(context, context.getBundle()); bundleConfigurator.applyConfiguration(); Dictionary props = new Hashtable(); props.put(Constants.SERVICE_VENDOR, "Eclipse"); //$NON-NLS-1$ props.put(Constants.SERVICE_PID, SimpleConfiguratorConstants.TARGET_CONFIGURATOR_NAME); ServiceFactory configurationFactory = new SimpleConfiguratorFactory(context); configuratorRegistration = context.registerService(Configurator.class.getName(), configurationFactory, props); try { if (null != context.getBundle().loadClass("org.eclipse.osgi.framework.console.CommandProvider")) //$NON-NLS-1$ commandRegistration = EquinoxUtils.registerConsoleCommands(context); } catch (ClassNotFoundException e) { // CommandProvider is not available // Ok -- optional } if (DEBUG) System.out.println("registered Configurator"); //$NON-NLS-1$ } public void stop(BundleContext context) throws Exception { if (configuratorRegistration != null) { configuratorRegistration.unregister(); configuratorRegistration = null; } if (commandRegistration != null) { commandRegistration.unregister(); commandRegistration = null; } } }