package org.jivesoftware.spark.otrplug.impl;
import java.awt.Color;
import java.security.KeyPair;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.spark.SparkManager;
import org.jivesoftware.spark.otrplug.OTRManager;
import org.jivesoftware.spark.ui.rooms.ChatRoomImpl;
import net.java.otr4j.OtrEngineHost;
import net.java.otr4j.OtrPolicy;
import net.java.otr4j.session.SessionID;
/**
*
* Implementation of OtrEngineHost provided from otr4j. It handles the message
* injection to specified chat window and handles key pair.
*
* @author Bergunde Holger
*/
public class OTREngineHost implements OtrEngineHost {
private ChatRoomImpl _chatRoom;
private OtrPolicy _policy;
public OTREngineHost(OtrPolicy policy, ChatRoomImpl chatroom) {
_policy = policy;
_chatRoom = chatroom;
}
@Override
public KeyPair getKeyPair(SessionID arg0) {
return OTRManager.getInstance().getKeyManager().loadLocalKeyPair(arg0);
}
@Override
public OtrPolicy getSessionPolicy(SessionID arg0) {
return _policy;
}
@Override
public void injectMessage(SessionID arg0, String arg1) {
Message injection = new Message();
injection.setType(Message.Type.chat);
injection.setTo(_chatRoom.getParticipantJID());
injection.setFrom(SparkManager.getSessionManager().getJID());
String threadID = StringUtils.randomString(6);
injection.setThread(threadID);
injection.setBody(arg1);
SparkManager.getConnection().sendPacket(injection);
}
@Override
public void showError(SessionID arg0, String arg1) {
_chatRoom.getTranscriptWindow().insertNotificationMessage(arg1, Color.red);
}
@Override
public void showWarning(SessionID arg0, String arg1) {
_chatRoom.getTranscriptWindow().insertNotificationMessage(arg1, Color.red);
}
}