Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2008-05-17 21:57:53 +0000
committerslewis2008-05-17 21:57:53 +0000
commit899a5fdda6f3ce0c48917705ae678f86273a7f79 (patch)
tree7e41d84135a9a991a287e51b01e5755131127da9
parentae5ccd4a0a3c348e346c0f2da22eaab4cf2146e5 (diff)
downloadorg.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.java30
-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.java3
-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;
/**

Back to the top