Issue #427 fix peer to peer

Change-Id: Iae7f0d4c5f3f28360a957768fa755809fe47c171

Former-commit-id: 565d9e18c4 [formerly 38dcb603b2] [formerly 8da43825d0] [formerly 62c5527e17 [formerly 8da43825d0 [formerly b8ca7f7c0d329c1d7bb527317fc89794ea4dbac0]]]
Former-commit-id: 62c5527e17
Former-commit-id: 4f4c3f804ffc342d500ba13600f4badb63c6d9ce [formerly 7fdc45a275]
Former-commit-id: 26f41aa6ad
This commit is contained in:
Nate Jensen 2012-04-19 15:27:52 -05:00
parent 0e64b04ff3
commit 4756c0274b
8 changed files with 47 additions and 28 deletions

View file

@ -37,6 +37,7 @@ import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchListener; import org.eclipse.ui.IWorkbenchListener;
import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException; import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI; import org.eclipse.ui.PlatformUI;
@ -622,15 +623,17 @@ public class CollaborationDataManager implements IRosterEventSubscriber {
@Override @Override
public void run() { public void run() {
String id = message.getFrom().getFQName(); IQualifiedID peer = message.getFrom();
for (IViewReference ref : PlatformUI.getWorkbench() for (IViewReference ref : PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage() .getActiveWorkbenchWindow().getActivePage()
.getViewReferences()) { .getViewReferences()) {
if (id.equals(ref.getSecondaryId())) { IWorkbenchPart part = ref.getPart(false);
PeerToPeerView p2pView = (PeerToPeerView) ref if (part != null && part instanceof PeerToPeerView) {
.getView(false); PeerToPeerView p2pView = (PeerToPeerView) part;
p2pView.appendMessage(message); if (p2pView.getPeer().equals(peer)) {
return; p2pView.appendMessage(message);
return;
}
} }
} }
try { try {
@ -638,14 +641,13 @@ public class CollaborationDataManager implements IRosterEventSubscriber {
.getWorkbench() .getWorkbench()
.getActiveWorkbenchWindow() .getActiveWorkbenchWindow()
.getActivePage() .getActivePage()
.showView(PeerToPeerView.ID, id, .showView(PeerToPeerView.ID, peer.getFQName(),
IWorkbenchPage.VIEW_ACTIVATE); IWorkbenchPage.VIEW_ACTIVATE);
p2pView.setPeer(peer);
p2pView.appendMessage(message); p2pView.appendMessage(message);
} catch (PartInitException e) { } catch (PartInitException e) {
// TODO Auto-generated catch block. Please revise as
// appropriate.
statusHandler.handle(Priority.PROBLEM, statusHandler.handle(Priority.PROBLEM,
e.getLocalizedMessage(), e); "Error opening peer to peer view", e);
} }
} }
}); });

View file

@ -82,8 +82,10 @@ import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenueInfo;
import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterEntry; import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterEntry;
import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterGroup; import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterGroup;
import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterManager; import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterManager;
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
import com.raytheon.uf.viz.collaboration.comm.provider.Tools; import com.raytheon.uf.viz.collaboration.comm.provider.Tools;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection; import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager; import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager;
import com.raytheon.uf.viz.collaboration.data.CollaborationGroup; import com.raytheon.uf.viz.collaboration.data.CollaborationGroup;
import com.raytheon.uf.viz.collaboration.data.CollaborationNode; import com.raytheon.uf.viz.collaboration.data.CollaborationNode;
@ -274,7 +276,7 @@ public class CollaborationGroupView extends ViewPart implements IPartListener {
peerToPeerChatAction = new Action("Chat") { peerToPeerChatAction = new Action("Chat") {
@Override @Override
public void run() { public void run() {
createP2PChat(getId()); createP2PChat(IDConverter.convertFrom(getId()));
} }
}; };
peerToPeerChatAction.setImageDescriptor(IconUtil.getImageDescriptor( peerToPeerChatAction.setImageDescriptor(IconUtil.getImageDescriptor(
@ -722,15 +724,15 @@ public class CollaborationGroupView extends ViewPart implements IPartListener {
* *
* @param user * @param user
*/ */
private void createP2PChat(String user) { private void createP2PChat(IQualifiedID peer) {
System.err.println("createPrivateChat with " + user);
try { try {
PlatformUI PeerToPeerView p2pView = (PeerToPeerView) PlatformUI
.getWorkbench() .getWorkbench()
.getActiveWorkbenchWindow() .getActiveWorkbenchWindow()
.getActivePage() .getActivePage()
.showView(PeerToPeerView.ID, user, .showView(PeerToPeerView.ID, peer.getFQName(),
IWorkbenchPage.VIEW_ACTIVATE); IWorkbenchPage.VIEW_ACTIVATE);
p2pView.setPeer(peer);
} catch (PartInitException e) { } catch (PartInitException e) {
statusHandler.handle(Priority.PROBLEM, "Unable to open chat", e); statusHandler.handle(Priority.PROBLEM, "Unable to open chat", e);
} }
@ -1153,7 +1155,7 @@ public class CollaborationGroupView extends ViewPart implements IPartListener {
String loginUserId = CollaborationDataManager String loginUserId = CollaborationDataManager
.getInstance().getLoginId(); .getInstance().getLoginId();
if (loginUserId.equals(node.getId()) == false) { if (loginUserId.equals(node.getId()) == false) {
createP2PChat(node.getId()); createP2PChat(IDConverter.convertFrom(node.getId()));
} }
} }
} }

View file

@ -30,6 +30,7 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException; import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
import com.raytheon.uf.viz.collaboration.comm.identity.IPeerToPeer; import com.raytheon.uf.viz.collaboration.comm.identity.IPeerToPeer;
import com.raytheon.uf.viz.collaboration.comm.identity.listener.IMessageListener; import com.raytheon.uf.viz.collaboration.comm.identity.listener.IMessageListener;
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager; import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager;
/** /**
@ -58,6 +59,8 @@ public class PeerToPeerView extends AbstractSessionView {
protected IMessageListener messageListener; protected IMessageListener messageListener;
private IQualifiedID peer;
public PeerToPeerView() { public PeerToPeerView() {
super(); super();
} }
@ -157,7 +160,6 @@ public class PeerToPeerView extends AbstractSessionView {
* () * ()
*/ */
public void sendMessage() { public void sendMessage() {
String toUser = getViewSite().getSecondaryId();
String message = getComposedMessage(); String message = getComposedMessage();
if (message.length() > 0) { if (message.length() > 0) {
try { try {
@ -165,7 +167,7 @@ public class PeerToPeerView extends AbstractSessionView {
.getInstance(); .getInstance();
IPeerToPeer p2p = (IPeerToPeer) manager.getSessionManager() IPeerToPeer p2p = (IPeerToPeer) manager.getSessionManager()
.getPeerToPeerSession(); .getPeerToPeerSession();
p2p.sendPeerToPeer(toUser, message); p2p.sendPeerToPeer(peer, message);
appendMessage(manager.getLoginId(), null, appendMessage(manager.getLoginId(), null,
System.currentTimeMillis(), message); System.currentTimeMillis(), message);
} catch (CollaborationException e) { } catch (CollaborationException e) {
@ -191,4 +193,12 @@ public class PeerToPeerView extends AbstractSessionView {
protected String getSessionName() { protected String getSessionName() {
return getViewSite().getSecondaryId(); return getViewSite().getSecondaryId();
} }
public void setPeer(IQualifiedID peer) {
this.peer = peer;
}
public IQualifiedID getPeer() {
return peer;
}
} }

View file

@ -142,6 +142,8 @@ public class SessionView extends AbstractSessionView {
CollaborationConnection sessionManager = CollaborationDataManager CollaborationConnection sessionManager = CollaborationDataManager
.getInstance().getSessionManager(); .getInstance().getSessionManager();
ISession session = sessionManager.getPeerToPeerSession(); ISession session = sessionManager.getPeerToPeerSession();
// TODO this doesn't seem right to use the session's
// sessionId
PlatformUI PlatformUI
.getWorkbench() .getWorkbench()
.getActiveWorkbenchWindow() .getActiveWorkbenchWindow()

View file

@ -20,6 +20,7 @@
package com.raytheon.uf.viz.collaboration.comm.identity; package com.raytheon.uf.viz.collaboration.comm.identity;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IEventPublisher; import com.raytheon.uf.viz.collaboration.comm.identity.event.IEventPublisher;
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
/** /**
* TODO Add Description * TODO Add Description
@ -56,7 +57,7 @@ public interface IPeerToPeer extends ISession, IEventPublisher {
* @param message * @param message
* The message to send. * The message to send.
*/ */
void sendPeerToPeer(String to, String message) void sendPeerToPeer(IQualifiedID to, String message)
throws CollaborationException; throws CollaborationException;
} }

View file

@ -34,6 +34,8 @@ 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.IMessage;
import com.raytheon.uf.viz.collaboration.comm.identity.IPeerToPeer; import com.raytheon.uf.viz.collaboration.comm.identity.IPeerToPeer;
import com.raytheon.uf.viz.collaboration.comm.identity.IPropertied.Property; import com.raytheon.uf.viz.collaboration.comm.identity.IPropertied.Property;
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
import com.raytheon.uf.viz.collaboration.comm.provider.TextMessage;
/** /**
* *
@ -111,15 +113,10 @@ public class PeerToPeerChat extends BaseSession implements IPeerToPeer {
* @throws CollaborationException * @throws CollaborationException
*/ */
@Override @Override
public void sendPeerToPeer(String to, String message) public void sendPeerToPeer(IQualifiedID to, String message)
throws CollaborationException { throws CollaborationException {
ID toID = createID(to); TextMessage msg = new TextMessage(to, message);
try { this.sendPeerToPeer(msg);
chatSender.sendChatMessage(toID, message);
} catch (ECFException e) {
throw new CollaborationException("Error sending message to peer "
+ to, e);
}
} }
/** /**

View file

@ -36,7 +36,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.event.ChatMessageEvent;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
/** /**
* TODO Add Description * Listens for peer to peer messages and routes them appropriately.
* *
* <pre> * <pre>
* *

View file

@ -65,4 +65,9 @@ public class IDConverter {
return rosterId; return rosterId;
} }
public static UserId convertFrom(String fqName) {
return new UserId(Tools.parseName(fqName), Tools.parseHost(fqName),
Tools.parseResource(fqName));
}
} }