Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hallgren2010-02-08 21:09:49 +0000
committerThomas Hallgren2010-02-08 21:09:49 +0000
commit3c2cf4e84930861237e178c7364f8c8df9ecbfa8 (patch)
tree9694659b257889386767dc4a5931b2fe61787001 /bundles/org.eclipse.equinox.p2.garbagecollector/src
parent87b82df61fd117e0a6d8079de53d2d878b8fe141 (diff)
downloadrt.equinox.p2-3c2cf4e84930861237e178c7364f8c8df9ecbfa8.tar.gz
rt.equinox.p2-3c2cf4e84930861237e178c7364f8c8df9ecbfa8.tar.xz
rt.equinox.p2-3c2cf4e84930861237e178c7364f8c8df9ecbfa8.zip
Fixed 'ProvisioningEventBus service could not be obtained' problem.
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.garbagecollector/src')
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GCActivator.java25
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/Messages.java1
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/messages.properties1
3 files changed, 23 insertions, 4 deletions
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GCActivator.java b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GCActivator.java
index ce225b593..c32809305 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GCActivator.java
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GCActivator.java
@@ -10,8 +10,6 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.garbagecollector;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-
import java.util.*;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -19,6 +17,7 @@ import org.eclipse.core.runtime.preferences.*;
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus;
import org.eclipse.equinox.internal.provisional.p2.core.eventbus.SynchronousProvisioningListener;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.equinox.p2.engine.*;
import org.eclipse.osgi.service.debug.DebugOptions;
import org.osgi.framework.*;
@@ -43,6 +42,24 @@ public class GCActivator implements BundleActivator {
return result;
}
+ static IProvisioningAgent getAgent(BundleContext ctx) {
+ ServiceReference reference = ctx.getServiceReference(IProvisioningAgent.SERVICE_NAME);
+ if (reference == null)
+ return null;
+ IProvisioningAgent result = (IProvisioningAgent) ctx.getService(reference);
+ ctx.ungetService(reference);
+ return result;
+ }
+
+ static IProvisioningEventBus getEventBus(BundleContext ctx) {
+ IProvisioningAgent agent = getAgent(GCActivator.context);
+ if (agent == null) {
+ LogHelper.log(new Status(IStatus.ERROR, GCActivator.ID, Messages.Missing_agent));
+ return null;
+ }
+ return (IProvisioningEventBus) agent.getService(IProvisioningEventBus.SERVICE_NAME);
+ }
+
public void start(BundleContext inContext) throws Exception {
GCActivator.context = inContext;
DebugOptions debug = (DebugOptions) getService(inContext, DebugOptions.class.getName());
@@ -54,7 +71,7 @@ public class GCActivator implements BundleActivator {
// Register the listener used to trigger the GC.
private void registerGCTrigger() {
- IProvisioningEventBus eventBus = (IProvisioningEventBus) getService(GCActivator.context, IProvisioningEventBus.SERVICE_NAME);
+ IProvisioningEventBus eventBus = getEventBus(GCActivator.context);
if (eventBus == null) {
LogHelper.log(new Status(IStatus.ERROR, GCActivator.ID, Messages.Missing_bus));
return;
@@ -96,7 +113,7 @@ public class GCActivator implements BundleActivator {
}
private void unregisterGCTrigger() {
- IProvisioningEventBus eventBus = (IProvisioningEventBus) getService(GCActivator.context, IProvisioningEventBus.SERVICE_NAME);
+ IProvisioningEventBus eventBus = getEventBus(GCActivator.context);
if (eventBus != null && busListener != null)
eventBus.removeListener(busListener);
}
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/Messages.java b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/Messages.java
index cd0fea7d1..efe9aa6eb 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/Messages.java
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/Messages.java
@@ -16,6 +16,7 @@ public class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.equinox.internal.p2.garbagecollector.messages"; //$NON-NLS-1$
public static String Error_in_extension;
+ public static String Missing_agent;
public static String Missing_bus;
static {
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/messages.properties b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/messages.properties
index a2eba873d..0a7bde5fb 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/messages.properties
@@ -9,4 +9,5 @@
# IBM Corporation - initial API and implementation
###############################################################################
Error_in_extension=An error occurred while calling to an IMarkSetProvider.
+Missing_agent=ProvisioningAgent service could not be obtained, CoreGarbageCollector will not function properly.
Missing_bus=ProvisioningEventBus service could not be obtained, CoreGarbageCollector will not function properly.

Back to the top