Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugene Tarassov2012-04-27 16:08:05 +0000
committerEugene Tarassov2012-04-27 16:08:05 +0000
commita6242b7a5291b625f95cc50bf1fe431ca77a2dcc (patch)
tree5dfb934bc20b433313f1f305701937b607496490 /plugins/org.eclipse.tcf
parentdaa87170c440faefa19c2208416dc696656958f9 (diff)
downloadorg.eclipse.tcf-a6242b7a5291b625f95cc50bf1fe431ca77a2dcc.tar.gz
org.eclipse.tcf-a6242b7a5291b625f95cc50bf1fe431ca77a2dcc.tar.xz
org.eclipse.tcf-a6242b7a5291b625f95cc50bf1fe431ca77a2dcc.zip
TCF Debugger: OSGi service definition: IValueAddService
Diffstat (limited to 'plugins/org.eclipse.tcf')
-rw-r--r--plugins/org.eclipse.tcf/META-INF/MANIFEST.MF4
-rw-r--r--plugins/org.eclipse.tcf/src/org/eclipse/tcf/Activator.java3
-rw-r--r--plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/OSGIServices.java72
-rw-r--r--plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/services/IValueAddService.java48
4 files changed, 126 insertions, 1 deletions
diff --git a/plugins/org.eclipse.tcf/META-INF/MANIFEST.MF b/plugins/org.eclipse.tcf/META-INF/MANIFEST.MF
index 18f1f8b82..d4dd32162 100644
--- a/plugins/org.eclipse.tcf/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.tcf/META-INF/MANIFEST.MF
@@ -12,4 +12,6 @@ Require-Bundle: org.eclipse.core.runtime
Bundle-Activator: org.eclipse.tcf.Activator
Import-Package: org.eclipse.tcf.core;version="1.0.0",
org.eclipse.tcf.protocol;version="1.0.0"
-Export-Package: org.eclipse.tcf.ssl;version="1.0.0"
+Export-Package: org.eclipse.tcf.ssl;version="1.0.0",
+ org.eclipse.tcf.osgi;version="1.0.0",
+ org.eclipse.tcf.osgi.services;version="1.0.0"
diff --git a/plugins/org.eclipse.tcf/src/org/eclipse/tcf/Activator.java b/plugins/org.eclipse.tcf/src/org/eclipse/tcf/Activator.java
index 978da4652..aa187a7e1 100644
--- a/plugins/org.eclipse.tcf/src/org/eclipse/tcf/Activator.java
+++ b/plugins/org.eclipse.tcf/src/org/eclipse/tcf/Activator.java
@@ -22,6 +22,7 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.osgi.util.NLS;
import org.eclipse.tcf.core.ChannelTCP;
import org.eclipse.tcf.internal.nls.TcfPluginMessages;
+import org.eclipse.tcf.osgi.OSGIServices;
import org.eclipse.tcf.protocol.ILogger;
import org.eclipse.tcf.protocol.IServiceProvider;
import org.eclipse.tcf.protocol.Protocol;
@@ -79,6 +80,7 @@ public class Activator extends Plugin {
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
+ OSGIServices.getInstance().start(context);
debug = Platform.inDebugMode();
TRACE = "true".equals(Platform.getDebugOption("org.eclipse.tcf/debug")); //$NON-NLS-1$
@@ -127,6 +129,7 @@ public class Activator extends Plugin {
public void stop(BundleContext context) throws Exception {
context.removeBundleListener(bundle_listener);
queue.shutdown();
+ OSGIServices.getInstance().stop(context);
plugin = null;
super.stop(context);
}
diff --git a/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/OSGIServices.java b/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/OSGIServices.java
new file mode 100644
index 000000000..030e4e807
--- /dev/null
+++ b/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/OSGIServices.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tcf.osgi;
+
+import org.eclipse.tcf.osgi.services.IValueAddService;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+/**
+ * OSGi service manager implementation.
+ */
+public class OSGIServices implements BundleActivator {
+ // Reference to the value-add service tracker
+ private ServiceTracker<IValueAddService, IValueAddService> valueAddServiceTracker = null;
+
+ /*
+ * Thread save singleton instance creation.
+ */
+ private static class LazyInstance {
+ public static OSGIServices instance = new OSGIServices();
+ }
+
+ /**
+ * Constructor.
+ */
+ /* default */ OSGIServices() {
+ super();
+ }
+
+ /**
+ * Returns the singleton instance of the extension point manager.
+ */
+ public static OSGIServices getInstance() {
+ return LazyInstance.instance;
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ /*
+ * Register the service tracker for the value-add service.
+ */
+ valueAddServiceTracker = new ServiceTracker<IValueAddService, IValueAddService>(context, IValueAddService.class, null);
+ valueAddServiceTracker.open();
+ }
+
+ /* (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ valueAddServiceTracker.close();
+ valueAddServiceTracker = null;
+ }
+
+ /**
+ * Returns the value-add service if registered.
+ *
+ * @return The value-add service instance or <code>null</code>.
+ */
+ public static IValueAddService getValueAddService() {
+ return getInstance().valueAddServiceTracker != null ? getInstance().valueAddServiceTracker.getService() : null;
+ }
+}
diff --git a/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/services/IValueAddService.java b/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/services/IValueAddService.java
new file mode 100644
index 000000000..0febb5c3e
--- /dev/null
+++ b/plugins/org.eclipse.tcf/src/org/eclipse/tcf/osgi/services/IValueAddService.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tcf.osgi.services;
+
+import org.eclipse.tcf.protocol.IPeer;
+
+/**
+ * A service whose purpose is to provide value-add related information for a
+ * given peer.
+ */
+public interface IValueAddService {
+
+ /**
+ * Returns the redirection path to use for the given peer. The redirection
+ * path is encoded as string where the id's to redirect the communication
+ * through, are separated by '/'.
+ * <p>
+ * If there are no value-adds to redirect through, the passed in peer id is
+ * returned as is.
+ * <p>
+ * If there are value-add's to redirect through, the passed in peer id will
+ * be prefixed with the value-add id's to redirect through.
+ *
+ * @param peerId The peer id. Must not be <code>null</code>.
+ * @param done The client callback. Must not be <code>null</code>.
+ */
+ public void getRedirectionPath(IPeer peer, DoneGetRedirectionPath done);
+
+ /**
+ * Client call back interface for getRedirectionPath(...).
+ */
+ interface DoneGetRedirectionPath {
+ /**
+ * Called when the redirection path has been fully determined.
+ *
+ * @param error The error description if operation failed, <code>null</code> if succeeded.
+ * @param redirectionPath The redirection path or <code>null</code>.
+ */
+ void doneGetRedirectionPath(Throwable error, String redirectionPath);
+}
+}

Back to the top