Skip to content
Snippets Groups Projects
Commit 1ee6096b authored by Oliver Rieger's avatar Oliver Rieger
Browse files

packet extension for request.

parent f2e26567
No related branches found
No related tags found
No related merge requests found
Showing with 170 additions and 21 deletions
package de.fu_berlin.inf.dpp.test.net;
/**
* this class contains test case for transfering jupiter requests as
* jabber packet extensions.
*/
import org.eclipse.core.runtime.Path;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.MessageTypeFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.provider.ProviderManager;
import de.fu_berlin.inf.dpp.concurrent.jupiter.Request;
import de.fu_berlin.inf.dpp.concurrent.jupiter.internal.JupiterVectorTime;
import de.fu_berlin.inf.dpp.concurrent.jupiter.internal.RequestImpl;
import de.fu_berlin.inf.dpp.concurrent.jupiter.internal.text.InsertOperation;
import de.fu_berlin.inf.dpp.net.JID;
import de.fu_berlin.inf.dpp.net.internal.RequestExtensionProvider;
import de.fu_berlin.inf.dpp.net.internal.RequestPacketExtension;
import junit.framework.TestCase;
public class RequestTransmitterTest extends TestCase implements PacketListener, MessageListener {
static {
XMPPConnection.DEBUG_ENABLED = true;
ProviderManager providermanager = ProviderManager.getInstance();
providermanager.addExtensionProvider(RequestPacketExtension.ELEMENT, RequestPacketExtension.NAMESPACE,
new RequestExtensionProvider());
}
private XMPPConnection connection1;
private XMPPConnection connection2;
public RequestTransmitterTest(String name) {
super(name);
}
protected void setUp() throws Exception {
super.setUp();
connection1 = new XMPPConnection("jabber.cc");
connection1.connect();
connection1.login("ori78", "123456");
connection2 = new XMPPConnection("jabber.cc");
connection2.connect();
connection2.login("ori79", "123456");
connection2.addPacketListener(this, new MessageTypeFilter(
Message.Type.chat));
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testSendRequest() throws XMPPException{
ChatManager chatmanager = connection1.getChatManager();
Chat newChat = chatmanager.createChat(connection2.getUser(),this);
try {
Message message = new Message();
Request req = new RequestImpl(1,new JupiterVectorTime(1,3),new InsertOperation(34,"insert text"));
req.setEditorPath(new Path("hello"));
req.setJID(new JID("ori78@jabber.cc"));
message.addExtension(new RequestPacketExtension(req));
newChat.sendMessage(message);
}
catch (XMPPException e) {
System.out.println("Error Delivering block");
}
System.out.println("Finished");
}
public void processPacket(Packet packet) {
Message message = (Message) packet;
RequestPacketExtension packetExtension = (RequestPacketExtension)message.getExtension(RequestPacketExtension.ELEMENT,RequestPacketExtension.NAMESPACE);
if(packetExtension != null){
System.out.println("Received request : "+packetExtension.getRequest().toString());
}else{
System.out.println("Failure in request packet extension.");
}
}
public void processMessage(Chat chat, Message message) {
RequestPacketExtension packetExtension = (RequestPacketExtension)message.getExtension(RequestPacketExtension.ELEMENT,
RequestPacketExtension.NAMESPACE);
if(packetExtension != null){
System.out.println("Received request : "+packetExtension.getRequest().toString());
}else{
System.out.println("Failure in request packet extension.");
}
}
}
package de.fu_berlin.inf.dpp.net;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.packet.Packet;
/**
* The IReceiver contains methods to process incoming packets.
......@@ -10,5 +11,9 @@ import org.jivesoftware.smack.PacketListener;
*/
public interface IReceiver extends PacketListener {
/**
* process jupiter request.
* @param packet
*/
public void processRequest(Packet packet);
}
......@@ -372,6 +372,15 @@ public class MultiUserChatManager implements InvitationListener,
if (packet instanceof Message) {
Message message = (Message) packet;
RequestPacketExtension packetExtension = (RequestPacketExtension)message.getExtension(RequestPacketExtension.ELEMENT,
RequestPacketExtension.NAMESPACE);
if(packetExtension != null){
log.error("Request packet in MUC room not allowed. "+packetExtension.getRequest());
return;
}
PacketProtokollLogger.getInstance().receivePacket(message);
/**
* 1. check getFrom JID. Host can send muc message and shouldn't
......@@ -403,16 +412,16 @@ public class MultiUserChatManager implements InvitationListener,
}
if (packet instanceof Message) {
Message msg = (Message) packet;
// System.out.println("from " + msg.getFrom().replace(Room + "/",
// "")
// + " text: " + msg.getBody());
log.info("received message : +" + msg.getBody() + " from "
+ msg.getProperty("jid"));
} else {
System.out.println("other formated message received. ");
}
// if (packet instanceof Message) {
// Message msg = (Message) packet;
// // System.out.println("from " + msg.getFrom().replace(Room + "/",
// // "")
// // + " text: " + msg.getBody());
// log.info("received message : +" + msg.getBody() + " from "
// + msg.getProperty("jid"));
// } else {
// System.out.println("other formated message received. ");
// }
}
public void invitationReceived(XMPPConnection conn, String room,
......
......@@ -79,6 +79,8 @@ public class PacketExtensions {
ProviderManager providermanager = ProviderManager.getInstance();
providermanager.addExtensionProvider(ActivitiesPacketExtension.ELEMENT, NAMESPACE,
new ActivitiesProvider());
providermanager.addExtensionProvider(RequestPacketExtension.ELEMENT, RequestPacketExtension.NAMESPACE,
new RequestExtensionProvider());
//TODO: Änderung für Smack 3
// ProviderManager.addExtensionProvider(ActivitiesPacketExtension.ELEMENT, NAMESPACE,
......@@ -220,6 +222,11 @@ public class PacketExtensions {
NAMESPACE);
}
public static RequestPacketExtension getJupiterRequestExtension(Message message) {
return (RequestPacketExtension) message.getExtension(RequestPacketExtension.ELEMENT,
NAMESPACE);
}
private static DefaultPacketExtension createExtension(String element) {
DefaultPacketExtension extension = new DefaultPacketExtension(element, NAMESPACE);
extension.setValue(element, "");
......
......@@ -41,7 +41,15 @@ public class PrivateChatManager implements IChatManager{
*/
public void processPacket(Packet packet) {
log.debug("incoming packet");
Message message = (Message) packet;
RequestPacketExtension packetExtension = PacketExtensions.getJupiterRequestExtension(message);
if(packetExtension != null){
receiver.processRequest(packet);
}else{
receiver.processPacket(packet);
}
}
......
......@@ -79,6 +79,7 @@ public class RequestPacketExtension implements PacketExtension{
StringBuffer buf = new StringBuffer();
buf.append("<").append(getElementName());
buf.append(" xmlns=\"").append(getNamespace()+"\"");
// buf.append(" xmlns=\"").append(getNamespace()).append("\">");
......
......@@ -380,14 +380,7 @@ public class XMPPChatTransmitter implements ITransmitter,
}
/*
* (non-Javadoc)
* @see de.fu_berlin.inf.dpp.net.ITransmitter#sendActivitiyTo(de.fu_berlin.inf.dpp.project.ISharedProject, java.util.List, de.fu_berlin.inf.dpp.net.JID)
*/
public void sendJupiterRequest(ISharedProject sharedProject,
Request request, JID jid) {
sendMessage(request.getJID(), new RequestPacketExtension(request));
}
private void sendFileListWithJingle(JID recipient, String fileListContent) {
JingleFileTransferProcessMonitor monitor = new JingleFileTransferProcessMonitor();
......@@ -1020,6 +1013,28 @@ public class XMPPChatTransmitter implements ITransmitter,
}
/*
* (non-Javadoc)
* @see de.fu_berlin.inf.dpp.net.ITransmitter#sendActivitiyTo(de.fu_berlin.inf.dpp.project.ISharedProject, java.util.List, de.fu_berlin.inf.dpp.net.JID)
*/
public void sendJupiterRequest(ISharedProject sharedProject,
Request request, JID jid) {
sendMessage(request.getJID(), new RequestPacketExtension(request));
}
public void processRequest(Packet packet) {
Message message = (Message) packet;
RequestPacketExtension packetExtension = PacketExtensions.getJupiterRequestExtension(message);
if(packetExtension != null){
log.info("Received request : "+packetExtension.getRequest().toString());
}else{
log.error("Failure in request packet extension.");
}
}
// TODO replace dependencies by more generic listener interfaces
/*
* (non-Javadoc)
......@@ -2029,4 +2044,6 @@ public class XMPPChatTransmitter implements ITransmitter,
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment