Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/internal/adapters/AdapterFactory.java')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/internal/adapters/AdapterFactory.java25
1 files changed, 23 insertions, 2 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/internal/adapters/AdapterFactory.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/internal/adapters/AdapterFactory.java
index 2fb8a344a..1f068b73e 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/internal/adapters/AdapterFactory.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/internal/adapters/AdapterFactory.java
@@ -32,7 +32,7 @@ public class AdapterFactory implements IAdapterFactory {
private final IPersistableURIProvider peerModelPersistableURIProvider = new PeerPersistableURIProvider();
private static final Class<?>[] CLASSES = new Class[] {
- IPersistableURIProvider.class
+ IPersistableURIProvider.class, IPeerModel.class
};
/* (non-Javadoc)
@@ -49,7 +49,8 @@ public class AdapterFactory implements IAdapterFactory {
if (IPersistableURIProvider.class.equals(adapterType)) {
return peerModelPersistableURIProvider;
}
- if (IPeerModel.class.equals(adapterType) && adaptableObject instanceof IPeer) {
+ if (IPeerModel.class.equals(adapterType)) {
+ if (adaptableObject instanceof IPeer) {
final AtomicReference<IPeerModel> node = new AtomicReference<IPeerModel>();
final IPeer peer = (IPeer)adaptableObject;
@@ -72,6 +73,26 @@ public class AdapterFactory implements IAdapterFactory {
else Protocol.invokeAndWait(runnable);
return node.get();
+ }
+ else if (adaptableObject instanceof IPeerModel) {
+ return adaptableObject;
+ }
+ else if (adaptableObject instanceof IPeerModelProvider) {
+ final AtomicReference<IPeerModel> node = new AtomicReference<IPeerModel>();
+ final IPeerModelProvider provider = (IPeerModelProvider)adaptableObject;
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ node.set(provider.getPeerModel());
+ }
+ };
+
+ if (Protocol.isDispatchThread()) runnable.run();
+ else Protocol.invokeAndWait(runnable);
+
+ return node.get();
+ }
}
}
return null;

Back to the top