Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2006-06-25 03:08:11 +0000
committerslewis2006-06-25 03:08:11 +0000
commit96109fd87f1d98876a8364813377cea3e5b38d35 (patch)
tree806f3b85fbd5b2d3d65aa885daa288882ac40f49 /framework
parent6a89c943e86ceaace9ec50d5dcc235a29fcca91a (diff)
downloadorg.eclipse.ecf-96109fd87f1d98876a8364813377cea3e5b38d35.tar.gz
org.eclipse.ecf-96109fd87f1d98876a8364813377cea3e5b38d35.tar.xz
org.eclipse.ecf-96109fd87f1d98876a8364813377cea3e5b38d35.zip
Added adapter method to IChatRoomManager interface. Added to existing implementations so that all compile and behave properly. Also added to AbstractContainer to support the use of passwords for IConnectContext
Diffstat (limited to 'framework')
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/chat/IChatRoomManager.java11
-rw-r--r--framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java31
2 files changed, 36 insertions, 6 deletions
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/chat/IChatRoomManager.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/chat/IChatRoomManager.java
index 473611735..46ce6bdf9 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/chat/IChatRoomManager.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/chat/IChatRoomManager.java
@@ -10,7 +10,9 @@
*****************************************************************************/
package org.eclipse.ecf.presence.chat;
-public interface IChatRoomManager {
+import org.eclipse.core.runtime.IAdaptable;
+
+public interface IChatRoomManager extends IAdaptable {
/**
* Get parent IChatRoomManager. If this manager is the root, then this method
@@ -31,8 +33,11 @@ public interface IChatRoomManager {
/**
* Get detailed room info for given room name
- * @param roomname the name of the room to get detailed info for
- * @return IRoomInfo an instance that provides the given info
+ * @param roomname the name of the room to get detailed info for. If null, the room info is assumed
+ * to be a room associated with the chat room manager instance itself. For example, for IRC, the
+ * chat room manager is also a chat room where message can be sent/received
+ * @return IRoomInfo an instance that provides the given info. Null if no chat room info associated
+ * with given name or null
*/
public IRoomInfo getChatRoomInfo(String roomname);
/**
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java
index 82b3c7e03..238152d8c 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java
@@ -8,16 +8,21 @@
******************************************************************************/
package org.eclipse.ecf.core;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
-import java.util.Vector;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
import org.eclipse.core.runtime.Platform;
import org.eclipse.ecf.core.events.IContainerEvent;
+import org.eclipse.ecf.core.security.IConnectContext;
+import org.eclipse.ecf.core.security.ObjectCallback;
public abstract class AbstractContainer implements IContainer {
- private Vector containerListeners = new Vector();
+ protected List containerListeners = new ArrayList();
public void addListener(IContainerListener l, String filter) {
containerListeners.add(l);
@@ -34,7 +39,7 @@ public abstract class AbstractContainer implements IContainer {
*
* @param event
*/
- public void fireContainerEvent(IContainerEvent event) {
+ protected void fireContainerEvent(IContainerEvent event) {
for (Iterator i = containerListeners.iterator(); i.hasNext();) {
IContainerListener l = (IContainerListener) i.next();
l.handleEvent(event);
@@ -45,4 +50,24 @@ public abstract class AbstractContainer implements IContainer {
return Platform.getAdapterManager().getAdapter(this, serviceType);
}
+ protected String getPasswordFromConnectContext(IConnectContext connectContext) throws ContainerConnectException {
+ String pw = null;
+ try {
+ Callback[] callbacks = new Callback[1];
+ callbacks[0] = new ObjectCallback();
+ if (connectContext != null) {
+ CallbackHandler handler = connectContext.getCallbackHandler();
+ if (handler != null) {
+ handler.handle(callbacks);
+ }
+ }
+ ObjectCallback cb = (ObjectCallback) callbacks[0];
+ pw = (String) cb.getObject();
+ } catch (Exception e) {
+ throw new ContainerConnectException("Exception in CallbackHandler.handle(<callbacks>)",e);
+ }
+ return pw;
+ }
+
+
}

Back to the top