Bug 483875 - EPartServiceTest.testLeak fails on all platforms
Revert "Bug 483310 - Remove unnecessary manual activation of EventAdmin
in InjectionEventTest from org.eclipse.e4.ui.tests"
This reverts commit 7ca8e963295211c98e7ac1dac16daaf5d136a5f6.
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/Activator.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/Activator.java
index 381dce5..0ef52b0 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/Activator.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/Activator.java
@@ -12,6 +12,7 @@
import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleContext;
+import org.osgi.service.event.EventAdmin;
import org.osgi.service.packageadmin.PackageAdmin;
import org.osgi.util.tracker.ServiceTracker;
@@ -20,6 +21,7 @@
*/
public class Activator extends Plugin {
+ private ServiceTracker eventAdminTracker;
private ServiceTracker packageAdminTracker;
// The plug-in ID
public static final String PLUGIN_ID = "org.eclipse.e4.ui.tests";
@@ -41,6 +43,10 @@
@Override
public void stop(BundleContext context) throws Exception {
+ if (eventAdminTracker != null) {
+ eventAdminTracker.close();
+ eventAdminTracker = null;
+ }
if (packageAdminTracker != null) {
packageAdminTracker.close();
packageAdminTracker = null;
@@ -58,7 +64,17 @@
return plugin;
}
-
+ public EventAdmin getEventAdmin() {
+ if (eventAdminTracker == null) {
+ BundleContext bundleContext = plugin.getBundle().getBundleContext();
+ if (bundleContext == null)
+ return null;
+ eventAdminTracker = new ServiceTracker(bundleContext,
+ EventAdmin.class.getName(), null);
+ eventAdminTracker.open();
+ }
+ return (EventAdmin) eventAdminTracker.getService();
+ }
public PackageAdmin getPackageAdmin() {
if (packageAdminTracker == null) {
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/InjectionEventTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/InjectionEventTest.java
index c28b99b..c660f2d 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/InjectionEventTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/InjectionEventTest.java
@@ -33,7 +33,9 @@
import org.eclipse.swt.widgets.Display;
import org.junit.Before;
import org.junit.Test;
+import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
import org.osgi.service.event.EventAdmin;
public class InjectionEventTest {
@@ -121,9 +123,13 @@
@Before
public void setUp() throws Exception {
- BundleContext bundleContext = Activator.getDefault().getBundle().getBundleContext();
- IEclipseContext localContext = EclipseContextFactory.getServiceContext(bundleContext);
- helper = ContextInjectionFactory.make(EventAdminHelper.class, localContext);
+ ensureEventAdminStarted();
+ BundleContext bundleContext = Activator.getDefault().getBundle()
+ .getBundleContext();
+ IEclipseContext localContext = EclipseContextFactory
+ .getServiceContext(bundleContext);
+ helper = ContextInjectionFactory.make(EventAdminHelper.class,
+ localContext);
}
@Test
@@ -266,4 +272,21 @@
target.valid = false;
}
+ private void ensureEventAdminStarted() {
+ if (Activator.getDefault().getEventAdmin() == null) {
+ Bundle[] bundles = Activator.getDefault().getBundle()
+ .getBundleContext().getBundles();
+ for (Bundle bundle : bundles) {
+ if (!"org.eclipse.equinox.event".equals(bundle
+ .getSymbolicName()))
+ continue;
+ try {
+ bundle.start(Bundle.START_TRANSIENT);
+ } catch (BundleException e) {
+ e.printStackTrace();
+ }
+ break;
+ }
+ }
+ }
}