Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Stieber2012-07-28 18:38:55 +0000
committerUwe Stieber2012-07-28 18:38:55 +0000
commitcb5d1b8fa531d9cf39bcf5b159f44e4d11568cb6 (patch)
treef78755e7f847191467ef186fd9e9e5b75408eb3e
parent0ee581187cf4096e802a7d49bd74ecd2d3ee6bcf (diff)
downloadorg.eclipse.tcf-cb5d1b8fa531d9cf39bcf5b159f44e4d11568cb6.tar.gz
org.eclipse.tcf-cb5d1b8fa531d9cf39bcf5b159f44e4d11568cb6.tar.xz
org.eclipse.tcf-cb5d1b8fa531d9cf39bcf5b159f44e4d11568cb6.zip
Target Explorer: Fix timing issue in while restoring a previously opened properties editor
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/adapters/PeerModelFactory.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/adapters/PeerModelFactory.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/adapters/PeerModelFactory.java
index 60abcf6c0..eba6edda3 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/adapters/PeerModelFactory.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/adapters/PeerModelFactory.java
@@ -18,6 +18,7 @@ import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.ILocatorModel;
import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel;
import org.eclipse.tcf.te.tcf.locator.interfaces.services.ILocatorModelLookupService;
import org.eclipse.tcf.te.tcf.locator.interfaces.services.ILocatorModelPeerNodeQueryService;
+import org.eclipse.tcf.te.tcf.locator.interfaces.services.ILocatorModelRefreshService;
import org.eclipse.tcf.te.tcf.locator.model.Model;
import org.eclipse.tcf.te.ui.views.editor.EditorInput;
import org.eclipse.ui.IElementFactory;
@@ -47,6 +48,24 @@ public class PeerModelFactory implements IElementFactory {
Assert.isTrue(!Protocol.isDispatchThread());
Protocol.invokeAndWait(runnable);
+ // If the node is null, this might mean that the peer to restore is a dynamically discovered peer.
+ // In this case, we have to wait a little bit to give the locator service the chance to sync.
+ if (node.get() == null) {
+ // Sleep shortly
+ try { Thread.sleep(300); } catch (InterruptedException e) {}
+
+ // Refresh and try again to query the node
+ Runnable runnable2 = new Runnable() {
+ @Override
+ public void run() {
+ Model.getModel().getService(ILocatorModelRefreshService.class).refresh();
+ node.set(Model.getModel().getService(ILocatorModelLookupService.class).lkupPeerModelById(peerId));
+ }
+ };
+
+ Protocol.invokeAndWait(runnable2);
+ }
+
if (node.get() != null) {
ILocatorModel model = node.get().getModel();
ILocatorModelPeerNodeQueryService queryService = model.getService(ILocatorModelPeerNodeQueryService.class);

Back to the top