diff options
Diffstat (limited to 'framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/Activator.java')
-rw-r--r-- | framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/Activator.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/Activator.java b/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/Activator.java index a6934b726..16cce7d48 100644 --- a/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/Activator.java +++ b/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/Activator.java @@ -3,6 +3,11 @@ package org.eclipse.ecf.internal.sync; import java.util.Dictionary; import java.util.Properties; +import org.eclipse.core.runtime.IAdapterManager; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.ecf.core.util.LogHelper; +import org.eclipse.ecf.core.util.PlatformHelper; import org.eclipse.ecf.internal.sync.doc.cola.ColaSynchronizationStrategyFactory; import org.eclipse.ecf.internal.sync.doc.identity.IdentitySynchronizationStrategyFactory; import org.eclipse.ecf.sync.IServiceConstants; @@ -10,6 +15,8 @@ import org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategyFactory; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; +import org.osgi.service.log.LogService; +import org.osgi.util.tracker.ServiceTracker; public class Activator implements BundleActivator { @@ -23,6 +30,40 @@ public class Activator implements BundleActivator { IDocumentSynchronizationStrategyFactory identity; IDocumentSynchronizationStrategyFactory cola; + private ServiceTracker adapterManagerTracker = null; + private ServiceTracker logServiceTracker = null; + + public IAdapterManager getAdapterManager() { + // First, try to get the adapter manager via + if (adapterManagerTracker == null) { + adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null); + adapterManagerTracker.open(); + } + IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService(); + // Then, if the service isn't there, try to get from Platform class via + // PlatformHelper class + if (adapterManager == null) + adapterManager = PlatformHelper.getPlatformAdapterManager(); + if (adapterManager == null) + getDefault().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Cannot get adapter manager", null)); //$NON-NLS-1$ + return adapterManager; + } + + protected LogService getLogService() { + if (logServiceTracker == null) { + logServiceTracker = new ServiceTracker(this.context, LogService.class.getName(), null); + logServiceTracker.open(); + } + return (LogService) logServiceTracker.getService(); + } + + public void log(IStatus status) { + LogService logService = getLogService(); + if (logService != null) { + logService.log(LogHelper.getLogCode(status), LogHelper.getLogMessage(status), status.getException()); + } + } + public static Activator getDefault() { return bundle; } @@ -69,6 +110,14 @@ public class Activator implements BundleActivator { this.cola.dispose(); this.cola = null; } + if (logServiceTracker != null) { + logServiceTracker.close(); + logServiceTracker = null; + } + if (adapterManagerTracker != null) { + adapterManagerTracker.close(); + adapterManagerTracker = null; + } this.context = null; bundle = null; } |