Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2008-01-26 05:36:33 +0000
committerslewis2008-01-26 05:36:33 +0000
commitce5e38001ea535929921bcf7f26784aa4fa1d98c (patch)
tree73c2bd87997ebc0ff8e7d684456ef3068e58d603 /providers/bundles/org.eclipse.ecf.provider.jmdns
parentc6948f97e4dc33264079dbac027d59d20e554943 (diff)
downloadorg.eclipse.ecf-ce5e38001ea535929921bcf7f26784aa4fa1d98c.tar.gz
org.eclipse.ecf-ce5e38001ea535929921bcf7f26784aa4fa1d98c.tar.xz
org.eclipse.ecf-ce5e38001ea535929921bcf7f26784aa4fa1d98c.zip
Refactoring of DiscoveryView and associated classes. This makes the DiscoveryView much simpler, and removes all discovery code from collab example app. Also formatted and did string externalization for org.eclipse.ecf.discovery.ui classes. Added extension point org.eclipse.ecf.discovery.ui.serviceAccessHandler extension point so that plugins can add service access handlers to the context menu for individual service entries in the discovery view.
Diffstat (limited to 'providers/bundles/org.eclipse.ecf.provider.jmdns')
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.xml7
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/DiscoveryStart.java34
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java25
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/Messages.java1
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/messages.properties1
5 files changed, 68 insertions, 0 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.xml
index d232114f8..bf5e83bac 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.xml
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.xml
@@ -17,5 +17,12 @@
description="JMDNS Namespace"
name="ecf.namespace.jmdns"/>
</extension>
+ <extension
+ point="org.eclipse.ecf.start">
+ <run
+ asynchronous="true"
+ class="org.eclipse.ecf.internal.provider.jmdns.DiscoveryStart">
+ </run>
+ </extension>
</plugin>
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/DiscoveryStart.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/DiscoveryStart.java
new file mode 100644
index 000000000..52b011a92
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/DiscoveryStart.java
@@ -0,0 +1,34 @@
+package org.eclipse.ecf.internal.provider.jmdns;
+
+import java.net.InetAddress;
+import java.util.Properties;
+import org.eclipse.core.runtime.*;
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.core.start.IECFStart;
+import org.eclipse.ecf.discovery.service.IDiscoveryService;
+import org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer;
+
+public class DiscoveryStart implements IECFStart {
+
+ public DiscoveryStart() {
+ // nothing to do
+ }
+
+ public IStatus run(IProgressMonitor monitor) {
+ IDiscoveryService discovery = JMDNSPlugin.getDefault().getDiscoveryService();
+ if (discovery == null) {
+ try {
+ IContainer discoveryContainer = new JMDNSDiscoveryContainer(InetAddress.getLocalHost());
+ discoveryContainer.connect(null, null);
+ Properties props = new Properties();
+ props.put(IDiscoveryService.CONTAINER_ID, discoveryContainer.getID());
+ JMDNSPlugin.getDefault().getContext().registerService(IDiscoveryService.class.getName(), discoveryContainer, props);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new Status(IStatus.WARNING, JMDNSPlugin.PLUGIN_ID, IStatus.WARNING, Messages.ECFStart_WARNING_COULD_NOT_REGISTER_DISCOVERY, e);
+ }
+ }
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java
index 8f1ace805..277fdfe8c 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java
@@ -12,6 +12,7 @@ package org.eclipse.ecf.internal.provider.jmdns;
import org.eclipse.core.runtime.IAdapterManager;
import org.eclipse.ecf.core.util.PlatformHelper;
+import org.eclipse.ecf.discovery.service.IDiscoveryService;
import org.osgi.framework.*;
import org.osgi.util.tracker.ServiceTracker;
@@ -36,6 +37,10 @@ public class JMDNSPlugin implements BundleActivator {
private ServiceTracker adapterManagerTracker = null;
+ private ServiceTracker discoveryTracker;
+
+ private ServiceRegistration serviceRegistration;
+
public IAdapterManager getAdapterManager() {
// First, try to get the adapter manager via
if (adapterManagerTracker == null) {
@@ -63,14 +68,34 @@ public class JMDNSPlugin implements BundleActivator {
return context.getBundle();
}
+ protected BundleContext getContext() {
+ return context;
+ }
+
+ public IDiscoveryService getDiscoveryService() {
+ if (discoveryTracker == null) {
+ discoveryTracker = new ServiceTracker(context, IDiscoveryService.class.getName(), null);
+ discoveryTracker.open();
+ }
+ return (IDiscoveryService) discoveryTracker.getService();
+ }
+
/**
* This method is called when the plug-in is stopped
*/
public void stop(BundleContext ctxt) throws Exception {
+ if (serviceRegistration != null) {
+ serviceRegistration.unregister();
+ serviceRegistration = null;
+ }
if (adapterManagerTracker != null) {
adapterManagerTracker.close();
adapterManagerTracker = null;
}
+ if (discoveryTracker != null) {
+ discoveryTracker.close();
+ discoveryTracker = null;
+ }
this.context = ctxt;
plugin = null;
}
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/Messages.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/Messages.java
index 4d2ba6590..f2f217aef 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/Messages.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/Messages.java
@@ -20,6 +20,7 @@ public class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.ecf.internal.provider.jmdns.messages"; //$NON-NLS-1$
public static String ContainerInstantiator_EXCEPTION_CONTAINER_CREATE;
public static String ContainerInstantiator_EXCEPTION_GETTING_INETADDRESS;
+ public static String ECFStart_WARNING_COULD_NOT_REGISTER_DISCOVERY;
public static String JMDNSDiscoveryContainer_EXCEPTION_ALREADY_CONNECTED;
public static String JMDNSDiscoveryContainer_EXCEPTION_CONTAINER_DISPOSED;
public static String JMDNSDiscoveryContainer_EXCEPTION_CREATE_JMDNS_INSTANCE;
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/messages.properties b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/messages.properties
index e7e61c983..14c40a2a3 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/messages.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/messages.properties
@@ -10,6 +10,7 @@ JMDNSDiscoveryContainer_EXCEPTION_REGISTER_SERVICE=registerService
JMDNSDiscoveryContainer_EXCEPTION_SERVICEINFO_INVALID=ServiceInfo is invalid.
ContainerInstantiator_EXCEPTION_CONTAINER_CREATE=Exception making JMDNS container
ContainerInstantiator_EXCEPTION_GETTING_INETADDRESS=Exception getting InetAddress for JMDNS container
+ECFStart_WARNING_COULD_NOT_REGISTER_DISCOVERY=Could not register JMDNS discovery
JMDNSNamespace_EXCEPTION_TYPE_PARAM_NOT_STRING=First parameter cannot be cast to String
JMDNSNamespace_EXCEPTION_ID_PARAM_2_WRONG_TYPE=Second parameter cannot be cast to String
JMDNSNamespace_EXCEPTION_ID_CREATE_SERVICE_TYPE_CANNOT_BE_EMPTY=service type cannot be empty

Back to the top