X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=eclipse%2Fplugins%2Forg.argeo.eclipse.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Feclipse%2Fspring%2FSpringExtensionFactory.java;h=efc3e1112c14d0841663754362bfaf55ff859f3d;hb=f25c8b84d0def5048903e216115f1e35d5c232ba;hp=f92b423e9799e3f7e510301ee93999d508f3d089;hpb=e0c5ce719b9eb9ed21baad8a7b4bb876b549d9a6;p=lgpl%2Fargeo-commons.git diff --git a/eclipse/plugins/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/SpringExtensionFactory.java b/eclipse/plugins/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/SpringExtensionFactory.java index f92b423e9..efc3e1112 100644 --- a/eclipse/plugins/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/SpringExtensionFactory.java +++ b/eclipse/plugins/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/SpringExtensionFactory.java @@ -1,14 +1,10 @@ package org.argeo.eclipse.spring; -import org.argeo.eclipse.ui.ArgeoUiPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExecutableExtension; import org.eclipse.core.runtime.IExecutableExtensionFactory; import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.Platform; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleException; import org.springframework.context.ApplicationContext; /** @@ -29,7 +25,11 @@ import org.springframework.context.ApplicationContext; * spring extension factory uses the id of the extension itself to identify the * bean. * + * original code from: Blog entry + * * @author Martin Lippert + * @author mbaudier */ public class SpringExtensionFactory implements IExecutableExtensionFactory, IExecutableExtension { @@ -43,7 +43,8 @@ public class SpringExtensionFactory implements IExecutableExtensionFactory, public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException { String beanName = getBeanName(data, config); - ApplicationContext appContext = getApplicationContext(config); + ApplicationContext appContext = ApplicationContextTracker + .getApplicationContext(config.getContributor().getName()); if (beanName != null && appContext != null) { this.bean = appContext.getBean(beanName); @@ -55,7 +56,7 @@ public class SpringExtensionFactory implements IExecutableExtensionFactory, } private String getBeanName(Object data, IConfigurationElement config) { - + // try the specific bean id the extension defines if (data != null && data.toString().length() > 0) { return data.toString(); @@ -76,30 +77,4 @@ public class SpringExtensionFactory implements IExecutableExtensionFactory, return null; } - private ApplicationContext getApplicationContext( - IConfigurationElement config) { - String contributorName = config.getContributor().getName(); - Bundle contributorBundle = Platform.getBundle(contributorName); - - if (contributorBundle.getState() != Bundle.ACTIVE && contributorBundle.getState() != Bundle.STARTING) { - try { - System.out.println("starting bundle: " + contributorBundle.getSymbolicName()); - contributorBundle.start(); - } catch (BundleException e) { - e.printStackTrace(); - } - } - - final ApplicationContextTracker applicationContextTracker = new ApplicationContextTracker( - contributorBundle, ArgeoUiPlugin.getDefault().getBundleContext()); - ApplicationContext applicationContext = null; - try { - applicationContext = applicationContextTracker - .getApplicationContext(); - } finally { - applicationContextTracker.close(); - } - return applicationContext; - } - }