From d4deaa25172d702bd5416a625df893898b9fe10e Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Sun, 11 Jun 2017 15:59:57 +0200 Subject: [PATCH] Fix bugs. JIBB works again --- .../JingleFileTransferManager.java | 18 +++++++++--------- .../JingleFileTransferSession.java | 3 ++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java index 3e85c55db..b38fbcbd3 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java @@ -18,18 +18,19 @@ package org.jivesoftware.smackx.jingle_filetransfer; import java.io.File; import java.util.ArrayList; -import java.util.HashMap; import java.util.WeakHashMap; import org.jivesoftware.smack.Manager; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.packet.IQ; +import org.jivesoftware.smackx.jingle.JingleContentProviderManager; import org.jivesoftware.smackx.jingle.JingleHandler; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.element.Jingle; import org.jivesoftware.smackx.jingle_filetransfer.callback.JingleFileTransferCallback; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransferChild; import org.jivesoftware.smackx.jingle_filetransfer.listener.IncomingJingleFileTransferListener; +import org.jivesoftware.smackx.jingle_filetransfer.provider.JingleFileTransferContentDescriptionProvider; import org.jivesoftware.smackx.jingle_ibb.JingleIBBTransportManager; import org.jxmpp.jid.FullJid; @@ -43,10 +44,9 @@ public final class JingleFileTransferManager extends Manager implements JingleHa private final ArrayList incomingJFTListeners = new ArrayList<>(); - private HashMap jingleSessions = new HashMap<>(); - private JingleFileTransferManager(XMPPConnection connection) { super(connection); + JingleContentProviderManager.addJingleContentDescriptionProvider(NAMESPACE_V5, new JingleFileTransferContentDescriptionProvider()); JingleManager.getInstanceFor(connection).registerDescriptionHandler(NAMESPACE_V5, this); JingleIBBTransportManager.getInstanceFor(connection); //JingleS5BTransportManager.getInstanceFor(connection); @@ -72,15 +72,15 @@ public final class JingleFileTransferManager extends Manager implements JingleHa } public void addJingleSession(JingleFileTransferSession session) { - jingleSessions.put(session.getFullJidAndSessionId(), session); - } - - public JingleFileTransferSession getJingleSession(JingleManager.FullJidAndSessionId fullJidAndSessionId) { - return jingleSessions.get(fullJidAndSessionId); + JingleManager.FullJidAndSessionId fns = session.getFullJidAndSessionId(); + JingleManager.getInstanceFor(connection()) + .registerJingleSessionHandler(fns.getFullJid(), fns.getSessionId(), session); } public void removeJingleSession(JingleFileTransferSession session) { - jingleSessions.remove(session.getFullJidAndSessionId()); + JingleManager.FullJidAndSessionId fns = session.getFullJidAndSessionId(); + JingleManager.getInstanceFor(connection()).unregisterJingleSession( + fns.getFullJid(), fns.getSessionId()); } @Override diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferSession.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferSession.java index d0c7758af..1ef19eee0 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferSession.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferSession.java @@ -105,12 +105,13 @@ public class JingleFileTransferSession extends AbstractJingleSession { */ public JingleFileTransferSession(XMPPConnection connection, Jingle initiate) { super(connection); + LOGGER.log(Level.INFO, "Incoming session!"); this.sessionId = initiate.getSessionId(); this.remote = initiate.getInitiator(); this.source = null; this.proposedContent = initiate.getContents().get(0); - this.state = new IncomingAccepted(connection, this); + this.state = new IncomingFresh(connection, this); } /**