diff options
| author | slewis | 2005-05-24 21:32:38 +0000 |
|---|---|---|
| committer | slewis | 2005-05-24 21:32:38 +0000 |
| commit | f8421ee28241a9e15b7e84c8dff48152c657778c (patch) | |
| tree | 5a6dca9e05fb91cea74380becc8d845645ff7ba7 | |
| parent | b767350fb026f5fbef65782aab7b51413c975372 (diff) | |
| download | org.eclipse.ecf-f8421ee28241a9e15b7e84c8dff48152c657778c.tar.gz org.eclipse.ecf-f8421ee28241a9e15b7e84c8dff48152c657778c.tar.xz org.eclipse.ecf-f8421ee28241a9e15b7e84c8dff48152c657778c.zip | |
Fix for NPE when double click on service type entry in list
2 files changed, 14 insertions, 9 deletions
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java index 9df01661b..b9cba4370 100644 --- a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java +++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java @@ -41,11 +41,11 @@ import org.eclipse.ecf.core.events.IContainerEvent; import org.eclipse.ecf.core.events.ISharedObjectContainerDepartedEvent; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.identity.IDFactory; +import org.eclipse.ecf.core.identity.ServiceID; import org.eclipse.ecf.core.security.IJoinContext; import org.eclipse.ecf.core.security.ObjectCallback; import org.eclipse.ecf.discovery.IDiscoveryContainer; import org.eclipse.ecf.discovery.IServiceEvent; -import org.eclipse.ecf.discovery.IServiceInfo; import org.eclipse.ecf.discovery.IServiceListener; import org.eclipse.ecf.discovery.IServiceTypeListener; import org.eclipse.ecf.example.collab.share.EclipseCollabSharedObject; @@ -571,15 +571,11 @@ public class Client { if (discoveryView != null) { dc.addServiceTypeListener(new IServiceTypeListener() { public void serviceTypeAdded(IServiceEvent event) { - discoveryView.addServiceTypeInfo(event.getServiceInfo().getServiceID().getServiceType()); + ServiceID svcID = event.getServiceInfo().getServiceID(); + discoveryView.addServiceTypeInfo(svcID.getServiceType()); dc.addServiceListener(event.getServiceInfo().getServiceID(), new IServiceListener() { public void serviceAdded(IServiceEvent event) { - IServiceInfo info = dc.getServiceInfo(event.getServiceInfo().getServiceID(),3000); - if (info != null) { - discoveryView.addServiceInfo(info); - } else { - discoveryView.addServiceInfo(event.getServiceInfo().getServiceID()); - } + discoveryView.addServiceInfo(event.getServiceInfo().getServiceID()); dc.requestServiceInfo(event.getServiceInfo().getServiceID(),3000); } public void serviceRemoved(IServiceEvent event) { @@ -588,6 +584,7 @@ public class Client { public void serviceResolved(IServiceEvent event) { discoveryView.addServiceInfo(event.getServiceInfo()); }}); + dc.registerServiceType(svcID); }}); } } diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/DiscoveryView.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/DiscoveryView.java index 165013b12..4b85a14f7 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/DiscoveryView.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/DiscoveryView.java @@ -389,7 +389,15 @@ public class DiscoveryView extends ViewPart { private void hookDoubleClickAction() { viewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { - requestServiceInfoAction.run(); + Object obj = ((IStructuredSelection) event.getSelection()) + .getFirstElement(); + final TreeObject treeObject = (TreeObject) obj; + if (treeObject != null && treeObject instanceof TreeParent) { + TreeParent tp = (TreeParent) treeObject; + if (tp.getID() != null) { + requestServiceInfoAction.run(); + } + } } }); } |
