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;
+			}
+		}
+	}
 }