/*******************************************************************************
* Copyright (c) 2009, 2010 SpringSource, a divison of VMware, Inc.
* 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:
* SpringSource, a division of VMware, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.virgo.ide.runtime.core;
import java.net.URI;
import java.net.URL;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.virgo.ide.runtime.core.provisioning.ArtefactRepositoryManager;
import org.osgi.framework.BundleContext;
/**
* Bundle Activator for the server.core plugin.
* @author Christian Dupuis
* @since 1.0.0
*/
public class ServerCorePlugin extends AbstractUIPlugin {
public static final String CONNECTOR_BUNDLE_NAME =
"org.eclipse.virgo.ide.management.remote_1.0.0.RELEASE.jar";
/** The bundle symbolic name */
public static final String PLUGIN_ID = "org.eclipse.virgo.ide.runtime.core";
public static final String PREF_LOAD_CLASSES_KEY = PLUGIN_ID + ".load.classes.from.index";
private URI connectorBundleUri;
/** The shared bundle instance */
private static ServerCorePlugin plugin;
/** Internal artefact repository manager */
private ArtefactRepositoryManager artefactRepositoryManager;
public static ExecutorService EXECUTOR = Executors.newCachedThreadPool();
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
ServerUtils.clearCacheDirectory();
URL url = FileLocator.toFileURL(context.getBundle().getEntry(CONNECTOR_BUNDLE_NAME));
if (url != null) {
connectorBundleUri = new URI("file", url.toString().substring(5), null);
}
plugin.getPreferenceStore().setDefault(PREF_LOAD_CLASSES_KEY, false);
artefactRepositoryManager = new ArtefactRepositoryManager();
}
@Override
public void stop(BundleContext context) throws Exception {
ServerUtils.clearCacheDirectory();
artefactRepositoryManager.stop();
artefactRepositoryManager = null;
plugin = null;
super.stop(context);
}
public static ServerCorePlugin getDefault() {
return plugin;
}
public static String getPreference(String id) {
return getDefault().getPluginPreferences().getString(id);
}
public static void setPreference(String id, String value) {
getDefault().getPluginPreferences().setValue(id, value);
getDefault().savePluginPreferences();
}
public static ArtefactRepositoryManager getArtefactRepositoryManager() {
return getDefault().artefactRepositoryManager;
}
public URI getConnectorBundleUri() {
return connectorBundleUri;
}
}