From bc61527bd2b967d71c3b892bffed36832fddfbab Mon Sep 17 00:00:00 2001
From: Florian Schmaus
Date: Sat, 14 Feb 2015 09:43:44 +0100
Subject: [PATCH] Expose InterruptedException
SMACK-632
---
.../smack/bosh/XMPPBOSHConnection.java | 4 +-
.../smack/AbstractXMPPConnection.java | 70 ++++---
.../jivesoftware/smack/PacketCollector.java | 33 ++--
.../jivesoftware/smack/PacketListener.java | 3 +-
.../smack/SASLAuthentication.java | 45 ++---
.../smack/SynchronizationPoint.java | 5 +-
.../jivesoftware/smack/XMPPConnection.java | 31 ++-
.../smack/sasl/SASLMechanism.java | 11 +-
.../util/ArrayBlockingQueueWithShutdown.java | 16 +-
.../jivesoftware/smack/DummyConnection.java | 2 +-
.../smack/PacketCollectorTest.java | 19 +-
.../smack/ThreadedDummyConnection.java | 4 +-
.../smack/sasl/DigestMd5SaslTest.java | 2 +-
.../smackx/debugger/EnhancedDebugger.java | 2 +-
.../smackx/carbons/CarbonManager.java | 15 +-
.../csi/ClientStateIndicationManager.java | 4 +-
.../jivesoftware/smackx/hoxt/HOXTManager.java | 3 +-
.../address/MultipleRecipientManager.java | 16 +-
.../smackx/amp/AMPDeliverCondition.java | 3 +-
.../smackx/amp/AMPExpireAtCondition.java | 3 +-
.../jivesoftware/smackx/amp/AMPManager.java | 8 +-
.../smackx/amp/AMPMatchResourceCondition.java | 3 +-
.../smackx/bookmarks/BookmarkManager.java | 20 +-
.../smackx/bytestreams/BytestreamRequest.java | 3 +-
.../smackx/bytestreams/ibb/CloseListener.java | 4 +-
.../smackx/bytestreams/ibb/DataListener.java | 2 +-
.../ibb/InBandBytestreamManager.java | 15 +-
.../ibb/InBandBytestreamRequest.java | 6 +-
.../ibb/InBandBytestreamSession.java | 12 +-
.../bytestreams/ibb/InitiationListener.java | 4 +-
.../socks5/InitiationListener.java | 4 +-
.../socks5/Socks5BytestreamManager.java | 9 +-
.../socks5/Socks5BytestreamRequest.java | 6 +-
.../socks5/Socks5ClientForInitiator.java | 3 +-
.../smackx/caps/EntityCapsManager.java | 8 +-
.../smackx/chatstates/ChatStateManager.java | 3 +-
.../smackx/commands/AdHocCommand.java | 15 +-
.../smackx/commands/AdHocCommandManager.java | 11 +-
.../smackx/commands/RemoteCommand.java | 18 +-
.../smackx/disco/ServiceDiscoveryManager.java | 30 ++-
.../filetransfer/FaultTolerantNegotiator.java | 4 +-
.../filetransfer/FileTransferManager.java | 3 +-
.../filetransfer/FileTransferNegotiator.java | 6 +-
.../filetransfer/FileTransferRequest.java | 3 +-
.../filetransfer/IBBTransferNegotiator.java | 6 +-
.../filetransfer/IncomingFileTransfer.java | 5 +-
.../filetransfer/OutgoingFileTransfer.java | 5 +-
.../smackx/filetransfer/StreamNegotiator.java | 5 +-
.../smackx/iqlast/LastActivityManager.java | 6 +-
.../smackx/iqprivate/PrivateDataManager.java | 6 +-
.../smackx/iqregister/AccountManager.java | 29 ++-
.../smackx/iqversion/VersionManager.java | 5 +-
.../smackx/muc/MultiUserChat.java | 179 ++++++++++++------
.../smackx/muc/MultiUserChatManager.java | 18 +-
.../smackx/offline/OfflineMessageManager.java | 21 +-
.../jivesoftware/smackx/pep/PEPManager.java | 3 +-
.../jivesoftware/smackx/ping/PingManager.java | 22 ++-
.../smackx/privacy/PrivacyListManager.java | 57 ++++--
.../jivesoftware/smackx/pubsub/LeafNode.java | 52 +++--
.../org/jivesoftware/smackx/pubsub/Node.java | 49 +++--
.../smackx/pubsub/PubSubManager.java | 36 ++--
.../receipts/DeliveryReceiptManager.java | 5 +-
.../smackx/search/UserSearch.java | 9 +-
.../smackx/search/UserSearchManager.java | 9 +-
.../sharedgroups/SharedGroupManager.java | 3 +-
.../smackx/time/EntityTimeManager.java | 4 +-
.../smackx/vcardtemp/VCardManager.java | 15 +-
.../smackx/vcardtemp/packet/VCard.java | 9 +-
.../smackx/xdata/XDataManager.java | 3 +-
.../smackx/xhtmlim/XHTMLManager.java | 3 +-
.../ibb/InBandBytestreamManagerTest.java | 8 +-
.../ibb/InBandBytestreamRequestTest.java | 3 +-
.../InBandBytestreamSessionMessageTest.java | 3 +-
.../ibb/InBandBytestreamSessionTest.java | 3 +-
.../socks5/Socks5ByteStreamManagerTest.java | 3 +-
.../socks5/Socks5ByteStreamRequestTest.java | 3 +-
.../socks5/Socks5ClientForInitiatorTest.java | 3 +-
.../jivesoftware/smackx/ping/PingTest.java | 10 +-
.../smackx/pubsub/ConfigureFormTest.java | 4 +-
.../jivesoftware/util/ConnectionUtils.java | 3 +-
.../org/jivesoftware/smack/chat/Chat.java | 6 +-
.../jivesoftware/smack/chat/ChatManager.java | 2 +-
.../org/jivesoftware/smack/roster/Roster.java | 39 ++--
.../smack/roster/RosterEntry.java | 3 +-
.../smack/roster/RosterGroup.java | 9 +-
.../smackx/jingleold/ContentNegotiator.java | 7 +-
.../smackx/jingleold/JingleManager.java | 3 +-
.../smackx/jingleold/JingleNegotiator.java | 3 +-
.../smackx/jingleold/JingleSession.java | 27 ++-
.../jingleold/JingleSessionRequest.java | 3 +-
.../smackx/jingleold/JingleSessionState.java | 3 +-
.../jingleold/JingleSessionStateUnknown.java | 5 +-
.../listeners/JingleMediaListener.java | 3 +-
.../listeners/JingleSessionListener.java | 3 +-
.../listeners/JingleTransportListener.java | 3 +-
.../jingleold/media/MediaNegotiator.java | 9 +-
.../smackx/jingleold/nat/BasicResolver.java | 3 +-
.../smackx/jingleold/nat/BridgedResolver.java | 5 +-
.../nat/BridgedTransportManager.java | 2 +-
.../smackx/jingleold/nat/FixedResolver.java | 3 +-
.../smackx/jingleold/nat/ICEResolver.java | 3 +-
.../jingleold/nat/ICETransportManager.java | 4 +-
.../jingleold/nat/JingleTransportManager.java | 6 +-
.../smackx/jingleold/nat/RTPBridge.java | 12 +-
.../smackx/jingleold/nat/STUN.java | 6 +-
.../smackx/jingleold/nat/STUNResolver.java | 3 +-
.../jingleold/nat/TransportNegotiator.java | 26 ++-
.../jingleold/nat/TransportResolver.java | 15 +-
.../nat/TransportResolverListener.java | 3 +-
.../smackx/workgroup/agent/Agent.java | 8 +-
.../smackx/workgroup/agent/AgentRoster.java | 6 +-
.../smackx/workgroup/agent/AgentSession.java | 75 +++++---
.../smackx/workgroup/agent/Offer.java | 6 +-
.../workgroup/agent/OfferConfirmation.java | 2 +-
.../workgroup/agent/TranscriptManager.java | 6 +-
.../agent/TranscriptSearchManager.java | 6 +-
.../smackx/workgroup/user/Workgroup.java | 48 +++--
.../DefaultMessageEventRequestListener.java | 2 +-
.../smackx/xevent/MessageEventManager.java | 12 +-
.../xevent/MessageEventRequestListener.java | 3 +-
.../smackx/xroster/RosterExchangeManager.java | 9 +-
.../smack/sasl/javax/SASLDigestMD5Test.java | 2 +-
.../sasl/provided/SASLDigestMD5Test.java | 2 +-
.../smack/tcp/XMPPTCPConnection.java | 70 +++----
124 files changed, 977 insertions(+), 597 deletions(-)
diff --git a/smack-bosh/src/main/java/org/jivesoftware/smack/bosh/XMPPBOSHConnection.java b/smack-bosh/src/main/java/org/jivesoftware/smack/bosh/XMPPBOSHConnection.java
index e4f203698..bddd37851 100644
--- a/smack-bosh/src/main/java/org/jivesoftware/smack/bosh/XMPPBOSHConnection.java
+++ b/smack-bosh/src/main/java/org/jivesoftware/smack/bosh/XMPPBOSHConnection.java
@@ -212,7 +212,7 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection {
@Override
protected void loginNonAnonymously(String username, String password, String resource)
- throws XMPPException, SmackException, IOException {
+ throws XMPPException, SmackException, IOException, InterruptedException {
if (saslAuthentication.hasNonAnonymousAuthentication()) {
// Authenticate using SASL
if (password != null) {
@@ -230,7 +230,7 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection {
}
@Override
- protected void loginAnonymously() throws XMPPException, SmackException, IOException {
+ protected void loginAnonymously() throws XMPPException, SmackException, IOException, InterruptedException {
// Wait with SASL auth until the SASL mechanisms have been received
saslFeatureReceived.checkIfSuccessOrWaitOrThrow();
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java
index 36d570533..5bdb0fa60 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java
@@ -362,10 +362,10 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
@Override
public abstract boolean isSecureConnection();
- protected abstract void sendPacketInternal(Stanza packet) throws NotConnectedException;
+ protected abstract void sendPacketInternal(Stanza packet) throws NotConnectedException, InterruptedException;
@Override
- public abstract void send(PlainStreamElement element) throws NotConnectedException;
+ public abstract void send(PlainStreamElement element) throws NotConnectedException, InterruptedException;
@Override
public abstract boolean isUsingCompression();
@@ -382,8 +382,9 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
* @throws IOException
* @throws ConnectionException with detailed information about the failed connection.
* @return a reference to this object, to chain connect()
with login()
.
+ * @throws InterruptedException
*/
- public synchronized AbstractXMPPConnection connect() throws SmackException, IOException, XMPPException {
+ public synchronized AbstractXMPPConnection connect() throws SmackException, IOException, XMPPException, InterruptedException {
// Check if not already connected
throwAlreadyConnectedExceptionIfAppropriate();
@@ -406,8 +407,9 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
* @throws SmackException
* @throws IOException
* @throws XMPPException
+ * @throws InterruptedException
*/
- protected abstract void connectInternal() throws SmackException, IOException, XMPPException;
+ protected abstract void connectInternal() throws SmackException, IOException, XMPPException, InterruptedException;
private String usedUsername, usedPassword, usedResource;
@@ -432,8 +434,9 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
* @throws XMPPException if an error occurs on the XMPP protocol level.
* @throws SmackException if an error occurs somewhere else besides XMPP protocol level.
* @throws IOException if an I/O error occurs during login.
+ * @throws InterruptedException
*/
- public synchronized void login() throws XMPPException, SmackException, IOException {
+ public synchronized void login() throws XMPPException, SmackException, IOException, InterruptedException {
if (isAnonymous()) {
throwNotConnectedExceptionIfAppropriate();
throwAlreadyLoggedInExceptionIfAppropriate();
@@ -457,10 +460,11 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
* @throws XMPPException
* @throws SmackException
* @throws IOException
+ * @throws InterruptedException
* @see #login
*/
public synchronized void login(CharSequence username, String password) throws XMPPException, SmackException,
- IOException {
+ IOException, InterruptedException {
login(username, password, config.getResource());
}
@@ -474,10 +478,11 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
* @throws XMPPException
* @throws SmackException
* @throws IOException
+ * @throws InterruptedException
* @see #login
*/
public synchronized void login(CharSequence username, String password, String resource) throws XMPPException,
- SmackException, IOException {
+ SmackException, IOException, InterruptedException {
if (!config.allowNullOrEmptyUsername) {
StringUtils.requireNotNullOrEmpty(username, "Username must not be null or empty");
}
@@ -490,9 +495,9 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
}
protected abstract void loginNonAnonymously(String username, String password, String resource)
- throws XMPPException, SmackException, IOException;
+ throws XMPPException, SmackException, IOException, InterruptedException;
- protected abstract void loginAnonymously() throws XMPPException, SmackException, IOException;
+ protected abstract void loginAnonymously() throws XMPPException, SmackException, IOException, InterruptedException;
@Override
public final boolean isConnected() {
@@ -520,7 +525,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
// TODO remove this suppression once "disable legacy session" code has been removed from Smack
@SuppressWarnings("deprecation")
protected void bindResourceAndEstablishSession(String resource) throws XMPPErrorException,
- IOException, SmackException {
+ IOException, SmackException, InterruptedException {
// Wait until either:
// - the servers last features stanza has been parsed
@@ -557,7 +562,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
}
}
- protected void afterSuccessfulLogin(final boolean resumed) throws NotConnectedException {
+ protected void afterSuccessfulLogin(final boolean resumed) throws NotConnectedException, InterruptedException {
// Indicate that we're now authenticated.
this.authenticated = true;
@@ -634,7 +639,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
}
@Override
- public void sendPacket(Stanza packet) throws NotConnectedException {
+ public void sendPacket(Stanza packet) throws NotConnectedException, InterruptedException {
Objects.requireNonNull(packet, "Packet must not be null");
throwNotConnectedExceptionIfAppropriate();
@@ -693,7 +698,12 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
* @throws NotConnectedException
*/
public synchronized void disconnect(Presence unavailablePresence) throws NotConnectedException {
- sendPacket(unavailablePresence);
+ try {
+ sendPacket(unavailablePresence);
+ }
+ catch (InterruptedException e) {
+ LOGGER.log(Level.FINE, "Was interrupted while sending unavailable presence. Continuing to disconnect the connection", e);
+ }
shutdown();
callConnectionClosedListener();
}
@@ -717,7 +727,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
}
@Override
- public PacketCollector createPacketCollectorAndSend(IQ packet) throws NotConnectedException {
+ public PacketCollector createPacketCollectorAndSend(IQ packet) throws NotConnectedException, InterruptedException {
PacketFilter packetFilter = new IQReplyFilter(packet, this);
// Create the packet collector before sending the packet
PacketCollector packetCollector = createPacketCollectorAndSend(packetFilter, packet);
@@ -726,14 +736,14 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
@Override
public PacketCollector createPacketCollectorAndSend(PacketFilter packetFilter, Stanza packet)
- throws NotConnectedException {
+ throws NotConnectedException, InterruptedException {
// Create the packet collector before sending the packet
PacketCollector packetCollector = createPacketCollector(packetFilter);
try {
// Now we can send the packet as the collector has been created
sendPacket(packet);
}
- catch (NotConnectedException | RuntimeException e) {
+ catch (InterruptedException | NotConnectedException | RuntimeException e) {
packetCollector.cancel();
throw e;
}
@@ -1062,8 +1072,8 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
try {
sendPacket(errorIQ);
}
- catch (NotConnectedException e) {
- LOGGER.log(Level.WARNING, "NotConnectedException while sending error IQ to unkown IQ request", e);
+ catch (InterruptedException | NotConnectedException e) {
+ LOGGER.log(Level.WARNING, "Exception while sending error IQ to unkown IQ request", e);
}
} else {
ExecutorService executorService = null;
@@ -1091,8 +1101,8 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
try {
sendPacket(response);
}
- catch (NotConnectedException e) {
- LOGGER.log(Level.WARNING, "NotConnectedException while sending response to IQ request", e);
+ catch (InterruptedException | NotConnectedException e) {
+ LOGGER.log(Level.WARNING, "Exception while sending response to IQ request", e);
}
}
});
@@ -1334,7 +1344,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
}
protected final void parseFeatures(XmlPullParser parser) throws XmlPullParserException,
- IOException, SmackException {
+ IOException, SmackException, InterruptedException {
streamFeatures.clear();
final int initialDepth = parser.getDepth();
while (true) {
@@ -1397,7 +1407,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
afterFeaturesReceived();
}
- protected void afterFeaturesReceived() throws SecurityRequiredException, NotConnectedException {
+ protected void afterFeaturesReceived() throws SecurityRequiredException, NotConnectedException, InterruptedException {
// Default implementation does nothing
}
@@ -1419,14 +1429,14 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
@Override
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
- PacketListener callback) throws NotConnectedException {
+ PacketListener callback) throws NotConnectedException, InterruptedException {
sendStanzaWithResponseCallback(stanza, replyFilter, callback, null);
}
@Override
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
PacketListener callback, ExceptionCallback exceptionCallback)
- throws NotConnectedException {
+ throws NotConnectedException, InterruptedException {
sendStanzaWithResponseCallback(stanza, replyFilter, callback, exceptionCallback,
getPacketReplyTimeout());
}
@@ -1434,7 +1444,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
@Override
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
final PacketListener callback, final ExceptionCallback exceptionCallback,
- long timeout) throws NotConnectedException {
+ long timeout) throws NotConnectedException, InterruptedException {
Objects.requireNonNull(stanza, "stanza must not be null");
// While Smack allows to add PacketListeners with a PacketFilter value of 'null', we
// disallow it here in the async API as it makes no sense
@@ -1443,7 +1453,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
final PacketListener packetListener = new PacketListener() {
@Override
- public void processPacket(Stanza packet) throws NotConnectedException {
+ public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
try {
XMPPErrorException.ifHasErrorThenThrow(packet);
callback.processPacket(packet);
@@ -1475,20 +1485,20 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
@Override
public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback)
- throws NotConnectedException {
+ throws NotConnectedException, InterruptedException {
sendIqWithResponseCallback(iqRequest, callback, null);
}
@Override
public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback,
- ExceptionCallback exceptionCallback) throws NotConnectedException {
+ ExceptionCallback exceptionCallback) throws NotConnectedException, InterruptedException {
sendIqWithResponseCallback(iqRequest, callback, exceptionCallback, getPacketReplyTimeout());
}
@Override
public void sendIqWithResponseCallback(IQ iqRequest, final PacketListener callback,
final ExceptionCallback exceptionCallback, long timeout)
- throws NotConnectedException {
+ throws NotConnectedException, InterruptedException {
PacketFilter replyFilter = new IQReplyFilter(iqRequest, this);
sendStanzaWithResponseCallback(iqRequest, replyFilter, callback, exceptionCallback, timeout);
}
@@ -1497,7 +1507,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
public void addOneTimeSyncCallback(final PacketListener callback, final PacketFilter packetFilter) {
final PacketListener packetListener = new PacketListener() {
@Override
- public void processPacket(Stanza packet) throws NotConnectedException {
+ public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
try {
callback.processPacket(packet);
} finally {
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/PacketCollector.java b/smack-core/src/main/java/org/jivesoftware/smack/PacketCollector.java
index 0908b35c2..9143782b0 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/PacketCollector.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/PacketCollector.java
@@ -19,8 +19,6 @@ package org.jivesoftware.smack;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import org.jivesoftware.smack.SmackException.NoResponseException;
import org.jivesoftware.smack.XMPPException.XMPPErrorException;
@@ -43,8 +41,6 @@ import org.jivesoftware.smack.packet.Stanza;
*/
public class PacketCollector {
- private static final Logger LOGGER = Logger.getLogger(PacketCollector.class.getName());
-
private final PacketFilter packetFilter;
private final ArrayBlockingQueue resultQueue;
@@ -131,18 +127,14 @@ public class PacketCollector {
* available.
*
* @return the next available packet.
+ * @throws InterruptedException
*/
@SuppressWarnings("unchecked")
- public P nextResultBlockForever() {
+ public
P nextResultBlockForever() throws InterruptedException {
throwIfCancelled();
P res = null;
while (res == null) {
- try {
- res = (P) resultQueue.take();
- } catch (InterruptedException e) {
- LOGGER.log(Level.FINE,
- "nextResultBlockForever was interrupted", e);
- }
+ res = (P) resultQueue.take();
}
return res;
}
@@ -152,8 +144,9 @@ public class PacketCollector {
* timeout has elapsed.
*
* @return the next available packet.
+ * @throws InterruptedException
*/
- public
P nextResult() {
+ public
P nextResult() throws InterruptedException {
return nextResult(connection.getPacketReplyTimeout());
}
@@ -166,20 +159,16 @@ public class PacketCollector {
*
* @param timeout the timeout in milliseconds.
* @return the next available packet.
+ * @throws InterruptedException
*/
@SuppressWarnings("unchecked")
- public
P nextResult(long timeout) {
+ public
P nextResult(long timeout) throws InterruptedException {
throwIfCancelled();
P res = null;
long remainingWait = timeout;
waitStart = System.currentTimeMillis();
do {
- try {
- res = (P) resultQueue.poll(remainingWait, TimeUnit.MILLISECONDS);
- }
- catch (InterruptedException e) {
- LOGGER.log(Level.FINE, "nextResult was interrupted", e);
- }
+ res = (P) resultQueue.poll(remainingWait, TimeUnit.MILLISECONDS);
if (res != null) {
return res;
}
@@ -196,8 +185,9 @@ public class PacketCollector {
* @return the next available packet.
* @throws XMPPErrorException in case an error response.
* @throws NoResponseException if there was no response from the server.
+ * @throws InterruptedException
*/
- public
P nextResultOrThrow() throws NoResponseException, XMPPErrorException {
+ public
P nextResultOrThrow() throws NoResponseException, XMPPErrorException, InterruptedException {
return nextResultOrThrow(connection.getPacketReplyTimeout());
}
@@ -209,8 +199,9 @@ public class PacketCollector {
* @return the next available packet.
* @throws NoResponseException if there was no response from the server.
* @throws XMPPErrorException in case an error response.
+ * @throws InterruptedException
*/
- public
P nextResultOrThrow(long timeout) throws NoResponseException, XMPPErrorException {
+ public
P nextResultOrThrow(long timeout) throws NoResponseException, XMPPErrorException, InterruptedException {
P result = nextResult(timeout);
cancel();
if (result == null) {
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/PacketListener.java b/smack-core/src/main/java/org/jivesoftware/smack/PacketListener.java
index 56d6b93e2..b6cfc756d 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/PacketListener.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/PacketListener.java
@@ -47,7 +47,8 @@ public interface PacketListener {
*
*
* @param packet the packet to process.
+ * @throws InterruptedException
*/
- public void processPacket(Stanza packet) throws NotConnectedException;
+ public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException;
}
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/SASLAuthentication.java b/smack-core/src/main/java/org/jivesoftware/smack/SASLAuthentication.java
index d15e6c446..a632b9f96 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/SASLAuthentication.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/SASLAuthentication.java
@@ -180,21 +180,17 @@ public class SASLAuthentication {
* @throws XMPPErrorException
* @throws SASLErrorException
* @throws SmackException
+ * @throws InterruptedException
*/
public void authenticate(String resource, CallbackHandler cbh) throws IOException,
- XMPPErrorException, SASLErrorException, SmackException {
+ XMPPErrorException, SASLErrorException, SmackException, InterruptedException {
SASLMechanism selectedMechanism = selectMechanism();
if (selectedMechanism != null) {
currentMechanism = selectedMechanism;
synchronized (this) {
currentMechanism.authenticate(connection.getHost(), connection.getServiceName(), cbh);
- try {
- // Wait until SASL negotiation finishes
- wait(connection.getPacketReplyTimeout());
- }
- catch (InterruptedException e) {
- // Ignore
- }
+ // Wait until SASL negotiation finishes
+ wait(connection.getPacketReplyTimeout());
}
maybeThrowException();
@@ -224,10 +220,11 @@ public class SASLAuthentication {
* @throws SASLErrorException
* @throws IOException
* @throws SmackException
+ * @throws InterruptedException
*/
public void authenticate(String username, String password, String resource)
throws XMPPErrorException, SASLErrorException, IOException,
- SmackException {
+ SmackException, InterruptedException {
SASLMechanism selectedMechanism = selectMechanism();
if (selectedMechanism != null) {
currentMechanism = selectedMechanism;
@@ -235,13 +232,8 @@ public class SASLAuthentication {
synchronized (this) {
currentMechanism.authenticate(username, connection.getHost(),
connection.getServiceName(), password);
- try {
- // Wait until SASL negotiation finishes
- wait(connection.getPacketReplyTimeout());
- }
- catch (InterruptedException e) {
- // Ignore
- }
+ // Wait until SASL negotiation finishes
+ wait(connection.getPacketReplyTimeout());
}
maybeThrowException();
@@ -267,20 +259,16 @@ public class SASLAuthentication {
* @throws SASLErrorException
* @throws XMPPErrorException if an error occures while authenticating.
* @throws SmackException if there was no response from the server.
+ * @throws InterruptedException
*/
public void authenticateAnonymously() throws SASLErrorException,
- SmackException, XMPPErrorException {
+ SmackException, XMPPErrorException, InterruptedException {
currentMechanism = (new SASLAnonymous()).instanceForAuthentication(connection);
// Wait until SASL negotiation finishes
synchronized (this) {
currentMechanism.authenticate(null, null, null, "");
- try {
- wait(connection.getPacketReplyTimeout());
- }
- catch (InterruptedException e) {
- // Ignore
- }
+ wait(connection.getPacketReplyTimeout());
}
maybeThrowException();
@@ -308,8 +296,9 @@ public class SASLAuthentication {
*
* @param challenge a base64 encoded string representing the challenge.
* @throws SmackException
+ * @throws InterruptedException
*/
- public void challengeReceived(String challenge) throws SmackException {
+ public void challengeReceived(String challenge) throws SmackException, InterruptedException {
challengeReceived(challenge, false);
}
@@ -322,11 +311,12 @@ public class SASLAuthentication {
* @param challenge a base64 encoded string representing the challenge.
* @param finalChallenge true if this is the last challenge send by the server within the success stanza
* @throws SmackException
+ * @throws InterruptedException
*/
- public void challengeReceived(String challenge, boolean finalChallenge) throws SmackException {
+ public void challengeReceived(String challenge, boolean finalChallenge) throws SmackException, InterruptedException {
try {
currentMechanism.challengeReceived(challenge, finalChallenge);
- } catch (SmackException e) {
+ } catch (InterruptedException | SmackException e) {
authenticationFailed(e);
throw e;
}
@@ -336,8 +326,9 @@ public class SASLAuthentication {
* Notification message saying that SASL authentication was successful. The next step
* would be to bind the resource.
* @throws SmackException
+ * @throws InterruptedException
*/
- public void authenticated(Success success) throws SmackException {
+ public void authenticated(Success success) throws SmackException, InterruptedException {
// RFC6120 6.3.10 "At the end of the authentication exchange, the SASL server (the XMPP
// "receiving entity") can include "additional data with success" if appropriate for the
// SASL mechanism in use. In XMPP, this is done by including the additional data as the XML
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/SynchronizationPoint.java b/smack-core/src/main/java/org/jivesoftware/smack/SynchronizationPoint.java
index 7e75a75c1..4b6bd909e 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/SynchronizationPoint.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/SynchronizationPoint.java
@@ -56,7 +56,7 @@ public class SynchronizationPoint {
}
public void sendAndWaitForResponse(TopLevelStreamElement request) throws NoResponseException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
assert (state == State.Initial);
connectionLock.lock();
try {
@@ -80,7 +80,7 @@ public class SynchronizationPoint {
}
public void sendAndWaitForResponseOrThrow(PlainStreamElement request) throws E, NoResponseException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
sendAndWaitForResponse(request);
switch (state) {
case Failure:
@@ -172,6 +172,7 @@ public class SynchronizationPoint {
break;
}
} catch (InterruptedException e) {
+ // This InterruptedException could be "spurious wakeups", see javadoc of awaitNanos()
LOGGER.log(Level.WARNING, "Thread interrupt while waiting for condition or timeout ignored", e);
}
}
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java b/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java
index fd93de2d1..89877edd8 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java
@@ -158,8 +158,9 @@ public interface XMPPConnection {
*
* @param packet the packet to send.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendPacket(Stanza packet) throws NotConnectedException;
+ public void sendPacket(Stanza packet) throws NotConnectedException, InterruptedException;
/**
* Send a PlainStreamElement.
@@ -171,8 +172,9 @@ public interface XMPPConnection {
*
* @param element
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void send(PlainStreamElement element) throws NotConnectedException;
+ public void send(PlainStreamElement element) throws NotConnectedException, InterruptedException;
/**
* Adds a connection listener to this connection that will be notified when
@@ -198,8 +200,9 @@ public interface XMPPConnection {
* @param packet the packet to filter responses from
* @return a new packet collector.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public PacketCollector createPacketCollectorAndSend(IQ packet) throws NotConnectedException;
+ public PacketCollector createPacketCollectorAndSend(IQ packet) throws NotConnectedException, InterruptedException;
/**
* Creates a new packet collector for this connection. A packet filter determines
@@ -210,9 +213,11 @@ public interface XMPPConnection {
* @param packetFilter the packet filter to use.
* @param packet the packet to send right after the collector got created
* @return a new packet collector.
+ * @throws InterruptedException
+ * @throws NotConnectedException
*/
public PacketCollector createPacketCollectorAndSend(PacketFilter packetFilter, Stanza packet)
- throws NotConnectedException;
+ throws NotConnectedException, InterruptedException;
/**
* Creates a new packet collector for this connection. A packet filter
@@ -462,9 +467,10 @@ public interface XMPPConnection {
* @param replyFilter the filter used to determine response stanza (required)
* @param callback the callback invoked if there is a response (required)
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
- PacketListener callback) throws NotConnectedException;
+ PacketListener callback) throws NotConnectedException, InterruptedException;
/**
* Send a stanza and wait asynchronously for a response by using replyFilter
.
@@ -479,9 +485,10 @@ public interface XMPPConnection {
* @param callback the callback invoked if there is a response (required)
* @param exceptionCallback the callback invoked if there is an exception (optional)
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter, PacketListener callback,
- ExceptionCallback exceptionCallback) throws NotConnectedException;
+ ExceptionCallback exceptionCallback) throws NotConnectedException, InterruptedException;
/**
* Send a stanza and wait asynchronously for a response by using replyFilter
.
@@ -497,10 +504,11 @@ public interface XMPPConnection {
* @param exceptionCallback the callback invoked if there is an exception (optional)
* @param timeout the timeout in milliseconds to wait for a response
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
final PacketListener callback, final ExceptionCallback exceptionCallback,
- long timeout) throws NotConnectedException;
+ long timeout) throws NotConnectedException, InterruptedException;
/**
* Send a IQ stanza and invoke callback
if there is a result of
@@ -510,8 +518,9 @@ public interface XMPPConnection {
* @param iqRequest the IQ stanza to send (required)
* @param callback the callback invoked if there is result response (required)
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback) throws NotConnectedException;
+ public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback) throws NotConnectedException, InterruptedException;
/**
* Send a IQ stanza and invoke callback
if there is a result of
@@ -525,9 +534,10 @@ public interface XMPPConnection {
* @param callback the callback invoked if there is result response (required)
* @param exceptionCallback the callback invoked if there is an Exception optional
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback,
- ExceptionCallback exceptionCallback) throws NotConnectedException;
+ ExceptionCallback exceptionCallback) throws NotConnectedException, InterruptedException;
/**
* Send a IQ stanza and invoke callback
if there is a result of
@@ -542,10 +552,11 @@ public interface XMPPConnection {
* @param exceptionCallback the callback invoked if there is an Exception optional
* @param timeout the timeout in milliseconds to wait for a response
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public void sendIqWithResponseCallback(IQ iqRequest, final PacketListener callback,
final ExceptionCallback exceptionCallback, long timeout)
- throws NotConnectedException;
+ throws NotConnectedException, InterruptedException;
/**
* Add a callback that is called exactly once and synchronously with the incoming stanza that matches the given
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/sasl/SASLMechanism.java b/smack-core/src/main/java/org/jivesoftware/smack/sasl/SASLMechanism.java
index eba0d7045..bde8b6310 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/sasl/SASLMechanism.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/sasl/SASLMechanism.java
@@ -158,9 +158,10 @@ public abstract class SASLMechanism implements Comparable {
* @param password the password for this account.
* @throws SmackException If a network error occurs while authenticating.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public final void authenticate(String username, String host, String serviceName, String password)
- throws SmackException, NotConnectedException {
+ throws SmackException, NotConnectedException, InterruptedException {
this.authenticationId = username;
this.host = host;
this.serviceName = serviceName;
@@ -181,9 +182,10 @@ public abstract class SASLMechanism implements Comparable {
* @param cbh the CallbackHandler to obtain user information.
* @throws SmackException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public void authenticate(String host,String serviceName, CallbackHandler cbh)
- throws SmackException, NotConnectedException {
+ throws SmackException, NotConnectedException, InterruptedException {
this.host = host;
this.serviceName = serviceName;
authenticateInternal(cbh);
@@ -192,7 +194,7 @@ public abstract class SASLMechanism implements Comparable {
protected abstract void authenticateInternal(CallbackHandler cbh) throws SmackException;
- private final void authenticate() throws SmackException, NotConnectedException {
+ private final void authenticate() throws SmackException, NotConnectedException, InterruptedException {
byte[] authenticationBytes = getAuthenticationText();
String authenticationText;
if (authenticationBytes != null) {
@@ -224,8 +226,9 @@ public abstract class SASLMechanism implements Comparable {
* @param finalChallenge true if this is the last challenge send by the server within the success stanza
* @throws NotConnectedException
* @throws SmackException
+ * @throws InterruptedException
*/
- public final void challengeReceived(String challengeString, boolean finalChallenge) throws SmackException, NotConnectedException {
+ public final void challengeReceived(String challengeString, boolean finalChallenge) throws SmackException, NotConnectedException, InterruptedException {
byte[] challenge = Base64.decode(challengeString);
byte[] response = evaluateChallenge(challenge);
if (finalChallenge) {
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/ArrayBlockingQueueWithShutdown.java b/smack-core/src/main/java/org/jivesoftware/smack/util/ArrayBlockingQueueWithShutdown.java
index 99aa50292..f8be19611 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/util/ArrayBlockingQueueWithShutdown.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/util/ArrayBlockingQueueWithShutdown.java
@@ -226,7 +226,21 @@ public class ArrayBlockingQueueWithShutdown extends AbstractQueue implemen
}
}
- @Override
+ /**
+ * Inserts the specified element into this queue, waiting if necessary
+ * for space to become available.
+ *
+ * This may throw an {@link InterruptedException} in two cases
+ *
+ * - If the queue was shut down.
+ * - If the thread was was interrupted.
+ *
+ * So you have to check which is the case, e.g. by calling {@link #isShutdown()}.
+ *
+ *
+ * @param e the element to add.
+ * @throws InterruptedException if interrupted while waiting or if the queue was shut down.
+ */
public void put(E e) throws InterruptedException {
checkNotNull(e);
lock.lockInterruptibly();
diff --git a/smack-core/src/test/java/org/jivesoftware/smack/DummyConnection.java b/smack-core/src/test/java/org/jivesoftware/smack/DummyConnection.java
index 0b0db518b..bd103c17a 100644
--- a/smack-core/src/test/java/org/jivesoftware/smack/DummyConnection.java
+++ b/smack-core/src/test/java/org/jivesoftware/smack/DummyConnection.java
@@ -198,7 +198,7 @@ public class DummyConnection extends AbstractXMPPConnection {
dummyConnection.connect();
dummyConnection.login();
}
- catch (SmackException | IOException | XMPPException e) {
+ catch (InterruptedException | SmackException | IOException | XMPPException e) {
throw new IllegalStateException(e);
}
return dummyConnection;
diff --git a/smack-core/src/test/java/org/jivesoftware/smack/PacketCollectorTest.java b/smack-core/src/test/java/org/jivesoftware/smack/PacketCollectorTest.java
index e2e3b633b..8c86a5d8c 100644
--- a/smack-core/src/test/java/org/jivesoftware/smack/PacketCollectorTest.java
+++ b/smack-core/src/test/java/org/jivesoftware/smack/PacketCollectorTest.java
@@ -27,7 +27,7 @@ public class PacketCollectorTest
{
@Test
- public void verifyRollover()
+ public void verifyRollover() throws InterruptedException
{
TestPacketCollector collector = new TestPacketCollector(null, new OKEverything(), 5);
@@ -92,13 +92,9 @@ public class PacketCollectorTest
// System.out.println(Thread.currentThread().getName() + " packet: " + packet);
}
}
- catch (RuntimeException re)
- {
- if (re.getCause() instanceof InterruptedException)
- {
-// System.out.println(Thread.currentThread().getName() + " has been interupted");
- }
- }
+ catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
}
});
consumer1.setName("consumer 1");
@@ -119,7 +115,12 @@ public class PacketCollectorTest
catch (InterruptedException e)
{
}
- p = collector.nextResult(1);
+ try {
+ p = collector.nextResult(1);
+ }
+ catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
// System.out.println(Thread.currentThread().getName() + " packet: " + p);
}
while (p != null);
diff --git a/smack-core/src/test/java/org/jivesoftware/smack/ThreadedDummyConnection.java b/smack-core/src/test/java/org/jivesoftware/smack/ThreadedDummyConnection.java
index 5644c66cf..5a2b64ab6 100644
--- a/smack-core/src/test/java/org/jivesoftware/smack/ThreadedDummyConnection.java
+++ b/smack-core/src/test/java/org/jivesoftware/smack/ThreadedDummyConnection.java
@@ -38,7 +38,7 @@ public class ThreadedDummyConnection extends DummyConnection {
private volatile boolean timeout = false;
@Override
- public void sendPacket(Stanza packet) throws NotConnectedException {
+ public void sendPacket(Stanza packet) throws NotConnectedException, InterruptedException {
super.sendPacket(packet);
if (packet instanceof IQ && !timeout) {
@@ -102,7 +102,7 @@ public class ThreadedDummyConnection extends DummyConnection {
}
}
- public static ThreadedDummyConnection newInstance() throws SmackException, IOException, XMPPException {
+ public static ThreadedDummyConnection newInstance() throws SmackException, IOException, XMPPException, InterruptedException {
ThreadedDummyConnection threadedDummyConnection = new ThreadedDummyConnection();
threadedDummyConnection.connect();
return threadedDummyConnection;
diff --git a/smack-core/src/test/java/org/jivesoftware/smack/sasl/DigestMd5SaslTest.java b/smack-core/src/test/java/org/jivesoftware/smack/sasl/DigestMd5SaslTest.java
index e8eb6bad9..be61be0b4 100644
--- a/smack-core/src/test/java/org/jivesoftware/smack/sasl/DigestMd5SaslTest.java
+++ b/smack-core/src/test/java/org/jivesoftware/smack/sasl/DigestMd5SaslTest.java
@@ -35,7 +35,7 @@ public class DigestMd5SaslTest extends AbstractSaslTest {
super(saslMechanism);
}
- protected void runTest() throws NotConnectedException, SmackException {
+ protected void runTest() throws NotConnectedException, SmackException, InterruptedException {
saslMechanism.authenticate("florian", "irrelevant", "xmpp.org", "secret");
byte[] response = saslMechanism.evaluateChallenge(challengeBytes);
diff --git a/smack-debug/src/main/java/org/jivesoftware/smackx/debugger/EnhancedDebugger.java b/smack-debug/src/main/java/org/jivesoftware/smackx/debugger/EnhancedDebugger.java
index 28deec887..06fa6cbe7 100644
--- a/smack-debug/src/main/java/org/jivesoftware/smackx/debugger/EnhancedDebugger.java
+++ b/smack-debug/src/main/java/org/jivesoftware/smackx/debugger/EnhancedDebugger.java
@@ -580,7 +580,7 @@ public class EnhancedDebugger implements SmackDebugger {
try {
connection.sendPacket(packetToSend);
}
- catch (NotConnectedException e1) {
+ catch (InterruptedException | NotConnectedException e1) {
e1.printStackTrace();
}
}
diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/carbons/CarbonManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/carbons/CarbonManager.java
index eadd71137..d07886aff 100644
--- a/smack-experimental/src/main/java/org/jivesoftware/smackx/carbons/CarbonManager.java
+++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/carbons/CarbonManager.java
@@ -102,8 +102,9 @@ public class CarbonManager extends Manager {
* @throws NotConnectedException
* @throws XMPPErrorException
* @throws NoResponseException
+ * @throws InterruptedException
*/
- public boolean isSupportedByServer() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean isSupportedByServer() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection()).serverSupportsFeature(CarbonExtension.NAMESPACE);
}
@@ -115,8 +116,9 @@ public class CarbonManager extends Manager {
*
* @param new_state whether carbons should be enabled or disabled
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendCarbonsEnabled(final boolean new_state) throws NotConnectedException {
+ public void sendCarbonsEnabled(final boolean new_state) throws NotConnectedException, InterruptedException {
IQ setIQ = carbonsEnabledIQ(new_state);
connection().sendIqWithResponseCallback(setIQ, new PacketListener() {
@@ -137,10 +139,11 @@ public class CarbonManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*
*/
public synchronized void setCarbonsEnabled(final boolean new_state) throws NoResponseException,
- XMPPErrorException, NotConnectedException {
+ XMPPErrorException, NotConnectedException, InterruptedException {
if (enabled_state == new_state)
return;
@@ -155,8 +158,9 @@ public class CarbonManager extends Manager {
*
* @throws XMPPException
* @throws SmackException if there was no response from the server.
+ * @throws InterruptedException
*/
- public void enableCarbons() throws XMPPException, SmackException {
+ public void enableCarbons() throws XMPPException, SmackException, InterruptedException {
setCarbonsEnabled(true);
}
@@ -165,8 +169,9 @@ public class CarbonManager extends Manager {
*
* @throws XMPPException
* @throws SmackException if there was no response from the server.
+ * @throws InterruptedException
*/
- public void disableCarbons() throws XMPPException, SmackException {
+ public void disableCarbons() throws XMPPException, SmackException, InterruptedException {
setCarbonsEnabled(false);
}
diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/csi/ClientStateIndicationManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/csi/ClientStateIndicationManager.java
index f7d2f9bc4..ad4cf5586 100644
--- a/smack-experimental/src/main/java/org/jivesoftware/smackx/csi/ClientStateIndicationManager.java
+++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/csi/ClientStateIndicationManager.java
@@ -27,12 +27,12 @@ import org.jivesoftware.smackx.csi.packet.ClientStateIndication;
*/
public class ClientStateIndicationManager {
- public static void active(XMPPConnection connection) throws NotConnectedException {
+ public static void active(XMPPConnection connection) throws NotConnectedException, InterruptedException {
throwIaeIfNotSupported(connection);
connection.send(ClientStateIndication.Active.INSTANCE);
}
- public static void inactive(XMPPConnection connection) throws NotConnectedException {
+ public static void inactive(XMPPConnection connection) throws NotConnectedException, InterruptedException {
throwIaeIfNotSupported(connection);
connection.send(ClientStateIndication.Inactive.INSTANCE);
}
diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/HOXTManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/HOXTManager.java
index 20b1b4aec..b57f6c5f9 100644
--- a/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/HOXTManager.java
+++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/HOXTManager.java
@@ -56,8 +56,9 @@ public class HOXTManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static boolean isSupported(String jid, XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public static boolean isSupported(String jid, XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection).supportsFeature(jid, NAMESPACE);
}
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/address/MultipleRecipientManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/address/MultipleRecipientManager.java
index 944ed181a..a33402c8d 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/address/MultipleRecipientManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/address/MultipleRecipientManager.java
@@ -64,8 +64,9 @@ public class MultipleRecipientManager {
* some XEP-33 specific features were requested.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static void send(XMPPConnection connection, Stanza packet, Collection to, Collection cc, Collection bcc) throws NoResponseException, XMPPErrorException, FeatureNotSupportedException, NotConnectedException
+ public static void send(XMPPConnection connection, Stanza packet, Collection to, Collection cc, Collection bcc) throws NoResponseException, XMPPErrorException, FeatureNotSupportedException, NotConnectedException, InterruptedException
{
send(connection, packet, to, cc, bcc, null, null, false);
}
@@ -93,9 +94,10 @@ public class MultipleRecipientManager {
* @throws FeatureNotSupportedException if special XEP-33 features where requested, but the
* server does not support them.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public static void send(XMPPConnection connection, Stanza packet, Collection to, Collection cc, Collection bcc,
- String replyTo, String replyRoom, boolean noReply) throws NoResponseException, XMPPErrorException, FeatureNotSupportedException, NotConnectedException {
+ String replyTo, String replyRoom, boolean noReply) throws NoResponseException, XMPPErrorException, FeatureNotSupportedException, NotConnectedException, InterruptedException {
// Check if *only* 'to' is set and contains just *one* entry, in this case extended stanzas addressing is not
// required at all and we can send it just as normal stanza without needing to add the extension element
if (to != null && to.size() == 1 && (cc == null || cc.isEmpty()) && (bcc == null || bcc.isEmpty()) && !noReply
@@ -134,8 +136,9 @@ public class MultipleRecipientManager {
* @param reply the new message to send as a reply.
* @throws SmackException
* @throws XMPPErrorException
+ * @throws InterruptedException
*/
- public static void reply(XMPPConnection connection, Message original, Message reply) throws SmackException, XMPPErrorException
+ public static void reply(XMPPConnection connection, Message original, Message reply) throws SmackException, XMPPErrorException, InterruptedException
{
MultipleRecipientInfo info = getMultipleRecipientInfo(original);
if (info == null) {
@@ -199,7 +202,7 @@ public class MultipleRecipientManager {
}
private static void sendToIndividualRecipients(XMPPConnection connection, Stanza packet,
- Collection to, Collection cc, Collection bcc) throws NotConnectedException {
+ Collection to, Collection cc, Collection bcc) throws NotConnectedException, InterruptedException {
if (to != null) {
for (String jid : to) {
packet.setTo(jid);
@@ -222,7 +225,7 @@ public class MultipleRecipientManager {
private static void sendThroughService(XMPPConnection connection, Stanza packet, Collection to,
Collection cc, Collection bcc, String replyTo, String replyRoom, boolean noReply,
- String serviceAddress) throws NotConnectedException {
+ String serviceAddress) throws NotConnectedException, InterruptedException {
// Create multiple recipient extension
MultipleAddresses multipleAddresses = new MultipleAddresses();
if (to != null) {
@@ -273,8 +276,9 @@ public class MultipleRecipientManager {
* @throws NoResponseException if there was no response from the server.
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private static String getMultipleRecipienServiceAddress(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private static String getMultipleRecipienServiceAddress(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection);
List services = sdm.findServices(MultipleAddresses.NAMESPACE, true, true);
if (services.size() > 0) {
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPDeliverCondition.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPDeliverCondition.java
index 6bbade9b0..c664adf1c 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPDeliverCondition.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPDeliverCondition.java
@@ -33,8 +33,9 @@ public class AMPDeliverCondition implements AMPExtension.Condition {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static boolean isSupported(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public static boolean isSupported(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return AMPManager.isConditionSupported(connection, NAME);
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExpireAtCondition.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExpireAtCondition.java
index 22e6a24d2..a9bec63dc 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExpireAtCondition.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExpireAtCondition.java
@@ -37,8 +37,9 @@ public class AMPExpireAtCondition implements AMPExtension.Condition {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static boolean isSupported(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public static boolean isSupported(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return AMPManager.isConditionSupported(connection, NAME);
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPManager.java
index acd97e48b..cfe412408 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPManager.java
@@ -86,8 +86,9 @@ public class AMPManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static boolean isActionSupported(XMPPConnection connection, AMPExtension.Action action) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public static boolean isActionSupported(XMPPConnection connection, AMPExtension.Action action) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
String featureName = AMPExtension.NAMESPACE + "?action=" + action.toString();
return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE);
}
@@ -100,16 +101,17 @@ public class AMPManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
* @see AMPDeliverCondition
* @see AMPExpireAtCondition
* @see AMPMatchResourceCondition
*/
- public static boolean isConditionSupported(XMPPConnection connection, String conditionName) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public static boolean isConditionSupported(XMPPConnection connection, String conditionName) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
String featureName = AMPExtension.NAMESPACE + "?condition=" + conditionName;
return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE);
}
- private static boolean isFeatureSupportedByServer(XMPPConnection connection, String featureName, String node) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private static boolean isFeatureSupportedByServer(XMPPConnection connection, String featureName, String node) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection).supportsFeature(node, featureName);
}
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPMatchResourceCondition.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPMatchResourceCondition.java
index 7eee27bf1..ed7a28c5f 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPMatchResourceCondition.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/amp/AMPMatchResourceCondition.java
@@ -33,8 +33,9 @@ public class AMPMatchResourceCondition implements AMPExtension.Condition {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static boolean isSupported(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public static boolean isSupported(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return AMPManager.isConditionSupported(connection, NAME);
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bookmarks/BookmarkManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bookmarks/BookmarkManager.java
index ecfb4e73f..24cbe8419 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bookmarks/BookmarkManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bookmarks/BookmarkManager.java
@@ -92,9 +92,10 @@ public class BookmarkManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
* @see BookmarkedConference
*/
- public List getBookmarkedConferences() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getBookmarkedConferences() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
retrieveBookmarks();
return Collections.unmodifiableList(bookmarks.getBookmarkedConferences());
}
@@ -111,9 +112,10 @@ public class BookmarkManager {
* the server.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public void addBookmarkedConference(String name, String jid, boolean isAutoJoin,
- String nickname, String password) throws NoResponseException, XMPPErrorException, NotConnectedException
+ String nickname, String password) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
retrieveBookmarks();
BookmarkedConference bookmark
@@ -143,10 +145,11 @@ public class BookmarkManager {
* retrieve the bookmarks or persist the bookmarks.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
* @throws IllegalArgumentException thrown when the conference being removed is a shared
* conference
*/
- public void removeBookmarkedConference(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void removeBookmarkedConference(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
retrieveBookmarks();
Iterator it = bookmarks.getBookmarkedConferences().iterator();
while(it.hasNext()) {
@@ -169,8 +172,9 @@ public class BookmarkManager {
* @throws XMPPErrorException thrown when there is a problem retriving bookmarks from the server.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getBookmarkedURLs() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getBookmarkedURLs() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
retrieveBookmarks();
return Collections.unmodifiableList(bookmarks.getBookmarkedURLS());
}
@@ -185,8 +189,9 @@ public class BookmarkManager {
* the server
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void addBookmarkedURL(String URL, String name, boolean isRSS) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void addBookmarkedURL(String URL, String name, boolean isRSS) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
retrieveBookmarks();
BookmarkedURL bookmark = new BookmarkedURL(URL, name, isRSS);
List urls = bookmarks.getBookmarkedURLS();
@@ -212,8 +217,9 @@ public class BookmarkManager {
* the server.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void removeBookmarkedURL(String bookmarkURL) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void removeBookmarkedURL(String bookmarkURL) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
retrieveBookmarks();
Iterator it = bookmarks.getBookmarkedURLS().iterator();
while(it.hasNext()) {
@@ -229,7 +235,7 @@ public class BookmarkManager {
}
}
- private Bookmarks retrieveBookmarks() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private Bookmarks retrieveBookmarks() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
synchronized(bookmarkLock) {
if(bookmarks == null) {
bookmarks = (Bookmarks) privateDataManager.getPrivateData("storage",
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/BytestreamRequest.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/BytestreamRequest.java
index 70e78129d..2593c64fc 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/BytestreamRequest.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/BytestreamRequest.java
@@ -62,7 +62,8 @@ public interface BytestreamRequest {
/**
* Rejects the bytestream request by sending a reject error to the initiator.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void reject() throws NotConnectedException;
+ public void reject() throws NotConnectedException, InterruptedException;
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/CloseListener.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/CloseListener.java
index be0427334..43a545578 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/CloseListener.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/CloseListener.java
@@ -54,7 +54,7 @@ class CloseListener extends AbstractIqRequestHandler {
try {
this.manager.replyItemNotFoundPacket(closeRequest);
}
- catch (NotConnectedException e) {
+ catch (InterruptedException | NotConnectedException e) {
return null;
}
}
@@ -62,7 +62,7 @@ class CloseListener extends AbstractIqRequestHandler {
try {
ibbSession.closeByPeer(closeRequest);
}
- catch (NotConnectedException e) {
+ catch (InterruptedException | NotConnectedException e) {
return null;
}
this.manager.getSessions().remove(closeRequest.getSessionID());
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/DataListener.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/DataListener.java
index c4fb9e3b7..0aeba8091 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/DataListener.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/DataListener.java
@@ -56,7 +56,7 @@ class DataListener implements PacketListener {
this.manager = manager;
}
- public void processPacket(Stanza packet) throws NotConnectedException {
+ public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
Data data = (Data) packet;
InBandBytestreamSession ibbSession = this.manager.getSessions().get(
data.getDataPacketExtension().getSessionID());
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamManager.java
index e29fd0ce4..a6c97604b 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamManager.java
@@ -399,8 +399,9 @@ public class InBandBytestreamManager implements BytestreamManager {
* @throws XMPPException if the user doesn't support or accept in-band bytestreams, or if the
* user prefers smaller block sizes
* @throws SmackException if there was no response from the server.
+ * @throws InterruptedException
*/
- public InBandBytestreamSession establishSession(String targetJID) throws XMPPException, SmackException {
+ public InBandBytestreamSession establishSession(String targetJID) throws XMPPException, SmackException, InterruptedException {
String sessionID = getNextSessionID();
return establishSession(targetJID, sessionID);
}
@@ -416,9 +417,10 @@ public class InBandBytestreamManager implements BytestreamManager {
* user prefers smaller block sizes
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public InBandBytestreamSession establishSession(String targetJID, String sessionID)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Open byteStreamRequest = new Open(sessionID, this.defaultBlockSize, this.stanza);
byteStreamRequest.setTo(targetJID);
@@ -438,8 +440,9 @@ public class InBandBytestreamManager implements BytestreamManager {
*
* @param request IQ packet that should be answered with a not-acceptable error
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected void replyRejectPacket(IQ request) throws NotConnectedException {
+ protected void replyRejectPacket(IQ request) throws NotConnectedException, InterruptedException {
XMPPError xmppError = new XMPPError(XMPPError.Condition.not_acceptable);
IQ error = IQ.createErrorResponse(request, xmppError);
this.connection.sendPacket(error);
@@ -451,8 +454,9 @@ public class InBandBytestreamManager implements BytestreamManager {
*
* @param request IQ packet that should be answered with a resource-constraint error
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected void replyResourceConstraintPacket(IQ request) throws NotConnectedException {
+ protected void replyResourceConstraintPacket(IQ request) throws NotConnectedException, InterruptedException {
XMPPError xmppError = new XMPPError(XMPPError.Condition.resource_constraint);
IQ error = IQ.createErrorResponse(request, xmppError);
this.connection.sendPacket(error);
@@ -464,8 +468,9 @@ public class InBandBytestreamManager implements BytestreamManager {
*
* @param request IQ packet that should be answered with a item-not-found error
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected void replyItemNotFoundPacket(IQ request) throws NotConnectedException {
+ protected void replyItemNotFoundPacket(IQ request) throws NotConnectedException, InterruptedException {
XMPPError xmppError = new XMPPError(XMPPError.Condition.item_not_found);
IQ error = IQ.createErrorResponse(request, xmppError);
this.connection.sendPacket(error);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamRequest.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamRequest.java
index 1e9483e53..5fa289096 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamRequest.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamRequest.java
@@ -68,8 +68,9 @@ public class InBandBytestreamRequest implements BytestreamRequest {
*
* @return the session to send/receive data
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public InBandBytestreamSession accept() throws NotConnectedException {
+ public InBandBytestreamSession accept() throws NotConnectedException, InterruptedException {
XMPPConnection connection = this.manager.getConnection();
// create In-Band Bytestream session and store it
@@ -88,8 +89,9 @@ public class InBandBytestreamRequest implements BytestreamRequest {
* Rejects the In-Band Bytestream request by sending a reject error to the
* initiator.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void reject() throws NotConnectedException {
+ public void reject() throws NotConnectedException, InterruptedException {
this.manager.replyRejectPacket(this.byteStreamRequest);
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSession.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSession.java
index f5a0a1719..b6e569c08 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSession.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSession.java
@@ -160,8 +160,9 @@ public class InBandBytestreamSession implements BytestreamSession {
*
* @param closeRequest the close request from the remote peer
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected void closeByPeer(Close closeRequest) throws NotConnectedException {
+ protected void closeByPeer(Close closeRequest) throws NotConnectedException, InterruptedException {
/*
* close streams without flushing them, because stream is already considered closed on the
@@ -447,7 +448,7 @@ public class InBandBytestreamSession implements BytestreamSession {
private long lastSequence = -1;
- public void processPacket(Stanza packet) throws NotConnectedException {
+ public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
// get data packet extension
DataPacketExtension data = ((Data) packet).getDataPacketExtension();
@@ -613,8 +614,9 @@ public class InBandBytestreamSession implements BytestreamSession {
* @param data the data packet
* @throws IOException if an I/O error occurred while sending or if the stream is closed
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected abstract void writeToXML(DataPacketExtension data) throws IOException, NotConnectedException;
+ protected abstract void writeToXML(DataPacketExtension data) throws IOException, NotConnectedException, InterruptedException;
public synchronized void write(int b) throws IOException {
if (this.isClosed) {
@@ -718,7 +720,7 @@ public class InBandBytestreamSession implements BytestreamSession {
try {
writeToXML(data);
}
- catch (NotConnectedException e) {
+ catch (InterruptedException | NotConnectedException e) {
IOException ioException = new IOException();
ioException.initCause(e);
throw ioException;
@@ -803,7 +805,7 @@ public class InBandBytestreamSession implements BytestreamSession {
private class MessageIBBOutputStream extends IBBOutputStream {
@Override
- protected synchronized void writeToXML(DataPacketExtension data) throws NotConnectedException {
+ protected synchronized void writeToXML(DataPacketExtension data) throws NotConnectedException, InterruptedException {
// create message stanza containing data packet
Message message = new Message(remoteJID);
message.addExtension(data);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InitiationListener.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InitiationListener.java
index fc0dd2264..e0578fa1f 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InitiationListener.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InitiationListener.java
@@ -69,7 +69,7 @@ class InitiationListener extends AbstractIqRequestHandler {
try {
processRequest(packet);
}
- catch (NotConnectedException e) {
+ catch (InterruptedException | NotConnectedException e) {
LOGGER.log(Level.WARNING, "proccessRequest", e);
}
}
@@ -77,7 +77,7 @@ class InitiationListener extends AbstractIqRequestHandler {
return null;
}
- private void processRequest(Stanza packet) throws NotConnectedException {
+ private void processRequest(Stanza packet) throws NotConnectedException, InterruptedException {
Open ibbRequest = (Open) packet;
// validate that block size is within allowed range
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/InitiationListener.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/InitiationListener.java
index 27c8a5c11..3b86acab5 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/InitiationListener.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/InitiationListener.java
@@ -65,7 +65,7 @@ final class InitiationListener extends AbstractIqRequestHandler {
try {
processRequest(packet);
}
- catch (NotConnectedException e) {
+ catch (InterruptedException | NotConnectedException e) {
LOGGER.log(Level.WARNING, "process request", e);
}
}
@@ -74,7 +74,7 @@ final class InitiationListener extends AbstractIqRequestHandler {
return null;
}
- private void processRequest(Stanza packet) throws NotConnectedException {
+ private void processRequest(Stanza packet) throws NotConnectedException, InterruptedException {
Bytestream byteStreamRequest = (Bytestream) packet;
// ignore request if in ignore list
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamManager.java
index eac999397..fcece1406 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamManager.java
@@ -527,8 +527,9 @@ public final class Socks5BytestreamManager implements BytestreamManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private boolean supportsSocks5(String targetJID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private boolean supportsSocks5(String targetJID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection).supportsFeature(targetJID, Bytestream.NAMESPACE);
}
@@ -540,8 +541,9 @@ public final class Socks5BytestreamManager implements BytestreamManager {
* @throws XMPPErrorException if there was an error querying the XMPP server for SOCKS5 proxies
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private List determineProxies() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private List determineProxies() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
ServiceDiscoveryManager serviceDiscoveryManager = ServiceDiscoveryManager.getInstanceFor(this.connection);
List proxies = new ArrayList();
@@ -700,8 +702,9 @@ public final class Socks5BytestreamManager implements BytestreamManager {
*
* @param packet Packet that should be answered with a not-acceptable error
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected void replyRejectPacket(IQ packet) throws NotConnectedException {
+ protected void replyRejectPacket(IQ packet) throws NotConnectedException, InterruptedException {
XMPPError xmppError = new XMPPError(XMPPError.Condition.not_acceptable);
IQ errorIQ = IQ.createErrorResponse(packet, xmppError);
this.connection.sendPacket(errorIQ);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamRequest.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamRequest.java
index 28fb19c8b..71050178a 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamRequest.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamRequest.java
@@ -267,8 +267,9 @@ public class Socks5BytestreamRequest implements BytestreamRequest {
/**
* Rejects the SOCKS5 Bytestream request by sending a reject error to the initiator.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void reject() throws NotConnectedException {
+ public void reject() throws NotConnectedException, InterruptedException {
this.manager.replyRejectPacket(this.bytestreamRequest);
}
@@ -277,8 +278,9 @@ public class Socks5BytestreamRequest implements BytestreamRequest {
* XMPP exception.
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private void cancelRequest() throws XMPPErrorException, NotConnectedException {
+ private void cancelRequest() throws XMPPErrorException, NotConnectedException, InterruptedException {
String errorMessage = "Could not establish socket with any provided host";
XMPPError error = XMPPError.from(XMPPError.Condition.item_not_found, errorMessage);
IQ errorIQ = IQ.createErrorResponse(this.bytestreamRequest, error);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ClientForInitiator.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ClientForInitiator.java
index e63aa398b..6849c4f03 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ClientForInitiator.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ClientForInitiator.java
@@ -104,9 +104,10 @@ class Socks5ClientForInitiator extends Socks5Client {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
* @throws SmackException if there was no response from the server.
*/
- private void activate() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private void activate() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Bytestream activate = createStreamHostActivation();
// if activation fails #nextResultOrThrow() throws an exception
connection.createPacketCollectorAndSend(activate).nextResultOrThrow();
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/caps/EntityCapsManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/caps/EntityCapsManager.java
index 9bf3370c5..9b41096dc 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/caps/EntityCapsManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/caps/EntityCapsManager.java
@@ -434,8 +434,9 @@ public class EntityCapsManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean areEntityCapsSupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean areEntityCapsSupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return sdm.supportsFeature(jid, NAMESPACE);
}
@@ -446,8 +447,9 @@ public class EntityCapsManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean areEntityCapsSupportedByServer() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean areEntityCapsSupportedByServer() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return areEntityCapsSupported(connection().getServiceName());
}
@@ -507,7 +509,7 @@ public class EntityCapsManager extends Manager {
try {
connection.sendPacket(presence);
}
- catch (NotConnectedException e) {
+ catch (InterruptedException | NotConnectedException e) {
LOGGER.log(Level.WARNING, "Could could not update presence with caps info", e);
}
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/ChatStateManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/ChatStateManager.java
index 0dd4278e7..370cb3d1a 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/ChatStateManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/ChatStateManager.java
@@ -102,8 +102,9 @@ public class ChatStateManager extends Manager {
* @param newState the new state of the chat
* @param chat the chat.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void setCurrentState(ChatState newState, Chat chat) throws NotConnectedException {
+ public void setCurrentState(ChatState newState, Chat chat) throws NotConnectedException, InterruptedException {
if(chat == null || newState == null) {
throw new IllegalArgumentException("Arguments cannot be null.");
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommand.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommand.java
index 461f7a6ba..0b894d7ed 100755
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommand.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommand.java
@@ -211,8 +211,9 @@ public abstract class AdHocCommand {
*
* @throws XMPPErrorException if there is an error executing the command.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public abstract void execute() throws NoResponseException, XMPPErrorException, NotConnectedException;
+ public abstract void execute() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException;
/**
* Executes the next action of the command with the information provided in
@@ -224,8 +225,9 @@ public abstract class AdHocCommand {
* @param response the form answer of the previous stage.
* @throws XMPPErrorException if there is a problem executing the command.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public abstract void next(Form response) throws NoResponseException, XMPPErrorException, NotConnectedException;
+ public abstract void next(Form response) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException;
/**
* Completes the command execution with the information provided in the
@@ -237,8 +239,9 @@ public abstract class AdHocCommand {
* @param response the form answer of the previous stage.
* @throws XMPPErrorException if there is a problem executing the command.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public abstract void complete(Form response) throws NoResponseException, XMPPErrorException, NotConnectedException;
+ public abstract void complete(Form response) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException;
/**
* Goes to the previous stage. The requester is asking to re-send the
@@ -248,8 +251,9 @@ public abstract class AdHocCommand {
*
* @throws XMPPErrorException if there is a problem executing the command.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public abstract void prev() throws NoResponseException, XMPPErrorException, NotConnectedException;
+ public abstract void prev() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException;
/**
* Cancels the execution of the command. This can be invoked on any stage of
@@ -258,8 +262,9 @@ public abstract class AdHocCommand {
*
* @throws XMPPErrorException if there is a problem executing the command.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public abstract void cancel() throws NoResponseException, XMPPErrorException, NotConnectedException;
+ public abstract void cancel() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException;
/**
* Returns a collection with the allowed actions based on the current stage.
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommandManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommandManager.java
index e6c2add0b..b550a3670 100755
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommandManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommandManager.java
@@ -175,7 +175,7 @@ public class AdHocCommandManager extends Manager {
try {
return processAdHocCommand(requestData);
}
- catch (NoResponseException | NotConnectedException e) {
+ catch (InterruptedException | NoResponseException | NotConnectedException e) {
LOGGER.log(Level.INFO, "processAdHocCommand threw exceptino", e);
return null;
}
@@ -252,8 +252,9 @@ public class AdHocCommandManager extends Manager {
* @return the discovered items.
* @throws XMPPException if the operation failed for some reason.
* @throws SmackException if there was no response from the server.
+ * @throws InterruptedException
*/
- public DiscoverItems discoverCommands(String jid) throws XMPPException, SmackException {
+ public DiscoverItems discoverCommands(String jid) throws XMPPException, SmackException, InterruptedException {
return serviceDiscoveryManager.discoverItems(jid, NAMESPACE);
}
@@ -263,8 +264,9 @@ public class AdHocCommandManager extends Manager {
* @param jid the full JID to publish the commands to.
* @throws XMPPException if the operation failed for some reason.
* @throws SmackException if there was no response from the server.
+ * @throws InterruptedException
*/
- public void publishCommands(String jid) throws XMPPException, SmackException {
+ public void publishCommands(String jid) throws XMPPException, SmackException, InterruptedException {
// Collects the commands to publish as items
DiscoverItems discoverItems = new DiscoverItems();
Collection xCommandsList = getRegisteredCommands();
@@ -318,8 +320,9 @@ public class AdHocCommandManager extends Manager {
* the packet to process.
* @throws NotConnectedException
* @throws NoResponseException
+ * @throws InterruptedException
*/
- private IQ processAdHocCommand(AdHocCommandData requestData) throws NoResponseException, NotConnectedException {
+ private IQ processAdHocCommand(AdHocCommandData requestData) throws NoResponseException, NotConnectedException, InterruptedException {
// Creates the response with the corresponding data
AdHocCommandData response = new AdHocCommandData();
response.setTo(requestData.getFrom());
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/RemoteCommand.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/RemoteCommand.java
index f4d4d96d2..ff62d5f6c 100755
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/RemoteCommand.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/RemoteCommand.java
@@ -72,17 +72,17 @@ public class RemoteCommand extends AdHocCommand {
}
@Override
- public void cancel() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void cancel() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
executeAction(Action.cancel);
}
@Override
- public void complete(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void complete(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
executeAction(Action.complete, form);
}
@Override
- public void execute() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void execute() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
executeAction(Action.execute);
}
@@ -95,22 +95,23 @@ public class RemoteCommand extends AdHocCommand {
* @throws XMPPErrorException if an error occurs.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void execute(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void execute(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
executeAction(Action.execute, form);
}
@Override
- public void next(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void next(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
executeAction(Action.next, form);
}
@Override
- public void prev() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void prev() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
executeAction(Action.prev);
}
- private void executeAction(Action action) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private void executeAction(Action action) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
executeAction(action, null);
}
@@ -124,8 +125,9 @@ public class RemoteCommand extends AdHocCommand {
* @throws XMPPErrorException if there is a problem executing the command.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private void executeAction(Action action, Form form) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private void executeAction(Action action, Form form) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// TODO: Check that all the required fields of the form were filled, if
// TODO: not throw the corresponding exeption. This will make a faster response,
// TODO: since the request is stoped before it's sent.
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/disco/ServiceDiscoveryManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/disco/ServiceDiscoveryManager.java
index 267bd2e11..0f0eee27d 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/disco/ServiceDiscoveryManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/disco/ServiceDiscoveryManager.java
@@ -475,8 +475,9 @@ public class ServiceDiscoveryManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public DiscoverInfo discoverInfo(String entityID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public DiscoverInfo discoverInfo(String entityID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
if (entityID == null)
return discoverInfo(null, null);
@@ -520,8 +521,9 @@ public class ServiceDiscoveryManager extends Manager {
* @throws XMPPErrorException if the operation failed for some reason.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public DiscoverInfo discoverInfo(String entityID, String node) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public DiscoverInfo discoverInfo(String entityID, String node) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// Discover the entity's info
DiscoverInfo disco = new DiscoverInfo();
disco.setType(IQ.Type.get);
@@ -541,8 +543,9 @@ public class ServiceDiscoveryManager extends Manager {
* @throws XMPPErrorException if the operation failed for some reason.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public DiscoverItems discoverItems(String entityID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public DiscoverItems discoverItems(String entityID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return discoverItems(entityID, null);
}
@@ -557,8 +560,9 @@ public class ServiceDiscoveryManager extends Manager {
* @throws XMPPErrorException if the operation failed for some reason.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public DiscoverItems discoverItems(String entityID, String node) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public DiscoverItems discoverItems(String entityID, String node) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// Discover the entity's items
DiscoverItems disco = new DiscoverItems();
disco.setType(IQ.Type.get);
@@ -580,8 +584,9 @@ public class ServiceDiscoveryManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean canPublishItems(String entityID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean canPublishItems(String entityID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
DiscoverInfo info = discoverInfo(entityID);
return canPublishItems(info);
}
@@ -610,8 +615,9 @@ public class ServiceDiscoveryManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void publishItems(String entityID, DiscoverItems discoverItems) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void publishItems(String entityID, DiscoverItems discoverItems) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
publishItems(entityID, null, discoverItems);
}
@@ -627,8 +633,9 @@ public class ServiceDiscoveryManager extends Manager {
* @throws XMPPErrorException if the operation failed for some reason.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void publishItems(String entityID, String node, DiscoverItems discoverItems) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void publishItems(String entityID, String node, DiscoverItems discoverItems) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
discoverItems.setType(IQ.Type.set);
discoverItems.setTo(entityID);
@@ -645,10 +652,11 @@ public class ServiceDiscoveryManager extends Manager {
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
* @since 4.1
*/
public boolean serverSupportsFeature(String feature) throws NoResponseException, XMPPErrorException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
return supportsFeature(connection().getServiceName(), feature);
}
@@ -661,8 +669,9 @@ public class ServiceDiscoveryManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean supportsFeature(String jid, String feature) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean supportsFeature(String jid, String feature) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
DiscoverInfo result = discoverInfo(jid);
return result.containsFeature(feature);
}
@@ -684,9 +693,10 @@ public class ServiceDiscoveryManager extends Manager {
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public List findServices(String feature, boolean stopOnFirst, boolean useCache)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
List serviceAddresses = null;
String serviceName = connection().getServiceName();
if (useCache) {
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FaultTolerantNegotiator.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FaultTolerantNegotiator.java
index b93850279..312d48414 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FaultTolerantNegotiator.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FaultTolerantNegotiator.java
@@ -79,7 +79,7 @@ public class FaultTolerantNegotiator extends StreamNegotiator {
"method");
}
- public InputStream createIncomingStream(StreamInitiation initiation) throws SmackException {
+ public InputStream createIncomingStream(StreamInitiation initiation) throws SmackException, InterruptedException {
PacketCollector collector = connection.createPacketCollectorAndSend(
getInitiationPacketFilter(initiation.getFrom(), initiation.getSessionID()),
super.createInitiationAccept(initiation, getNamespaces()));
@@ -144,7 +144,7 @@ public class FaultTolerantNegotiator extends StreamNegotiator {
}
public OutputStream createOutgoingStream(String streamID, String initiator, String target)
- throws SmackException, XMPPException {
+ throws SmackException, XMPPException, InterruptedException {
OutputStream stream;
try {
stream = primaryNegotiator.createOutgoingStream(streamID, initiator, target);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferManager.java
index 47d80dc5a..05931cb31 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferManager.java
@@ -163,8 +163,9 @@ public class FileTransferManager extends Manager {
*
* @param request
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected void rejectIncomingFileTransfer(FileTransferRequest request) throws NotConnectedException {
+ protected void rejectIncomingFileTransfer(FileTransferRequest request) throws NotConnectedException, InterruptedException {
StreamInitiation initiation = request.getStreamInitiation();
// Reject as specified in XEP-95 4.2. Note that this is not to be confused with the Socks 5
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java
index 04dd26485..f678c051d 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java
@@ -181,9 +181,10 @@ public class FileTransferNegotiator extends Manager {
* there is not an appropriate stream method.
* @throws NotConnectedException
* @throws NoAcceptableTransferMechanisms
+ * @throws InterruptedException
*/
public StreamNegotiator selectStreamNegotiator(
- FileTransferRequest request) throws NotConnectedException, NoStreamMethodsOfferedException, NoAcceptableTransferMechanisms {
+ FileTransferRequest request) throws NotConnectedException, NoStreamMethodsOfferedException, NoAcceptableTransferMechanisms, InterruptedException {
StreamInitiation si = request.getStreamInitiation();
FormField streamMethodField = getStreamMethodField(si
.getFeatureNegotiationForm());
@@ -299,10 +300,11 @@ public class FileTransferNegotiator extends Manager {
* @throws NotConnectedException
* @throws NoResponseException
* @throws NoAcceptableTransferMechanisms
+ * @throws InterruptedException
*/
public StreamNegotiator negotiateOutgoingTransfer(final String userID,
final String streamID, final String fileName, final long size,
- final String desc, int responseTimeout) throws XMPPErrorException, NotConnectedException, NoResponseException, NoAcceptableTransferMechanisms {
+ final String desc, int responseTimeout) throws XMPPErrorException, NotConnectedException, NoResponseException, NoAcceptableTransferMechanisms, InterruptedException {
StreamInitiation si = new StreamInitiation();
si.setSessionID(streamID);
si.setMimeType(URLConnection.guessContentTypeFromName(fileName));
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferRequest.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferRequest.java
index 43cc7767b..75f672264 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferRequest.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferRequest.java
@@ -129,8 +129,9 @@ public class FileTransferRequest {
/**
* Rejects the file transfer request.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void reject() throws NotConnectedException {
+ public void reject() throws NotConnectedException, InterruptedException {
manager.rejectIncomingFileTransfer(this);
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/IBBTransferNegotiator.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/IBBTransferNegotiator.java
index 578f5ffdd..2cee14b03 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/IBBTransferNegotiator.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/IBBTransferNegotiator.java
@@ -63,14 +63,14 @@ public class IBBTransferNegotiator extends StreamNegotiator {
}
public OutputStream createOutgoingStream(String streamID, String initiator,
- String target) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ String target) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
InBandBytestreamSession session = this.manager.establishSession(target, streamID);
session.setCloseBothStreamsEnabled(true);
return session.getOutputStream();
}
public InputStream createIncomingStream(StreamInitiation initiation)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
/*
* In-Band Bytestream initiation listener must ignore next in-band bytestream request with
* given session ID
@@ -96,7 +96,7 @@ public class IBBTransferNegotiator extends StreamNegotiator {
return new String[] { DataPacketExtension.NAMESPACE };
}
- InputStream negotiateIncomingStream(Stanza streamInitiation) throws NotConnectedException {
+ InputStream negotiateIncomingStream(Stanza streamInitiation) throws NotConnectedException, InterruptedException {
// build In-Band Bytestream request
InBandBytestreamRequest request = new ByteStreamRequest(this.manager,
(Open) streamInitiation);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/IncomingFileTransfer.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/IncomingFileTransfer.java
index 72b843936..d8e63d3db 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/IncomingFileTransfer.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/IncomingFileTransfer.java
@@ -76,8 +76,9 @@ public class IncomingFileTransfer extends FileTransfer {
* @throws SmackException
* @throws XMPPErrorException If there is an error in the negotiation process an exception
* is thrown.
+ * @throws InterruptedException
*/
- public InputStream recieveFile() throws SmackException, XMPPErrorException {
+ public InputStream recieveFile() throws SmackException, XMPPErrorException, InterruptedException {
if (inputStream != null) {
throw new IllegalStateException("Transfer already negotiated!");
}
@@ -174,7 +175,7 @@ public class IncomingFileTransfer extends FileTransfer {
transferThread.start();
}
- private InputStream negotiateStream() throws SmackException, XMPPErrorException {
+ private InputStream negotiateStream() throws SmackException, XMPPErrorException, InterruptedException {
setStatus(Status.negotiating_transfer);
final StreamNegotiator streamNegotiator = negotiator
.selectStreamNegotiator(recieveRequest);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/OutgoingFileTransfer.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/OutgoingFileTransfer.java
index 9da7e8c2e..ed7207fe1 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/OutgoingFileTransfer.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/OutgoingFileTransfer.java
@@ -120,9 +120,10 @@ public class OutgoingFileTransfer extends FileTransfer {
* Thrown if an error occurs during the file transfer
* negotiation process.
* @throws SmackException if there was no response from the server.
+ * @throws InterruptedException
*/
public synchronized OutputStream sendFile(String fileName, long fileSize,
- String description) throws XMPPException, SmackException {
+ String description) throws XMPPException, SmackException, InterruptedException {
if (isDone() || outputStream != null) {
throw new IllegalStateException(
"The negotation process has already"
@@ -373,7 +374,7 @@ public class OutgoingFileTransfer extends FileTransfer {
}
private OutputStream negotiateStream(String fileName, long fileSize,
- String description) throws SmackException, XMPPException {
+ String description) throws SmackException, XMPPException, InterruptedException {
// Negotiate the file transfer profile
if (!updateStatus(Status.initial, Status.negotiating_transfer)) {
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/StreamNegotiator.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/StreamNegotiator.java
index 66df77f02..50d649857 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/StreamNegotiator.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/StreamNegotiator.java
@@ -72,7 +72,7 @@ public abstract class StreamNegotiator {
return response;
}
- Stanza initiateIncomingStream(XMPPConnection connection, StreamInitiation initiation) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ Stanza initiateIncomingStream(XMPPConnection connection, StreamInitiation initiation) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
StreamInitiation response = createInitiationAccept(initiation,
getNamespaces());
@@ -134,9 +134,10 @@ public abstract class StreamNegotiator {
* exception will be thrown.
* @throws SmackException
* @throws XMPPException
+ * @throws InterruptedException
*/
public abstract OutputStream createOutgoingStream(String streamID,
- String initiator, String target) throws XMPPErrorException, NoResponseException, SmackException, XMPPException;
+ String initiator, String target) throws XMPPErrorException, NoResponseException, SmackException, XMPPException, InterruptedException;
/**
* Returns the XMPP namespace reserved for this particular type of file
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqlast/LastActivityManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqlast/LastActivityManager.java
index b067f4dc2..6e8b03fae 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqlast/LastActivityManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqlast/LastActivityManager.java
@@ -231,9 +231,10 @@ public class LastActivityManager extends Manager {
* thrown if a server error has occured.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public LastActivity getLastActivity(String jid) throws NoResponseException, XMPPErrorException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
LastActivity activity = new LastActivity(jid);
return (LastActivity) connection().createPacketCollectorAndSend(activity).nextResultOrThrow();
}
@@ -246,8 +247,9 @@ public class LastActivityManager extends Manager {
* @throws NotConnectedException
* @throws XMPPErrorException
* @throws NoResponseException
+ * @throws InterruptedException
*/
- public boolean isLastActivitySupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean isLastActivitySupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid, LastActivity.NAMESPACE);
}
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqprivate/PrivateDataManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqprivate/PrivateDataManager.java
index 5c7b910b9..962e7efe2 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqprivate/PrivateDataManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqprivate/PrivateDataManager.java
@@ -153,8 +153,9 @@ public class PrivateDataManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public PrivateData getPrivateData(final String elementName, final String namespace) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public PrivateData getPrivateData(final String elementName, final String namespace) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
// Create an IQ packet to get the private data.
IQ privateDataGet = new PrivateDataIQ(elementName, namespace);
@@ -173,8 +174,9 @@ public class PrivateDataManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void setPrivateData(final PrivateData privateData) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void setPrivateData(final PrivateData privateData) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// Create an IQ packet to set the private data.
IQ privateDataSet = new PrivateDataIQ(privateData);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/AccountManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/AccountManager.java
index c701e5105..f3296c867 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/AccountManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/AccountManager.java
@@ -98,8 +98,9 @@ public class AccountManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean supportsAccountCreation() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean supportsAccountCreation() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// Check if we already know that the server supports creating new accounts
if (accountCreationSupported) {
return true;
@@ -140,8 +141,9 @@ public class AccountManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Set getAccountAttributes() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public Set getAccountAttributes() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
if (info == null) {
getRegistrationInfo();
}
@@ -163,8 +165,9 @@ public class AccountManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public String getAccountAttribute(String name) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public String getAccountAttribute(String name) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
if (info == null) {
getRegistrationInfo();
}
@@ -180,8 +183,9 @@ public class AccountManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public String getAccountInstructions() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public String getAccountInstructions() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
if (info == null) {
getRegistrationInfo();
}
@@ -201,8 +205,9 @@ public class AccountManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void createAccount(String username, String password) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void createAccount(String username, String password) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// Create a map for all the required attributes, but give them blank values.
Map attributes = new HashMap();
for (String attributeName : getAccountAttributes()) {
@@ -222,10 +227,11 @@ public class AccountManager extends Manager {
* @throws XMPPErrorException if an error occurs creating the account.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
* @see #getAccountAttributes()
*/
public void createAccount(String username, String password, Map attributes)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
attributes.put("username", username);
attributes.put("password", password);
Registration reg = new Registration(attributes);
@@ -243,8 +249,9 @@ public class AccountManager extends Manager {
* @throws XMPPErrorException if an error occurs when changing the password.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void changePassword(String newPassword) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void changePassword(String newPassword) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Map map = new HashMap();
map.put("username",XmppStringUtils.parseLocalpart(connection().getUser()));
map.put("password",newPassword);
@@ -263,8 +270,9 @@ public class AccountManager extends Manager {
* @throws XMPPErrorException if an error occurs when deleting the account.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void deleteAccount() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void deleteAccount() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Map attributes = new HashMap();
// To delete an account, we add a single attribute, "remove", that is blank.
attributes.put("remove", "");
@@ -279,17 +287,18 @@ public class AccountManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*
* @throws XMPPException if an error occurs.
* @throws SmackException if there was no response from the server.
*/
- private synchronized void getRegistrationInfo() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private synchronized void getRegistrationInfo() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Registration reg = new Registration();
reg.setTo(connection().getServiceName());
info = createPacketCollectorAndSend(reg).nextResultOrThrow();
}
- private PacketCollector createPacketCollectorAndSend(IQ req) throws NotConnectedException {
+ private PacketCollector createPacketCollectorAndSend(IQ req) throws NotConnectedException, InterruptedException {
PacketCollector collector = connection().createPacketCollectorAndSend(new PacketIDFilter(req.getStanzaId()), req);
return collector;
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqversion/VersionManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqversion/VersionManager.java
index c060863ec..2681d9b2d 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqversion/VersionManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqversion/VersionManager.java
@@ -124,7 +124,7 @@ public class VersionManager extends Manager {
}
public boolean isSupported(String jid) throws NoResponseException, XMPPErrorException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid,
Version.NAMESPACE);
}
@@ -137,9 +137,10 @@ public class VersionManager extends Manager {
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public Version getVersion(String jid) throws NoResponseException, XMPPErrorException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
if (!isSupported(jid)) {
return null;
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java
index 6679f3587..87d26566f 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java
@@ -269,11 +269,12 @@ public class MultiUserChat {
* @throws NotConnectedException
* @throws NoResponseException
* @throws XMPPErrorException
+ * @throws InterruptedException
* @see XEP-45 7.2 Entering a Room
*/
private Presence enter(String nickname, String password, DiscussionHistory history,
long timeout) throws NotConnectedException, NoResponseException,
- XMPPErrorException {
+ XMPPErrorException, InterruptedException {
StringUtils.requireNotNullOrEmpty(nickname, "Nickname must not be null or blank.");
// We enter a room by sending a presence packet where the "to"
// field is in the form "roomName@service/nickname"
@@ -310,7 +311,7 @@ public class MultiUserChat {
try {
presence = connection.createPacketCollectorAndSend(responseFilter, joinPresence).nextResultOrThrow(timeout);
}
- catch (NoResponseException | XMPPErrorException e) {
+ catch (InterruptedException | NoResponseException | XMPPErrorException e) {
// Ensure that all callbacks are removed if there is an exception
removeConnectionCallbacks();
throw e;
@@ -345,8 +346,9 @@ public class MultiUserChat {
* @throws NoResponseException if there was no response from the server.
* @throws SmackException If the creation failed because of a missing acknowledge from the
* server, e.g. because the room already existed.
+ * @throws InterruptedException
*/
- public synchronized void create(String nickname) throws NoResponseException, XMPPErrorException, SmackException {
+ public synchronized void create(String nickname) throws NoResponseException, XMPPErrorException, SmackException, InterruptedException {
if (joined) {
throw new IllegalStateException("Creation failed - User already joined the room.");
}
@@ -369,10 +371,11 @@ public class MultiUserChat {
* @throws NoResponseException
* @throws XMPPErrorException
* @throws SmackException
+ * @throws InterruptedException
* @see #createOrJoin(String, String, DiscussionHistory, long)
*/
public synchronized boolean createOrJoin(String nickname) throws NoResponseException, XMPPErrorException,
- SmackException {
+ SmackException, InterruptedException {
return createOrJoin(nickname, null, null, connection.getPacketReplyTimeout());
}
@@ -390,9 +393,10 @@ public class MultiUserChat {
* @throws XMPPErrorException if the room couldn't be created for some reason (e.g. 405 error if
* the user is not allowed to create the room)
* @throws NoResponseException if there was no response from the server.
+ * @throws InterruptedException
*/
public synchronized boolean createOrJoin(String nickname, String password, DiscussionHistory history, long timeout)
- throws NoResponseException, XMPPErrorException, SmackException {
+ throws NoResponseException, XMPPErrorException, SmackException, InterruptedException {
if (joined) {
throw new IllegalStateException("Creation failed - User already joined the room.");
}
@@ -425,8 +429,9 @@ public class MultiUserChat {
* 409 error can occur if someone is already in the group chat with the same nickname.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void join(String nickname) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void join(String nickname) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
join(nickname, null, null, connection.getPacketReplyTimeout());
}
@@ -449,8 +454,9 @@ public class MultiUserChat {
* 407 error can occur if user is not on the member list; or a
* 409 error can occur if someone is already in the group chat with the same nickname.
* @throws SmackException if there was no response from the server.
+ * @throws InterruptedException
*/
- public void join(String nickname, String password) throws XMPPErrorException, SmackException {
+ public void join(String nickname, String password) throws XMPPErrorException, SmackException, InterruptedException {
join(nickname, password, null, connection.getPacketReplyTimeout());
}
@@ -480,13 +486,14 @@ public class MultiUserChat {
* 409 error can occur if someone is already in the group chat with the same nickname.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public synchronized void join(
String nickname,
String password,
DiscussionHistory history,
long timeout)
- throws XMPPErrorException, NoResponseException, NotConnectedException {
+ throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
// If we've already joined the room, leave it before joining under a new
// nickname.
if (joined) {
@@ -508,8 +515,9 @@ public class MultiUserChat {
/**
* Leave the chat room.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public synchronized void leave() throws NotConnectedException {
+ public synchronized void leave() throws NotConnectedException, InterruptedException {
// If not joined already, do nothing.
if (!joined) {
return;
@@ -536,8 +544,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs asking the configuration form for the room.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Form getConfigurationForm() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public Form getConfigurationForm() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
MUCOwner iq = new MUCOwner();
iq.setTo(room);
iq.setType(IQ.Type.get);
@@ -555,8 +564,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs setting the new rooms' configuration.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendConfigurationForm(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void sendConfigurationForm(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
MUCOwner iq = new MUCOwner();
iq.setTo(room);
iq.setType(IQ.Type.set);
@@ -580,8 +590,9 @@ public class MultiUserChat {
* 405 error if the user is not allowed to register with the room.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Form getRegistrationForm() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public Form getRegistrationForm() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Registration reg = new Registration();
reg.setType(IQ.Type.get);
reg.setTo(room);
@@ -605,8 +616,9 @@ public class MultiUserChat {
* or a 503 error can occur if the room does not support registration.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendRegistrationForm(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void sendRegistrationForm(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Registration reg = new Registration();
reg.setType(IQ.Type.set);
reg.setTo(room);
@@ -628,8 +640,9 @@ public class MultiUserChat {
* appropiate error messages to end-users.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void destroy(String reason, String alternateJID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void destroy(String reason, String alternateJID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
MUCOwner iq = new MUCOwner();
iq.setTo(room);
iq.setType(IQ.Type.set);
@@ -659,8 +672,9 @@ public class MultiUserChat {
* @param user the user to invite to the room.(e.g. hecate@shakespeare.lit)
* @param reason the reason why the user is being invited.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void invite(String user, String reason) throws NotConnectedException {
+ public void invite(String user, String reason) throws NotConnectedException, InterruptedException {
invite(new Message(), user, reason);
}
@@ -675,8 +689,9 @@ public class MultiUserChat {
* @param user the user to invite to the room.(e.g. hecate@shakespeare.lit)
* @param reason the reason why the user is being invited.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void invite(Message message, String user, String reason) throws NotConnectedException {
+ public void invite(Message message, String user, String reason) throws NotConnectedException, InterruptedException {
// TODO listen for 404 error code when inviter supplies a non-existent JID
message.setTo(room);
@@ -800,8 +815,9 @@ public class MultiUserChat {
*
* @return the reserved room nickname or null if none.
* @throws SmackException if there was no response from the server.
+ * @throws InterruptedException
*/
- public String getReservedNickname() throws SmackException {
+ public String getReservedNickname() throws SmackException, InterruptedException {
try {
DiscoverInfo result =
ServiceDiscoveryManager.getInstanceFor(connection).discoverInfo(
@@ -840,8 +856,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if the new nickname is already in use by another occupant.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void changeNickname(String nickname) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void changeNickname(String nickname) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
StringUtils.requireNotNullOrEmpty(nickname, "Nickname must not be null or blank.");
// Check that we already have joined the room before attempting to change the
// nickname.
@@ -875,8 +892,9 @@ public class MultiUserChat {
* @param status a text message describing the presence update.
* @param mode the mode type for the presence update.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void changeAvailabilityStatus(String status, Presence.Mode mode) throws NotConnectedException {
+ public void changeAvailabilityStatus(String status, Presence.Mode mode) throws NotConnectedException, InterruptedException {
StringUtils.requireNotNullOrEmpty(nickname, "Nickname must not be null or blank.");
// Check that we already have joined the room before attempting to change the
// availability status.
@@ -914,8 +932,9 @@ public class MultiUserChat {
* 400 error can occur if the provided nickname is not present in the room.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void kickParticipant(String nickname, String reason) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void kickParticipant(String nickname, String reason) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeRole(nickname, MUCRole.none, reason);
}
@@ -923,11 +942,12 @@ public class MultiUserChat {
* Sends a voice request to the MUC. The room moderators usually need to approve this request.
*
* @throws NotConnectedException
+ * @throws InterruptedException
* @see XEP-45 § 7.13 Requesting
* Voice
* @since 4.1
*/
- public void requestVoice() throws NotConnectedException {
+ public void requestVoice() throws NotConnectedException, InterruptedException {
DataForm form = new DataForm(DataForm.Type.submit);
FormField formTypeField = new FormField(FormField.FORM_TYPE);
formTypeField.addValue(MUCInitialPresence.NAMESPACE + "#request");
@@ -954,8 +974,9 @@ public class MultiUserChat {
* 400 error can occur if the provided nickname is not present in the room.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void grantVoice(Collection nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void grantVoice(Collection nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeRole(nicknames, MUCRole.participant);
}
@@ -971,8 +992,9 @@ public class MultiUserChat {
* 400 error can occur if the provided nickname is not present in the room.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void grantVoice(String nickname) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void grantVoice(String nickname) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeRole(nickname, MUCRole.participant, null);
}
@@ -988,8 +1010,9 @@ public class MultiUserChat {
* 400 error can occur if the provided nickname is not present in the room.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void revokeVoice(Collection nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void revokeVoice(Collection nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeRole(nicknames, MUCRole.visitor);
}
@@ -1005,8 +1028,9 @@ public class MultiUserChat {
* 400 error can occur if the provided nickname is not present in the room.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void revokeVoice(String nickname) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void revokeVoice(String nickname) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeRole(nickname, MUCRole.visitor, null);
}
@@ -1023,8 +1047,9 @@ public class MultiUserChat {
* was tried to be banned (i.e. Not Allowed error).
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void banUsers(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void banUsers(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jids, MUCAffiliation.outcast);
}
@@ -1042,8 +1067,9 @@ public class MultiUserChat {
* was tried to be banned (i.e. Not Allowed error).
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void banUser(String jid, String reason) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void banUser(String jid, String reason) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jid, MUCAffiliation.outcast, reason);
}
@@ -1056,8 +1082,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs granting membership to a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void grantMembership(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void grantMembership(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jids, MUCAffiliation.member);
}
@@ -1070,8 +1097,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs granting membership to a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void grantMembership(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void grantMembership(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jid, MUCAffiliation.member, null);
}
@@ -1085,8 +1113,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs revoking membership to a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void revokeMembership(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void revokeMembership(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jids, MUCAffiliation.none);
}
@@ -1100,8 +1129,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs revoking membership to a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void revokeMembership(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void revokeMembership(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jid, MUCAffiliation.none, null);
}
@@ -1114,8 +1144,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs granting moderator privileges to a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void grantModerator(Collection nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void grantModerator(Collection nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeRole(nicknames, MUCRole.moderator);
}
@@ -1128,8 +1159,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs granting moderator privileges to a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void grantModerator(String nickname) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void grantModerator(String nickname) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeRole(nickname, MUCRole.moderator, null);
}
@@ -1143,8 +1175,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs revoking moderator privileges from a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void revokeModerator(Collection nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void revokeModerator(Collection nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeRole(nicknames, MUCRole.participant);
}
@@ -1158,8 +1191,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs revoking moderator privileges from a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void revokeModerator(String nickname) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void revokeModerator(String nickname) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeRole(nickname, MUCRole.participant, null);
}
@@ -1173,8 +1207,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs granting ownership privileges to a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void grantOwnership(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void grantOwnership(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jids, MUCAffiliation.owner);
}
@@ -1188,8 +1223,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs granting ownership privileges to a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void grantOwnership(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void grantOwnership(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jid, MUCAffiliation.owner, null);
}
@@ -1202,8 +1238,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs revoking ownership privileges from a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void revokeOwnership(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void revokeOwnership(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jids, MUCAffiliation.admin);
}
@@ -1216,8 +1253,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs revoking ownership privileges from a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void revokeOwnership(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void revokeOwnership(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jid, MUCAffiliation.admin, null);
}
@@ -1230,8 +1268,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs granting administrator privileges to a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void grantAdmin(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void grantAdmin(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jids, MUCAffiliation.admin);
}
@@ -1245,8 +1284,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs granting administrator privileges to a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void grantAdmin(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void grantAdmin(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jid, MUCAffiliation.admin);
}
@@ -1259,8 +1299,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs revoking administrator privileges from a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void revokeAdmin(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void revokeAdmin(Collection jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jids, MUCAffiliation.admin);
}
@@ -1274,8 +1315,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if an error occurs revoking administrator privileges from a user.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void revokeAdmin(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException {
+ public void revokeAdmin(String jid) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jid, MUCAffiliation.member);
}
@@ -1287,10 +1329,11 @@ public class MultiUserChat {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
private void changeAffiliationByAdmin(String jid, MUCAffiliation affiliation)
throws NoResponseException, XMPPErrorException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
changeAffiliationByAdmin(jid, affiliation, null);
}
@@ -1303,8 +1346,9 @@ public class MultiUserChat {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private void changeAffiliationByAdmin(String jid, MUCAffiliation affiliation, String reason) throws NoResponseException, XMPPErrorException, NotConnectedException
+ private void changeAffiliationByAdmin(String jid, MUCAffiliation affiliation, String reason) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
MUCAdmin iq = new MUCAdmin();
iq.setTo(room);
@@ -1317,7 +1361,7 @@ public class MultiUserChat {
}
private void changeAffiliationByAdmin(Collection jids, MUCAffiliation affiliation)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
MUCAdmin iq = new MUCAdmin();
iq.setTo(room);
iq.setType(IQ.Type.set);
@@ -1330,7 +1374,7 @@ public class MultiUserChat {
connection.createPacketCollectorAndSend(iq).nextResultOrThrow();
}
- private void changeRole(String nickname, MUCRole role, String reason) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private void changeRole(String nickname, MUCRole role, String reason) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
MUCAdmin iq = new MUCAdmin();
iq.setTo(room);
iq.setType(IQ.Type.set);
@@ -1341,7 +1385,7 @@ public class MultiUserChat {
connection.createPacketCollectorAndSend(iq).nextResultOrThrow();
}
- private void changeRole(Collection nicknames, MUCRole role) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private void changeRole(Collection nicknames, MUCRole role) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
MUCAdmin iq = new MUCAdmin();
iq.setTo(room);
iq.setType(IQ.Type.set);
@@ -1445,8 +1489,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if you don't have enough privileges to get this information.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getOwners() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getOwners() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return getAffiliatesByAdmin(MUCAffiliation.owner);
}
@@ -1457,8 +1502,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if you don't have enough privileges to get this information.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getAdmins() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getAdmins() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return getAffiliatesByAdmin(MUCAffiliation.admin);
}
@@ -1469,8 +1515,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if you don't have enough privileges to get this information.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getMembers() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getMembers() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return getAffiliatesByAdmin(MUCAffiliation.member);
}
@@ -1481,8 +1528,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if you don't have enough privileges to get this information.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getOutcasts() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getOutcasts() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return getAffiliatesByAdmin(MUCAffiliation.outcast);
}
@@ -1495,8 +1543,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if you don't have enough privileges to get this information.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private List getAffiliatesByAdmin(MUCAffiliation affiliation) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private List getAffiliatesByAdmin(MUCAffiliation affiliation) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
MUCAdmin iq = new MUCAdmin();
iq.setTo(room);
iq.setType(IQ.Type.get);
@@ -1521,8 +1570,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if you don't have enough privileges to get this information.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getModerators() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getModerators() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return getOccupants(MUCRole.moderator);
}
@@ -1533,8 +1583,9 @@ public class MultiUserChat {
* @throws XMPPErrorException if you don't have enough privileges to get this information.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getParticipants() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getParticipants() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return getOccupants(MUCRole.participant);
}
@@ -1547,8 +1598,9 @@ public class MultiUserChat {
* don't have enough privileges to get this information.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private List getOccupants(MUCRole role) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private List getOccupants(MUCRole role) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
MUCAdmin iq = new MUCAdmin();
iq.setTo(room);
iq.setType(IQ.Type.get);
@@ -1571,8 +1623,9 @@ public class MultiUserChat {
* @param text the text of the message to send.
* @throws XMPPException if sending the message fails.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendMessage(String text) throws XMPPException, NotConnectedException {
+ public void sendMessage(String text) throws XMPPException, NotConnectedException, InterruptedException {
Message message = createMessage();
message.setBody(text);
connection.sendPacket(message);
@@ -1608,8 +1661,9 @@ public class MultiUserChat {
* @param message the message.
* @throws XMPPException if sending the message fails.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendMessage(Message message) throws XMPPException, NotConnectedException {
+ public void sendMessage(Message message) throws XMPPException, NotConnectedException, InterruptedException {
message.setTo(room);
message.setType(Message.Type.groupchat);
connection.sendPacket(message);
@@ -1640,8 +1694,9 @@ public class MultiUserChat {
*
* @return the next message.
* @throws MUCNotJoinedException
+ * @throws InterruptedException
*/
- public Message nextMessage() throws MUCNotJoinedException {
+ public Message nextMessage() throws MUCNotJoinedException, InterruptedException {
if (messageCollector == null) {
throw new MUCNotJoinedException(this);
}
@@ -1657,8 +1712,9 @@ public class MultiUserChat {
* @return the next message, or null if the timeout elapses without a
* message becoming available.
* @throws MUCNotJoinedException
+ * @throws InterruptedException
*/
- public Message nextMessage(long timeout) throws MUCNotJoinedException {
+ public Message nextMessage(long timeout) throws MUCNotJoinedException, InterruptedException {
if (messageCollector == null) {
throw new MUCNotJoinedException(this);
}
@@ -1702,8 +1758,9 @@ public class MultiUserChat {
* room subject will throw an error with code 403 (i.e. Forbidden)
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void changeSubject(final String subject) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void changeSubject(final String subject) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Message message = createMessage();
message.setSubject(subject);
// Wait for an error or confirmation message back from the server.
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChatManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChatManager.java
index be0a414f5..f55ba50b8 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChatManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChatManager.java
@@ -174,8 +174,9 @@ public class MultiUserChatManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean isServiceEnabled(String user) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean isServiceEnabled(String user) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(user, MUCInitialPresence.NAMESPACE);
}
@@ -198,9 +199,10 @@ public class MultiUserChatManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public List getJoinedRooms(String user) throws NoResponseException, XMPPErrorException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
// Send the disco packet to the user
DiscoverItems result = ServiceDiscoveryManager.getInstanceFor(connection()).discoverItems(user, DISCO_NODE);
List items = result.getItems();
@@ -221,8 +223,9 @@ public class MultiUserChatManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public RoomInfo getRoomInfo(String room) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public RoomInfo getRoomInfo(String room) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
DiscoverInfo info = ServiceDiscoveryManager.getInstanceFor(connection()).discoverInfo(room);
return new RoomInfo(info);
}
@@ -234,8 +237,9 @@ public class MultiUserChatManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getServiceNames() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getServiceNames() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection());
return sdm.findServices(MUCInitialPresence.NAMESPACE, false, false);
}
@@ -250,9 +254,10 @@ public class MultiUserChatManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public List getHostedRooms(String serviceName) throws NoResponseException, XMPPErrorException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(connection());
DiscoverItems discoverItems = discoManager.discoverItems(serviceName);
List items = discoverItems.getItems();
@@ -271,8 +276,9 @@ public class MultiUserChatManager extends Manager {
* @param inviter the inviter of the declined invitation.
* @param reason the reason why the invitee is declining the invitation.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void decline(String room, String inviter, String reason) throws NotConnectedException {
+ public void decline(String room, String inviter, String reason) throws NotConnectedException, InterruptedException {
Message message = new Message(room);
// Create the MUCUser packet that will include the rejection
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/OfflineMessageManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/OfflineMessageManager.java
index 8fdf948d0..0e84e6956 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/OfflineMessageManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/OfflineMessageManager.java
@@ -76,8 +76,9 @@ public class OfflineMessageManager {
* @throws XMPPErrorException If the user is not allowed to make this request.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean supportsFlexibleRetrieval() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean supportsFlexibleRetrieval() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection).serverSupportsFeature(namespace);
}
@@ -89,8 +90,9 @@ public class OfflineMessageManager {
* not support offline message retrieval.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public int getMessageCount() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public int getMessageCount() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
DiscoverInfo info = ServiceDiscoveryManager.getInstanceFor(connection).discoverInfo(null,
namespace);
Form extendedInfo = Form.getFormFrom(info);
@@ -112,8 +114,9 @@ public class OfflineMessageManager {
* not support offline message retrieval.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getHeaders() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getHeaders() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
List answer = new ArrayList();
DiscoverItems items = ServiceDiscoveryManager.getInstanceFor(connection).discoverItems(
null, namespace);
@@ -136,8 +139,9 @@ public class OfflineMessageManager {
* not support offline message retrieval.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getMessages(final List nodes) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getMessages(final List nodes) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
List messages = new ArrayList();
OfflineMessageRequest request = new OfflineMessageRequest();
for (String node : nodes) {
@@ -180,8 +184,9 @@ public class OfflineMessageManager {
* not support offline message retrieval.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getMessages() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getMessages() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
OfflineMessageRequest request = new OfflineMessageRequest();
request.setFetch(true);
@@ -219,8 +224,9 @@ public class OfflineMessageManager {
* not support offline message retrieval.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void deleteMessages(List nodes) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void deleteMessages(List nodes) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
OfflineMessageRequest request = new OfflineMessageRequest();
for (String node : nodes) {
OfflineMessageRequest.Item item = new OfflineMessageRequest.Item(node);
@@ -237,8 +243,9 @@ public class OfflineMessageManager {
* not support offline message retrieval.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void deleteMessages() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void deleteMessages() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
OfflineMessageRequest request = new OfflineMessageRequest();
request.setPurge(true);
connection.createPacketCollectorAndSend(request).nextResultOrThrow();
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pep/PEPManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pep/PEPManager.java
index 3e476b047..0be4e1b51 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pep/PEPManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pep/PEPManager.java
@@ -107,8 +107,9 @@ public class PEPManager {
*
* @param item the item to publish.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void publish(PEPItem item) throws NotConnectedException {
+ public void publish(PEPItem item) throws NotConnectedException, InterruptedException {
// Create a new message to publish the event.
PEPPubSub pubSub = new PEPPubSub(item);
pubSub.setType(Type.set);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/ping/PingManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/ping/PingManager.java
index 35d9d8593..a8c572827 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/ping/PingManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/ping/PingManager.java
@@ -155,8 +155,9 @@ public class PingManager extends Manager {
* @return true if a reply was received from the entity, false otherwise.
* @throws NoResponseException if there was no response from the jid.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean ping(String jid, long pingTimeout) throws NotConnectedException, NoResponseException {
+ public boolean ping(String jid, long pingTimeout) throws NotConnectedException, NoResponseException, InterruptedException {
final XMPPConnection connection = connection();
// Packet collector for IQs needs an connection that was at least authenticated once,
// otherwise the client JID will be null causing an NPE
@@ -181,8 +182,9 @@ public class PingManager extends Manager {
* @return true if a reply was received from the entity, false otherwise.
* @throws NotConnectedException
* @throws NoResponseException if there was no response from the jid.
+ * @throws InterruptedException
*/
- public boolean ping(String jid) throws NotConnectedException, NoResponseException {
+ public boolean ping(String jid) throws NotConnectedException, NoResponseException, InterruptedException {
return ping(jid, connection().getPacketReplyTimeout());
}
@@ -194,8 +196,9 @@ public class PingManager extends Manager {
* @throws XMPPErrorException An XMPP related error occurred during the request
* @throws NoResponseException if there was no response from the jid.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean isPingSupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean isPingSupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid, Ping.NAMESPACE);
}
@@ -208,8 +211,9 @@ public class PingManager extends Manager {
*
* @return true if a reply was received from the server, false otherwise.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean pingMyServer() throws NotConnectedException {
+ public boolean pingMyServer() throws NotConnectedException, InterruptedException {
return pingMyServer(true);
}
@@ -223,8 +227,9 @@ public class PingManager extends Manager {
* @param notifyListeners Notify the PingFailedListener in case of error if true
* @return true if the user's server could be pinged.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean pingMyServer(boolean notifyListeners) throws NotConnectedException {
+ public boolean pingMyServer(boolean notifyListeners) throws NotConnectedException, InterruptedException {
return pingMyServer(notifyListeners, connection().getPacketReplyTimeout());
}
@@ -239,8 +244,9 @@ public class PingManager extends Manager {
* @param pingTimeout The time to wait for a reply in milliseconds
* @return true if the user's server could be pinged.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean pingMyServer(boolean notifyListeners, long pingTimeout) throws NotConnectedException {
+ public boolean pingMyServer(boolean notifyListeners, long pingTimeout) throws NotConnectedException, InterruptedException {
boolean res;
try {
res = ping(connection().getServiceName(), pingTimeout);
@@ -369,8 +375,8 @@ public class PingManager extends Manager {
try {
res = pingMyServer(false);
}
- catch (SmackException e) {
- LOGGER.log(Level.WARNING, "SmackError while pinging server", e);
+ catch (InterruptedException | SmackException e) {
+ LOGGER.log(Level.WARNING, "Exception while pinging server", e);
res = false;
}
// stop when we receive a pong back
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/privacy/PrivacyListManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/privacy/PrivacyListManager.java
index 3b539d918..6db69d748 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/privacy/PrivacyListManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/privacy/PrivacyListManager.java
@@ -224,8 +224,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private Privacy getRequest(Privacy requestPrivacy) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private Privacy getRequest(Privacy requestPrivacy) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// The request is a get iq type
requestPrivacy.setType(Privacy.Type.get);
@@ -242,8 +243,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private Stanza setRequest(Privacy requestPrivacy) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private Stanza setRequest(Privacy requestPrivacy) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// The request is a get iq type
requestPrivacy.setType(Privacy.Type.set);
@@ -257,8 +259,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private Privacy getPrivacyWithListNames() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private Privacy getPrivacyWithListNames() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// The request of the list is an empty privacy message
Privacy request = new Privacy();
@@ -273,8 +276,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public PrivacyList getActiveList() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public PrivacyList getActiveList() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Privacy privacyAnswer = this.getPrivacyWithListNames();
String listName = privacyAnswer.getActiveName();
boolean isDefaultAndActive = listName != null && listName.equals(privacyAnswer.getDefaultName());
@@ -288,9 +292,10 @@ public class PrivacyListManager extends Manager {
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
* @since 4.1
*/
- public String getActiveListName() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public String getActiveListName() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
if (cachedActiveListName != null) {
return cachedActiveListName;
}
@@ -304,8 +309,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public PrivacyList getDefaultList() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public PrivacyList getDefaultList() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Privacy privacyAnswer = this.getPrivacyWithListNames();
String listName = privacyAnswer.getDefaultName();
boolean isDefaultAndActive = listName != null && listName.equals(privacyAnswer.getActiveName());
@@ -319,9 +325,10 @@ public class PrivacyListManager extends Manager {
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
* @since 4.1
*/
- public String getDefaultListName() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public String getDefaultListName() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
if (cachedDefaultListName != null) {
return cachedDefaultListName;
}
@@ -339,9 +346,10 @@ public class PrivacyListManager extends Manager {
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
* @since 4.1
*/
- public String getEffectiveListName() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public String getEffectiveListName() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
String activeListName = getActiveListName();
if (activeListName != null) {
return activeListName;
@@ -357,8 +365,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private List getPrivacyListItems(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private List getPrivacyListItems(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// The request of the list is an privacy message with an empty list
Privacy request = new Privacy();
request.setPrivacyList(listName, new ArrayList());
@@ -377,8 +386,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public PrivacyList getPrivacyList(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public PrivacyList getPrivacyList(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return new PrivacyList(false, false, listName, getPrivacyListItems(listName));
}
@@ -389,8 +399,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getPrivacyLists() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getPrivacyLists() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Privacy privacyAnswer = getPrivacyWithListNames();
Set names = privacyAnswer.getPrivacyListNames();
List lists = new ArrayList<>(names.size());
@@ -410,8 +421,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void setActiveListName(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void setActiveListName(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// The request of the list is an privacy message with an empty list
Privacy request = new Privacy();
request.setActiveName(listName);
@@ -425,8 +437,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void declineActiveList() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void declineActiveList() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// The request of the list is an privacy message with an empty list
Privacy request = new Privacy();
request.setDeclineActiveList(true);
@@ -442,8 +455,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void setDefaultListName(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void setDefaultListName(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// The request of the list is an privacy message with an empty list
Privacy request = new Privacy();
request.setDefaultName(listName);
@@ -457,8 +471,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void declineDefaultList() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void declineDefaultList() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// The request of the list is an privacy message with an empty list
Privacy request = new Privacy();
request.setDeclineDefaultList(true);
@@ -475,8 +490,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void createPrivacyList(String listName, List privacyItems) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void createPrivacyList(String listName, List privacyItems) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
updatePrivacyList(listName, privacyItems);
}
@@ -490,8 +506,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void updatePrivacyList(String listName, List privacyItems) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void updatePrivacyList(String listName, List privacyItems) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// Build the privacy package to add or update the new list
Privacy request = new Privacy();
request.setPrivacyList(listName, privacyItems);
@@ -507,8 +524,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void deletePrivacyList(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void deletePrivacyList(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// The request of the list is an privacy message with an empty list
Privacy request = new Privacy();
request.setPrivacyList(listName, new ArrayList());
@@ -545,8 +563,9 @@ public class PrivacyListManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean isSupported() throws NoResponseException, XMPPErrorException, NotConnectedException{
+ public boolean isSupported() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException{
return ServiceDiscoveryManager.getInstanceFor(connection()).serverSupportsFeature(NAMESPACE);
}
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/LeafNode.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/LeafNode.java
index ee9aa2777..891782e97 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/LeafNode.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/LeafNode.java
@@ -52,8 +52,9 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public DiscoverItems discoverItems() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public DiscoverItems discoverItems() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
DiscoverItems items = new DiscoverItems();
items.setTo(to);
@@ -68,8 +69,9 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getItems() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public List getItems() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
return getItems((List) null, (List) null);
}
@@ -85,8 +87,9 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getItems(String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public List getItems(String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId(), subscriptionId));
return getItems(request);
@@ -105,8 +108,9 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getItems(Collection ids) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public List getItems(Collection ids) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
List- itemList = new ArrayList
- (ids.size());
@@ -127,8 +131,9 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getItems(int maxItems) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public List getItems(int maxItems) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId(), maxItems));
return getItems(request);
@@ -146,8 +151,9 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getItems(int maxItems, String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public List getItems(int maxItems, String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId(), subscriptionId, maxItems));
return getItems(request);
@@ -168,24 +174,25 @@ public class LeafNode extends Node
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public List getItems(List additionalExtensions,
List returnedExtensions) throws NoResponseException,
- XMPPErrorException, NotConnectedException {
+ XMPPErrorException, NotConnectedException, InterruptedException {
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId()));
request.addExtensions(additionalExtensions);
return getItems(request, returnedExtensions);
}
private List getItems(PubSub request) throws NoResponseException,
- XMPPErrorException, NotConnectedException {
+ XMPPErrorException, NotConnectedException, InterruptedException {
return getItems(request, null);
}
@SuppressWarnings("unchecked")
private List getItems(PubSub request,
List returnedExtensions) throws NoResponseException,
- XMPPErrorException, NotConnectedException {
+ XMPPErrorException, NotConnectedException, InterruptedException {
PubSub result = con.createPacketCollectorAndSend(request).nextResultOrThrow();
ItemsExtension itemsElem = result.getExtension(PubSubElementType.ITEMS);
if (returnedExtensions != null) {
@@ -206,8 +213,9 @@ public class LeafNode extends Node
*
* For synchronous calls use {@link #send() send()}.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void publish() throws NotConnectedException
+ public void publish() throws NotConnectedException, InterruptedException
{
PubSub packet = createPubsubPacket(Type.set, new NodeExtension(PubSubElementType.PUBLISH, getId()));
@@ -229,9 +237,10 @@ public class LeafNode extends Node
*
* @param item - The item being sent
* @throws NotConnectedException
+ * @throws InterruptedException
*/
@SuppressWarnings("unchecked")
- public void publish(T item) throws NotConnectedException
+ public void publish(T item) throws NotConnectedException, InterruptedException
{
Collection items = new ArrayList(1);
items.add((T)(item == null ? new Item() : item));
@@ -251,8 +260,9 @@ public class LeafNode extends Node
*
* @param items - The collection of items being sent
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void publish(Collection items) throws NotConnectedException
+ public void publish(Collection items) throws NotConnectedException, InterruptedException
{
PubSub packet = createPubsubPacket(Type.set, new PublishItem(getId(), items));
@@ -273,9 +283,10 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*
*/
- public void send() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void send() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub packet = createPubsubPacket(Type.set, new NodeExtension(PubSubElementType.PUBLISH, getId()));
@@ -303,10 +314,11 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*
*/
@SuppressWarnings("unchecked")
- public void send(T item) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void send(T item) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
Collection items = new ArrayList(1);
items.add((item == null ? (T)new Item() : item));
@@ -328,9 +340,10 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*
*/
- public void send(Collection items) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void send(Collection items) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub packet = createPubsubPacket(Type.set, new PublishItem(getId(), items));
@@ -345,8 +358,9 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void deleteAllItems() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void deleteAllItems() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub request = createPubsubPacket(Type.set, new NodeExtension(PubSubElementType.PURGE_OWNER, getId()), PubSubElementType.PURGE_OWNER.getNamespace());
@@ -360,8 +374,9 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void deleteItem(String itemId) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void deleteItem(String itemId) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
Collection items = new ArrayList(1);
items.add(itemId);
@@ -375,8 +390,9 @@ public class LeafNode extends Node
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void deleteItem(Collection itemIds) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void deleteItem(Collection itemIds) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
List
- items = new ArrayList
- (itemIds.size());
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Node.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Node.java
index 8c4a57900..239fb84f6 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Node.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Node.java
@@ -95,8 +95,9 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public ConfigureForm getNodeConfiguration() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public ConfigureForm getNodeConfiguration() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub pubSub = createPubsubPacket(Type.get, new NodeExtension(
PubSubElementType.CONFIGURE_OWNER, getId()), PubSubNamespace.OWNER);
@@ -111,8 +112,9 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendConfigurationForm(Form submitForm) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void sendConfigurationForm(Form submitForm) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub packet = createPubsubPacket(Type.set, new FormNode(FormNodeType.CONFIGURE_OWNER,
getId(), submitForm), PubSubNamespace.OWNER);
@@ -126,8 +128,9 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public DiscoverInfo discoverInfo() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public DiscoverInfo discoverInfo() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
DiscoverInfo info = new DiscoverInfo();
info.setTo(to);
@@ -142,9 +145,10 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*
*/
- public List getSubscriptions() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public List getSubscriptions() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
return getSubscriptions(null, null);
}
@@ -163,9 +167,10 @@ abstract public class Node
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public List getSubscriptions(List additionalExtensions, Collection returnedExtensions)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return getSubscriptions(additionalExtensions, returnedExtensions, null);
}
@@ -176,11 +181,12 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
* @see #getSubscriptionsAsOwner(List, Collection)
* @since 4.1
*/
public List getSubscriptionsAsOwner() throws NoResponseException, XMPPErrorException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
return getSubscriptionsAsOwner(null, null);
}
@@ -202,19 +208,20 @@ abstract public class Node
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
* @see XEP-60 § 8.8.1 -
* Retrieve Subscriptions List
* @since 4.1
*/
public List getSubscriptionsAsOwner(List additionalExtensions,
Collection returnedExtensions) throws NoResponseException, XMPPErrorException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
return getSubscriptions(additionalExtensions, returnedExtensions, PubSubNamespace.OWNER);
}
private List getSubscriptions(List additionalExtensions,
Collection returnedExtensions, PubSubNamespace pubSubNamespace)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
PubSub pubSub = createPubsubPacket(Type.get, new NodeExtension(PubSubElementType.SUBSCRIPTIONS, getId()), pubSubNamespace);
if (additionalExtensions != null) {
for (PacketExtension pe : additionalExtensions) {
@@ -236,9 +243,10 @@ abstract public class Node
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public List getAffiliations() throws NoResponseException, XMPPErrorException,
- NotConnectedException {
+ NotConnectedException, InterruptedException {
return getAffiliations(null, null);
}
@@ -256,9 +264,10 @@ abstract public class Node
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public List getAffiliations(List additionalExtensions, Collection returnedExtensions)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
PubSub pubSub = createPubsubPacket(Type.get, new NodeExtension(PubSubElementType.AFFILIATIONS, getId()));
if (additionalExtensions != null) {
for (PacketExtension pe : additionalExtensions) {
@@ -289,8 +298,9 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Subscription subscribe(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public Subscription subscribe(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub pubSub = createPubsubPacket(Type.set, new SubscribeExtension(jid, getId()));
PubSub reply = sendPubsubPacket(pubSub);
@@ -314,8 +324,9 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Subscription subscribe(String jid, SubscribeForm subForm) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public Subscription subscribe(String jid, SubscribeForm subForm) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub request = createPubsubPacket(Type.set, new SubscribeExtension(jid, getId()));
request.addExtension(new FormNode(FormNodeType.OPTIONS, subForm));
@@ -332,9 +343,10 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*
*/
- public void unsubscribe(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void unsubscribe(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
unsubscribe(jid, null);
}
@@ -347,8 +359,9 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void unsubscribe(String jid, String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void unsubscribe(String jid, String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
sendPubsubPacket(createPubsubPacket(Type.set, new UnsubscribeExtension(jid, getId(), subscriptionId)));
}
@@ -361,8 +374,9 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public SubscribeForm getSubscriptionOptions(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public SubscribeForm getSubscriptionOptions(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
return getSubscriptionOptions(jid, null);
}
@@ -378,9 +392,10 @@ abstract public class Node
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*
*/
- public SubscribeForm getSubscriptionOptions(String jid, String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public SubscribeForm getSubscriptionOptions(String jid, String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub packet = sendPubsubPacket(createPubsubPacket(Type.get, new OptionsExtension(jid, getId(), subscriptionId)));
FormNode ext = packet.getExtension(PubSubElementType.OPTIONS);
@@ -486,7 +501,7 @@ abstract public class Node
return PubSub.createPubsubPacket(to, type, ext, ns);
}
- protected PubSub sendPubsubPacket(PubSub packet) throws NoResponseException, XMPPErrorException, NotConnectedException
+ protected PubSub sendPubsubPacket(PubSub packet) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
return PubSubManager.sendPubsubPacket(con, packet);
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubManager.java
index 5c12865bf..9ba220a69 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubManager.java
@@ -86,8 +86,9 @@ final public class PubSubManager
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public LeafNode createNode() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public LeafNode createNode() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub reply = sendPubsubPacket(Type.set, new NodeExtension(PubSubElementType.CREATE), null);
NodeExtension elem = reply.getExtension("create", PubSubNamespace.BASIC.getXmlns());
@@ -108,8 +109,9 @@ final public class PubSubManager
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public LeafNode createNode(String id) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public LeafNode createNode(String id) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
return (LeafNode)createNode(id, null);
}
@@ -126,8 +128,9 @@ final public class PubSubManager
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Node createNode(String name, Form config) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public Node createNode(String name, Form config) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub request = PubSub.createPubsubPacket(to, Type.set, new NodeExtension(PubSubElementType.CREATE, name), null);
boolean isLeafNode = true;
@@ -160,9 +163,10 @@ final public class PubSubManager
* @throws XMPPErrorException The node does not exist
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
@SuppressWarnings("unchecked")
- public T getNode(String id) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public T getNode(String id) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
Node node = nodeMap.get(id);
@@ -211,8 +215,9 @@ final public class PubSubManager
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public DiscoverItems discoverNodes(String nodeId) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public DiscoverItems discoverNodes(String nodeId) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
DiscoverItems items = new DiscoverItems();
@@ -230,8 +235,9 @@ final public class PubSubManager
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getSubscriptions() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public List getSubscriptions() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
Stanza reply = sendPubsubPacket(Type.get, new NodeExtension(PubSubElementType.SUBSCRIPTIONS), null);
SubscriptionsExtension subElem = reply.getExtension(PubSubElementType.SUBSCRIPTIONS.getElementName(), PubSubElementType.SUBSCRIPTIONS.getNamespace().getXmlns());
@@ -245,9 +251,10 @@ final public class PubSubManager
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*
*/
- public List getAffiliations() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public List getAffiliations() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub reply = sendPubsubPacket(Type.get, new NodeExtension(PubSubElementType.AFFILIATIONS), null);
AffiliationsExtension listElem = reply.getExtension(PubSubElementType.AFFILIATIONS);
@@ -261,8 +268,9 @@ final public class PubSubManager
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void deleteNode(String nodeId) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void deleteNode(String nodeId) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
sendPubsubPacket(Type.set, new NodeExtension(PubSubElementType.DELETE, nodeId), PubSubElementType.DELETE.getNamespace());
nodeMap.remove(nodeId);
@@ -275,8 +283,9 @@ final public class PubSubManager
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public ConfigureForm getDefaultConfiguration() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public ConfigureForm getDefaultConfiguration() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
// Errors will cause exceptions in getReply, so it only returns
// on success.
@@ -292,19 +301,20 @@ final public class PubSubManager
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public DiscoverInfo getSupportedFeatures() throws NoResponseException, XMPPErrorException, NotConnectedException
+ public DiscoverInfo getSupportedFeatures() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
ServiceDiscoveryManager mgr = ServiceDiscoveryManager.getInstanceFor(con);
return mgr.discoverInfo(to);
}
private PubSub sendPubsubPacket(Type type, PacketExtension ext, PubSubNamespace ns)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return sendPubsubPacket(con, to, type, Collections.singletonList(ext), ns);
}
- static PubSub sendPubsubPacket(XMPPConnection con, String to, Type type, List extList, PubSubNamespace ns) throws NoResponseException, XMPPErrorException, NotConnectedException
+ static PubSub sendPubsubPacket(XMPPConnection con, String to, Type type, List extList, PubSubNamespace ns) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
PubSub pubSub = new PubSub(to, type, ns);
for (PacketExtension pe : extList) {
@@ -313,7 +323,7 @@ final public class PubSubManager
return sendPubsubPacket(con ,pubSub);
}
- static PubSub sendPubsubPacket(XMPPConnection con, PubSub packet) throws NoResponseException, XMPPErrorException, NotConnectedException
+ static PubSub sendPubsubPacket(XMPPConnection con, PubSub packet) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
IQ resultIQ = con.createPacketCollectorAndSend(packet).nextResultOrThrow();
if (resultIQ instanceof EmptyResultIQ) {
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceiptManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceiptManager.java
index 7393c4bd5..bed43508c 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceiptManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceiptManager.java
@@ -141,7 +141,7 @@ public class DeliveryReceiptManager extends Manager {
// Add the packet listener to handle incoming delivery receipt requests
connection.addAsyncPacketListener(new PacketListener() {
@Override
- public void processPacket(Stanza packet) throws NotConnectedException {
+ public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
final String from = packet.getFrom();
final XMPPConnection connection = connection();
switch (autoReceiptMode) {
@@ -188,8 +188,9 @@ public class DeliveryReceiptManager extends Manager {
* @return true if supported
* @throws SmackException if there was no response from the server.
* @throws XMPPException
+ * @throws InterruptedException
*/
- public boolean isSupported(String jid) throws SmackException, XMPPException {
+ public boolean isSupported(String jid) throws SmackException, XMPPException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid,
DeliveryReceipt.NAMESPACE);
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearch.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearch.java
index 5c58aa6dd..f0aa55664 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearch.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearch.java
@@ -64,8 +64,9 @@ public class UserSearch extends SimpleIQ {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Form getSearchForm(XMPPConnection con, String searchService) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public Form getSearchForm(XMPPConnection con, String searchService) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
UserSearch search = new UserSearch();
search.setType(IQ.Type.get);
search.setTo(searchService);
@@ -84,8 +85,9 @@ public class UserSearch extends SimpleIQ {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public ReportedData sendSearchForm(XMPPConnection con, Form searchForm, String searchService) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public ReportedData sendSearchForm(XMPPConnection con, Form searchForm, String searchService) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
UserSearch search = new UserSearch();
search.setType(IQ.Type.set);
search.setTo(searchService);
@@ -105,8 +107,9 @@ public class UserSearch extends SimpleIQ {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public ReportedData sendSimpleSearchForm(XMPPConnection con, Form searchForm, String searchService) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public ReportedData sendSimpleSearchForm(XMPPConnection con, Form searchForm, String searchService) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
SimpleUserSearch search = new SimpleUserSearch();
search.setForm(searchForm);
search.setType(IQ.Type.set);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearchManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearchManager.java
index 4b3bcaf6a..3d2944fb8 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearchManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearchManager.java
@@ -66,8 +66,9 @@ public class UserSearchManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Form getSearchForm(String searchService) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public Form getSearchForm(String searchService) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return userSearch.getSearchForm(con, searchService);
}
@@ -81,8 +82,9 @@ public class UserSearchManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public ReportedData getSearchResults(Form searchForm, String searchService) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public ReportedData getSearchResults(Form searchForm, String searchService) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return userSearch.sendSearchForm(con, searchForm, searchService);
}
@@ -94,8 +96,9 @@ public class UserSearchManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List getSearchServices() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public List getSearchServices() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(con);
return discoManager.findServices(UserSearch.NAMESPACE, false, false);
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/sharedgroups/SharedGroupManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/sharedgroups/SharedGroupManager.java
index 1900b25a7..53d0adeb2 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/sharedgroups/SharedGroupManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/sharedgroups/SharedGroupManager.java
@@ -44,8 +44,9 @@ public class SharedGroupManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static List getSharedGroups(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public static List getSharedGroups(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// Discover the shared groups of the logged user
SharedGroupsInfo info = new SharedGroupsInfo();
info.setType(IQ.Type.get);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/time/EntityTimeManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/time/EntityTimeManager.java
index 5af549fc2..03ee6e078 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/time/EntityTimeManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/time/EntityTimeManager.java
@@ -99,11 +99,11 @@ public class EntityTimeManager extends Manager {
enabled = false;
}
- public boolean isTimeSupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean isTimeSupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid, Time.NAMESPACE);
}
- public Time getTime(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public Time getTime(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
if (!isTimeSupported(jid))
return null;
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/VCardManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/VCardManager.java
index bc7bf47eb..23f99e33e 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/VCardManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/VCardManager.java
@@ -70,10 +70,11 @@ public class VCardManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
* @deprecated use {@link #isSupported(String)} instead.
*/
@Deprecated
- public static boolean isSupported(String jid, XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public static boolean isSupported(String jid, XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return VCardManager.getInstanceFor(connection).isSupported(jid);
}
@@ -89,8 +90,9 @@ public class VCardManager extends Manager {
* @throws XMPPErrorException thrown if there was an issue setting the VCard in the server.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void saveVCard(VCard vcard) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void saveVCard(VCard vcard) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
vcard.setType(IQ.Type.set);
connection().createPacketCollectorAndSend(vcard).nextResultOrThrow();
}
@@ -101,8 +103,9 @@ public class VCardManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public VCard loadVCard() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public VCard loadVCard() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return loadVCard(null);
}
@@ -112,8 +115,9 @@ public class VCardManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public VCard loadVCard(String bareJid) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public VCard loadVCard(String bareJid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
VCard vcardRequest = new VCard();
vcardRequest.setTo(bareJid);
VCard result = connection().createPacketCollectorAndSend(vcardRequest).nextResultOrThrow();
@@ -128,8 +132,9 @@ public class VCardManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean isSupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean isSupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid, NAMESPACE);
}
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/packet/VCard.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/packet/VCard.java
index 303510031..08db8e932 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/packet/VCard.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/packet/VCard.java
@@ -523,10 +523,11 @@ public class VCard extends IQ {
* @throws XMPPErrorException thrown if there was an issue setting the VCard in the server.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
* @deprecated use {@link VCardManager#saveVCard(VCard)} instead.
*/
@Deprecated
- public void save(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void save(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
VCardManager.getInstanceFor(connection).saveVCard(this);
}
@@ -536,10 +537,11 @@ public class VCard extends IQ {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
* @deprecated use {@link VCardManager#loadVCard()} instead.
*/
@Deprecated
- public void load(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void load(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
load(connection, null);
}
@@ -548,10 +550,11 @@ public class VCard extends IQ {
* @throws XMPPErrorException
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
* @deprecated use {@link VCardManager#loadVCard(String)} instead.
*/
@Deprecated
- public void load(XMPPConnection connection, String user) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void load(XMPPConnection connection, String user) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
VCard result = VCardManager.getInstanceFor(connection).loadVCard(user);
copyFieldsFrom(result);
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/XDataManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/XDataManager.java
index af90282a2..194b12a2d 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/XDataManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/XDataManager.java
@@ -76,10 +76,11 @@ public class XDataManager extends Manager {
* @throws NoResponseException
* @throws XMPPErrorException
* @throws NotConnectedException
+ * @throws InterruptedException
* @see XEP-0004: Data Forms § 6. Service Discovery
* @since 4.1
*/
- public boolean isSupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean isSupported(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid, NAMESPACE);
}
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xhtmlim/XHTMLManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xhtmlim/XHTMLManager.java
index 9aea9378b..f0ac83b0c 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xhtmlim/XHTMLManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xhtmlim/XHTMLManager.java
@@ -128,9 +128,10 @@ public class XHTMLManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public static boolean isServiceEnabled(XMPPConnection connection, String userID)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection).supportsFeature(userID, XHTMLExtension.NAMESPACE);
}
}
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamManagerTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamManagerTest.java
index b7c9b64fe..902e82b19 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamManagerTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamManagerTest.java
@@ -59,9 +59,10 @@ public class InBandBytestreamManagerTest {
* Initialize fields used in the tests.
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
@Before
- public void setup() throws XMPPException, SmackException {
+ public void setup() throws XMPPException, SmackException, InterruptedException {
// build protocol verifier
protocol = new Protocol();
@@ -103,9 +104,10 @@ public class InBandBytestreamManagerTest {
* bytestream.
* @throws SmackException
* @throws XMPPException
+ * @throws InterruptedException
*/
@Test
- public void shouldFailIfTargetDoesNotSupportIBB() throws SmackException, XMPPException {
+ public void shouldFailIfTargetDoesNotSupportIBB() throws SmackException, XMPPException, InterruptedException {
InBandBytestreamManager byteStreamManager = InBandBytestreamManager.getByteStreamManager(connection);
try {
@@ -153,7 +155,7 @@ public class InBandBytestreamManagerTest {
}
@Test
- public void shouldUseConfiguredStanzaType() throws SmackException {
+ public void shouldUseConfiguredStanzaType() throws SmackException, InterruptedException {
InBandBytestreamManager byteStreamManager = InBandBytestreamManager.getByteStreamManager(connection);
byteStreamManager.setStanza(StanzaType.MESSAGE);
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamRequestTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamRequestTest.java
index 057549a2c..b04ed0cf3 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamRequestTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamRequestTest.java
@@ -67,9 +67,10 @@ public class InBandBytestreamRequestTest {
/**
* Test reject() method.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
@Test
- public void shouldReplyWithErrorIfRequestIsRejected() throws NotConnectedException {
+ public void shouldReplyWithErrorIfRequestIsRejected() throws NotConnectedException, InterruptedException {
InBandBytestreamRequest ibbRequest = new InBandBytestreamRequest(
byteStreamManager, initBytestream);
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSessionMessageTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSessionMessageTest.java
index 094e60787..347a5087a 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSessionMessageTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSessionMessageTest.java
@@ -75,9 +75,10 @@ public class InBandBytestreamSessionMessageTest {
* Initialize fields used in the tests.
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
@Before
- public void setup() throws XMPPException, SmackException {
+ public void setup() throws XMPPException, SmackException, InterruptedException {
// build protocol verifier
protocol = new Protocol();
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSessionTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSessionTest.java
index a946c5175..2b066b3f4 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSessionTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSessionTest.java
@@ -76,9 +76,10 @@ public class InBandBytestreamSessionTest {
* Initialize fields used in the tests.
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
@Before
- public void setup() throws XMPPException, SmackException {
+ public void setup() throws XMPPException, SmackException, InterruptedException {
// build protocol verifier
protocol = new Protocol();
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ByteStreamManagerTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ByteStreamManagerTest.java
index c88835e18..dc32b8587 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ByteStreamManagerTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ByteStreamManagerTest.java
@@ -76,9 +76,10 @@ public class Socks5ByteStreamManagerTest {
* Initialize fields used in the tests.
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
@Before
- public void setup() throws XMPPException, SmackException {
+ public void setup() throws XMPPException, SmackException, InterruptedException {
// build protocol verifier
protocol = new Protocol();
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ByteStreamRequestTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ByteStreamRequestTest.java
index f443dc9dc..266f229f3 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ByteStreamRequestTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ByteStreamRequestTest.java
@@ -64,9 +64,10 @@ public class Socks5ByteStreamRequestTest {
* Initialize fields used in the tests.
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
@Before
- public void setup() throws XMPPException, SmackException {
+ public void setup() throws XMPPException, SmackException, InterruptedException {
// build protocol verifier
protocol = new Protocol();
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ClientForInitiatorTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ClientForInitiatorTest.java
index 555398c51..1a19e6d18 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ClientForInitiatorTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5ClientForInitiatorTest.java
@@ -69,9 +69,10 @@ public class Socks5ClientForInitiatorTest {
* Initialize fields used in the tests.
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
@Before
- public void setup() throws XMPPException, SmackException {
+ public void setup() throws XMPPException, SmackException, InterruptedException {
// build protocol verifier
protocol = new Protocol();
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/ping/PingTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/ping/PingTest.java
index b9beca71d..3ebab7b09 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/ping/PingTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/ping/PingTest.java
@@ -103,9 +103,10 @@ public class PingTest extends InitExtensions {
* @throws SmackException
* @throws XMPPException
* @throws IOException
+ * @throws InterruptedException
*/
@Test
- public void checkFailedPingOnTimeout() throws SmackException, IOException, XMPPException {
+ public void checkFailedPingOnTimeout() throws SmackException, IOException, XMPPException, InterruptedException {
DummyConnection dummyCon = getAuthenticatedDummyConnectionWithoutIqReplies();
PingManager pinger = PingManager.getInstanceFor(dummyCon);
@@ -181,7 +182,7 @@ public class PingTest extends InitExtensions {
}
@Test
- public void checkPingToServerTimeout() throws SmackException, IOException, XMPPException {
+ public void checkPingToServerTimeout() throws SmackException, IOException, XMPPException, InterruptedException {
DummyConnection con = getAuthenticatedDummyConnectionWithoutIqReplies();
PingManager pinger = PingManager.getInstanceFor(con);
@@ -233,7 +234,7 @@ public class PingTest extends InitExtensions {
assertFalse(pingSupported);
}
- private static ThreadedDummyConnection getAuthentiactedDummyConnection() throws SmackException, IOException, XMPPException {
+ private static ThreadedDummyConnection getAuthentiactedDummyConnection() throws SmackException, IOException, XMPPException, InterruptedException {
ThreadedDummyConnection connection = new ThreadedDummyConnection();
connection.connect();
connection.login();
@@ -247,8 +248,9 @@ public class PingTest extends InitExtensions {
* @throws XMPPException
* @throws IOException
* @throws SmackException
+ * @throws InterruptedException
*/
- private static DummyConnection getAuthenticatedDummyConnectionWithoutIqReplies() throws SmackException, IOException, XMPPException {
+ private static DummyConnection getAuthenticatedDummyConnectionWithoutIqReplies() throws SmackException, IOException, XMPPException, InterruptedException {
DummyConnection con = new DummyConnection();
con.setPacketReplyTimeout(500);
con.connect();
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/pubsub/ConfigureFormTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/pubsub/ConfigureFormTest.java
index dc6074b81..48b382c8a 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/pubsub/ConfigureFormTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/pubsub/ConfigureFormTest.java
@@ -50,7 +50,7 @@ public class ConfigureFormTest
}
@Test
- public void getConfigFormWithInsufficientPriviliges() throws XMPPException, SmackException, IOException
+ public void getConfigFormWithInsufficientPriviliges() throws XMPPException, SmackException, IOException, InterruptedException
{
ThreadedDummyConnection con = ThreadedDummyConnection.newInstance();
PubSubManager mgr = new PubSubManager(con);
@@ -77,7 +77,7 @@ public class ConfigureFormTest
}
@Test (expected=SmackException.class)
- public void getConfigFormWithTimeout() throws XMPPException, SmackException
+ public void getConfigFormWithTimeout() throws XMPPException, SmackException, InterruptedException
{
ThreadedDummyConnection con = new ThreadedDummyConnection();
PubSubManager mgr = new PubSubManager(con);
diff --git a/smack-extensions/src/test/java/org/jivesoftware/util/ConnectionUtils.java b/smack-extensions/src/test/java/org/jivesoftware/util/ConnectionUtils.java
index bba1cfed2..e6a6e4869 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/util/ConnectionUtils.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/util/ConnectionUtils.java
@@ -64,9 +64,10 @@ public class ConnectionUtils {
* @return a mocked XMPP connection
* @throws SmackException
* @throws XMPPErrorException
+ * @throws InterruptedException
*/
public static XMPPConnection createMockedConnection(final Protocol protocol,
- String initiatorJID, String xmppServer) throws SmackException, XMPPErrorException {
+ String initiatorJID, String xmppServer) throws SmackException, XMPPErrorException, InterruptedException {
// mock XMPP connection
XMPPConnection connection = mock(XMPPConnection.class);
diff --git a/smack-im/src/main/java/org/jivesoftware/smack/chat/Chat.java b/smack-im/src/main/java/org/jivesoftware/smack/chat/Chat.java
index b9465b53b..64a9b875c 100644
--- a/smack-im/src/main/java/org/jivesoftware/smack/chat/Chat.java
+++ b/smack-im/src/main/java/org/jivesoftware/smack/chat/Chat.java
@@ -91,8 +91,9 @@ public class Chat {
*
* @param text the text to send.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendMessage(String text) throws NotConnectedException {
+ public void sendMessage(String text) throws NotConnectedException, InterruptedException {
Message message = new Message();
message.setBody(text);
sendMessage(message);
@@ -104,8 +105,9 @@ public class Chat {
*
* @param message the message to send.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendMessage(Message message) throws NotConnectedException {
+ public void sendMessage(Message message) throws NotConnectedException, InterruptedException {
// Force the recipient, message type, and thread ID since the user elected
// to send the message through this chat object.
message.setTo(participant);
diff --git a/smack-im/src/main/java/org/jivesoftware/smack/chat/ChatManager.java b/smack-im/src/main/java/org/jivesoftware/smack/chat/ChatManager.java
index 778ca8598..0685f5669 100644
--- a/smack-im/src/main/java/org/jivesoftware/smack/chat/ChatManager.java
+++ b/smack-im/src/main/java/org/jivesoftware/smack/chat/ChatManager.java
@@ -351,7 +351,7 @@ public class ChatManager extends Manager{
chat.deliver(message);
}
- void sendMessage(Chat chat, Message message) throws NotConnectedException {
+ void sendMessage(Chat chat, Message message) throws NotConnectedException, InterruptedException {
for(Map.Entry interceptor : interceptors.entrySet()) {
PacketFilter filter = interceptor.getValue();
if(filter != null && filter.accept(message)) {
diff --git a/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java b/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java
index cad183c6b..56e3ea400 100644
--- a/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java
+++ b/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java
@@ -211,7 +211,7 @@ public class Roster extends Manager {
try {
Roster.this.reload();
}
- catch (SmackException e) {
+ catch (InterruptedException | SmackException e) {
LOGGER.log(Level.SEVERE, "Could not reload Roster", e);
return;
}
@@ -229,7 +229,7 @@ public class Roster extends Manager {
try {
reload();
}
- catch (SmackException e) {
+ catch (InterruptedException | SmackException e) {
LOGGER.log(Level.SEVERE, "Could not reload Roster", e);
}
}
@@ -271,8 +271,9 @@ public class Roster extends Manager {
* reloaded at a later point when the server responds to the reload request.
* @throws NotLoggedInException If not logged in.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void reload() throws NotLoggedInException, NotConnectedException{
+ public void reload() throws NotLoggedInException, NotConnectedException, InterruptedException{
final XMPPConnection connection = connection();
if (!connection.isAuthenticated()) {
throw new NotLoggedInException();
@@ -298,9 +299,10 @@ public class Roster extends Manager {
*
* @throws NotLoggedInException
* @throws NotConnectedException
+ * @throws InterruptedException
* @since 4.1
*/
- public void reloadAndWait() throws NotLoggedInException, NotConnectedException {
+ public void reloadAndWait() throws NotLoggedInException, NotConnectedException, InterruptedException {
reload();
waitUntilLoaded();
}
@@ -317,14 +319,14 @@ public class Roster extends Manager {
try {
reload();
}
- catch (NotLoggedInException | NotConnectedException e) {
+ catch (InterruptedException | NotLoggedInException | NotConnectedException e) {
LOGGER.log(Level.FINER, "Could not reload roster", e);
return false;
}
return true;
}
- protected boolean waitUntilLoaded() {
+ protected boolean waitUntilLoaded() throws InterruptedException {
final XMPPConnection connection = connection();
while (!loaded) {
long waitTime = connection.getPacketReplyTimeout();
@@ -332,17 +334,11 @@ public class Roster extends Manager {
if (waitTime <= 0) {
break;
}
- try {
- synchronized (this) {
- if (!loaded) {
- wait(waitTime);
- }
+ synchronized (this) {
+ if (!loaded) {
+ wait(waitTime);
}
}
- catch (InterruptedException e) {
- LOGGER.log(Level.FINE, "interrupted", e);
- break;
- }
long now = System.currentTimeMillis();
waitTime -= now - start;
start = now;
@@ -423,8 +419,9 @@ public class Roster extends Manager {
* @throws XMPPErrorException if an XMPP exception occurs.
* @throws NotLoggedInException If not logged in.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void createEntry(String user, String name, String[] groups) throws NotLoggedInException, NoResponseException, XMPPErrorException, NotConnectedException {
+ public void createEntry(String user, String name, String[] groups) throws NotLoggedInException, NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
final XMPPConnection connection = connection();
if (!connection.isAuthenticated()) {
throw new NotLoggedInException();
@@ -464,9 +461,10 @@ public class Roster extends Manager {
* @throws NotLoggedInException if not logged in.
* @throws NoResponseException SmackException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
* @throws IllegalStateException if connection is not logged in or logged in anonymously
*/
- public void removeEntry(RosterEntry entry) throws NotLoggedInException, NoResponseException, XMPPErrorException, NotConnectedException {
+ public void removeEntry(RosterEntry entry) throws NotLoggedInException, NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
final XMPPConnection connection = connection();
if (!connection.isAuthenticated()) {
throw new NotLoggedInException();
@@ -913,7 +911,7 @@ public class Roster extends Manager {
*/
private void setOfflinePresencesAndResetLoaded() {
Presence packetUnavailable;
- for (String user : presenceMap.keySet()) {
+ outerloop: for (String user : presenceMap.keySet()) {
Map resources = presenceMap.get(user);
if (resources != null) {
for (String resource : resources.keySet()) {
@@ -927,6 +925,9 @@ public class Roster extends Manager {
"presencePakcetListener should never throw a NotConnectedException when processPacket is called with a presence of type unavailable",
e);
}
+ catch (InterruptedException e) {
+ break outerloop;
+ }
}
}
}
@@ -1140,7 +1141,7 @@ public class Roster extends Manager {
}
@Override
- public void processPacket(Stanza packet) throws NotConnectedException {
+ public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
final XMPPConnection connection = connection();
Presence presence = (Presence) packet;
String from = presence.getFrom();
diff --git a/smack-im/src/main/java/org/jivesoftware/smack/roster/RosterEntry.java b/smack-im/src/main/java/org/jivesoftware/smack/roster/RosterEntry.java
index f9ff82a97..f87ad50fa 100644
--- a/smack-im/src/main/java/org/jivesoftware/smack/roster/RosterEntry.java
+++ b/smack-im/src/main/java/org/jivesoftware/smack/roster/RosterEntry.java
@@ -93,8 +93,9 @@ public class RosterEntry {
* @throws NotConnectedException
* @throws XMPPErrorException
* @throws NoResponseException
+ * @throws InterruptedException
*/
- public void setName(String name) throws NotConnectedException, NoResponseException, XMPPErrorException {
+ public void setName(String name) throws NotConnectedException, NoResponseException, XMPPErrorException, InterruptedException {
// Do nothing if the name hasn't changed.
if (name != null && name.equals(this.name)) {
return;
diff --git a/smack-im/src/main/java/org/jivesoftware/smack/roster/RosterGroup.java b/smack-im/src/main/java/org/jivesoftware/smack/roster/RosterGroup.java
index f80f472d9..0508a8ccd 100644
--- a/smack-im/src/main/java/org/jivesoftware/smack/roster/RosterGroup.java
+++ b/smack-im/src/main/java/org/jivesoftware/smack/roster/RosterGroup.java
@@ -75,8 +75,9 @@ public class RosterGroup {
* @throws NotConnectedException
* @throws XMPPErrorException
* @throws NoResponseException
+ * @throws InterruptedException
*/
- public void setName(String name) throws NotConnectedException, NoResponseException, XMPPErrorException {
+ public void setName(String name) throws NotConnectedException, NoResponseException, XMPPErrorException, InterruptedException {
synchronized (entries) {
for (RosterEntry entry : entries) {
RosterPacket packet = new RosterPacket();
@@ -169,8 +170,9 @@ public class RosterGroup {
* @throws XMPPErrorException if an error occured while trying to add the entry to the group.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void addEntry(RosterEntry entry) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void addEntry(RosterEntry entry) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
PacketCollector collector = null;
// Only add the entry if it isn't already in the list.
synchronized (entries) {
@@ -200,8 +202,9 @@ public class RosterGroup {
* @throws XMPPErrorException if an error occurred while trying to remove the entry from the group.
* @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void removeEntry(RosterEntry entry) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void removeEntry(RosterEntry entry) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
PacketCollector collector = null;
// Only remove the entry if it's in the entry list.
// Remove the entry locally, if we wait for RosterPacketListenerprocess>>Packet(Packet)
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/ContentNegotiator.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/ContentNegotiator.java
index 85e2d2b2e..33de499bf 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/ContentNegotiator.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/ContentNegotiator.java
@@ -58,7 +58,7 @@ public class ContentNegotiator extends JingleNegotiator {
transportNegotiators = new ArrayList();
}
- public List dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException {
+ public List dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException, InterruptedException {
List responses = new ArrayList();
// First only process IQ packets that contain stanzas that
@@ -255,7 +255,7 @@ public class ContentNegotiator extends JingleNegotiator {
return result;
}
- public void triggerContentEstablished() throws NotConnectedException {
+ public void triggerContentEstablished() throws NotConnectedException, InterruptedException {
PayloadType bestCommonAudioPt = getMediaNegotiator().getBestCommonAudioPt();
TransportCandidate bestRemoteCandidate = getTransportNegotiator().getBestRemoteCandidate();
@@ -268,8 +268,9 @@ public class ContentNegotiator extends JingleNegotiator {
/**
* Trigger a session established event.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private void triggerContentEstablished(PayloadType pt, TransportCandidate rc, TransportCandidate lc) throws NotConnectedException {
+ private void triggerContentEstablished(PayloadType pt, TransportCandidate rc, TransportCandidate lc) throws NotConnectedException, InterruptedException {
// Let the session know that we've established a content/media segment.
JingleSession session = getSession();
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleManager.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleManager.java
index fb9f12957..d3cb72c44 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleManager.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleManager.java
@@ -312,8 +312,9 @@ public class JingleManager implements JingleSessionListener {
* messages
* @throws SmackException if there was no response from the server.
* @throws XMPPException
+ * @throws InterruptedException
*/
- public static boolean isServiceEnabled(XMPPConnection connection, String userID) throws XMPPException, SmackException {
+ public static boolean isServiceEnabled(XMPPConnection connection, String userID) throws XMPPException, SmackException, InterruptedException {
return ServiceDiscoveryManager.getInstanceFor(connection).supportsFeature(userID, Jingle.NAMESPACE);
}
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleNegotiator.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleNegotiator.java
index f3c57fd8f..f829d9d57 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleNegotiator.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleNegotiator.java
@@ -232,8 +232,9 @@ public abstract class JingleNegotiator {
* @param id the ID of the response that will be sent
* @return the new packet to send (either a Jingle or an IQ error).
* @throws XMPPException
+ * @throws InterruptedException
*/
- public abstract List dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException;
+ public abstract List dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException, InterruptedException;
public void start() {
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSession.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSession.java
index 99606c8b6..d08dbb0b2 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSession.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSession.java
@@ -276,8 +276,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
* the packet received
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
- public synchronized void receivePacketAndRespond(IQ iq) throws XMPPException, SmackException {
+ public synchronized void receivePacketAndRespond(IQ iq) throws XMPPException, SmackException, InterruptedException {
List responses = new ArrayList();
String responseId = null;
@@ -344,8 +345,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
* @return the new Jingle packet to send.
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
- public List dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException {
+ public List dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException, InterruptedException {
List responses = new ArrayList();
IQ response = null;
@@ -397,7 +399,7 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
// Send section
// ----------------------------------------------------------------------------------------------------------
- public void sendPacket(IQ iq) throws NotConnectedException {
+ public void sendPacket(IQ iq) throws NotConnectedException, InterruptedException {
if (iq instanceof Jingle) {
@@ -416,8 +418,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
* @param jout
* the Jingle packet we want to complete and send
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Jingle sendFormattedJingle(Jingle jout) throws NotConnectedException {
+ public Jingle sendFormattedJingle(Jingle jout) throws NotConnectedException, InterruptedException {
return sendFormattedJingle(null, jout);
}
@@ -431,8 +434,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
* @param jout
* the Jingle packet we want to complete and send
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Jingle sendFormattedJingle(IQ iq, Jingle jout) throws NotConnectedException {
+ public Jingle sendFormattedJingle(IQ iq, Jingle jout) throws NotConnectedException, InterruptedException {
if (jout != null) {
if (jout.getInitiator() == null) {
jout.setInitiator(getInitiator());
@@ -795,7 +799,7 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
public void mediaClosed(PayloadType cand) {
}
- public void mediaEstablished(PayloadType pt) throws NotConnectedException {
+ public void mediaEstablished(PayloadType pt) throws NotConnectedException, InterruptedException {
if (isFullyEstablished()) {
Jingle jout = new Jingle(JingleActionEnum.SESSION_ACCEPT);
@@ -816,7 +820,7 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
JingleTransportListener jingleTransportListener = new JingleTransportListener() {
- public void transportEstablished(TransportCandidate local, TransportCandidate remote) throws NotConnectedException {
+ public void transportEstablished(TransportCandidate local, TransportCandidate remote) throws NotConnectedException, InterruptedException {
if (isFullyEstablished()) {
// Indicate that this session is active.
@@ -957,8 +961,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
*
* @throws XMPPException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void terminate() throws XMPPException, NotConnectedException {
+ public void terminate() throws XMPPException, NotConnectedException, InterruptedException {
terminate("Closed Locally");
}
@@ -967,8 +972,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
*
* @throws XMPPException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void terminate(String reason) throws XMPPException, NotConnectedException {
+ public void terminate(String reason) throws XMPPException, NotConnectedException, InterruptedException {
if (isClosed())
return;
LOGGER.fine("Terminate " + reason);
@@ -1053,8 +1059,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
*
* @throws IllegalStateException
* @throws SmackException
+ * @throws InterruptedException
*/
- public void startOutgoing() throws IllegalStateException, SmackException {
+ public void startOutgoing() throws IllegalStateException, SmackException, InterruptedException {
updatePacketListener();
setSessionState(JingleSessionStatePending.getInstance());
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionRequest.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionRequest.java
index cb611f902..5c51cc68b 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionRequest.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionRequest.java
@@ -107,8 +107,9 @@ public class JingleSessionRequest {
* @return Returns the IncomingJingleSession on which the
* negotiation can be carried out.
* @throws SmackException
+ * @throws InterruptedException
*/
- public synchronized JingleSession accept() throws XMPPException, SmackException {
+ public synchronized JingleSession accept() throws XMPPException, SmackException, InterruptedException {
JingleSession session = null;
synchronized (manager) {
session = manager.createIncomingJingleSession(this);
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionState.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionState.java
index 50232481d..6b7c9d9cd 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionState.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionState.java
@@ -54,8 +54,9 @@ public abstract class JingleSessionState {
/**
* Process an incoming Jingle Packet.
* When you look at the GoF State pattern this method roughly corresponds to example on p310: ProcessOctect().
+ * @throws InterruptedException
*/
- public abstract IQ processJingle(JingleSession session, Jingle jingle, JingleActionEnum action) throws SmackException;
+ public abstract IQ processJingle(JingleSession session, Jingle jingle, JingleActionEnum action) throws SmackException, InterruptedException;
/**
* For debugging just emit the short name of the class.
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateUnknown.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateUnknown.java
index f7e09c160..08002b3c4 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateUnknown.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateUnknown.java
@@ -63,7 +63,7 @@ public class JingleSessionStateUnknown extends JingleSessionState {
}
- public IQ processJingle(JingleSession session, Jingle jingle, JingleActionEnum action) throws SmackException {
+ public IQ processJingle(JingleSession session, Jingle jingle, JingleActionEnum action) throws SmackException, InterruptedException {
IQ response = null;
switch (action) {
@@ -88,9 +88,10 @@ public class JingleSessionStateUnknown extends JingleSessionState {
* In the UNKNOWN state we received a action.
* This method processes that action.
* @throws SmackException
+ * @throws InterruptedException
*/
- private IQ receiveSessionInitiateAction(JingleSession session, Jingle inJingle) throws SmackException {
+ private IQ receiveSessionInitiateAction(JingleSession session, Jingle inJingle) throws SmackException, InterruptedException {
IQ response = null;
boolean shouldAck = true;
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleMediaListener.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleMediaListener.java
index 49ec6d64e..bfdb1f59c 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleMediaListener.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleMediaListener.java
@@ -30,8 +30,9 @@ public interface JingleMediaListener extends JingleListener {
*
* @param pt The payload type agreed.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void mediaEstablished(PayloadType pt) throws NotConnectedException;
+ public void mediaEstablished(PayloadType pt) throws NotConnectedException, InterruptedException;
/**
* Notification that a payload type must be cancelled
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleSessionListener.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleSessionListener.java
index 52d87ee05..1aa7f0032 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleSessionListener.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleSessionListener.java
@@ -37,9 +37,10 @@ public interface JingleSessionListener extends JingleListener {
* @param localCandidate the local candidate where we must listen for connections
* @param jingleSession Session that called the method
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public void sessionEstablished(PayloadType pt, TransportCandidate remoteCandidate,
- TransportCandidate localCandidate, JingleSession jingleSession) throws NotConnectedException;
+ TransportCandidate localCandidate, JingleSession jingleSession) throws NotConnectedException, InterruptedException;
/**
* Notification that the session was declined.
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleTransportListener.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleTransportListener.java
index cd60a296e..13063697d 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleTransportListener.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/listeners/JingleTransportListener.java
@@ -35,9 +35,10 @@ public interface JingleTransportListener extends JingleListener {
* @param remote The transport candidate that has been used for
* transmitting to the remote machine
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public void transportEstablished(TransportCandidate local,
- TransportCandidate remote) throws NotConnectedException;
+ TransportCandidate remote) throws NotConnectedException, InterruptedException;
/**
* Notification that a transport must be cancelled.
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/media/MediaNegotiator.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/media/MediaNegotiator.java
index 65160a9ef..5a7d979ec 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/media/MediaNegotiator.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/media/MediaNegotiator.java
@@ -103,8 +103,9 @@ public class MediaNegotiator extends JingleNegotiator {
* @return the new Jingle packet to send.
* @throws XMPPException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public List dispatchIncomingPacket(IQ iq, String id) throws XMPPException, NotConnectedException {
+ public List dispatchIncomingPacket(IQ iq, String id) throws XMPPException, NotConnectedException, InterruptedException {
List responses = new ArrayList();
IQ response = null;
@@ -202,8 +203,9 @@ public class MediaNegotiator extends JingleNegotiator {
* @param jingle
* @return the iq
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private IQ receiveContentAcceptAction(Jingle jingle, JingleDescription description) throws XMPPException, NotConnectedException {
+ private IQ receiveContentAcceptAction(Jingle jingle, JingleDescription description) throws XMPPException, NotConnectedException, InterruptedException {
IQ response = null;
List offeredPayloads = new ArrayList();
@@ -477,8 +479,9 @@ public class MediaNegotiator extends JingleNegotiator {
* @param bestPt
* payload type that has been agreed.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected void triggerMediaEstablished(PayloadType bestPt) throws NotConnectedException {
+ protected void triggerMediaEstablished(PayloadType bestPt) throws NotConnectedException, InterruptedException {
List listeners = getListenersList();
for (JingleListener li : listeners) {
if (li instanceof JingleMediaListener) {
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BasicResolver.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BasicResolver.java
index 01ae614c4..cb6e12e17 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BasicResolver.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BasicResolver.java
@@ -45,8 +45,9 @@ public class BasicResolver extends TransportResolver {
* The BasicResolver takes the IP addresses of the interfaces and uses the
* first non-loopback, non-linklocal and non-sitelocal address.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException {
+ public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException, InterruptedException {
setResolveInit();
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BridgedResolver.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BridgedResolver.java
index 78bc8c669..76edad7b3 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BridgedResolver.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BridgedResolver.java
@@ -60,8 +60,9 @@ public class BridgedResolver extends TransportResolver {
*
* The BridgedResolver takes the IP addresse and ports of a jmf proxy service.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException {
+ public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException, InterruptedException {
setResolveInit();
@@ -98,7 +99,7 @@ public class BridgedResolver extends TransportResolver {
setResolveEnd();
}
- public void initialize() throws SmackException, XMPPErrorException {
+ public void initialize() throws SmackException, XMPPErrorException, InterruptedException {
clearCandidates();
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BridgedTransportManager.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BridgedTransportManager.java
index c467542ea..8769f49c1 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BridgedTransportManager.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/BridgedTransportManager.java
@@ -53,7 +53,7 @@ public class BridgedTransportManager extends JingleTransportManager implements J
// Implement a Session Listener to relay candidates after establishment
- public void sessionEstablished(PayloadType pt, TransportCandidate rc, TransportCandidate lc, JingleSession jingleSession) throws NotConnectedException {
+ public void sessionEstablished(PayloadType pt, TransportCandidate rc, TransportCandidate lc, JingleSession jingleSession) throws NotConnectedException, InterruptedException {
RTPBridge rtpBridge = RTPBridge.relaySession(lc.getConnection(), lc.getSessionId(), lc.getPassword(), rc, lc);
}
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/FixedResolver.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/FixedResolver.java
index a7f01faa5..9c6867fd5 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/FixedResolver.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/FixedResolver.java
@@ -52,8 +52,9 @@ public class FixedResolver extends TransportResolver {
/**
* Resolve the IP address.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException {
+ public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException, InterruptedException {
if (!isResolving()) {
setResolveInit();
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/ICEResolver.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/ICEResolver.java
index 8af201423..2eab73d26 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/ICEResolver.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/ICEResolver.java
@@ -91,8 +91,9 @@ public class ICEResolver extends TransportResolver {
/**
* Resolve the IP and obtain a valid transport method.
* @throws SmackException
+ * @throws InterruptedException
*/
- public synchronized void resolve(JingleSession session) throws XMPPException, SmackException {
+ public synchronized void resolve(JingleSession session) throws XMPPException, SmackException, InterruptedException {
this.setResolveInit();
for (TransportCandidate candidate : this.getCandidatesList()) {
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/ICETransportManager.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/ICETransportManager.java
index 63c81c74c..964e095ce 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/ICETransportManager.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/ICETransportManager.java
@@ -39,7 +39,7 @@ public class ICETransportManager extends JingleTransportManager implements Jingl
}
}
- protected TransportResolver createResolver(JingleSession session) throws SmackException {
+ protected TransportResolver createResolver(JingleSession session) throws SmackException, InterruptedException {
try {
iceResolver.resolve(session);
}
@@ -51,7 +51,7 @@ public class ICETransportManager extends JingleTransportManager implements Jingl
// Implement a Session Listener to relay candidates after establishment
- public void sessionEstablished(PayloadType pt, TransportCandidate rc, TransportCandidate lc, JingleSession jingleSession) throws NotConnectedException {
+ public void sessionEstablished(PayloadType pt, TransportCandidate rc, TransportCandidate lc, JingleSession jingleSession) throws NotConnectedException, InterruptedException {
if (lc instanceof ICECandidate) {
if (((ICECandidate) lc).getType().equals("relay")) {
RTPBridge rtpBridge = RTPBridge.relaySession(lc.getConnection(), lc.getSessionId(), lc.getPassword(), rc, lc);
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/JingleTransportManager.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/JingleTransportManager.java
index 303ae5fc8..0f04b723c 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/JingleTransportManager.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/JingleTransportManager.java
@@ -51,8 +51,9 @@ public abstract class JingleTransportManager {
* Get a new Transport Resolver to be used in a Jingle Session
*
* @return the TransportResolver to be used
+ * @throws InterruptedException
*/
- public TransportResolver getResolver(JingleSession session) throws XMPPException, SmackException {
+ public TransportResolver getResolver(JingleSession session) throws XMPPException, SmackException, InterruptedException {
TransportResolver resolver = createResolver(session);
if (resolver == null) {
resolver = new BasicResolver();
@@ -66,7 +67,8 @@ public abstract class JingleTransportManager {
* Create a Transport Resolver instance according to the implementation.
*
* @return the TransportResolver
+ * @throws InterruptedException
*/
- protected abstract TransportResolver createResolver(JingleSession session) throws SmackException;
+ protected abstract TransportResolver createResolver(JingleSession session) throws SmackException, InterruptedException;
}
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/RTPBridge.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/RTPBridge.java
index 307e8c8cd..2c85ea6f8 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/RTPBridge.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/RTPBridge.java
@@ -389,8 +389,9 @@ public class RTPBridge extends IQ {
* @param sessionID
* @return the new RTPBridge
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static RTPBridge getRTPBridge(XMPPConnection connection, String sessionID) throws NotConnectedException {
+ public static RTPBridge getRTPBridge(XMPPConnection connection, String sessionID) throws NotConnectedException, InterruptedException {
if (!connection.isConnected()) {
return null;
@@ -417,9 +418,10 @@ public class RTPBridge extends IQ {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public static boolean serviceAvailable(XMPPConnection connection) throws NoResponseException,
- XMPPErrorException, NotConnectedException {
+ XMPPErrorException, NotConnectedException, InterruptedException {
if (!connection.isConnected()) {
return false;
@@ -454,8 +456,9 @@ public class RTPBridge extends IQ {
* @param connection
* @return the RTPBridge
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static RTPBridge relaySession(XMPPConnection connection, String sessionID, String pass, TransportCandidate proxyCandidate, TransportCandidate localCandidate) throws NotConnectedException {
+ public static RTPBridge relaySession(XMPPConnection connection, String sessionID, String pass, TransportCandidate proxyCandidate, TransportCandidate localCandidate) throws NotConnectedException, InterruptedException {
if (!connection.isConnected()) {
return null;
@@ -489,8 +492,9 @@ public class RTPBridge extends IQ {
* @param xmppConnection
* @return public IP String or null if not found
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static String getPublicIP(XMPPConnection xmppConnection) throws NotConnectedException {
+ public static String getPublicIP(XMPPConnection xmppConnection) throws NotConnectedException, InterruptedException {
if (!xmppConnection.isConnected()) {
return null;
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUN.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUN.java
index c4416b4ea..a91c26500 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUN.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUN.java
@@ -173,8 +173,9 @@ public class STUN extends SimpleIQ {
* @param connection
* @return the STUN server address
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public static STUN getSTUNServer(XMPPConnection connection) throws NotConnectedException {
+ public static STUN getSTUNServer(XMPPConnection connection) throws NotConnectedException, InterruptedException {
if (!connection.isConnected()) {
return null;
@@ -200,8 +201,9 @@ public class STUN extends SimpleIQ {
* @return true if the server support STUN
* @throws SmackException
* @throws XMPPException
+ * @throws InterruptedException
*/
- public static boolean serviceAvailable(XMPPConnection connection) throws XMPPException, SmackException {
+ public static boolean serviceAvailable(XMPPConnection connection) throws XMPPException, SmackException, InterruptedException {
if (!connection.isConnected()) {
return false;
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUNResolver.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUNResolver.java
index d0d6e7f66..45e9c67ec 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUNResolver.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUNResolver.java
@@ -264,8 +264,9 @@ public class STUNResolver extends TransportResolver {
/**
* Resolve the IP and obtain a valid transport method.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException {
+ public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException, InterruptedException {
setResolveInit();
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportNegotiator.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportNegotiator.java
index a80e4755d..21a362321 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportNegotiator.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportNegotiator.java
@@ -323,7 +323,7 @@ public abstract class TransportNegotiator extends JingleNegotiator {
try {
js.sendFormattedJingle(jin, jout);
}
- catch (NotConnectedException e) {
+ catch (InterruptedException | NotConnectedException e) {
throw new IllegalStateException(e);
}
acceptedRemoteCandidates.add(bestRemote);
@@ -333,7 +333,7 @@ public abstract class TransportNegotiator extends JingleNegotiator {
try {
triggerTransportEstablished(getAcceptedLocalCandidate(), bestRemote);
}
- catch (NotConnectedException e) {
+ catch (InterruptedException | NotConnectedException e) {
throw new IllegalStateException(e);
}
break;
@@ -414,7 +414,7 @@ public abstract class TransportNegotiator extends JingleNegotiator {
try {
js.sendFormattedJingle(jin, jout);
}
- catch (NotConnectedException e) {
+ catch (InterruptedException | NotConnectedException e) {
throw new IllegalStateException(e);
}
acceptedRemoteCandidates.add(bestRemote);
@@ -525,8 +525,9 @@ public abstract class TransportNegotiator extends JingleNegotiator {
*
* @param cand
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private synchronized void sendTransportCandidateOffer(TransportCandidate cand) throws NotConnectedException {
+ private synchronized void sendTransportCandidateOffer(TransportCandidate cand) throws NotConnectedException, InterruptedException {
if (!cand.isNull()) {
// Offer our new candidate...
addOfferedCandidate(cand);
@@ -547,8 +548,9 @@ public abstract class TransportNegotiator extends JingleNegotiator {
*
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
- private void sendTransportCandidatesOffer() throws XMPPException, SmackException {
+ private void sendTransportCandidatesOffer() throws XMPPException, SmackException, InterruptedException {
List notOffered = resolver.getCandidatesList();
notOffered.removeAll(offeredCandidates);
@@ -562,7 +564,7 @@ public abstract class TransportNegotiator extends JingleNegotiator {
if (resolverListener == null) {
// Add a listener that sends the offer when the resolver finishes...
resolverListener = new TransportResolverListener.Resolver() {
- public void candidateAdded(TransportCandidate cand) throws NotConnectedException {
+ public void candidateAdded(TransportCandidate cand) throws NotConnectedException, InterruptedException {
sendTransportCandidateOffer(cand);
}
@@ -592,8 +594,9 @@ public abstract class TransportNegotiator extends JingleNegotiator {
* @return the new Jingle packet to send.
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
- public final List dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException {
+ public final List dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException, InterruptedException {
List responses = new ArrayList();
IQ response = null;
@@ -662,8 +665,9 @@ public abstract class TransportNegotiator extends JingleNegotiator {
* @return an IQ packet
* @throws XMPPException
* @throws SmackException
+ * @throws InterruptedException
*/
- private Jingle receiveResult(IQ iq) throws XMPPException, SmackException {
+ private Jingle receiveResult(IQ iq) throws XMPPException, SmackException, InterruptedException {
Jingle response = null;
sendTransportCandidatesOffer();
@@ -677,8 +681,9 @@ public abstract class TransportNegotiator extends JingleNegotiator {
* @param jingleTransport
* @return the iq
* @throws SmackException
+ * @throws InterruptedException
*/
- private IQ receiveSessionInitiateAction(Jingle jingle) throws XMPPException, SmackException {
+ private IQ receiveSessionInitiateAction(Jingle jingle) throws XMPPException, SmackException, InterruptedException {
IQ response = null;
// Parse the Jingle and get any proposed transport candidates
@@ -781,8 +786,9 @@ public abstract class TransportNegotiator extends JingleNegotiator {
* @param local TransportCandidate that has been agreed.
* @param remote TransportCandidate that has been agreed.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private void triggerTransportEstablished(TransportCandidate local, TransportCandidate remote) throws NotConnectedException {
+ private void triggerTransportEstablished(TransportCandidate local, TransportCandidate remote) throws NotConnectedException, InterruptedException {
List listeners = getListenersList();
for (JingleListener li : listeners) {
if (li instanceof JingleTransportListener) {
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportResolver.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportResolver.java
index 258fa6514..d515669e3 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportResolver.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportResolver.java
@@ -88,13 +88,15 @@ public abstract class TransportResolver {
/**
* Initialize the Resolver
+ * @throws InterruptedException
*/
- public abstract void initialize() throws XMPPException, SmackException;
+ public abstract void initialize() throws XMPPException, SmackException, InterruptedException;
/**
* Start a the resolution.
+ * @throws InterruptedException
*/
- public abstract void resolve(JingleSession session) throws XMPPException, SmackException;
+ public abstract void resolve(JingleSession session) throws XMPPException, SmackException, InterruptedException;
/**
* Clear the list of candidates and start a new resolution process.
@@ -208,8 +210,9 @@ public abstract class TransportResolver {
*
* @param cand The candidate added to the list of candidates.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected void triggerCandidateAdded(TransportCandidate cand) throws NotConnectedException {
+ protected void triggerCandidateAdded(TransportCandidate cand) throws NotConnectedException, InterruptedException {
Iterator iter = getListenersList().iterator();
while (iter.hasNext()) {
TransportResolverListener trl = iter.next();
@@ -265,8 +268,9 @@ public abstract class TransportResolver {
*
* @param cand The candidate to add
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected void addCandidate(TransportCandidate cand) throws NotConnectedException {
+ protected void addCandidate(TransportCandidate cand) throws NotConnectedException, InterruptedException {
synchronized (candidates) {
if (!candidates.contains(cand))
candidates.add(cand);
@@ -355,8 +359,9 @@ public abstract class TransportResolver {
/**
* Initialize Transport Resolver and wait until it is complete unitialized.
* @throws SmackException
+ * @throws InterruptedException
*/
- public void initializeAndWait() throws XMPPException, SmackException {
+ public void initializeAndWait() throws XMPPException, SmackException, InterruptedException {
this.initialize();
try {
LOGGER.fine("Initializing transport resolver...");
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportResolverListener.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportResolverListener.java
index 03257382a..9600cb090 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportResolverListener.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/TransportResolverListener.java
@@ -36,8 +36,9 @@ public abstract interface TransportResolverListener {
*
* @param cand The transport candidate.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void candidateAdded(TransportCandidate cand) throws NotConnectedException;
+ public void candidateAdded(TransportCandidate cand) throws NotConnectedException, InterruptedException;
/**
* All the transport candidates have been obtained.
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/Agent.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/Agent.java
index fd54f58e5..347f7554c 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/Agent.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/Agent.java
@@ -36,7 +36,7 @@ public class Agent {
private XMPPConnection connection;
private String workgroupJID;
- public static Collection getWorkgroups(String serviceJID, String agentJID, XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public static Collection getWorkgroups(String serviceJID, String agentJID, XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
AgentWorkgroups request = new AgentWorkgroups(agentJID);
request.setTo(serviceJID);
AgentWorkgroups response = (AgentWorkgroups) connection.createPacketCollectorAndSend(request).nextResultOrThrow();
@@ -67,8 +67,9 @@ public class Agent {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public String getName() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public String getName() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
AgentInfo agentInfo = new AgentInfo();
agentInfo.setType(IQ.Type.get);
agentInfo.setTo(workgroupJID);
@@ -87,8 +88,9 @@ public class Agent {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void setName(String newName) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void setName(String newName) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
AgentInfo agentInfo = new AgentInfo();
agentInfo.setType(IQ.Type.set);
agentInfo.setTo(workgroupJID);
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentRoster.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentRoster.java
index f5a475fca..a306faf3e 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentRoster.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentRoster.java
@@ -65,8 +65,9 @@ public class AgentRoster {
*
* @param connection an XMPP connection.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- AgentRoster(XMPPConnection connection, String workgroupJID) throws NotConnectedException {
+ AgentRoster(XMPPConnection connection, String workgroupJID) throws NotConnectedException, InterruptedException {
this.connection = connection;
this.workgroupJID = workgroupJID;
entries = new ArrayList();
@@ -90,8 +91,9 @@ public class AgentRoster {
* which means the method will return immediately, and the roster will be
* reloaded at a later point when the server responds to the reload request.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void reload() throws NotConnectedException {
+ public void reload() throws NotConnectedException, InterruptedException {
AgentStatusRequest request = new AgentStatusRequest();
request.setTo(workgroupJID);
connection.sendPacket(request);
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentSession.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentSession.java
index b23ccd277..14dc11728 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentSession.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentSession.java
@@ -175,8 +175,9 @@ public class AgentSession {
*
* @return the AgentRoster
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public AgentRoster getAgentRoster() throws NotConnectedException {
+ public AgentRoster getAgentRoster() throws NotConnectedException, InterruptedException {
if (agentRoster == null) {
agentRoster = new AgentRoster(connection, workgroupJID);
}
@@ -234,8 +235,9 @@ public class AgentSession {
* @param val the non-null meta data value
* @throws XMPPException if an exception occurs.
* @throws SmackException
+ * @throws InterruptedException
*/
- public void setMetaData(String key, String val) throws XMPPException, SmackException {
+ public void setMetaData(String key, String val) throws XMPPException, SmackException, InterruptedException {
synchronized (this.metaData) {
List oldVals = metaData.get(key);
@@ -254,8 +256,9 @@ public class AgentSession {
* @param key the meta data key.
* @throws XMPPException if an exception occurs.
* @throws SmackException
+ * @throws InterruptedException
*/
- public void removeMetaData(String key) throws XMPPException, SmackException {
+ public void removeMetaData(String key) throws XMPPException, SmackException, InterruptedException {
synchronized (this.metaData) {
List oldVal = metaData.remove(key);
@@ -285,8 +288,9 @@ public class AgentSession {
* @throws XMPPException if an error occurs setting the online status.
* @throws SmackException assertEquals(SmackException.Type.NO_RESPONSE_FROM_SERVER, e.getType());
return;
+ * @throws InterruptedException
*/
- public void setOnline(boolean online) throws XMPPException, SmackException {
+ public void setOnline(boolean online) throws XMPPException, SmackException, InterruptedException {
// If the online status hasn't changed, do nothing.
if (this.online == online) {
return;
@@ -344,9 +348,10 @@ public class AgentSession {
* @param maxChats the maximum number of chats the agent is willing to accept.
* @throws XMPPException if an error occurs setting the agent status.
* @throws SmackException
+ * @throws InterruptedException
* @throws IllegalStateException if the agent is not online with the workgroup.
*/
- public void setStatus(Presence.Mode presenceMode, int maxChats) throws XMPPException, SmackException {
+ public void setStatus(Presence.Mode presenceMode, int maxChats) throws XMPPException, SmackException, InterruptedException {
setStatus(presenceMode, maxChats, null);
}
@@ -372,10 +377,11 @@ public class AgentSession {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
* @throws IllegalStateException if the agent is not online with the workgroup.
*/
public void setStatus(Presence.Mode presenceMode, int maxChats, String status)
- throws NoResponseException, XMPPErrorException, NotConnectedException {
+ throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
if (!online) {
throw new IllegalStateException("Cannot set status when the agent is not online.");
}
@@ -423,9 +429,10 @@ public class AgentSession {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
* @throws IllegalStateException if the agent is not online with the workgroup.
*/
- public void setStatus(Presence.Mode presenceMode, String status) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void setStatus(Presence.Mode presenceMode, String status) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
if (!online) {
throw new IllegalStateException("Cannot set status when the agent is not online.");
}
@@ -459,8 +466,9 @@ public class AgentSession {
* @param userID the ID of the user to remove.
* @throws XMPPException if an exception occurs.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void dequeueUser(String userID) throws XMPPException, NotConnectedException {
+ public void dequeueUser(String userID) throws XMPPException, NotConnectedException, InterruptedException {
// todo: this method simply won't work right now.
DepartQueuePacket departPacket = new DepartQueuePacket(this.workgroupJID);
@@ -476,8 +484,9 @@ public class AgentSession {
* @return the transcripts of a given user.
* @throws XMPPException if an error occurs while getting the information.
* @throws SmackException
+ * @throws InterruptedException
*/
- public Transcripts getTranscripts(String userID) throws XMPPException, SmackException {
+ public Transcripts getTranscripts(String userID) throws XMPPException, SmackException, InterruptedException {
return transcriptManager.getTranscripts(workgroupJID, userID);
}
@@ -488,8 +497,9 @@ public class AgentSession {
* @return the full conversation transcript of a given session.
* @throws XMPPException if an error occurs while getting the information.
* @throws SmackException
+ * @throws InterruptedException
*/
- public Transcript getTranscript(String sessionID) throws XMPPException, SmackException {
+ public Transcript getTranscript(String sessionID) throws XMPPException, SmackException, InterruptedException {
return transcriptManager.getTranscript(workgroupJID, sessionID);
}
@@ -501,8 +511,9 @@ public class AgentSession {
* @return the Form to use for searching transcripts.
* @throws XMPPException if an error occurs while sending the request to the server.
* @throws SmackException
+ * @throws InterruptedException
*/
- public Form getTranscriptSearchForm() throws XMPPException, SmackException {
+ public Form getTranscriptSearchForm() throws XMPPException, SmackException, InterruptedException {
return transcriptSearchManager.getSearchForm(XmppStringUtils.parseDomain(workgroupJID));
}
@@ -515,8 +526,9 @@ public class AgentSession {
* @return the result of the transcript search.
* @throws SmackException
* @throws XMPPException
+ * @throws InterruptedException
*/
- public ReportedData searchTranscripts(Form completedForm) throws XMPPException, SmackException {
+ public ReportedData searchTranscripts(Form completedForm) throws XMPPException, SmackException, InterruptedException {
return transcriptSearchManager.submitSearch(XmppStringUtils.parseDomain(workgroupJID),
completedForm);
}
@@ -531,8 +543,9 @@ public class AgentSession {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public OccupantsInfo getOccupantsInfo(String roomID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public OccupantsInfo getOccupantsInfo(String roomID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
OccupantsInfo request = new OccupantsInfo(roomID);
request.setType(IQ.Type.get);
request.setTo(workgroupJID);
@@ -689,7 +702,7 @@ public class AgentSession {
// PacketListener Implementation.
- private void handlePacket(Stanza packet) throws NotConnectedException {
+ private void handlePacket(Stanza packet) throws NotConnectedException, InterruptedException {
if (packet instanceof OfferRequestProvider.OfferRequestPacket) {
// Acknowledge the IQ set.
IQ reply = IQ.createResultIQ((IQ) packet);
@@ -796,8 +809,9 @@ public class AgentSession {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void setNote(String sessionID, String note) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void setNote(String sessionID, String note) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
ChatNotes notes = new ChatNotes();
notes.setType(IQ.Type.set);
notes.setTo(workgroupJID);
@@ -814,8 +828,9 @@ public class AgentSession {
* @throws XMPPErrorException if an error occurs while retrieving the ChatNote.
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public ChatNotes getNote(String sessionID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public ChatNotes getNote(String sessionID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
ChatNotes request = new ChatNotes();
request.setType(IQ.Type.get);
request.setTo(workgroupJID);
@@ -833,8 +848,9 @@ public class AgentSession {
* @return the chat history associated with a given jid.
* @throws XMPPException if an error occurs while retrieving the AgentChatHistory.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public AgentChatHistory getAgentHistory(String jid, int maxSessions, Date startDate) throws XMPPException, NotConnectedException {
+ public AgentChatHistory getAgentHistory(String jid, int maxSessions, Date startDate) throws XMPPException, NotConnectedException, InterruptedException {
AgentChatHistory request;
if (startDate != null) {
request = new AgentChatHistory(jid, maxSessions, startDate);
@@ -859,8 +875,9 @@ public class AgentSession {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public SearchSettings getSearchSettings() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public SearchSettings getSearchSettings() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
SearchSettings request = new SearchSettings();
request.setType(IQ.Type.get);
request.setTo(workgroupJID);
@@ -877,8 +894,9 @@ public class AgentSession {
* @throws XMPPErrorException if an error occurs while getting information from the server.
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public MacroGroup getMacros(boolean global) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public MacroGroup getMacros(boolean global) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Macros request = new Macros();
request.setType(IQ.Type.get);
request.setTo(workgroupJID);
@@ -895,8 +913,9 @@ public class AgentSession {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void saveMacros(MacroGroup group) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void saveMacros(MacroGroup group) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Macros request = new Macros();
request.setType(IQ.Type.set);
request.setTo(workgroupJID);
@@ -913,8 +932,9 @@ public class AgentSession {
* @return Map a map of all metadata associated with the sessionID.
* @throws XMPPException if an error occurs while getting information from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Map> getChatMetadata(String sessionID) throws XMPPException, NotConnectedException {
+ public Map> getChatMetadata(String sessionID) throws XMPPException, NotConnectedException, InterruptedException {
ChatMetadata request = new ChatMetadata();
request.setType(IQ.Type.get);
request.setTo(workgroupJID);
@@ -952,8 +972,9 @@ public class AgentSession {
* the request.
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendRoomInvitation(RoomInvitation.Type type, String invitee, String sessionID, String reason) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void sendRoomInvitation(RoomInvitation.Type type, String invitee, String sessionID, String reason) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
final RoomInvitation invitation = new RoomInvitation(type, invitee, sessionID, reason);
IQ iq = new RoomInvitation.RoomInvitationIQ(invitation);
@@ -989,8 +1010,9 @@ public class AgentSession {
* the request.
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendRoomTransfer(RoomTransfer.Type type, String invitee, String sessionID, String reason) throws NoResponseException, XMPPErrorException, NotConnectedException
+ public void sendRoomTransfer(RoomTransfer.Type type, String invitee, String sessionID, String reason) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
{
final RoomTransfer transfer = new RoomTransfer(type, invitee, sessionID, reason);
IQ iq = new RoomTransfer.RoomTransferIQ(transfer);
@@ -1010,8 +1032,9 @@ public class AgentSession {
* @throws XMPPErrorException if an error occurs while sending the request to the server.
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public GenericSettings getGenericSettings(XMPPConnection con, String query) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public GenericSettings getGenericSettings(XMPPConnection con, String query) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
GenericSettings setting = new GenericSettings();
setting.setType(IQ.Type.get);
setting.setTo(workgroupJID);
@@ -1021,7 +1044,7 @@ public class AgentSession {
return response;
}
- public boolean hasMonitorPrivileges(XMPPConnection con) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean hasMonitorPrivileges(XMPPConnection con) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
MonitorPacket request = new MonitorPacket();
request.setType(IQ.Type.get);
request.setTo(workgroupJID);
@@ -1030,7 +1053,7 @@ public class AgentSession {
return response.isMonitor();
}
- public void makeRoomOwner(XMPPConnection con, String sessionID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void makeRoomOwner(XMPPConnection con, String sessionID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
MonitorPacket request = new MonitorPacket();
request.setType(IQ.Type.set);
request.setTo(workgroupJID);
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/Offer.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/Offer.java
index 374de974e..363d92691 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/Offer.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/Offer.java
@@ -81,8 +81,9 @@ public class Offer {
/**
* Accepts the offer.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void accept() throws NotConnectedException {
+ public void accept() throws NotConnectedException, InterruptedException {
Stanza acceptPacket = new AcceptPacket(this.session.getWorkgroupJID());
connection.sendPacket(acceptPacket);
// TODO: listen for a reply.
@@ -92,8 +93,9 @@ public class Offer {
/**
* Rejects the offer.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void reject() throws NotConnectedException {
+ public void reject() throws NotConnectedException, InterruptedException {
RejectPacket rejectPacket = new RejectPacket(this.session.getWorkgroupJID());
connection.sendPacket(rejectPacket);
// TODO: listen for a reply.
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/OfferConfirmation.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/OfferConfirmation.java
index 7cb0d7198..e526ca71e 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/OfferConfirmation.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/OfferConfirmation.java
@@ -53,7 +53,7 @@ public class OfferConfirmation extends SimpleIQ {
}
- public void notifyService(XMPPConnection con, String workgroup, String createdRoomName) throws NotConnectedException {
+ public void notifyService(XMPPConnection con, String workgroup, String createdRoomName) throws NotConnectedException, InterruptedException {
NotifyServicePacket packet = new NotifyServicePacket(workgroup, createdRoomName);
con.sendPacket(packet);
}
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/TranscriptManager.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/TranscriptManager.java
index 70181faef..f05d6c07c 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/TranscriptManager.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/TranscriptManager.java
@@ -47,8 +47,9 @@ public class TranscriptManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Transcript getTranscript(String workgroupJID, String sessionID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public Transcript getTranscript(String workgroupJID, String sessionID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Transcript request = new Transcript(sessionID);
request.setTo(workgroupJID);
Transcript response = (Transcript) connection.createPacketCollectorAndSend(request).nextResultOrThrow();
@@ -65,8 +66,9 @@ public class TranscriptManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Transcripts getTranscripts(String workgroupJID, String userID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public Transcripts getTranscripts(String workgroupJID, String userID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Transcripts request = new Transcripts(userID);
request.setTo(workgroupJID);
Transcripts response = (Transcripts) connection.createPacketCollectorAndSend(request).nextResultOrThrow();
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/TranscriptSearchManager.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/TranscriptSearchManager.java
index faaaeadfe..2dfd15ee8 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/TranscriptSearchManager.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/TranscriptSearchManager.java
@@ -50,8 +50,9 @@ public class TranscriptSearchManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Form getSearchForm(String serviceJID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public Form getSearchForm(String serviceJID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
TranscriptSearch search = new TranscriptSearch();
search.setType(IQ.Type.get);
search.setTo(serviceJID);
@@ -72,8 +73,9 @@ public class TranscriptSearchManager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public ReportedData submitSearch(String serviceJID, Form completedForm) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public ReportedData submitSearch(String serviceJID, Form completedForm) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
TranscriptSearch search = new TranscriptSearch();
search.setType(IQ.Type.get);
search.setTo(serviceJID);
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java
index 25156da22..5b7ae8b93 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java
@@ -175,8 +175,9 @@ public class Workgroup {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public boolean isAvailable() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public boolean isAvailable() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
Presence directedPresence = new Presence(Presence.Type.available);
directedPresence.setTo(workgroupJID);
PacketFilter typeFilter = new PacketTypeFilter(Presence.class);
@@ -250,8 +251,9 @@ public class Workgroup {
* that a connection failure occured or that the server explicitly rejected the
* request to join the queue.
* @throws SmackException
+ * @throws InterruptedException
*/
- public void joinQueue() throws XMPPException, SmackException {
+ public void joinQueue() throws XMPPException, SmackException, InterruptedException {
joinQueue(null);
}
@@ -288,8 +290,9 @@ public class Workgroup {
* that a connection failure occured or that the server explicitly rejected the
* request to join the queue.
* @throws SmackException
+ * @throws InterruptedException
*/
- public void joinQueue(Form answerForm) throws XMPPException, SmackException {
+ public void joinQueue(Form answerForm) throws XMPPException, SmackException, InterruptedException {
joinQueue(answerForm, null);
}
@@ -327,8 +330,9 @@ public class Workgroup {
* request to join the queue.
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void joinQueue(Form answerForm, String userID) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void joinQueue(Form answerForm, String userID) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// If already in the queue ignore the join request.
if (inQueue) {
throw new IllegalStateException("Already in queue " + workgroupJID);
@@ -374,8 +378,9 @@ public class Workgroup {
* that a connection failure occured or that the server explicitly rejected the
* request to join the queue.
* @throws SmackException
+ * @throws InterruptedException
*/
- public void joinQueue(Map metadata, String userID) throws XMPPException, SmackException {
+ public void joinQueue(Map metadata, String userID) throws XMPPException, SmackException, InterruptedException {
// If already in the queue ignore the join request.
if (inQueue) {
throw new IllegalStateException("Already in queue " + workgroupJID);
@@ -408,8 +413,9 @@ public class Workgroup {
* request to the server.
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void departQueue() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public void departQueue() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
// If not in the queue ignore the depart request.
if (!inQueue) {
return;
@@ -584,8 +590,9 @@ public class Workgroup {
* @return the ChatSetting if found, otherwise false.
* @throws XMPPException if an error occurs while getting information from the server.
* @throws SmackException
+ * @throws InterruptedException
*/
- public ChatSetting getChatSetting(String key) throws XMPPException, SmackException {
+ public ChatSetting getChatSetting(String key) throws XMPPException, SmackException, InterruptedException {
ChatSettings chatSettings = getChatSettings(key, -1);
return chatSettings.getFirstEntry();
}
@@ -597,8 +604,9 @@ public class Workgroup {
* @return the ChatSettings of given type, otherwise null.
* @throws XMPPException if an error occurs while getting information from the server.
* @throws SmackException
+ * @throws InterruptedException
*/
- public ChatSettings getChatSettings(int type) throws XMPPException, SmackException {
+ public ChatSettings getChatSettings(int type) throws XMPPException, SmackException, InterruptedException {
return getChatSettings(null, type);
}
@@ -608,8 +616,9 @@ public class Workgroup {
* @return all ChatSettings of a given workgroup.
* @throws XMPPException if an error occurs while getting information from the server.
* @throws SmackException
+ * @throws InterruptedException
*/
- public ChatSettings getChatSettings() throws XMPPException, SmackException {
+ public ChatSettings getChatSettings() throws XMPPException, SmackException, InterruptedException {
return getChatSettings(null, -1);
}
@@ -621,8 +630,9 @@ public class Workgroup {
* @throws NoResponseException
* @throws XMPPErrorException if an error occurs while getting information from the server.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- private ChatSettings getChatSettings(String key, int type) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ private ChatSettings getChatSettings(String key, int type) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
ChatSettings request = new ChatSettings();
if (key != null) {
request.setKey(key);
@@ -644,8 +654,9 @@ public class Workgroup {
*
* @return true if the email service is available, otherwise return false.
* @throws SmackException
+ * @throws InterruptedException
*/
- public boolean isEmailAvailable() throws SmackException {
+ public boolean isEmailAvailable() throws SmackException, InterruptedException {
ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(connection);
try {
@@ -665,8 +676,9 @@ public class Workgroup {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public OfflineSettings getOfflineSettings() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public OfflineSettings getOfflineSettings() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
OfflineSettings request = new OfflineSettings();
request.setType(IQ.Type.get);
request.setTo(workgroupJID);
@@ -683,8 +695,9 @@ public class Workgroup {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public SoundSettings getSoundSettings() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public SoundSettings getSoundSettings() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
SoundSettings request = new SoundSettings();
request.setType(IQ.Type.get);
request.setTo(workgroupJID);
@@ -700,8 +713,9 @@ public class Workgroup {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public WorkgroupProperties getWorkgroupProperties() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public WorkgroupProperties getWorkgroupProperties() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
WorkgroupProperties request = new WorkgroupProperties();
request.setType(IQ.Type.get);
request.setTo(workgroupJID);
@@ -719,8 +733,9 @@ public class Workgroup {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public WorkgroupProperties getWorkgroupProperties(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public WorkgroupProperties getWorkgroupProperties(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
WorkgroupProperties request = new WorkgroupProperties();
request.setJid(jid);
request.setType(IQ.Type.get);
@@ -741,8 +756,9 @@ public class Workgroup {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public Form getWorkgroupForm() throws NoResponseException, XMPPErrorException, NotConnectedException {
+ public Form getWorkgroupForm() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
WorkgroupForm workgroupForm = new WorkgroupForm();
workgroupForm.setType(IQ.Type.get);
workgroupForm.setTo(workgroupJID);
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/DefaultMessageEventRequestListener.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/DefaultMessageEventRequestListener.java
index bfc7ccc47..965d54619 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/DefaultMessageEventRequestListener.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/DefaultMessageEventRequestListener.java
@@ -31,7 +31,7 @@ import org.jivesoftware.smack.SmackException.NotConnectedException;
public class DefaultMessageEventRequestListener implements MessageEventRequestListener {
public void deliveredNotificationRequested(String from, String packetID,
- MessageEventManager messageEventManager) throws NotConnectedException
+ MessageEventManager messageEventManager) throws NotConnectedException, InterruptedException
{
// Send to the message's sender that the message has been delivered
messageEventManager.sendDeliveredNotification(from, packetID);
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/MessageEventManager.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/MessageEventManager.java
index 732307bde..1856120cf 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/MessageEventManager.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/MessageEventManager.java
@@ -208,8 +208,9 @@ public class MessageEventManager extends Manager {
* @param to the recipient of the notification.
* @param packetID the id of the message to send.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendDeliveredNotification(String to, String packetID) throws NotConnectedException {
+ public void sendDeliveredNotification(String to, String packetID) throws NotConnectedException, InterruptedException {
// Create the message to send
Message msg = new Message(to);
// Create a MessageEvent Package and add it to the message
@@ -227,8 +228,9 @@ public class MessageEventManager extends Manager {
* @param to the recipient of the notification.
* @param packetID the id of the message to send.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendDisplayedNotification(String to, String packetID) throws NotConnectedException {
+ public void sendDisplayedNotification(String to, String packetID) throws NotConnectedException, InterruptedException {
// Create the message to send
Message msg = new Message(to);
// Create a MessageEvent Package and add it to the message
@@ -246,8 +248,9 @@ public class MessageEventManager extends Manager {
* @param to the recipient of the notification.
* @param packetID the id of the message to send.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendComposingNotification(String to, String packetID) throws NotConnectedException {
+ public void sendComposingNotification(String to, String packetID) throws NotConnectedException, InterruptedException {
// Create the message to send
Message msg = new Message(to);
// Create a MessageEvent Package and add it to the message
@@ -265,8 +268,9 @@ public class MessageEventManager extends Manager {
* @param to the recipient of the notification.
* @param packetID the id of the message to send.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void sendCancelledNotification(String to, String packetID) throws NotConnectedException {
+ public void sendCancelledNotification(String to, String packetID) throws NotConnectedException, InterruptedException {
// Create the message to send
Message msg = new Message(to);
// Create a MessageEvent Package and add it to the message
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/MessageEventRequestListener.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/MessageEventRequestListener.java
index b0fdd3675..71583a428 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/MessageEventRequestListener.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/xevent/MessageEventRequestListener.java
@@ -48,9 +48,10 @@ public interface MessageEventRequestListener {
* @param packetID the id of the message that was sent.
* @param messageEventManager the messageEventManager that fired the listener.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
public void deliveredNotificationRequested(String from, String packetID,
- MessageEventManager messageEventManager) throws NotConnectedException;
+ MessageEventManager messageEventManager) throws NotConnectedException, InterruptedException;
/**
* Called when a request for message displayed notification is received.
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/xroster/RosterExchangeManager.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/xroster/RosterExchangeManager.java
index 5569c27de..3054026a7 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/xroster/RosterExchangeManager.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/xroster/RosterExchangeManager.java
@@ -115,8 +115,9 @@ public class RosterExchangeManager {
* @param roster the roster to send
* @param targetUserID the user that will receive the roster entries
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void send(Roster roster, String targetUserID) throws NotConnectedException {
+ public void send(Roster roster, String targetUserID) throws NotConnectedException, InterruptedException {
// Create a new message to send the roster
Message msg = new Message(targetUserID);
// Create a RosterExchange Package and add it to the message
@@ -134,8 +135,9 @@ public class RosterExchangeManager {
* @param rosterEntry the roster entry to send
* @param targetUserID the user that will receive the roster entries
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void send(RosterEntry rosterEntry, String targetUserID) throws NotConnectedException {
+ public void send(RosterEntry rosterEntry, String targetUserID) throws NotConnectedException, InterruptedException {
// Create a new message to send the roster
Message msg = new Message(targetUserID);
// Create a RosterExchange Package and add it to the message
@@ -155,8 +157,9 @@ public class RosterExchangeManager {
* @param rosterGroup the roster group to send
* @param targetUserID the user that will receive the roster entries
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- public void send(RosterGroup rosterGroup, String targetUserID) throws NotConnectedException {
+ public void send(RosterGroup rosterGroup, String targetUserID) throws NotConnectedException, InterruptedException {
// Create a new message to send the roster
Message msg = new Message(targetUserID);
// Create a RosterExchange Package and add it to the message
diff --git a/smack-sasl-javax/src/test/java/org/jivesoftware/smack/sasl/javax/SASLDigestMD5Test.java b/smack-sasl-javax/src/test/java/org/jivesoftware/smack/sasl/javax/SASLDigestMD5Test.java
index 3b1659bf2..489c6ff3a 100644
--- a/smack-sasl-javax/src/test/java/org/jivesoftware/smack/sasl/javax/SASLDigestMD5Test.java
+++ b/smack-sasl-javax/src/test/java/org/jivesoftware/smack/sasl/javax/SASLDigestMD5Test.java
@@ -28,7 +28,7 @@ public class SASLDigestMD5Test extends DigestMd5SaslTest {
}
@Test
- public void testDigestMD5() throws NotConnectedException, SmackException {
+ public void testDigestMD5() throws NotConnectedException, SmackException, InterruptedException {
runTest();
}
}
diff --git a/smack-sasl-provided/src/test/java/org/jivesoftware/smack/sasl/provided/SASLDigestMD5Test.java b/smack-sasl-provided/src/test/java/org/jivesoftware/smack/sasl/provided/SASLDigestMD5Test.java
index 0cda8b076..425473945 100644
--- a/smack-sasl-provided/src/test/java/org/jivesoftware/smack/sasl/provided/SASLDigestMD5Test.java
+++ b/smack-sasl-provided/src/test/java/org/jivesoftware/smack/sasl/provided/SASLDigestMD5Test.java
@@ -27,7 +27,7 @@ public class SASLDigestMD5Test extends DigestMd5SaslTest {
}
@Test
- public void testDigestMD5() throws NotConnectedException, SmackException {
+ public void testDigestMD5() throws NotConnectedException, SmackException, InterruptedException {
runTest();
}
}
diff --git a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java
index be3253191..0b6b8881a 100644
--- a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java
+++ b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java
@@ -334,14 +334,14 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
}
@Override
- protected void afterSuccessfulLogin(final boolean resumed) throws NotConnectedException {
+ protected void afterSuccessfulLogin(final boolean resumed) throws NotConnectedException, InterruptedException {
// Reset the flag in case it was set
disconnectedButResumeable = false;
super.afterSuccessfulLogin(resumed);
}
@Override
- protected synchronized void loginNonAnonymously(String username, String password, String resource) throws XMPPException, SmackException, IOException {
+ protected synchronized void loginNonAnonymously(String username, String password, String resource) throws XMPPException, SmackException, IOException, InterruptedException {
if (saslAuthentication.hasNonAnonymousAuthentication()) {
// Authenticate using SASL
if (password != null) {
@@ -406,7 +406,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
}
@Override
- public synchronized void loginAnonymously() throws XMPPException, SmackException, IOException {
+ public synchronized void loginAnonymously() throws XMPPException, SmackException, IOException, InterruptedException {
// Wait with SASL auth until the SASL mechanisms have been received
saslFeatureReceived.checkIfSuccessOrWaitOrThrow();
@@ -447,7 +447,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
// Try to send a last SM Acknowledgement. Most servers won't find this information helpful, as the SM
// state is dropped after a clean disconnect anyways. OTOH it doesn't hurt much either.
sendSmAcknowledgementInternal();
- } catch (NotConnectedException e) {
+ } catch (InterruptedException | NotConnectedException e) {
LOGGER.log(Level.FINE, "Can not send final SM ack as connection is not connected", e);
}
}
@@ -509,12 +509,12 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
}
@Override
- public void send(PlainStreamElement element) throws NotConnectedException {
+ public void send(PlainStreamElement element) throws NotConnectedException, InterruptedException {
packetWriter.sendStreamElement(element);
}
@Override
- protected void sendPacketInternal(Stanza packet) throws NotConnectedException {
+ protected void sendPacketInternal(Stanza packet) throws NotConnectedException, InterruptedException {
packetWriter.sendStreamElement(packet);
if (isSmEnabled()) {
for (PacketFilter requestAckPredicate : requestAckPredicates) {
@@ -777,8 +777,9 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
* @throws NotConnectedException
* @throws XMPPException
* @throws NoResponseException
+ * @throws InterruptedException
*/
- private void useCompression() throws NotConnectedException, NoResponseException, XMPPException {
+ private void useCompression() throws NotConnectedException, NoResponseException, XMPPException, InterruptedException {
maybeCompressFeaturesReceived.checkIfSuccessOrWait();
// If stream compression was offered by the server and we want to use
// compression then send compression request to the server
@@ -800,9 +801,10 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
* @throws XMPPException if an error occurs while trying to establish the connection.
* @throws SmackException
* @throws IOException
+ * @throws InterruptedException
*/
@Override
- protected void connectInternal() throws SmackException, IOException, XMPPException {
+ protected void connectInternal() throws SmackException, IOException, XMPPException, InterruptedException {
// Establishes the TCP connection to the server and does setup the reader and writer. Throws an exception if
// there is an error establishing the connection
connectUsingConfiguration();
@@ -854,7 +856,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
}
@Override
- protected void afterFeaturesReceived() throws SecurityRequiredException, NotConnectedException {
+ protected void afterFeaturesReceived() throws SecurityRequiredException, NotConnectedException, InterruptedException {
StartTls startTlsFeature = getFeature(StartTls.ELEMENT, StartTls.NAMESPACE);
if (startTlsFeature != null) {
if (startTlsFeature.required() && config.getSecurityMode() == SecurityMode.disabled) {
@@ -890,8 +892,9 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
* to be sent by the server.
*
* @throws SmackException if the parser could not be reset.
+ * @throws InterruptedException
*/
- void openStream() throws SmackException {
+ void openStream() throws SmackException, InterruptedException {
// If possible, provide the receiving entity of the stream open tag, i.e. the server, as much information as
// possible. The 'to' attribute is *always* available. The 'from' attribute if set by the user and no external
// mechanism is used to determine the local entity (user). And the 'id' attribute is available after the first
@@ -1200,24 +1203,21 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
*
* @param element the element to send.
* @throws NotConnectedException
+ * @throws InterruptedException
*/
- protected void sendStreamElement(Element element) throws NotConnectedException {
+ protected void sendStreamElement(Element element) throws NotConnectedException, InterruptedException {
throwNotConnectedExceptionIfDoneAndResumptionNotPossible();
-
- boolean enqueued = false;
- while (!enqueued) {
- try {
- queue.put(element);
- enqueued = true;
- }
- catch (InterruptedException e) {
- throwNotConnectedExceptionIfDoneAndResumptionNotPossible();
- // If the method above did not throw, then the sending thread was interrupted
- // TODO in a later version of Smack the InterruptedException should be thrown to
- // allow users to interrupt a sending thread that is currently blocking because
- // the queue is full.
- LOGGER.log(Level.WARNING, "Sending thread was interrupted", e);
- }
+ try {
+ queue.put(element);
+ }
+ catch (InterruptedException e) {
+ // put() may throw an InterruptedException for two reasons:
+ // 1. If the queue was shut down
+ // 2. If the thread was interrupted
+ // so we have to check which is the case
+ throwNotConnectedExceptionIfDoneAndResumptionNotPossible();
+ // If the method above did not throw, then the sending thread was interrupted
+ throw e;
}
}
@@ -1457,15 +1457,16 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
*
* @throws StreamManagementNotEnabledException if Stream Mangement is not enabled.
* @throws NotConnectedException if the connection is not connected.
+ * @throws InterruptedException
*/
- public void requestSmAcknowledgement() throws StreamManagementNotEnabledException, NotConnectedException {
+ public void requestSmAcknowledgement() throws StreamManagementNotEnabledException, NotConnectedException, InterruptedException {
if (!isSmEnabled()) {
throw new StreamManagementException.StreamManagementNotEnabledException();
}
requestSmAcknowledgementInternal();
}
- private void requestSmAcknowledgementInternal() throws NotConnectedException {
+ private void requestSmAcknowledgementInternal() throws NotConnectedException, InterruptedException {
packetWriter.sendStreamElement(AckRequest.INSTANCE);
}
@@ -1479,15 +1480,16 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
*
* @throws StreamManagementNotEnabledException if Stream Management is not enabled.
* @throws NotConnectedException if the connection is not connected.
+ * @throws InterruptedException
*/
- public void sendSmAcknowledgement() throws StreamManagementNotEnabledException, NotConnectedException {
+ public void sendSmAcknowledgement() throws StreamManagementNotEnabledException, NotConnectedException, InterruptedException {
if (!isSmEnabled()) {
throw new StreamManagementException.StreamManagementNotEnabledException();
}
sendSmAcknowledgementInternal();
}
- private void sendSmAcknowledgementInternal() throws NotConnectedException {
+ private void sendSmAcknowledgementInternal() throws NotConnectedException, InterruptedException {
packetWriter.sendStreamElement(new AckAnswer(clientHandledStanzasCount));
}
@@ -1679,8 +1681,8 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
try {
listener.processPacket(ackedStanza);
}
- catch (NotConnectedException e) {
- LOGGER.log(Level.FINER, "Received not connected exception", e);
+ catch (InterruptedException | NotConnectedException e) {
+ LOGGER.log(Level.FINER, "Received exception", e);
}
}
String id = ackedStanza.getStanzaId();
@@ -1692,8 +1694,8 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
try {
listener.processPacket(ackedStanza);
}
- catch (NotConnectedException e) {
- LOGGER.log(Level.FINER, "Received not connected exception", e);
+ catch (InterruptedException | NotConnectedException e) {
+ LOGGER.log(Level.FINER, "Received exception", e);
}
}
}