[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] Chatroom ID

You say it changes the meaning of container.getAdapter. Please tell me
(or us) what the meaning of getAdapter is. I have got the feeling it
works like a factory. You specifiy "xmpp.smack" once and based on that
you create IDs, other containers and other stuff based on the "root"
container. You don't have to specify "xmpp.smack" everytime you create
something. That's what I thought it was about. But there might be
something more to it?

Tim


> I'm mulling over Tim's thoughts...and have some affinity for #2 as 
> well...although it sort of changes the meaning of container.getAdapter 
> somewhat...which may be OK.
> 
> It also may be possible to use an idiom like:
> 
> ID newID = 
> IDFactory.getDefault().createID(c.getConnectNamespace(),"xmpp_room:slewis@xxxxxxxxxxxxxxxxxxxxxxxxxx/room");
> 
> I should have probably had this supported in XMPP room ID creation 
> anyway.  The XMPP conference room identification (e.g. 
> conference.ecf.eclipse.org/room) is sort of clumsy IMHO...which sort of 
> exacerbates this design problem.
> 
> OTOH, I do like #2 from Tim below for compactness.
> 
> Any thoughts/discussion?
> 
> Scott
> 
> 
> Tim Terlegård wrote:
> >Creating a generic chatroom ID is hard, too hard IMHO. We talked about
> >util methods, but should it really be so hard in the core API?
> >
> >I couldn't come up with a perfect solution. I've come up with 3 possible
> >solutions. If you want to create a chatroom ID right now you do something
> >like this:
> >
> >ID chatRoomID =
> >    IDFactory.getDefault().createID(chatroom.getConnectNamespace(),
> >    new Object[] {"user", "host", "domain", "room", "nickname"});
> >
> >It took quite a while before I realized how to create that ID correctly.
> >Possible solution I come up with:
> >
> >1)
> >
> >class XMPPChatManager implements IChatManager {
> >   public void join(String room, String nick) {
> >      IChatRoomContainer chat = createChatRoomContainer();
> >      ID id = new XMPPRoomID(chat.getConnectedNamespace(),
> >                             xmppConnection, "room", "nick");
> >      chat.connect(id, null);
> >      return chat;
> >   }
> >}
> >
> >It makes it easier to join a chatroom and it hides the ID creation, but
> >it's still hard to create a generic chatroom ID using the core API.
> >
> >2)
> >
> >IChatRoomContainer chat = chatManager.createChatRoomContainer();
> >IChatRoomIDFactory f = chat.getAdapter(IChatRoomIDFactory.class);
> >f.createID("room", "nick");
> >
> >3)
> >
> >class XMPPRoomNamespace extends ChatRoomNamespace {
> >   public ID createInstance(String room, String nick) {
> >      return createInstance(...);
> >   }
> >}
> >
> >ChatRoomNamespace chat = (ChatRoomNamespace) 
> >container.getConnectedNamespace();
> >IChatRoomID chatRoomID = chat.createInstance("room", "nick");
> >
> >But the chatRoomID still miss information about username and domain.
> >
> >I like solution 2, but I suspect it's not the Eclipse way?
> >
> >Tim
> >_______________________________________________
> >ecf-dev mailing list
> >ecf-dev@xxxxxxxxxxx
> >https://dev.eclipse.org/mailman/listinfo/ecf-dev
> >  
> 
> 
> _______________________________________________
> ecf-dev mailing list
> ecf-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/ecf-dev