From 80ea4c01044d2eac349e88653de57a1a5b90e75b Mon Sep 17 00:00:00 2001 From: James Korman Date: Fri, 30 Mar 2012 11:27:09 -0500 Subject: [PATCH] Issue #232 - Modified invitation methods Former-commit-id: 0b6a076129b0f947658b978391c30edc091c8299 [formerly 436b967ff1c36274ed92236ea84a944cc8212a9c [formerly 1c9381e1ba1a8b01084717db7ff3e94b26eb0b89]] Former-commit-id: 436b967ff1c36274ed92236ea84a944cc8212a9c Former-commit-id: a907eeb4edb366c81d617ca0741ca8ba3eb8002f --- .../ui/CollaborationGroupView.java | 3 +- .../comm/identity/IVenueSession.java | 90 +++++---- .../comm/provider/session/SessionManager.java | 37 +++- .../comm/provider/session/VenueSession.java | 175 ++++-------------- 4 files changed, 118 insertions(+), 187 deletions(-) diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java index 7ebc2afe2c..f7b61093ce 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java @@ -257,8 +257,7 @@ public class CollaborationGroupView extends ViewPart { System.out.println("room: " + info.getVenueName()); System.out.println("subject: " + session.getVenue().getInfo().getVenueSubject()); - session.sendInvitation(info.getVenueName(), ids, session - .getVenue().getInfo().getVenueSubject(), "body"); + session.sendInvitation(ids, "body"); }; }; inviteAction.setImageDescriptor(IconUtil.getImageDescriptor(bundle, diff --git a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/identity/IVenueSession.java b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/identity/IVenueSession.java index 3883a5634c..bd40d108b2 100644 --- a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/identity/IVenueSession.java +++ b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/identity/IVenueSession.java @@ -31,30 +31,34 @@ import com.raytheon.uf.viz.collaboration.comm.identity.listener.IVenueParticipan import com.raytheon.uf.viz.collaboration.comm.identity.user.ParticipantRole; /** - * + * * * * *
- *
+ * 
  * SOFTWARE HISTORY
- *
+ * 
  * Date         Ticket#    Engineer    Description
  * ------------ ---------- ----------- --------------------------
  * Mar 5, 2012            jkorman     Initial creation
- *
+ * 
  * 
- * + * * @author jkorman - * @version 1.0 + * @version 1.0 */ public interface IVenueSession extends ISession, IEventPublisher { @@ -62,16 +66,18 @@ public interface IVenueSession extends ISession, IEventPublisher { /** * Return this session as an ISharedDisplaySession if it is supported. If * the interface is not supported the method must return a null reference. - * @return + * + * @return */ ISharedDisplaySession spawnSharedDisplaySession(); - + /** - * Returns information about a venue. + * Returns information about a venue. + * * @return Information about a venue */ IVenue getVenue(); - + /** * * @param role @@ -79,37 +85,49 @@ public interface IVenueSession extends ISession, IEventPublisher { */ boolean hasRole(ParticipantRole role); + /** + * Set the subject of this collaboration venue conversation. + * + * @param subject + * The subject. + */ + void setSubject(String subject); + + /** + * Get the subject of this collaboration venue conversation. + * + * @return The subject. + */ + String getSubject(); + /** * Send a Collaboration message. - * @param message The message to send. + * + * @param message + * The message to send. */ void sendTextMessage(String message) throws CollaborationException; /** * Send an invitation from this venue to another user. - * @param invitation An invitation + * + * @param id + * The target user for this invitation. + * @param subject + * The intended subject of the venue conversation. * @return */ - int sendInvitation(IInvitation invitation); - + int sendInvitation(String id, String body); + /** - * Send an invitation from this venue to another user. - * @param room The target venue for this invitation. - * @param id The target user for this invitation. - * @param subject The intended subject of the venue conversation. - * @param body Any text that the user may wish to include. + * Send an invitation from this venue to one or more users. + * + * @param ids + * A list of target users for this invitation. + * @param body + * Any text that the user may wish to include. * @return */ - int sendInvitation(String room, String id, String subject, String body); - - /** - * Send an invitation from this venue to another user. - * @param room The target venue for this invitation. - * @param ids A list of target users for this invitation. - * @param subject The intended subject of the venue conversation. - * @param body Any text that the user may wish to include. - * @return - */ - int sendInvitation(String room, List ids, String subject, String body); - + int sendInvitation(List ids, String body); + } diff --git a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/SessionManager.java b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/SessionManager.java index 1c697373c6..3ebaffa5b8 100644 --- a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/SessionManager.java +++ b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/SessionManager.java @@ -60,6 +60,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.event.VenueInvitationEven import com.raytheon.uf.viz.collaboration.comm.provider.info.InfoAdapter; import com.raytheon.uf.viz.collaboration.comm.provider.roster.RosterManager; import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter; +import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId; import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueUserId; @@ -68,9 +69,12 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueUserId; *
    *
  • EventBus subscription events.
  • *
      - *
    • IVenueInvitationEvent : This event is posted when a - * venue participant enters, leaves a venue, or updates their status in the - * venue.
    • + *
    • IVenueInvitationEvent : This event is posted when the + * SessionManager receives a venue invitation requesting that the user join some + * particular collaboration session.
    • + *
    • IConnectionStatusEvent : This event is posted when the + * state of the underlying connection changes, reconnecting, connecting, + * disconnected, for example.
    • *
    • --------------- : ---------------.
    • *
    *
@@ -341,11 +345,23 @@ public class SessionManager implements IEventPublisher { if (session != null) { session.createVenue(venueName, subject); + IChatID me = new VenueUserId("jkorman", + "awipscm.omaha.us.ray.com"); + + session.setSessionLeader(me); + session.setSessionDataProvider(me); + IPresence presence = new Presence(); presence.setMode(IPresence.Mode.AVAILABLE); presence.setType(IPresence.Type.AVAILABLE); - presence.setProperty("DATA_PROVIDER", ""); - presence.setProperty("SESSION_LEADER", ""); + presence.setProperty("DATA_PROVIDER", me.getFQName()); + presence.setProperty("SESSION_LEADER", me.getFQName()); + + presenceAdapter + .getRosterManager() + .getPresenceSender() + .sendPresenceUpdate(null, + Presence.convertPresence(presence)); sessions.put(session.getSessionId(), session); } @@ -441,6 +457,9 @@ public class SessionManager implements IEventPublisher { // Connection listener // *************************** + /** + * + */ private void setupInternalConnectionListeners() { if (container != null) { @@ -491,13 +510,13 @@ public class SessionManager implements IEventPublisher { String subject, String body) { IQualifiedID venueId = null; - if(roomID instanceof XMPPRoomID) { + if (roomID instanceof XMPPRoomID) { XMPPRoomID room = (XMPPRoomID) roomID; venueId = new VenueId(); venueId.setName(room.getLongName()); - + } - if(venueId != null) { + if (venueId != null) { IQualifiedID id = IDConverter.convertFrom(from); IChatID invitor = new VenueUserId(id.getName(), @@ -505,8 +524,6 @@ public class SessionManager implements IEventPublisher { IVenueInvitationEvent invite = new VenueInvitationEvent( venueId, invitor, subject, body); - System.out.println("Posting invitation using eventBus:" - + eventBus.hashCode()); eventBus.post(invite); } } diff --git a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java index 711022a4ab..b44f57a38e 100644 --- a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java +++ b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java @@ -42,7 +42,6 @@ import org.eclipse.ecf.presence.chatroom.IChatRoomParticipantListener; import org.eclipse.ecf.provider.xmpp.identity.XMPPRoomID; import com.google.common.eventbus.EventBus; -// import com.google.common.eventbus.Subscribe; import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException; import com.raytheon.uf.viz.collaboration.comm.identity.IMessage; import com.raytheon.uf.viz.collaboration.comm.identity.IPresence; @@ -54,7 +53,6 @@ import com.raytheon.uf.viz.collaboration.comm.identity.event.IRenderable; import com.raytheon.uf.viz.collaboration.comm.identity.event.IVenueParticipantEvent; import com.raytheon.uf.viz.collaboration.comm.identity.event.ParticipantEventType; import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenue; -import com.raytheon.uf.viz.collaboration.comm.identity.listener.IInvitation; import com.raytheon.uf.viz.collaboration.comm.identity.user.IChatID; import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID; import com.raytheon.uf.viz.collaboration.comm.identity.user.IVenueParticipant; @@ -130,6 +128,8 @@ public class VenueSession extends BaseSession implements IVenueSession, private Map initSubscribers = new HashMap(); + private String subject; + /** * * @param container @@ -149,75 +149,8 @@ public class VenueSession extends BaseSession implements IVenueSession, SessionManager manager) throws CollaborationException { super(container, externalBus, manager); - Runnable r = new Runnable() { - @Override - public void run() { - try { - Thread.sleep(30000); - -// TestJAXBObject j = new TestJAXBObject(); -// j.setItem_1("This is an object"); -// j.setValue(5); -// sendRenderableObject(j); -// -// VenueParticipant id = new VenueParticipant("jkorman", -// "paul", "awipscm.omaha.us.ray.com"); -// id.setResource("cave"); -// IInitData d = new InitData(); -// ((InitData) d).setName("This is a test init data object"); -// -// IDisplayEvent e = new DisplayEvent(); -// ((DisplayEvent) e).setName("This is a test display event"); -// -// sendInitData(id, d); -// sendEvent(id, e); -// -// Thread.sleep(10000); - System.out.println("Sending invitation"); - - sendInvitation( - "tester5@conference.awipscm.omaha.us.ray.com", - "jkorman", "Test Room", "Join the test"); - - } catch (Exception e) { - System.out.println("Error sending RenderableObject"); - } - - } - }; - Thread t = new Thread(r); - t.start(); - registerEventHandler(this); - try { - DataHandler h = new DataHandler(); - subscribeToPeerToPeerData(h); - } catch (CollaborationException ce) { - ce.printStackTrace(); - } } - // @Subscribe - // public void handle(IRenderable renderable) { - // System.out.println("Renderable found"); - // if (renderable instanceof TestJAXBObject) { - // TestJAXBObject j = (TestJAXBObject) renderable; - // if (j.getValue() < 100) { - // System.out.println(String.format("%s %d Renderable", - // j.getItem_1(), j.getValue())); - // j.setValue(j.getValue() + 200); - // j.setItem_1("Now for the return trip"); - // try { - // sendRenderableObject(j); - // } catch (CollaborationException ce) { - // System.out.println("Error sending RenderableObject"); - // } - // } else { - // System.out.println(String.format("%s %d Renderable", - // j.getItem_1(), j.getValue())); - // } - // } - // } - /** * Get the identification of the owner of this session. * @@ -295,40 +228,19 @@ public class VenueSession extends BaseSession implements IVenueSession, } return venue; } + + /** + * @return the subject + */ + public String getSubject() { + return subject; + } /** - * Send an invitation from this venue to another user. - * - * @param invitation - * An invitation - * @return + * @param subject the subject to set */ - @Override - public int sendInvitation(IInvitation invitation) { - int status = Errors.NO_ERROR; - IChatRoomInvitationSender sender = getConnectionPresenceAdapter() - .getChatRoomManager().getInvitationSender(); - if (sender != null) { - ID roomId = getConnectionPresenceAdapter().getChatRoomManager() - .getChatRoomInfo(invitation.getRoomId()).getConnectedID(); - - // ******************* - // ** TODO : The host part of this need to defined - ID userId = IDFactory.getDefault().createID( - getConnectionNamespace(), - invitation.getFrom() + "@awipscm.omaha.us.ray.com"); - // ******************* - - try { - String body = insertSessionId(invitation.getBody()); - - sender.sendInvitation(roomId, userId, invitation.getSubject(), - body); - } catch (ECFException e) { - e.printStackTrace(); - } - } - return status; + public void setSubject(String subject) { + this.subject = subject; } /** @@ -347,8 +259,7 @@ public class VenueSession extends BaseSession implements IVenueSession, * java.lang.String, java.lang.String, java.lang.String) */ @Override - public int sendInvitation(String room, String id, String subject, - String body) { + public int sendInvitation(String id, String body) { // Assume success int status = Errors.NO_ERROR; IChatRoomInvitationSender sender = getConnectionPresenceAdapter() @@ -356,11 +267,11 @@ public class VenueSession extends BaseSession implements IVenueSession, if (sender != null) { body = insertSessionId(body); - ID roomId = getConnectionPresenceAdapter().getChatRoomManager() - .getChatRoomInfo(room).getConnectedID(); - ID userId = IDFactory.getDefault().createID( - getConnectionNamespace(), id + "@awipscm.omaha.us.ray.com"); + ID roomId = venueInfo.getConnectedID(); + ID userId = IDFactory.getDefault().createID( + getConnectionNamespace(), id); + try { sender.sendInvitation(roomId, userId, subject, body); } catch (ECFException e) { @@ -386,20 +297,19 @@ public class VenueSession extends BaseSession implements IVenueSession, * java.lang.String, java.lang.String, java.lang.String) */ @Override - public int sendInvitation(String room, List ids, String subject, - String body) { + public int sendInvitation(List ids, String body) { // Assume success int status = Errors.NO_ERROR; if (ids != null) { for (String id : ids) { - sendInvitation(room, id, subject, body); + sendInvitation(id, body); } } else { status = -1; } return status; } - + /** * * @param body @@ -596,6 +506,20 @@ public class VenueSession extends BaseSession implements IVenueSession, // Internal methods // *************************** + /** + * + */ + void setSessionLeader(IChatID id) { + sessionLeader = id; + } + + /** + * + */ + void setSessionDataProvider(IChatID id) { + sessionDataProvider = id; + } + /** * * @see com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession#joinVenue(java.lang.String) @@ -607,13 +531,13 @@ public class VenueSession extends BaseSession implements IVenueSession, venueManager = getConnectionPresenceAdapter().getChatRoomManager(); if (venueManager != null) { venueInfo = venueManager.getChatRoomInfo(venueName); + subject = venueInfo.getSubject(); if (venueInfo != null) { errorStatus = completeVenueConnection(venueInfo); roles.add(ParticipantRole.PARTICIPANT); } else { // Could not join venue. - } } else { @@ -635,6 +559,7 @@ public class VenueSession extends BaseSession implements IVenueSession, int createVenue(String venueName, String subject) { int errorStatus = -1; try { + this.subject = subject; // Create chat room container from manager venueManager = getConnectionPresenceAdapter().getChatRoomManager(); if (venueManager != null) { @@ -677,42 +602,14 @@ public class VenueSession extends BaseSession implements IVenueSession, IChatRoomParticipantListener pListener = new IChatRoomParticipantListener() { @Override public void handleArrived(IUser participant) { - // IVenueParticipant p = new VenueParticipant( - // participant.getName(), - // participant.getNickname()); - // - // System.out.println("Arrived"); - // IVenueParticipantEvent event = new - // VenueParticipantEvent( - // p, ParticipantEventType.ARRIVED); - // - // getEventPublisher().post(event); } @Override public void handleUpdated(IUser participant) { - // IVenueParticipant p = new VenueParticipant( - // participant.getName(), - // participant.getNickname()); - // - // System.out.println("Updated"); - // IVenueParticipantEvent event = new - // VenueParticipantEvent( - // p, ParticipantEventType.UPDATED); - // getEventPublisher().post(event); } @Override public void handleDeparted(IUser participant) { - // IVenueParticipant p = new VenueParticipant( - // participant.getName(), - // participant.getNickname()); - // - // System.out.println("Departed"); - // IVenueParticipantEvent event = new - // VenueParticipantEvent( - // p, ParticipantEventType.DEPARTED); - // getEventPublisher().post(event); } @Override