diff options
author | Thomas Hallgren | 2010-02-08 21:09:49 +0000 |
---|---|---|
committer | Thomas Hallgren | 2010-02-08 21:09:49 +0000 |
commit | 3c2cf4e84930861237e178c7364f8c8df9ecbfa8 (patch) | |
tree | 9694659b257889386767dc4a5931b2fe61787001 /bundles/org.eclipse.equinox.p2.garbagecollector/src | |
parent | 87b82df61fd117e0a6d8079de53d2d878b8fe141 (diff) | |
download | rt.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')
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. |