From 68a03aeb48e324cf6311b735ab984d4c39a1c386 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Thu, 27 Jul 2017 18:09:49 +0200 Subject: [PATCH] IntegrationTest for JingleIBBTransport --- .../callbacks/JingleTransportCallback.java | 13 ++++ .../jingle/components/JingleContent.java | 12 +-- .../jingle/components/JingleTransport.java | 5 +- .../jingle_ibb/JingleIBBTransport.java | 20 ++--- .../jingle_s5b/JingleS5BTransport.java | 25 +++--- .../smackx/jft/FileTransferTest.java | 2 +- .../smackx/jingle/JingleIBBTest.java | 77 +++++++++++++++++++ 7 files changed, 126 insertions(+), 28 deletions(-) create mode 100644 smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/callbacks/JingleTransportCallback.java create mode 100644 smack-integration-test/src/main/java/org/jivesoftware/smackx/jingle/JingleIBBTest.java diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/callbacks/JingleTransportCallback.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/callbacks/JingleTransportCallback.java new file mode 100644 index 000000000..697b24d66 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/callbacks/JingleTransportCallback.java @@ -0,0 +1,13 @@ +package org.jivesoftware.smackx.jingle.callbacks; + +import org.jivesoftware.smackx.bytestreams.BytestreamSession; + +/** + * Created by vanitas on 27.07.17. + */ +public interface JingleTransportCallback { + + void onTransportReady(BytestreamSession bytestreamSession); + + void onTransportFailed(Exception e); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleContent.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleContent.java index c81535d49..a673fd553 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleContent.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleContent.java @@ -32,6 +32,7 @@ import org.jivesoftware.smackx.bytestreams.BytestreamSession; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.adapter.JingleDescriptionAdapter; import org.jivesoftware.smackx.jingle.adapter.JingleTransportAdapter; +import org.jivesoftware.smackx.jingle.callbacks.JingleTransportCallback; import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionElement; import org.jivesoftware.smackx.jingle.element.JingleContentSecurityElement; import org.jivesoftware.smackx.jingle.element.JingleContentTransportElement; @@ -45,7 +46,7 @@ import org.jivesoftware.smackx.jingle.JingleTransportManager; /** * Internal class that holds the state of a content in a modifiable form. */ -public class JingleContent { +public class JingleContent implements JingleTransportCallback { private static final Logger LOGGER = Logger.getLogger(JingleContent.class.getName()); @@ -213,8 +214,8 @@ public class JingleContent { getSenders() == JingleContentElement.Senders.both; } - public void onTransportReady() { - BytestreamSession bytestreamSession = transport.getBytestreamSession(); + @Override + public void onTransportReady(BytestreamSession bytestreamSession) { if (bytestreamSession == null) { throw new AssertionError("bytestreamSession MUST NOT be null at this point."); @@ -223,6 +224,7 @@ public class JingleContent { description.onTransportReady(bytestreamSession); } + @Override public void onTransportFailed(Exception e) { //Add current transport to blacklist. getTransportBlacklist().add(transport.getNamespace()); @@ -264,9 +266,9 @@ public class JingleContent { throws SmackException.NotConnectedException, InterruptedException { //Establish transport if (isReceiving()) { - getTransport().establishIncomingBytestreamSession(connection); + getTransport().establishIncomingBytestreamSession(connection, this); } else if (isSending()) { - getTransport().establishOutgoingBytestreamSession(connection); + getTransport().establishOutgoingBytestreamSession(connection, this); } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleTransport.java index d18762dc1..2b6169f47 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleTransport.java @@ -23,6 +23,7 @@ import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.SmackFuture; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smackx.bytestreams.BytestreamSession; +import org.jivesoftware.smackx.jingle.callbacks.JingleTransportCallback; import org.jivesoftware.smackx.jingle.element.JingleContentTransportElement; import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfoElement; import org.jivesoftware.smackx.jingle.element.JingleElement; @@ -75,10 +76,10 @@ public abstract class JingleTransport e public abstract String getNamespace(); - public abstract void establishIncomingBytestreamSession(XMPPConnection connection) + public abstract void establishIncomingBytestreamSession(XMPPConnection connection, JingleTransportCallback callback) throws SmackException.NotConnectedException, InterruptedException; - public abstract void establishOutgoingBytestreamSession(XMPPConnection connection) + public abstract void establishOutgoingBytestreamSession(XMPPConnection connection, JingleTransportCallback callback) throws SmackException.NotConnectedException, InterruptedException; public void setPeersProposal(JingleTransport peersProposal) { diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransport.java index b432af75d..5aec90b67 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransport.java @@ -25,11 +25,12 @@ import org.jivesoftware.smackx.bytestreams.BytestreamSession; import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamListener; import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager; import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamRequest; -import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfoElement; -import org.jivesoftware.smackx.jingle.element.JingleElement; +import org.jivesoftware.smackx.jingle.callbacks.JingleTransportCallback; import org.jivesoftware.smackx.jingle.components.JingleSession; import org.jivesoftware.smackx.jingle.components.JingleTransport; import org.jivesoftware.smackx.jingle.components.JingleTransportCandidate; +import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfoElement; +import org.jivesoftware.smackx.jingle.element.JingleElement; import org.jivesoftware.smackx.jingle.transport.jingle_ibb.element.JingleIBBTransportElement; /** @@ -71,7 +72,7 @@ public class JingleIBBTransport extends JingleTransport