Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsuen2007-11-13 03:16:20 +0000
committerrsuen2007-11-13 03:16:20 +0000
commitb6dbfb0a38450ff6f6a3a7a5356315c2cb3a5c82 (patch)
tree68554f26cd8f731e45da41853b9ab741ff056d33 /providers/bundles/org.eclipse.ecf.provider.xmpp
parent073a2976e209cfff1e318f76dfe37a16e8d0ea9f (diff)
downloadorg.eclipse.ecf-b6dbfb0a38450ff6f6a3a7a5356315c2cb3a5c82.tar.gz
org.eclipse.ecf-b6dbfb0a38450ff6f6a3a7a5356315c2cb3a5c82.tar.xz
org.eclipse.ecf-b6dbfb0a38450ff6f6a3a7a5356315c2cb3a5c82.zip
Resolve bug 207706 - [xmpp] XMPPContainers are not registered as IPresenceServices
Diffstat (limited to 'providers/bundles/org.eclipse.ecf.provider.xmpp')
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XmppPlugin.java23
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPContainer.java2
2 files changed, 25 insertions, 0 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XmppPlugin.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XmppPlugin.java
index 604eab5eb..2b3d34d3a 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XmppPlugin.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XmppPlugin.java
@@ -8,11 +8,16 @@
******************************************************************************/
package org.eclipse.ecf.internal.provider.xmpp;
+import java.util.HashMap;
+import java.util.Map;
+
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.ecf.core.util.LogHelper;
+import org.eclipse.ecf.presence.service.IPresenceService;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
import org.osgi.service.log.LogService;
import org.osgi.util.tracker.ServiceTracker;
@@ -31,6 +36,8 @@ public class XmppPlugin implements BundleActivator {
private ServiceTracker logServiceTracker = null;
+ private Map services;
+
public static void log(String message) {
getDefault().log(new Status(IStatus.OK, PLUGIN_ID, IStatus.OK, message, null));
}
@@ -69,6 +76,7 @@ public class XmppPlugin implements BundleActivator {
*/
public void start(BundleContext context) throws Exception {
this.context = context;
+ services = new HashMap();
}
/**
@@ -85,6 +93,21 @@ public class XmppPlugin implements BundleActivator {
plugin = null;
}
+ public void registerService(IPresenceService service) {
+ if (context != null) {
+ services.put(service, context.registerService(IPresenceService.class
+ .getName(), service, null));
+ }
+ }
+
+ public void unregisterService(IPresenceService service) {
+ ServiceRegistration registration = (ServiceRegistration) services
+ .remove(service);
+ if (registration != null) {
+ registration.unregister();
+ }
+ }
+
/**
* Returns the shared instance.
* @return default instance of xmpp plugin.
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPContainer.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPContainer.java
index b890bd847..6b66b8c66 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPContainer.java
@@ -164,6 +164,7 @@ public class XMPPContainer extends ClientSOContainer implements IPresenceService
try {
getSharedObjectManager().addSharedObject(presenceHelperID, presenceHelper, null);
super.connect(remote, joinContext);
+ XmppPlugin.getDefault().registerService(this);
} catch (final ContainerConnectException e) {
disconnect();
throw e;
@@ -184,6 +185,7 @@ public class XMPPContainer extends ClientSOContainer implements IPresenceService
synchronized (getConnectLock()) {
// If we are currently connected
if (isConnected()) {
+ XmppPlugin.getDefault().unregisterService(this);
final ISynchAsynchConnection conn = getConnection();
synchronized (conn) {
synchronized (getGroupMembershipLock()) {

Back to the top