Re: XMPP with Remote Object Persistence

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Mon Jul 24 2006 - 16:23:48 EDT

  • Next message: Andrus Adamchik: "Re: rop-browser design"

    On Jul 23, 2006, at 10:28 PM, Marcel wrote:
    > I'm trying to get XMPP running. Lack of documentation is a bit of a
    > pain - I'll jot a few notes down on the wiki once I get things
    > running.

    I haven't used shared sessions in a while. If you find a solution
    yourself, please share. Otherwise, I'll play with it in a few days.
    Actually other types of "EventBridges" should also work (such as peer-
    to-peer JavaGroupsBridge), but without trying it myself, I can't
    provide you the right configuration.

    > The connection to the XMPP server is no problem - I can see the
    > user sessions on the server. However, messages aren't being passed
    > between separate instances of the client. On the server, a separate
    > chat room is being created for each client which connects.

    This may or may not be wrong - don't recall the Jive server details.

    > The room is named not for the shared session name provided to the
    > Hessian Connection but instead for the session handle generated by
    > the XMPP bridge code.

    IIRC this actually is ok.

    > Also, the documentation for the CayenneContext constructor which
    > enables graph events suggests that the subjects are in
    > ObjectContext when actually they are in DataChannel.

    True - this has changed a few times during 1.2 cycle. Need to update
    the docs.

    > public ObjectContext getObjectContext(String address) {
    > DataChannel channel;
    > if (connections.containsKey(address)) {
    > channel = connections.get(address);
    > }
    > else {
    > HessianConnection connection = new HessianConnection
    > (address, null, null, "conference");
    > channel = new ClientChannel(connection);
    > connections.put(address, channel);
    > }
    > ObjectContext context = new CayenneContext(channel,
    > true, false);
    > channel.getEventManager().addListener(this, "handleXMPP",
    > Object.class, DataChannel.GRAPH_CHANGED_SUBJECT);
    > channel.getEventManager().addListener(this, "handleXMPP",
    > Object.class, DataChannel.GRAPH_FLUSHED_SUBJECT);
    > return context;
    > }
    > public void handleXMPP(Object o) {
    > System.out.println("XMPP : " + o);
    > }

    Looks ok, except you may want to be more precise with the event
    parameter class - use GraphEvent.class (same for 'handleXMPP' method
    parameter).

    Andrus



    This archive was generated by hypermail 2.0.0 : Mon Jul 24 2006 - 16:24:11 EDT