diff options
author | Uwe Stieber | 2012-07-28 18:38:55 +0000 |
---|---|---|
committer | Uwe Stieber | 2012-07-28 18:38:55 +0000 |
commit | cb5d1b8fa531d9cf39bcf5b159f44e4d11568cb6 (patch) | |
tree | f78755e7f847191467ef186fd9e9e5b75408eb3e | |
parent | 0ee581187cf4096e802a7d49bd74ecd2d3ee6bcf (diff) | |
download | org.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.java | 19 |
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); |