Issue #2785 - Throw error when CollaborationConnection needs connection and it doesn't exist

Change-Id: I2f2234da42e9210b574f7489fc37da0a63bf2133

Former-commit-id: a1f94a19ba7f0bff7bbf76fa24ff6ace9019d0f1
This commit is contained in:
Mike Duff 2014-04-09 10:17:22 -05:00
parent abee6815ad
commit 23474c5ead

View file

@ -118,6 +118,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
* Mar 07, 2014 2848 bclement removed join*Venue methods, now only creates venue objects * Mar 07, 2014 2848 bclement removed join*Venue methods, now only creates venue objects
* changed session map to a concurrent hash map * changed session map to a concurrent hash map
* Apr 07, 2014 2785 mpduff Changed the order of startup, sets up listeners before actually connecting. * Apr 07, 2014 2785 mpduff Changed the order of startup, sets up listeners before actually connecting.
* Apr 09, 2014 2785 mpduff Throw error when not connected and the connection should exist.
* *
* </pre> * </pre>
* *
@ -207,10 +208,7 @@ public class CollaborationConnection implements IEventPublisher {
this.user = new UserId(connectionData.getUserName(), this.user = new UserId(connectionData.getUserName(),
connection.getServiceName()); connection.getServiceName());
setupConnectionListener();
setupInternalConnectionListeners(); setupInternalConnectionListeners();
setupInternalVenueInvitationListener();
setupP2PComm();
getPeerToPeerSession(); getPeerToPeerSession();
instanceMap.put(connectionData, this); instanceMap.put(connectionData, this);
@ -525,13 +523,18 @@ public class CollaborationConnection implements IEventPublisher {
return sessions.get(sessionId); return sessions.get(sessionId);
} }
private void setupP2PComm() { private void setupP2PComm() throws CollaborationException {
PeerToPeerCommHelper helper = new PeerToPeerCommHelper(this); if (isConnected()) {
connection.addPacketListener(helper, PeerToPeerCommHelper helper = new PeerToPeerCommHelper(this);
new PacketTypeFilter(Message.class)); connection.addPacketListener(helper, new PacketTypeFilter(
Message.class));
} else {
throw new CollaborationException(
"The Collaboration XMPP connection has not been established.");
}
} }
private void setupConnectionListener() { private void setupConnectionListener() throws CollaborationException {
if (isConnected()) { if (isConnected()) {
connection.addConnectionListener(new ConnectionListener() { connection.addConnectionListener(new ConnectionListener() {
@ -591,6 +594,9 @@ public class CollaborationConnection implements IEventPublisher {
eventBus.post(event); eventBus.post(event);
} }
}); });
} else {
throw new CollaborationException(
"The Collaboration XMPP connection has not been established.");
} }
} }
@ -599,9 +605,12 @@ public class CollaborationConnection implements IEventPublisher {
// *************************** // ***************************
/** /**
* Set up the invitation listener.
* *
* @throws CollaborationException
*/ */
private void setupInternalVenueInvitationListener() { private void setupInternalVenueInvitationListener()
throws CollaborationException {
if (isConnected()) { if (isConnected()) {
MultiUserChat.addInvitationListener(connection, MultiUserChat.addInvitationListener(connection,
new InvitationListener() { new InvitationListener() {
@ -633,6 +642,9 @@ public class CollaborationConnection implements IEventPublisher {
message); message);
} }
}); });
} else {
throw new CollaborationException(
"The Collaboration XMPP connection has not been established.");
} }
} }
@ -777,5 +789,10 @@ public class CollaborationConnection implements IEventPublisher {
connectionData.getPassword()); connectionData.getPassword());
authManager = new ClientAuthManager(getXmppConnection()); authManager = new ClientAuthManager(getXmppConnection());
// Finish setup
setupInternalVenueInvitationListener();
setupP2PComm();
setupConnectionListener();
} }
} }