Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugene Tarassov2012-04-27 12:08:05 -0400
committerEugene Tarassov2012-04-27 12:08:05 -0400
commita6242b7a5291b625f95cc50bf1fe431ca77a2dcc (patch)
tree5dfb934bc20b433313f1f305701937b607496490 /plugins/org.eclipse.tcf.debug
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.debug')
-rw-r--r--plugins/org.eclipse.tcf.debug/META-INF/MANIFEST.MF2
-rw-r--r--plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java32
2 files changed, 29 insertions, 5 deletions
diff --git a/plugins/org.eclipse.tcf.debug/META-INF/MANIFEST.MF b/plugins/org.eclipse.tcf.debug/META-INF/MANIFEST.MF
index 7aae56cda..fbfea7181 100644
--- a/plugins/org.eclipse.tcf.debug/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.tcf.debug/META-INF/MANIFEST.MF
@@ -11,6 +11,8 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.core.filesystem;bundle-version="1.3.0"
Import-Package: org.eclipse.tcf.core;version="1.0.0",
+ org.eclipse.tcf.osgi;version="1.0.0",
+ org.eclipse.tcf.osgi.services;version="1.0.0",
org.eclipse.tcf.protocol;version="1.0.0",
org.eclipse.tcf.services;version="1.0.0",
org.eclipse.tcf.util;version="1.0.0"
diff --git a/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java b/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java
index 19f7a3032..824d8cf55 100644
--- a/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java
+++ b/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java
@@ -32,6 +32,9 @@ import org.eclipse.tcf.internal.debug.Activator;
import org.eclipse.tcf.internal.debug.model.ITCFConstants;
import org.eclipse.tcf.internal.debug.model.TCFLaunch;
import org.eclipse.tcf.internal.debug.model.TCFMemoryRegion;
+import org.eclipse.tcf.osgi.OSGIServices;
+import org.eclipse.tcf.osgi.services.IValueAddService;
+import org.eclipse.tcf.protocol.IPeer;
import org.eclipse.tcf.protocol.JSON;
import org.eclipse.tcf.protocol.Protocol;
import org.eclipse.tcf.services.IMemoryMap;
@@ -71,6 +74,7 @@ public class TCFLaunchDelegate extends LaunchConfigurationDelegate {
super(props);
}
+ @Override
public String toString() {
StringBuffer bf = new StringBuffer();
Map<String,Object> props = getProperties();
@@ -280,6 +284,7 @@ public class TCFLaunchDelegate extends LaunchConfigurationDelegate {
* Create new TCF launch object.
* @return new TCFLaunch object
*/
+ @Override
public ILaunch getLaunch(final ILaunchConfiguration configuration, final String mode) throws CoreException {
return new TCFTask<ILaunch>() {
int cnt;
@@ -315,14 +320,31 @@ public class TCFLaunchDelegate extends LaunchConfigurationDelegate {
null));
}
if (monitor != null) monitor.beginTask("Launching TCF debugger session", task_cnt); //$NON-NLS-1$
- final String id =
- configuration.getAttribute(ATTR_USE_LOCAL_AGENT, true) ?
- local_id : configuration.getAttribute(ATTR_PEER_ID, "");
- Protocol.invokeLater(new Runnable() {
+ final String id = configuration.getAttribute(ATTR_USE_LOCAL_AGENT, true) ? local_id : configuration.getAttribute(ATTR_PEER_ID, "");
+
+ Runnable runnable = new Runnable() {
public void run() {
((TCFLaunch)launch).launchTCF(mode, id);
if (monitor != null) monitor.done();
}
- });
+ };
+
+ // If the id is not a redirection path of itself, and a value-add service is registered,
+ // ask the value-add service for the redirection path
+ if (id.indexOf('/') <= 0 && OSGIServices.getValueAddService() != null) {
+ IPeer peer = Protocol.getLocator().getPeers().get(id);
+ if (peer == null) {
+ Protocol.invokeLater(runnable);
+ } else {
+ OSGIServices.getValueAddService().getRedirectionPath(peer, new IValueAddService.DoneGetRedirectionPath() {
+ public void doneGetRedirectionPath(Throwable error, String redirectionPath) {
+ ((TCFLaunch)launch).launchTCF(mode, error == null ? redirectionPath : id);
+ if (monitor != null) monitor.done();
+ }
+ });
+ }
+ } else {
+ Protocol.invokeLater(runnable);
+ }
}
}

Back to the top