diff options
Diffstat (limited to 'p2/org.eclipse.cdt.p2.generator/src/org/eclipse/cdt/p2/generator/Activator.java')
-rw-r--r-- | p2/org.eclipse.cdt.p2.generator/src/org/eclipse/cdt/p2/generator/Activator.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/p2/org.eclipse.cdt.p2.generator/src/org/eclipse/cdt/p2/generator/Activator.java b/p2/org.eclipse.cdt.p2.generator/src/org/eclipse/cdt/p2/generator/Activator.java new file mode 100644 index 00000000000..eabd95beb7c --- /dev/null +++ b/p2/org.eclipse.cdt.p2.generator/src/org/eclipse/cdt/p2/generator/Activator.java @@ -0,0 +1,76 @@ +package org.eclipse.cdt.p2.generator; + +import org.eclipse.core.runtime.Plugin; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.service.packageadmin.PackageAdmin; + +/** + * The activator class controls the plug-in life cycle + */ +public class Activator extends Plugin { + + // The plug-in ID + public static final String PLUGIN_ID = "org.eclipse.cdt.p2.generator"; + + // The shared instance + private static Activator plugin; + + /** + * The constructor + */ + public Activator() { + } + + /* + * (non-Javadoc) + * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } + + @SuppressWarnings("unchecked") + public <T> T getService(Class<T> clazz) { + BundleContext context = plugin.getBundle().getBundleContext(); + ServiceReference ref = context.getServiceReference(clazz.getName()); + return (ref != null) ? (T)context.getService(ref) : null; + } + + public Bundle getBundle(String symbolicName) { + PackageAdmin packageAdmin = getService(PackageAdmin.class); + if (packageAdmin == null) + return null; + Bundle[] bundles = packageAdmin.getBundles(symbolicName, null); + if (bundles == null) + return null; + //Return the first bundle that is not installed or uninstalled + for (int i = 0; i < bundles.length; i++) { + if ((bundles[i].getState() & (Bundle.INSTALLED | Bundle.UNINSTALLED)) == 0) { + return bundles[i]; + } + } + return null; + } + +} |