diff options
author | slewis | 2008-05-17 21:57:53 +0000 |
---|---|---|
committer | slewis | 2008-05-17 21:57:53 +0000 |
commit | 899a5fdda6f3ce0c48917705ae678f86273a7f79 (patch) | |
tree | 7e41d84135a9a991a287e51b01e5755131127da9 | |
parent | ae5ccd4a0a3c348e346c0f2da22eaab4cf2146e5 (diff) | |
download | org.eclipse.ecf-899a5fdda6f3ce0c48917705ae678f86273a7f79.tar.gz org.eclipse.ecf-899a5fdda6f3ce0c48917705ae678f86273a7f79.tar.xz org.eclipse.ecf-899a5fdda6f3ce0c48917705ae678f86273a7f79.zip |
Added IAdaptable as super interface for IIDStore. Also refactored impl classes into API
-rw-r--r-- | framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/Activator.java | 30 | ||||
-rw-r--r-- | framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IDEntry.java (renamed from framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/IDEntry.java) | 5 | ||||
-rw-r--r-- | framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IDStore.java (renamed from framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/IDStore.java) | 18 | ||||
-rw-r--r-- | framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IIDStore.java | 3 | ||||
-rw-r--r-- | framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/NamespaceEntry.java (renamed from framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/NamespaceEntry.java) | 4 |
5 files changed, 47 insertions, 13 deletions
diff --git a/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/Activator.java b/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/Activator.java index cb90931e0..1c977575a 100644 --- a/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/Activator.java +++ b/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/Activator.java @@ -1,8 +1,8 @@ package org.eclipse.ecf.internal.storage; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.ecf.core.util.LogHelper; -import org.eclipse.ecf.core.util.SystemLogService; +import org.eclipse.core.runtime.*; +import org.eclipse.ecf.core.util.*; +import org.eclipse.ecf.storage.IDStore; import org.eclipse.ecf.storage.IIDStore; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; @@ -26,6 +26,8 @@ public class Activator implements BundleActivator { private BundleContext context = null; + private ServiceTracker adapterManagerTracker = null; + /** * The constructor */ @@ -52,6 +54,10 @@ public class Activator implements BundleActivator { logServiceTracker = null; logService = null; } + if (adapterManagerTracker != null) { + adapterManagerTracker.close(); + adapterManagerTracker = null; + } context = null; plugin = null; } @@ -65,7 +71,7 @@ public class Activator implements BundleActivator { return plugin; } - protected LogService getLogService() { + public LogService getLogService() { if (logServiceTracker == null) { logServiceTracker = new ServiceTracker(this.context, LogService.class.getName(), null); logServiceTracker.open(); @@ -76,6 +82,22 @@ public class Activator implements BundleActivator { return logService; } + 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; + } + public void log(IStatus status) { if (logService == null) logService = getLogService(); diff --git a/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/IDEntry.java b/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IDEntry.java index e9cbf372b..38c4f1b57 100644 --- a/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/IDEntry.java +++ b/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IDEntry.java @@ -9,14 +9,13 @@ * Composent, Inc. - initial API and implementation *****************************************************************************/ -package org.eclipse.ecf.internal.storage; +package org.eclipse.ecf.storage; import java.util.*; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.ecf.core.identity.*; -import org.eclipse.ecf.storage.IDStoreException; -import org.eclipse.ecf.storage.IIDEntry; +import org.eclipse.ecf.internal.storage.Activator; import org.eclipse.equinox.security.storage.ISecurePreferences; import org.eclipse.osgi.util.NLS; diff --git a/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/IDStore.java b/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IDStore.java index c5aac6a9a..f59e5444a 100644 --- a/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/IDStore.java +++ b/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IDStore.java @@ -9,13 +9,14 @@ * Composent, Inc. - initial API and implementation *****************************************************************************/ -package org.eclipse.ecf.internal.storage; +package org.eclipse.ecf.storage; import java.util.ArrayList; import java.util.List; +import org.eclipse.core.runtime.IAdapterManager; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.identity.Namespace; -import org.eclipse.ecf.storage.*; +import org.eclipse.ecf.internal.storage.Activator; import org.eclipse.equinox.security.storage.*; /** @@ -88,4 +89,17 @@ public class IDStore implements IIDStore { return null; return new NamespaceEntry(namespaceRoot.node(nsName)); } + + /* (non-Javadoc) + * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) + */ + public Object getAdapter(Class adapter) { + if (adapter == null) + return null; + if (adapter.isInstance(this)) { + return this; + } + IAdapterManager adapterManager = Activator.getDefault().getAdapterManager(); + return (adapterManager == null) ? null : adapterManager.loadAdapter(this, adapter.getName()); + } } diff --git a/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IIDStore.java b/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IIDStore.java index b6a1909d2..5b53bde46 100644 --- a/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IIDStore.java +++ b/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/IIDStore.java @@ -11,6 +11,7 @@ package org.eclipse.ecf.storage; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.identity.Namespace; import org.eclipse.equinox.security.storage.ISecurePreferences; @@ -19,7 +20,7 @@ import org.eclipse.equinox.security.storage.ISecurePreferences; * ID storage service interface. This interface defines access for storing and retrieving ID instances. * It also allows creating ID instances from previously stored {@link IIDEntry}s. */ -public interface IIDStore { +public interface IIDStore extends IAdaptable { /** * Get the {@link INamespaceEntry}s previously stored in this IIDStore. diff --git a/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/NamespaceEntry.java b/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/NamespaceEntry.java index 54584dc57..14c417f4a 100644 --- a/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/internal/storage/NamespaceEntry.java +++ b/framework/bundles/org.eclipse.ecf.storage/src/org/eclipse/ecf/storage/NamespaceEntry.java @@ -9,12 +9,10 @@ * Composent, Inc. - initial API and implementation *****************************************************************************/ -package org.eclipse.ecf.internal.storage; +package org.eclipse.ecf.storage; import java.util.ArrayList; import java.util.List; -import org.eclipse.ecf.storage.IIDEntry; -import org.eclipse.ecf.storage.INamespaceEntry; import org.eclipse.equinox.security.storage.ISecurePreferences; /** |