import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
/**
* The activator class controls the plug-in life cycle
*/
public class ArgeoUiPlugin extends AbstractUIPlugin implements ILogListener {
-
- // The plug-in ID
public static final String PLUGIN_ID = "org.argeo.eclipse.ui";
-
- private final static String SPRING_OSGI_EXTENDER = "org.springframework.osgi.extender";
-
private final static Log log = LogFactory.getLog(ArgeoUiPlugin.class);
-
// The shared instance
private static ArgeoUiPlugin plugin;
- private BundleContext bundleContext;
-
- /**
- * The constructor
- */
- public ArgeoUiPlugin() {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
- * )
- */
public void start(BundleContext context) throws Exception {
super.start(context);
- plugin = this;
- bundleContext = context;
-
- Platform.addLogListener(this);
- log.debug("Eclipse logging now directed to standard logging");
-
- // Make sure that the Spring OSGi extender is started
- Bundle osgiExtBundle = Platform.getBundle(SPRING_OSGI_EXTENDER);
- if (osgiExtBundle != null)
- osgiExtBundle.start();
- else
- log.error("Spring OSGi Extender not found");
-
+ // weirdly, the start method is called twice...
+ if (plugin == null) {
+ plugin = this;
+ Platform.addLogListener(this);
+ log.debug("Eclipse logging now directed to standard logging");
+ }
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
- * )
- */
public void stop(BundleContext context) throws Exception {
- Platform.removeLogListener(this);
- log.debug("Eclipse logging not directed anymore to standard logging");
-
- plugin = null;
- super.stop(context);
+ try {
+ // weirdly, the stop method is called twice...
+ if (plugin != null) {
+ Platform.removeLogListener(this);
+ log.debug("Eclipse logging not directed anymore to standard logging");
+ plugin = null;
+ }
+ } finally {
+ super.stop(context);
+ }
}
- /**
- * Returns the shared instance
- *
- * @return the shared instance
- */
+ /** Returns the shared instance */
public static ArgeoUiPlugin getDefault() {
return plugin;
}
- public BundleContext getBundleContext() {
- return bundleContext;
- }
-
public void logging(IStatus status, String plugin) {
Log pluginLog = LogFactory.getLog(plugin);
Integer severity = status.getSeverity();