diff options
author | slewis | 2006-06-25 03:08:11 +0000 |
---|---|---|
committer | slewis | 2006-06-25 03:08:11 +0000 |
commit | 96109fd87f1d98876a8364813377cea3e5b38d35 (patch) | |
tree | 806f3b85fbd5b2d3d65aa885daa288882ac40f49 /framework | |
parent | 6a89c943e86ceaace9ec50d5dcc235a29fcca91a (diff) | |
download | org.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')
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; + } + + } |