package hudson.plugins.jabber.im.transport; import hudson.plugins.im.IMMessage; import hudson.plugins.im.IMMessageListener; import org.jivesoftware.smack.Chat; import org.jivesoftware.smack.MessageListener; import org.jivesoftware.smack.PacketListener; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.PacketExtension; import org.jivesoftware.smackx.packet.DelayInformation; /** * Wraps an {@link IMMessageListener} in a Smack {@link PacketListener}. * * @author kutzi */ class JabberMessageListenerAdapter implements MessageListener { private final IMMessageListener listener; private final JabberIMConnection connection; public JabberMessageListenerAdapter(IMMessageListener listener, JabberIMConnection connection, Chat chat) { this.listener = listener; this.connection = connection; } @Override public void processMessage(Chat chat, Message msg) { // don't react to old messages for (PacketExtension pe : msg.getExtensions()) { if (pe instanceof DelayInformation) { return; // simply bail out here, it's an old message } } IMMessage imMessage = new IMMessage(msg.getFrom(), msg.getTo(), msg.getBody(), this.connection.isAuthorized(msg.getFrom())); listener.onMessage(imMessage); } }