mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-22 06:12:05 +01:00
Expose InterruptedException
SMACK-632
This commit is contained in:
parent
43b99a2a85
commit
bc61527bd2
124 changed files with 977 additions and 597 deletions
|
@ -212,7 +212,7 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void loginNonAnonymously(String username, String password, String resource)
|
protected void loginNonAnonymously(String username, String password, String resource)
|
||||||
throws XMPPException, SmackException, IOException {
|
throws XMPPException, SmackException, IOException, InterruptedException {
|
||||||
if (saslAuthentication.hasNonAnonymousAuthentication()) {
|
if (saslAuthentication.hasNonAnonymousAuthentication()) {
|
||||||
// Authenticate using SASL
|
// Authenticate using SASL
|
||||||
if (password != null) {
|
if (password != null) {
|
||||||
|
@ -230,7 +230,7 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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
|
// Wait with SASL auth until the SASL mechanisms have been received
|
||||||
saslFeatureReceived.checkIfSuccessOrWaitOrThrow();
|
saslFeatureReceived.checkIfSuccessOrWaitOrThrow();
|
||||||
|
|
||||||
|
|
|
@ -362,10 +362,10 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
@Override
|
@Override
|
||||||
public abstract boolean isSecureConnection();
|
public abstract boolean isSecureConnection();
|
||||||
|
|
||||||
protected abstract void sendPacketInternal(Stanza packet) throws NotConnectedException;
|
protected abstract void sendPacketInternal(Stanza packet) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract void send(PlainStreamElement element) throws NotConnectedException;
|
public abstract void send(PlainStreamElement element) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract boolean isUsingCompression();
|
public abstract boolean isUsingCompression();
|
||||||
|
@ -382,8 +382,9 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
* @throws ConnectionException with detailed information about the failed connection.
|
* @throws ConnectionException with detailed information about the failed connection.
|
||||||
* @return a reference to this object, to chain <code>connect()</code> with <code>login()</code>.
|
* @return a reference to this object, to chain <code>connect()</code> with <code>login()</code>.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public synchronized AbstractXMPPConnection connect() throws SmackException, IOException, XMPPException {
|
public synchronized AbstractXMPPConnection connect() throws SmackException, IOException, XMPPException, InterruptedException {
|
||||||
// Check if not already connected
|
// Check if not already connected
|
||||||
throwAlreadyConnectedExceptionIfAppropriate();
|
throwAlreadyConnectedExceptionIfAppropriate();
|
||||||
|
|
||||||
|
@ -406,8 +407,9 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
* @throws XMPPException
|
* @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;
|
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 XMPPException if an error occurs on the XMPP protocol level.
|
||||||
* @throws SmackException if an error occurs somewhere else besides 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 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()) {
|
if (isAnonymous()) {
|
||||||
throwNotConnectedExceptionIfAppropriate();
|
throwNotConnectedExceptionIfAppropriate();
|
||||||
throwAlreadyLoggedInExceptionIfAppropriate();
|
throwAlreadyLoggedInExceptionIfAppropriate();
|
||||||
|
@ -457,10 +460,11 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see #login
|
* @see #login
|
||||||
*/
|
*/
|
||||||
public synchronized void login(CharSequence username, String password) throws XMPPException, SmackException,
|
public synchronized void login(CharSequence username, String password) throws XMPPException, SmackException,
|
||||||
IOException {
|
IOException, InterruptedException {
|
||||||
login(username, password, config.getResource());
|
login(username, password, config.getResource());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -474,10 +478,11 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see #login
|
* @see #login
|
||||||
*/
|
*/
|
||||||
public synchronized void login(CharSequence username, String password, String resource) throws XMPPException,
|
public synchronized void login(CharSequence username, String password, String resource) throws XMPPException,
|
||||||
SmackException, IOException {
|
SmackException, IOException, InterruptedException {
|
||||||
if (!config.allowNullOrEmptyUsername) {
|
if (!config.allowNullOrEmptyUsername) {
|
||||||
StringUtils.requireNotNullOrEmpty(username, "Username must not be null or empty");
|
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)
|
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
|
@Override
|
||||||
public final boolean isConnected() {
|
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
|
// TODO remove this suppression once "disable legacy session" code has been removed from Smack
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
protected void bindResourceAndEstablishSession(String resource) throws XMPPErrorException,
|
protected void bindResourceAndEstablishSession(String resource) throws XMPPErrorException,
|
||||||
IOException, SmackException {
|
IOException, SmackException, InterruptedException {
|
||||||
|
|
||||||
// Wait until either:
|
// Wait until either:
|
||||||
// - the servers last features stanza has been parsed
|
// - 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.
|
// Indicate that we're now authenticated.
|
||||||
this.authenticated = true;
|
this.authenticated = true;
|
||||||
|
|
||||||
|
@ -634,7 +639,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendPacket(Stanza packet) throws NotConnectedException {
|
public void sendPacket(Stanza packet) throws NotConnectedException, InterruptedException {
|
||||||
Objects.requireNonNull(packet, "Packet must not be null");
|
Objects.requireNonNull(packet, "Packet must not be null");
|
||||||
|
|
||||||
throwNotConnectedExceptionIfAppropriate();
|
throwNotConnectedExceptionIfAppropriate();
|
||||||
|
@ -693,7 +698,12 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
*/
|
*/
|
||||||
public synchronized void disconnect(Presence unavailablePresence) 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();
|
shutdown();
|
||||||
callConnectionClosedListener();
|
callConnectionClosedListener();
|
||||||
}
|
}
|
||||||
|
@ -717,7 +727,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PacketCollector createPacketCollectorAndSend(IQ packet) throws NotConnectedException {
|
public PacketCollector createPacketCollectorAndSend(IQ packet) throws NotConnectedException, InterruptedException {
|
||||||
PacketFilter packetFilter = new IQReplyFilter(packet, this);
|
PacketFilter packetFilter = new IQReplyFilter(packet, this);
|
||||||
// Create the packet collector before sending the packet
|
// Create the packet collector before sending the packet
|
||||||
PacketCollector packetCollector = createPacketCollectorAndSend(packetFilter, packet);
|
PacketCollector packetCollector = createPacketCollectorAndSend(packetFilter, packet);
|
||||||
|
@ -726,14 +736,14 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PacketCollector createPacketCollectorAndSend(PacketFilter packetFilter, Stanza packet)
|
public PacketCollector createPacketCollectorAndSend(PacketFilter packetFilter, Stanza packet)
|
||||||
throws NotConnectedException {
|
throws NotConnectedException, InterruptedException {
|
||||||
// Create the packet collector before sending the packet
|
// Create the packet collector before sending the packet
|
||||||
PacketCollector packetCollector = createPacketCollector(packetFilter);
|
PacketCollector packetCollector = createPacketCollector(packetFilter);
|
||||||
try {
|
try {
|
||||||
// Now we can send the packet as the collector has been created
|
// Now we can send the packet as the collector has been created
|
||||||
sendPacket(packet);
|
sendPacket(packet);
|
||||||
}
|
}
|
||||||
catch (NotConnectedException | RuntimeException e) {
|
catch (InterruptedException | NotConnectedException | RuntimeException e) {
|
||||||
packetCollector.cancel();
|
packetCollector.cancel();
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
@ -1062,8 +1072,8 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
try {
|
try {
|
||||||
sendPacket(errorIQ);
|
sendPacket(errorIQ);
|
||||||
}
|
}
|
||||||
catch (NotConnectedException e) {
|
catch (InterruptedException | NotConnectedException e) {
|
||||||
LOGGER.log(Level.WARNING, "NotConnectedException while sending error IQ to unkown IQ request", e);
|
LOGGER.log(Level.WARNING, "Exception while sending error IQ to unkown IQ request", e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ExecutorService executorService = null;
|
ExecutorService executorService = null;
|
||||||
|
@ -1091,8 +1101,8 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
try {
|
try {
|
||||||
sendPacket(response);
|
sendPacket(response);
|
||||||
}
|
}
|
||||||
catch (NotConnectedException e) {
|
catch (InterruptedException | NotConnectedException e) {
|
||||||
LOGGER.log(Level.WARNING, "NotConnectedException while sending response to IQ request", 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,
|
protected final void parseFeatures(XmlPullParser parser) throws XmlPullParserException,
|
||||||
IOException, SmackException {
|
IOException, SmackException, InterruptedException {
|
||||||
streamFeatures.clear();
|
streamFeatures.clear();
|
||||||
final int initialDepth = parser.getDepth();
|
final int initialDepth = parser.getDepth();
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -1397,7 +1407,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
afterFeaturesReceived();
|
afterFeaturesReceived();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void afterFeaturesReceived() throws SecurityRequiredException, NotConnectedException {
|
protected void afterFeaturesReceived() throws SecurityRequiredException, NotConnectedException, InterruptedException {
|
||||||
// Default implementation does nothing
|
// Default implementation does nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1419,14 +1429,14 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
|
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
|
||||||
PacketListener callback) throws NotConnectedException {
|
PacketListener callback) throws NotConnectedException, InterruptedException {
|
||||||
sendStanzaWithResponseCallback(stanza, replyFilter, callback, null);
|
sendStanzaWithResponseCallback(stanza, replyFilter, callback, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
|
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
|
||||||
PacketListener callback, ExceptionCallback exceptionCallback)
|
PacketListener callback, ExceptionCallback exceptionCallback)
|
||||||
throws NotConnectedException {
|
throws NotConnectedException, InterruptedException {
|
||||||
sendStanzaWithResponseCallback(stanza, replyFilter, callback, exceptionCallback,
|
sendStanzaWithResponseCallback(stanza, replyFilter, callback, exceptionCallback,
|
||||||
getPacketReplyTimeout());
|
getPacketReplyTimeout());
|
||||||
}
|
}
|
||||||
|
@ -1434,7 +1444,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
@Override
|
@Override
|
||||||
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
|
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
|
||||||
final PacketListener callback, final ExceptionCallback exceptionCallback,
|
final PacketListener callback, final ExceptionCallback exceptionCallback,
|
||||||
long timeout) throws NotConnectedException {
|
long timeout) throws NotConnectedException, InterruptedException {
|
||||||
Objects.requireNonNull(stanza, "stanza must not be null");
|
Objects.requireNonNull(stanza, "stanza must not be null");
|
||||||
// While Smack allows to add PacketListeners with a PacketFilter value of 'null', we
|
// 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
|
// 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() {
|
final PacketListener packetListener = new PacketListener() {
|
||||||
@Override
|
@Override
|
||||||
public void processPacket(Stanza packet) throws NotConnectedException {
|
public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
|
||||||
try {
|
try {
|
||||||
XMPPErrorException.ifHasErrorThenThrow(packet);
|
XMPPErrorException.ifHasErrorThenThrow(packet);
|
||||||
callback.processPacket(packet);
|
callback.processPacket(packet);
|
||||||
|
@ -1475,20 +1485,20 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback)
|
public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback)
|
||||||
throws NotConnectedException {
|
throws NotConnectedException, InterruptedException {
|
||||||
sendIqWithResponseCallback(iqRequest, callback, null);
|
sendIqWithResponseCallback(iqRequest, callback, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback,
|
public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback,
|
||||||
ExceptionCallback exceptionCallback) throws NotConnectedException {
|
ExceptionCallback exceptionCallback) throws NotConnectedException, InterruptedException {
|
||||||
sendIqWithResponseCallback(iqRequest, callback, exceptionCallback, getPacketReplyTimeout());
|
sendIqWithResponseCallback(iqRequest, callback, exceptionCallback, getPacketReplyTimeout());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendIqWithResponseCallback(IQ iqRequest, final PacketListener callback,
|
public void sendIqWithResponseCallback(IQ iqRequest, final PacketListener callback,
|
||||||
final ExceptionCallback exceptionCallback, long timeout)
|
final ExceptionCallback exceptionCallback, long timeout)
|
||||||
throws NotConnectedException {
|
throws NotConnectedException, InterruptedException {
|
||||||
PacketFilter replyFilter = new IQReplyFilter(iqRequest, this);
|
PacketFilter replyFilter = new IQReplyFilter(iqRequest, this);
|
||||||
sendStanzaWithResponseCallback(iqRequest, replyFilter, callback, exceptionCallback, timeout);
|
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) {
|
public void addOneTimeSyncCallback(final PacketListener callback, final PacketFilter packetFilter) {
|
||||||
final PacketListener packetListener = new PacketListener() {
|
final PacketListener packetListener = new PacketListener() {
|
||||||
@Override
|
@Override
|
||||||
public void processPacket(Stanza packet) throws NotConnectedException {
|
public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
|
||||||
try {
|
try {
|
||||||
callback.processPacket(packet);
|
callback.processPacket(packet);
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
@ -19,8 +19,6 @@ package org.jivesoftware.smack;
|
||||||
|
|
||||||
import java.util.concurrent.ArrayBlockingQueue;
|
import java.util.concurrent.ArrayBlockingQueue;
|
||||||
import java.util.concurrent.TimeUnit;
|
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.SmackException.NoResponseException;
|
||||||
import org.jivesoftware.smack.XMPPException.XMPPErrorException;
|
import org.jivesoftware.smack.XMPPException.XMPPErrorException;
|
||||||
|
@ -43,8 +41,6 @@ import org.jivesoftware.smack.packet.Stanza;
|
||||||
*/
|
*/
|
||||||
public class PacketCollector {
|
public class PacketCollector {
|
||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(PacketCollector.class.getName());
|
|
||||||
|
|
||||||
private final PacketFilter packetFilter;
|
private final PacketFilter packetFilter;
|
||||||
private final ArrayBlockingQueue<Stanza> resultQueue;
|
private final ArrayBlockingQueue<Stanza> resultQueue;
|
||||||
|
|
||||||
|
@ -131,18 +127,14 @@ public class PacketCollector {
|
||||||
* available.
|
* available.
|
||||||
*
|
*
|
||||||
* @return the next available packet.
|
* @return the next available packet.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <P extends Stanza> P nextResultBlockForever() {
|
public <P extends Stanza> P nextResultBlockForever() throws InterruptedException {
|
||||||
throwIfCancelled();
|
throwIfCancelled();
|
||||||
P res = null;
|
P res = null;
|
||||||
while (res == null) {
|
while (res == null) {
|
||||||
try {
|
res = (P) resultQueue.take();
|
||||||
res = (P) resultQueue.take();
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
LOGGER.log(Level.FINE,
|
|
||||||
"nextResultBlockForever was interrupted", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -152,8 +144,9 @@ public class PacketCollector {
|
||||||
* timeout has elapsed.
|
* timeout has elapsed.
|
||||||
*
|
*
|
||||||
* @return the next available packet.
|
* @return the next available packet.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public <P extends Stanza> P nextResult() {
|
public <P extends Stanza> P nextResult() throws InterruptedException {
|
||||||
return nextResult(connection.getPacketReplyTimeout());
|
return nextResult(connection.getPacketReplyTimeout());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,20 +159,16 @@ public class PacketCollector {
|
||||||
*
|
*
|
||||||
* @param timeout the timeout in milliseconds.
|
* @param timeout the timeout in milliseconds.
|
||||||
* @return the next available packet.
|
* @return the next available packet.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <P extends Stanza> P nextResult(long timeout) {
|
public <P extends Stanza> P nextResult(long timeout) throws InterruptedException {
|
||||||
throwIfCancelled();
|
throwIfCancelled();
|
||||||
P res = null;
|
P res = null;
|
||||||
long remainingWait = timeout;
|
long remainingWait = timeout;
|
||||||
waitStart = System.currentTimeMillis();
|
waitStart = System.currentTimeMillis();
|
||||||
do {
|
do {
|
||||||
try {
|
res = (P) resultQueue.poll(remainingWait, TimeUnit.MILLISECONDS);
|
||||||
res = (P) resultQueue.poll(remainingWait, TimeUnit.MILLISECONDS);
|
|
||||||
}
|
|
||||||
catch (InterruptedException e) {
|
|
||||||
LOGGER.log(Level.FINE, "nextResult was interrupted", e);
|
|
||||||
}
|
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -196,8 +185,9 @@ public class PacketCollector {
|
||||||
* @return the next available packet.
|
* @return the next available packet.
|
||||||
* @throws XMPPErrorException in case an error response.
|
* @throws XMPPErrorException in case an error response.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public <P extends Stanza> P nextResultOrThrow() throws NoResponseException, XMPPErrorException {
|
public <P extends Stanza> P nextResultOrThrow() throws NoResponseException, XMPPErrorException, InterruptedException {
|
||||||
return nextResultOrThrow(connection.getPacketReplyTimeout());
|
return nextResultOrThrow(connection.getPacketReplyTimeout());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -209,8 +199,9 @@ public class PacketCollector {
|
||||||
* @return the next available packet.
|
* @return the next available packet.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws XMPPErrorException in case an error response.
|
* @throws XMPPErrorException in case an error response.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public <P extends Stanza> P nextResultOrThrow(long timeout) throws NoResponseException, XMPPErrorException {
|
public <P extends Stanza> P nextResultOrThrow(long timeout) throws NoResponseException, XMPPErrorException, InterruptedException {
|
||||||
P result = nextResult(timeout);
|
P result = nextResult(timeout);
|
||||||
cancel();
|
cancel();
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
|
|
|
@ -47,7 +47,8 @@ public interface PacketListener {
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param packet the packet to process.
|
* @param packet the packet to process.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void processPacket(Stanza packet) throws NotConnectedException;
|
public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -180,21 +180,17 @@ public class SASLAuthentication {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws SASLErrorException
|
* @throws SASLErrorException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void authenticate(String resource, CallbackHandler cbh) throws IOException,
|
public void authenticate(String resource, CallbackHandler cbh) throws IOException,
|
||||||
XMPPErrorException, SASLErrorException, SmackException {
|
XMPPErrorException, SASLErrorException, SmackException, InterruptedException {
|
||||||
SASLMechanism selectedMechanism = selectMechanism();
|
SASLMechanism selectedMechanism = selectMechanism();
|
||||||
if (selectedMechanism != null) {
|
if (selectedMechanism != null) {
|
||||||
currentMechanism = selectedMechanism;
|
currentMechanism = selectedMechanism;
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
currentMechanism.authenticate(connection.getHost(), connection.getServiceName(), cbh);
|
currentMechanism.authenticate(connection.getHost(), connection.getServiceName(), cbh);
|
||||||
try {
|
// Wait until SASL negotiation finishes
|
||||||
// Wait until SASL negotiation finishes
|
wait(connection.getPacketReplyTimeout());
|
||||||
wait(connection.getPacketReplyTimeout());
|
|
||||||
}
|
|
||||||
catch (InterruptedException e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
maybeThrowException();
|
maybeThrowException();
|
||||||
|
@ -224,10 +220,11 @@ public class SASLAuthentication {
|
||||||
* @throws SASLErrorException
|
* @throws SASLErrorException
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void authenticate(String username, String password, String resource)
|
public void authenticate(String username, String password, String resource)
|
||||||
throws XMPPErrorException, SASLErrorException, IOException,
|
throws XMPPErrorException, SASLErrorException, IOException,
|
||||||
SmackException {
|
SmackException, InterruptedException {
|
||||||
SASLMechanism selectedMechanism = selectMechanism();
|
SASLMechanism selectedMechanism = selectMechanism();
|
||||||
if (selectedMechanism != null) {
|
if (selectedMechanism != null) {
|
||||||
currentMechanism = selectedMechanism;
|
currentMechanism = selectedMechanism;
|
||||||
|
@ -235,13 +232,8 @@ public class SASLAuthentication {
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
currentMechanism.authenticate(username, connection.getHost(),
|
currentMechanism.authenticate(username, connection.getHost(),
|
||||||
connection.getServiceName(), password);
|
connection.getServiceName(), password);
|
||||||
try {
|
// Wait until SASL negotiation finishes
|
||||||
// Wait until SASL negotiation finishes
|
wait(connection.getPacketReplyTimeout());
|
||||||
wait(connection.getPacketReplyTimeout());
|
|
||||||
}
|
|
||||||
catch (InterruptedException e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
maybeThrowException();
|
maybeThrowException();
|
||||||
|
@ -267,20 +259,16 @@ public class SASLAuthentication {
|
||||||
* @throws SASLErrorException
|
* @throws SASLErrorException
|
||||||
* @throws XMPPErrorException if an error occures while authenticating.
|
* @throws XMPPErrorException if an error occures while authenticating.
|
||||||
* @throws SmackException if there was no response from the server.
|
* @throws SmackException if there was no response from the server.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void authenticateAnonymously() throws SASLErrorException,
|
public void authenticateAnonymously() throws SASLErrorException,
|
||||||
SmackException, XMPPErrorException {
|
SmackException, XMPPErrorException, InterruptedException {
|
||||||
currentMechanism = (new SASLAnonymous()).instanceForAuthentication(connection);
|
currentMechanism = (new SASLAnonymous()).instanceForAuthentication(connection);
|
||||||
|
|
||||||
// Wait until SASL negotiation finishes
|
// Wait until SASL negotiation finishes
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
currentMechanism.authenticate(null, null, null, "");
|
currentMechanism.authenticate(null, null, null, "");
|
||||||
try {
|
wait(connection.getPacketReplyTimeout());
|
||||||
wait(connection.getPacketReplyTimeout());
|
|
||||||
}
|
|
||||||
catch (InterruptedException e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
maybeThrowException();
|
maybeThrowException();
|
||||||
|
@ -308,8 +296,9 @@ public class SASLAuthentication {
|
||||||
*
|
*
|
||||||
* @param challenge a base64 encoded string representing the challenge.
|
* @param challenge a base64 encoded string representing the challenge.
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void challengeReceived(String challenge) throws SmackException {
|
public void challengeReceived(String challenge) throws SmackException, InterruptedException {
|
||||||
challengeReceived(challenge, false);
|
challengeReceived(challenge, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,11 +311,12 @@ public class SASLAuthentication {
|
||||||
* @param challenge a base64 encoded string representing the challenge.
|
* @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
|
* @param finalChallenge true if this is the last challenge send by the server within the success stanza
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void challengeReceived(String challenge, boolean finalChallenge) throws SmackException {
|
public void challengeReceived(String challenge, boolean finalChallenge) throws SmackException, InterruptedException {
|
||||||
try {
|
try {
|
||||||
currentMechanism.challengeReceived(challenge, finalChallenge);
|
currentMechanism.challengeReceived(challenge, finalChallenge);
|
||||||
} catch (SmackException e) {
|
} catch (InterruptedException | SmackException e) {
|
||||||
authenticationFailed(e);
|
authenticationFailed(e);
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
@ -336,8 +326,9 @@ public class SASLAuthentication {
|
||||||
* Notification message saying that SASL authentication was successful. The next step
|
* Notification message saying that SASL authentication was successful. The next step
|
||||||
* would be to bind the resource.
|
* would be to bind the resource.
|
||||||
* @throws SmackException
|
* @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
|
// 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
|
// "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
|
// SASL mechanism in use. In XMPP, this is done by including the additional data as the XML
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class SynchronizationPoint<E extends Exception> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendAndWaitForResponse(TopLevelStreamElement request) throws NoResponseException,
|
public void sendAndWaitForResponse(TopLevelStreamElement request) throws NoResponseException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
assert (state == State.Initial);
|
assert (state == State.Initial);
|
||||||
connectionLock.lock();
|
connectionLock.lock();
|
||||||
try {
|
try {
|
||||||
|
@ -80,7 +80,7 @@ public class SynchronizationPoint<E extends Exception> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendAndWaitForResponseOrThrow(PlainStreamElement request) throws E, NoResponseException,
|
public void sendAndWaitForResponseOrThrow(PlainStreamElement request) throws E, NoResponseException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
sendAndWaitForResponse(request);
|
sendAndWaitForResponse(request);
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case Failure:
|
case Failure:
|
||||||
|
@ -172,6 +172,7 @@ public class SynchronizationPoint<E extends Exception> {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} 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);
|
LOGGER.log(Level.WARNING, "Thread interrupt while waiting for condition or timeout ignored", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,8 +158,9 @@ public interface XMPPConnection {
|
||||||
*
|
*
|
||||||
* @param packet the packet to send.
|
* @param packet the packet to send.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void sendPacket(Stanza packet) throws NotConnectedException;
|
public void sendPacket(Stanza packet) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a PlainStreamElement.
|
* Send a PlainStreamElement.
|
||||||
|
@ -171,8 +172,9 @@ public interface XMPPConnection {
|
||||||
*
|
*
|
||||||
* @param element
|
* @param element
|
||||||
* @throws NotConnectedException
|
* @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
|
* 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
|
* @param packet the packet to filter responses from
|
||||||
* @return a new packet collector.
|
* @return a new packet collector.
|
||||||
* @throws NotConnectedException
|
* @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
|
* 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 packetFilter the packet filter to use.
|
||||||
* @param packet the packet to send right after the collector got created
|
* @param packet the packet to send right after the collector got created
|
||||||
* @return a new packet collector.
|
* @return a new packet collector.
|
||||||
|
* @throws InterruptedException
|
||||||
|
* @throws NotConnectedException
|
||||||
*/
|
*/
|
||||||
public PacketCollector createPacketCollectorAndSend(PacketFilter packetFilter, Stanza packet)
|
public PacketCollector createPacketCollectorAndSend(PacketFilter packetFilter, Stanza packet)
|
||||||
throws NotConnectedException;
|
throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet collector for this connection. A packet filter
|
* 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 replyFilter the filter used to determine response stanza (required)
|
||||||
* @param callback the callback invoked if there is a response (required)
|
* @param callback the callback invoked if there is a response (required)
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
|
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 <code>replyFilter</code>.
|
* Send a stanza and wait asynchronously for a response by using <code>replyFilter</code>.
|
||||||
|
@ -479,9 +485,10 @@ public interface XMPPConnection {
|
||||||
* @param callback the callback invoked if there is a response (required)
|
* @param callback the callback invoked if there is a response (required)
|
||||||
* @param exceptionCallback the callback invoked if there is an exception (optional)
|
* @param exceptionCallback the callback invoked if there is an exception (optional)
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter, PacketListener callback,
|
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 <code>replyFilter</code>.
|
* Send a stanza and wait asynchronously for a response by using <code>replyFilter</code>.
|
||||||
|
@ -497,10 +504,11 @@ public interface XMPPConnection {
|
||||||
* @param exceptionCallback the callback invoked if there is an exception (optional)
|
* @param exceptionCallback the callback invoked if there is an exception (optional)
|
||||||
* @param timeout the timeout in milliseconds to wait for a response
|
* @param timeout the timeout in milliseconds to wait for a response
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
|
public void sendStanzaWithResponseCallback(Stanza stanza, PacketFilter replyFilter,
|
||||||
final PacketListener callback, final ExceptionCallback exceptionCallback,
|
final PacketListener callback, final ExceptionCallback exceptionCallback,
|
||||||
long timeout) throws NotConnectedException;
|
long timeout) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a IQ stanza and invoke <code>callback</code> if there is a result of
|
* Send a IQ stanza and invoke <code>callback</code> if there is a result of
|
||||||
|
@ -510,8 +518,9 @@ public interface XMPPConnection {
|
||||||
* @param iqRequest the IQ stanza to send (required)
|
* @param iqRequest the IQ stanza to send (required)
|
||||||
* @param callback the callback invoked if there is result response (required)
|
* @param callback the callback invoked if there is result response (required)
|
||||||
* @throws NotConnectedException
|
* @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 <code>callback</code> if there is a result of
|
* Send a IQ stanza and invoke <code>callback</code> 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 callback the callback invoked if there is result response (required)
|
||||||
* @param exceptionCallback the callback invoked if there is an Exception optional
|
* @param exceptionCallback the callback invoked if there is an Exception optional
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback,
|
public void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback,
|
||||||
ExceptionCallback exceptionCallback) throws NotConnectedException;
|
ExceptionCallback exceptionCallback) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a IQ stanza and invoke <code>callback</code> if there is a result of
|
* Send a IQ stanza and invoke <code>callback</code> 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 exceptionCallback the callback invoked if there is an Exception optional
|
||||||
* @param timeout the timeout in milliseconds to wait for a response
|
* @param timeout the timeout in milliseconds to wait for a response
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void sendIqWithResponseCallback(IQ iqRequest, final PacketListener callback,
|
public void sendIqWithResponseCallback(IQ iqRequest, final PacketListener callback,
|
||||||
final ExceptionCallback exceptionCallback, long timeout)
|
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
|
* Add a callback that is called exactly once and synchronously with the incoming stanza that matches the given
|
||||||
|
|
|
@ -158,9 +158,10 @@ public abstract class SASLMechanism implements Comparable<SASLMechanism> {
|
||||||
* @param password the password for this account.
|
* @param password the password for this account.
|
||||||
* @throws SmackException If a network error occurs while authenticating.
|
* @throws SmackException If a network error occurs while authenticating.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public final void authenticate(String username, String host, String serviceName, String password)
|
public final void authenticate(String username, String host, String serviceName, String password)
|
||||||
throws SmackException, NotConnectedException {
|
throws SmackException, NotConnectedException, InterruptedException {
|
||||||
this.authenticationId = username;
|
this.authenticationId = username;
|
||||||
this.host = host;
|
this.host = host;
|
||||||
this.serviceName = serviceName;
|
this.serviceName = serviceName;
|
||||||
|
@ -181,9 +182,10 @@ public abstract class SASLMechanism implements Comparable<SASLMechanism> {
|
||||||
* @param cbh the CallbackHandler to obtain user information.
|
* @param cbh the CallbackHandler to obtain user information.
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void authenticate(String host,String serviceName, CallbackHandler cbh)
|
public void authenticate(String host,String serviceName, CallbackHandler cbh)
|
||||||
throws SmackException, NotConnectedException {
|
throws SmackException, NotConnectedException, InterruptedException {
|
||||||
this.host = host;
|
this.host = host;
|
||||||
this.serviceName = serviceName;
|
this.serviceName = serviceName;
|
||||||
authenticateInternal(cbh);
|
authenticateInternal(cbh);
|
||||||
|
@ -192,7 +194,7 @@ public abstract class SASLMechanism implements Comparable<SASLMechanism> {
|
||||||
|
|
||||||
protected abstract void authenticateInternal(CallbackHandler cbh) throws SmackException;
|
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();
|
byte[] authenticationBytes = getAuthenticationText();
|
||||||
String authenticationText;
|
String authenticationText;
|
||||||
if (authenticationBytes != null) {
|
if (authenticationBytes != null) {
|
||||||
|
@ -224,8 +226,9 @@ public abstract class SASLMechanism implements Comparable<SASLMechanism> {
|
||||||
* @param finalChallenge true if this is the last challenge send by the server within the success stanza
|
* @param finalChallenge true if this is the last challenge send by the server within the success stanza
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws SmackException
|
* @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[] challenge = Base64.decode(challengeString);
|
||||||
byte[] response = evaluateChallenge(challenge);
|
byte[] response = evaluateChallenge(challenge);
|
||||||
if (finalChallenge) {
|
if (finalChallenge) {
|
||||||
|
|
|
@ -226,7 +226,21 @@ public class ArrayBlockingQueueWithShutdown<E> extends AbstractQueue<E> implemen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
|
* Inserts the specified element into this queue, waiting if necessary
|
||||||
|
* for space to become available.
|
||||||
|
* <p>
|
||||||
|
* This may throw an {@link InterruptedException} in two cases
|
||||||
|
* <ol>
|
||||||
|
* <li>If the queue was shut down.</li>
|
||||||
|
* <li>If the thread was was interrupted.</li>
|
||||||
|
* </ol>
|
||||||
|
* So you have to check which is the case, e.g. by calling {@link #isShutdown()}.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @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 {
|
public void put(E e) throws InterruptedException {
|
||||||
checkNotNull(e);
|
checkNotNull(e);
|
||||||
lock.lockInterruptibly();
|
lock.lockInterruptibly();
|
||||||
|
|
|
@ -198,7 +198,7 @@ public class DummyConnection extends AbstractXMPPConnection {
|
||||||
dummyConnection.connect();
|
dummyConnection.connect();
|
||||||
dummyConnection.login();
|
dummyConnection.login();
|
||||||
}
|
}
|
||||||
catch (SmackException | IOException | XMPPException e) {
|
catch (InterruptedException | SmackException | IOException | XMPPException e) {
|
||||||
throw new IllegalStateException(e);
|
throw new IllegalStateException(e);
|
||||||
}
|
}
|
||||||
return dummyConnection;
|
return dummyConnection;
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class PacketCollectorTest
|
||||||
{
|
{
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void verifyRollover()
|
public void verifyRollover() throws InterruptedException
|
||||||
{
|
{
|
||||||
TestPacketCollector collector = new TestPacketCollector(null, new OKEverything(), 5);
|
TestPacketCollector collector = new TestPacketCollector(null, new OKEverything(), 5);
|
||||||
|
|
||||||
|
@ -92,13 +92,9 @@ public class PacketCollectorTest
|
||||||
// System.out.println(Thread.currentThread().getName() + " packet: " + packet);
|
// System.out.println(Thread.currentThread().getName() + " packet: " + packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (RuntimeException re)
|
catch (InterruptedException e) {
|
||||||
{
|
throw new RuntimeException(e);
|
||||||
if (re.getCause() instanceof InterruptedException)
|
}
|
||||||
{
|
|
||||||
// System.out.println(Thread.currentThread().getName() + " has been interupted");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
consumer1.setName("consumer 1");
|
consumer1.setName("consumer 1");
|
||||||
|
@ -119,7 +115,12 @@ public class PacketCollectorTest
|
||||||
catch (InterruptedException e)
|
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);
|
// System.out.println(Thread.currentThread().getName() + " packet: " + p);
|
||||||
}
|
}
|
||||||
while (p != null);
|
while (p != null);
|
||||||
|
|
|
@ -38,7 +38,7 @@ public class ThreadedDummyConnection extends DummyConnection {
|
||||||
private volatile boolean timeout = false;
|
private volatile boolean timeout = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendPacket(Stanza packet) throws NotConnectedException {
|
public void sendPacket(Stanza packet) throws NotConnectedException, InterruptedException {
|
||||||
super.sendPacket(packet);
|
super.sendPacket(packet);
|
||||||
|
|
||||||
if (packet instanceof IQ && !timeout) {
|
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 threadedDummyConnection = new ThreadedDummyConnection();
|
||||||
threadedDummyConnection.connect();
|
threadedDummyConnection.connect();
|
||||||
return threadedDummyConnection;
|
return threadedDummyConnection;
|
||||||
|
|
|
@ -35,7 +35,7 @@ public class DigestMd5SaslTest extends AbstractSaslTest {
|
||||||
super(saslMechanism);
|
super(saslMechanism);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void runTest() throws NotConnectedException, SmackException {
|
protected void runTest() throws NotConnectedException, SmackException, InterruptedException {
|
||||||
saslMechanism.authenticate("florian", "irrelevant", "xmpp.org", "secret");
|
saslMechanism.authenticate("florian", "irrelevant", "xmpp.org", "secret");
|
||||||
|
|
||||||
byte[] response = saslMechanism.evaluateChallenge(challengeBytes);
|
byte[] response = saslMechanism.evaluateChallenge(challengeBytes);
|
||||||
|
|
|
@ -580,7 +580,7 @@ public class EnhancedDebugger implements SmackDebugger {
|
||||||
try {
|
try {
|
||||||
connection.sendPacket(packetToSend);
|
connection.sendPacket(packetToSend);
|
||||||
}
|
}
|
||||||
catch (NotConnectedException e1) {
|
catch (InterruptedException | NotConnectedException e1) {
|
||||||
e1.printStackTrace();
|
e1.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,8 +102,9 @@ public class CarbonManager extends Manager {
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @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);
|
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
|
* @param new_state whether carbons should be enabled or disabled
|
||||||
* @throws NotConnectedException
|
* @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);
|
IQ setIQ = carbonsEnabledIQ(new_state);
|
||||||
|
|
||||||
connection().sendIqWithResponseCallback(setIQ, new PacketListener() {
|
connection().sendIqWithResponseCallback(setIQ, new PacketListener() {
|
||||||
|
@ -137,10 +139,11 @@ public class CarbonManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public synchronized void setCarbonsEnabled(final boolean new_state) throws NoResponseException,
|
public synchronized void setCarbonsEnabled(final boolean new_state) throws NoResponseException,
|
||||||
XMPPErrorException, NotConnectedException {
|
XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
if (enabled_state == new_state)
|
if (enabled_state == new_state)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -155,8 +158,9 @@ public class CarbonManager extends Manager {
|
||||||
*
|
*
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException if there was no response from the server.
|
* @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);
|
setCarbonsEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,8 +169,9 @@ public class CarbonManager extends Manager {
|
||||||
*
|
*
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException if there was no response from the server.
|
* @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);
|
setCarbonsEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,12 +27,12 @@ import org.jivesoftware.smackx.csi.packet.ClientStateIndication;
|
||||||
*/
|
*/
|
||||||
public class ClientStateIndicationManager {
|
public class ClientStateIndicationManager {
|
||||||
|
|
||||||
public static void active(XMPPConnection connection) throws NotConnectedException {
|
public static void active(XMPPConnection connection) throws NotConnectedException, InterruptedException {
|
||||||
throwIaeIfNotSupported(connection);
|
throwIaeIfNotSupported(connection);
|
||||||
connection.send(ClientStateIndication.Active.INSTANCE);
|
connection.send(ClientStateIndication.Active.INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void inactive(XMPPConnection connection) throws NotConnectedException {
|
public static void inactive(XMPPConnection connection) throws NotConnectedException, InterruptedException {
|
||||||
throwIaeIfNotSupported(connection);
|
throwIaeIfNotSupported(connection);
|
||||||
connection.send(ClientStateIndication.Inactive.INSTANCE);
|
connection.send(ClientStateIndication.Inactive.INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,8 +56,9 @@ public class HOXTManager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return ServiceDiscoveryManager.getInstanceFor(connection).supportsFeature(jid, NAMESPACE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,8 +64,9 @@ public class MultipleRecipientManager {
|
||||||
* some XEP-33 specific features were requested.
|
* some XEP-33 specific features were requested.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public static void send(XMPPConnection connection, Stanza packet, Collection<String> to, Collection<String> cc, Collection<String> bcc) throws NoResponseException, XMPPErrorException, FeatureNotSupportedException, NotConnectedException
|
public static void send(XMPPConnection connection, Stanza packet, Collection<String> to, Collection<String> cc, Collection<String> bcc) throws NoResponseException, XMPPErrorException, FeatureNotSupportedException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
send(connection, packet, to, cc, bcc, null, null, false);
|
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
|
* @throws FeatureNotSupportedException if special XEP-33 features where requested, but the
|
||||||
* server does not support them.
|
* server does not support them.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public static void send(XMPPConnection connection, Stanza packet, Collection<String> to, Collection<String> cc, Collection<String> bcc,
|
public static void send(XMPPConnection connection, Stanza packet, Collection<String> to, Collection<String> cc, Collection<String> 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
|
// 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
|
// 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
|
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.
|
* @param reply the new message to send as a reply.
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws XMPPErrorException
|
* @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);
|
MultipleRecipientInfo info = getMultipleRecipientInfo(original);
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
|
@ -199,7 +202,7 @@ public class MultipleRecipientManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void sendToIndividualRecipients(XMPPConnection connection, Stanza packet,
|
private static void sendToIndividualRecipients(XMPPConnection connection, Stanza packet,
|
||||||
Collection<String> to, Collection<String> cc, Collection<String> bcc) throws NotConnectedException {
|
Collection<String> to, Collection<String> cc, Collection<String> bcc) throws NotConnectedException, InterruptedException {
|
||||||
if (to != null) {
|
if (to != null) {
|
||||||
for (String jid : to) {
|
for (String jid : to) {
|
||||||
packet.setTo(jid);
|
packet.setTo(jid);
|
||||||
|
@ -222,7 +225,7 @@ public class MultipleRecipientManager {
|
||||||
|
|
||||||
private static void sendThroughService(XMPPConnection connection, Stanza packet, Collection<String> to,
|
private static void sendThroughService(XMPPConnection connection, Stanza packet, Collection<String> to,
|
||||||
Collection<String> cc, Collection<String> bcc, String replyTo, String replyRoom, boolean noReply,
|
Collection<String> cc, Collection<String> bcc, String replyTo, String replyRoom, boolean noReply,
|
||||||
String serviceAddress) throws NotConnectedException {
|
String serviceAddress) throws NotConnectedException, InterruptedException {
|
||||||
// Create multiple recipient extension
|
// Create multiple recipient extension
|
||||||
MultipleAddresses multipleAddresses = new MultipleAddresses();
|
MultipleAddresses multipleAddresses = new MultipleAddresses();
|
||||||
if (to != null) {
|
if (to != null) {
|
||||||
|
@ -273,8 +276,9 @@ public class MultipleRecipientManager {
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @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);
|
ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection);
|
||||||
List<String> services = sdm.findServices(MultipleAddresses.NAMESPACE, true, true);
|
List<String> services = sdm.findServices(MultipleAddresses.NAMESPACE, true, true);
|
||||||
if (services.size() > 0) {
|
if (services.size() > 0) {
|
||||||
|
|
|
@ -33,8 +33,9 @@ public class AMPDeliverCondition implements AMPExtension.Condition {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return AMPManager.isConditionSupported(connection, NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,9 @@ public class AMPExpireAtCondition implements AMPExtension.Condition {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return AMPManager.isConditionSupported(connection, NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,8 +86,9 @@ public class AMPManager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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();
|
String featureName = AMPExtension.NAMESPACE + "?action=" + action.toString();
|
||||||
return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE);
|
return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE);
|
||||||
}
|
}
|
||||||
|
@ -100,16 +101,17 @@ public class AMPManager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see AMPDeliverCondition
|
* @see AMPDeliverCondition
|
||||||
* @see AMPExpireAtCondition
|
* @see AMPExpireAtCondition
|
||||||
* @see AMPMatchResourceCondition
|
* @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;
|
String featureName = AMPExtension.NAMESPACE + "?condition=" + conditionName;
|
||||||
return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE);
|
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);
|
return ServiceDiscoveryManager.getInstanceFor(connection).supportsFeature(node, featureName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,8 +33,9 @@ public class AMPMatchResourceCondition implements AMPExtension.Condition {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return AMPManager.isConditionSupported(connection, NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,9 +92,10 @@ public class BookmarkManager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see BookmarkedConference
|
* @see BookmarkedConference
|
||||||
*/
|
*/
|
||||||
public List<BookmarkedConference> getBookmarkedConferences() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<BookmarkedConference> getBookmarkedConferences() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
retrieveBookmarks();
|
retrieveBookmarks();
|
||||||
return Collections.unmodifiableList(bookmarks.getBookmarkedConferences());
|
return Collections.unmodifiableList(bookmarks.getBookmarkedConferences());
|
||||||
}
|
}
|
||||||
|
@ -111,9 +112,10 @@ public class BookmarkManager {
|
||||||
* the server.
|
* the server.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void addBookmarkedConference(String name, String jid, boolean isAutoJoin,
|
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();
|
retrieveBookmarks();
|
||||||
BookmarkedConference bookmark
|
BookmarkedConference bookmark
|
||||||
|
@ -143,10 +145,11 @@ public class BookmarkManager {
|
||||||
* retrieve the bookmarks or persist the bookmarks.
|
* retrieve the bookmarks or persist the bookmarks.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @throws IllegalArgumentException thrown when the conference being removed is a shared
|
* @throws IllegalArgumentException thrown when the conference being removed is a shared
|
||||||
* conference
|
* conference
|
||||||
*/
|
*/
|
||||||
public void removeBookmarkedConference(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void removeBookmarkedConference(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
retrieveBookmarks();
|
retrieveBookmarks();
|
||||||
Iterator<BookmarkedConference> it = bookmarks.getBookmarkedConferences().iterator();
|
Iterator<BookmarkedConference> it = bookmarks.getBookmarkedConferences().iterator();
|
||||||
while(it.hasNext()) {
|
while(it.hasNext()) {
|
||||||
|
@ -169,8 +172,9 @@ public class BookmarkManager {
|
||||||
* @throws XMPPErrorException thrown when there is a problem retriving bookmarks from the server.
|
* @throws XMPPErrorException thrown when there is a problem retriving bookmarks from the server.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<BookmarkedURL> getBookmarkedURLs() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<BookmarkedURL> getBookmarkedURLs() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
retrieveBookmarks();
|
retrieveBookmarks();
|
||||||
return Collections.unmodifiableList(bookmarks.getBookmarkedURLS());
|
return Collections.unmodifiableList(bookmarks.getBookmarkedURLS());
|
||||||
}
|
}
|
||||||
|
@ -185,8 +189,9 @@ public class BookmarkManager {
|
||||||
* the server
|
* the server
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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();
|
retrieveBookmarks();
|
||||||
BookmarkedURL bookmark = new BookmarkedURL(URL, name, isRSS);
|
BookmarkedURL bookmark = new BookmarkedURL(URL, name, isRSS);
|
||||||
List<BookmarkedURL> urls = bookmarks.getBookmarkedURLS();
|
List<BookmarkedURL> urls = bookmarks.getBookmarkedURLS();
|
||||||
|
@ -212,8 +217,9 @@ public class BookmarkManager {
|
||||||
* the server.
|
* the server.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void removeBookmarkedURL(String bookmarkURL) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void removeBookmarkedURL(String bookmarkURL) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
retrieveBookmarks();
|
retrieveBookmarks();
|
||||||
Iterator<BookmarkedURL> it = bookmarks.getBookmarkedURLS().iterator();
|
Iterator<BookmarkedURL> it = bookmarks.getBookmarkedURLS().iterator();
|
||||||
while(it.hasNext()) {
|
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) {
|
synchronized(bookmarkLock) {
|
||||||
if(bookmarks == null) {
|
if(bookmarks == null) {
|
||||||
bookmarks = (Bookmarks) privateDataManager.getPrivateData("storage",
|
bookmarks = (Bookmarks) privateDataManager.getPrivateData("storage",
|
||||||
|
|
|
@ -62,7 +62,8 @@ public interface BytestreamRequest {
|
||||||
/**
|
/**
|
||||||
* Rejects the bytestream request by sending a reject error to the initiator.
|
* Rejects the bytestream request by sending a reject error to the initiator.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void reject() throws NotConnectedException;
|
public void reject() throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ class CloseListener extends AbstractIqRequestHandler {
|
||||||
try {
|
try {
|
||||||
this.manager.replyItemNotFoundPacket(closeRequest);
|
this.manager.replyItemNotFoundPacket(closeRequest);
|
||||||
}
|
}
|
||||||
catch (NotConnectedException e) {
|
catch (InterruptedException | NotConnectedException e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ class CloseListener extends AbstractIqRequestHandler {
|
||||||
try {
|
try {
|
||||||
ibbSession.closeByPeer(closeRequest);
|
ibbSession.closeByPeer(closeRequest);
|
||||||
}
|
}
|
||||||
catch (NotConnectedException e) {
|
catch (InterruptedException | NotConnectedException e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
this.manager.getSessions().remove(closeRequest.getSessionID());
|
this.manager.getSessions().remove(closeRequest.getSessionID());
|
||||||
|
|
|
@ -56,7 +56,7 @@ class DataListener implements PacketListener {
|
||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processPacket(Stanza packet) throws NotConnectedException {
|
public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
|
||||||
Data data = (Data) packet;
|
Data data = (Data) packet;
|
||||||
InBandBytestreamSession ibbSession = this.manager.getSessions().get(
|
InBandBytestreamSession ibbSession = this.manager.getSessions().get(
|
||||||
data.getDataPacketExtension().getSessionID());
|
data.getDataPacketExtension().getSessionID());
|
||||||
|
|
|
@ -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
|
* @throws XMPPException if the user doesn't support or accept in-band bytestreams, or if the
|
||||||
* user prefers smaller block sizes
|
* user prefers smaller block sizes
|
||||||
* @throws SmackException if there was no response from the server.
|
* @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();
|
String sessionID = getNextSessionID();
|
||||||
return establishSession(targetJID, sessionID);
|
return establishSession(targetJID, sessionID);
|
||||||
}
|
}
|
||||||
|
@ -416,9 +417,10 @@ public class InBandBytestreamManager implements BytestreamManager {
|
||||||
* user prefers smaller block sizes
|
* user prefers smaller block sizes
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public InBandBytestreamSession establishSession(String targetJID, String sessionID)
|
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);
|
Open byteStreamRequest = new Open(sessionID, this.defaultBlockSize, this.stanza);
|
||||||
byteStreamRequest.setTo(targetJID);
|
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
|
* @param request IQ packet that should be answered with a not-acceptable error
|
||||||
* @throws NotConnectedException
|
* @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);
|
XMPPError xmppError = new XMPPError(XMPPError.Condition.not_acceptable);
|
||||||
IQ error = IQ.createErrorResponse(request, xmppError);
|
IQ error = IQ.createErrorResponse(request, xmppError);
|
||||||
this.connection.sendPacket(error);
|
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
|
* @param request IQ packet that should be answered with a resource-constraint error
|
||||||
* @throws NotConnectedException
|
* @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);
|
XMPPError xmppError = new XMPPError(XMPPError.Condition.resource_constraint);
|
||||||
IQ error = IQ.createErrorResponse(request, xmppError);
|
IQ error = IQ.createErrorResponse(request, xmppError);
|
||||||
this.connection.sendPacket(error);
|
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
|
* @param request IQ packet that should be answered with a item-not-found error
|
||||||
* @throws NotConnectedException
|
* @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);
|
XMPPError xmppError = new XMPPError(XMPPError.Condition.item_not_found);
|
||||||
IQ error = IQ.createErrorResponse(request, xmppError);
|
IQ error = IQ.createErrorResponse(request, xmppError);
|
||||||
this.connection.sendPacket(error);
|
this.connection.sendPacket(error);
|
||||||
|
|
|
@ -68,8 +68,9 @@ public class InBandBytestreamRequest implements BytestreamRequest {
|
||||||
*
|
*
|
||||||
* @return the session to send/receive data
|
* @return the session to send/receive data
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public InBandBytestreamSession accept() throws NotConnectedException {
|
public InBandBytestreamSession accept() throws NotConnectedException, InterruptedException {
|
||||||
XMPPConnection connection = this.manager.getConnection();
|
XMPPConnection connection = this.manager.getConnection();
|
||||||
|
|
||||||
// create In-Band Bytestream session and store it
|
// 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
|
* Rejects the In-Band Bytestream request by sending a reject error to the
|
||||||
* initiator.
|
* initiator.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void reject() throws NotConnectedException {
|
public void reject() throws NotConnectedException, InterruptedException {
|
||||||
this.manager.replyRejectPacket(this.byteStreamRequest);
|
this.manager.replyRejectPacket(this.byteStreamRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -160,8 +160,9 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
*
|
*
|
||||||
* @param closeRequest the close request from the remote peer
|
* @param closeRequest the close request from the remote peer
|
||||||
* @throws NotConnectedException
|
* @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
|
* 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;
|
private long lastSequence = -1;
|
||||||
|
|
||||||
public void processPacket(Stanza packet) throws NotConnectedException {
|
public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
|
||||||
// get data packet extension
|
// get data packet extension
|
||||||
DataPacketExtension data = ((Data) packet).getDataPacketExtension();
|
DataPacketExtension data = ((Data) packet).getDataPacketExtension();
|
||||||
|
|
||||||
|
@ -613,8 +614,9 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
* @param data the data packet
|
* @param data the data packet
|
||||||
* @throws IOException if an I/O error occurred while sending or if the stream is closed
|
* @throws IOException if an I/O error occurred while sending or if the stream is closed
|
||||||
* @throws NotConnectedException
|
* @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 {
|
public synchronized void write(int b) throws IOException {
|
||||||
if (this.isClosed) {
|
if (this.isClosed) {
|
||||||
|
@ -718,7 +720,7 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
try {
|
try {
|
||||||
writeToXML(data);
|
writeToXML(data);
|
||||||
}
|
}
|
||||||
catch (NotConnectedException e) {
|
catch (InterruptedException | NotConnectedException e) {
|
||||||
IOException ioException = new IOException();
|
IOException ioException = new IOException();
|
||||||
ioException.initCause(e);
|
ioException.initCause(e);
|
||||||
throw ioException;
|
throw ioException;
|
||||||
|
@ -803,7 +805,7 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
private class MessageIBBOutputStream extends IBBOutputStream {
|
private class MessageIBBOutputStream extends IBBOutputStream {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected synchronized void writeToXML(DataPacketExtension data) throws NotConnectedException {
|
protected synchronized void writeToXML(DataPacketExtension data) throws NotConnectedException, InterruptedException {
|
||||||
// create message stanza containing data packet
|
// create message stanza containing data packet
|
||||||
Message message = new Message(remoteJID);
|
Message message = new Message(remoteJID);
|
||||||
message.addExtension(data);
|
message.addExtension(data);
|
||||||
|
|
|
@ -69,7 +69,7 @@ class InitiationListener extends AbstractIqRequestHandler {
|
||||||
try {
|
try {
|
||||||
processRequest(packet);
|
processRequest(packet);
|
||||||
}
|
}
|
||||||
catch (NotConnectedException e) {
|
catch (InterruptedException | NotConnectedException e) {
|
||||||
LOGGER.log(Level.WARNING, "proccessRequest", e);
|
LOGGER.log(Level.WARNING, "proccessRequest", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ class InitiationListener extends AbstractIqRequestHandler {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processRequest(Stanza packet) throws NotConnectedException {
|
private void processRequest(Stanza packet) throws NotConnectedException, InterruptedException {
|
||||||
Open ibbRequest = (Open) packet;
|
Open ibbRequest = (Open) packet;
|
||||||
|
|
||||||
// validate that block size is within allowed range
|
// validate that block size is within allowed range
|
||||||
|
|
|
@ -65,7 +65,7 @@ final class InitiationListener extends AbstractIqRequestHandler {
|
||||||
try {
|
try {
|
||||||
processRequest(packet);
|
processRequest(packet);
|
||||||
}
|
}
|
||||||
catch (NotConnectedException e) {
|
catch (InterruptedException | NotConnectedException e) {
|
||||||
LOGGER.log(Level.WARNING, "process request", e);
|
LOGGER.log(Level.WARNING, "process request", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ final class InitiationListener extends AbstractIqRequestHandler {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processRequest(Stanza packet) throws NotConnectedException {
|
private void processRequest(Stanza packet) throws NotConnectedException, InterruptedException {
|
||||||
Bytestream byteStreamRequest = (Bytestream) packet;
|
Bytestream byteStreamRequest = (Bytestream) packet;
|
||||||
|
|
||||||
// ignore request if in ignore list
|
// ignore request if in ignore list
|
||||||
|
|
|
@ -527,8 +527,9 @@ public final class Socks5BytestreamManager implements BytestreamManager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
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 XMPPErrorException if there was an error querying the XMPP server for SOCKS5 proxies
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
private List<String> determineProxies() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
private List<String> determineProxies() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
ServiceDiscoveryManager serviceDiscoveryManager = ServiceDiscoveryManager.getInstanceFor(this.connection);
|
ServiceDiscoveryManager serviceDiscoveryManager = ServiceDiscoveryManager.getInstanceFor(this.connection);
|
||||||
|
|
||||||
List<String> proxies = new ArrayList<String>();
|
List<String> proxies = new ArrayList<String>();
|
||||||
|
@ -700,8 +702,9 @@ public final class Socks5BytestreamManager implements BytestreamManager {
|
||||||
*
|
*
|
||||||
* @param packet Packet that should be answered with a not-acceptable error
|
* @param packet Packet that should be answered with a not-acceptable error
|
||||||
* @throws NotConnectedException
|
* @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);
|
XMPPError xmppError = new XMPPError(XMPPError.Condition.not_acceptable);
|
||||||
IQ errorIQ = IQ.createErrorResponse(packet, xmppError);
|
IQ errorIQ = IQ.createErrorResponse(packet, xmppError);
|
||||||
this.connection.sendPacket(errorIQ);
|
this.connection.sendPacket(errorIQ);
|
||||||
|
|
|
@ -267,8 +267,9 @@ public class Socks5BytestreamRequest implements BytestreamRequest {
|
||||||
/**
|
/**
|
||||||
* Rejects the SOCKS5 Bytestream request by sending a reject error to the initiator.
|
* Rejects the SOCKS5 Bytestream request by sending a reject error to the initiator.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void reject() throws NotConnectedException {
|
public void reject() throws NotConnectedException, InterruptedException {
|
||||||
this.manager.replyRejectPacket(this.bytestreamRequest);
|
this.manager.replyRejectPacket(this.bytestreamRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,8 +278,9 @@ public class Socks5BytestreamRequest implements BytestreamRequest {
|
||||||
* XMPP exception.
|
* XMPP exception.
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @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";
|
String errorMessage = "Could not establish socket with any provided host";
|
||||||
XMPPError error = XMPPError.from(XMPPError.Condition.item_not_found, errorMessage);
|
XMPPError error = XMPPError.from(XMPPError.Condition.item_not_found, errorMessage);
|
||||||
IQ errorIQ = IQ.createErrorResponse(this.bytestreamRequest, error);
|
IQ errorIQ = IQ.createErrorResponse(this.bytestreamRequest, error);
|
||||||
|
|
|
@ -104,9 +104,10 @@ class Socks5ClientForInitiator extends Socks5Client {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @throws SmackException if there was no response from the server.
|
* @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();
|
Bytestream activate = createStreamHostActivation();
|
||||||
// if activation fails #nextResultOrThrow() throws an exception
|
// if activation fails #nextResultOrThrow() throws an exception
|
||||||
connection.createPacketCollectorAndSend(activate).nextResultOrThrow();
|
connection.createPacketCollectorAndSend(activate).nextResultOrThrow();
|
||||||
|
|
|
@ -434,8 +434,9 @@ public class EntityCapsManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return sdm.supportsFeature(jid, NAMESPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,8 +447,9 @@ public class EntityCapsManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public boolean areEntityCapsSupportedByServer() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public boolean areEntityCapsSupportedByServer() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
return areEntityCapsSupported(connection().getServiceName());
|
return areEntityCapsSupported(connection().getServiceName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -507,7 +509,7 @@ public class EntityCapsManager extends Manager {
|
||||||
try {
|
try {
|
||||||
connection.sendPacket(presence);
|
connection.sendPacket(presence);
|
||||||
}
|
}
|
||||||
catch (NotConnectedException e) {
|
catch (InterruptedException | NotConnectedException e) {
|
||||||
LOGGER.log(Level.WARNING, "Could could not update presence with caps info", e);
|
LOGGER.log(Level.WARNING, "Could could not update presence with caps info", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,8 +102,9 @@ public class ChatStateManager extends Manager {
|
||||||
* @param newState the new state of the chat
|
* @param newState the new state of the chat
|
||||||
* @param chat the chat.
|
* @param chat the chat.
|
||||||
* @throws NotConnectedException
|
* @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) {
|
if(chat == null || newState == null) {
|
||||||
throw new IllegalArgumentException("Arguments cannot be null.");
|
throw new IllegalArgumentException("Arguments cannot be null.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,8 +211,9 @@ public abstract class AdHocCommand {
|
||||||
*
|
*
|
||||||
* @throws XMPPErrorException if there is an error executing the command.
|
* @throws XMPPErrorException if there is an error executing the command.
|
||||||
* @throws NotConnectedException
|
* @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
|
* 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.
|
* @param response the form answer of the previous stage.
|
||||||
* @throws XMPPErrorException if there is a problem executing the command.
|
* @throws XMPPErrorException if there is a problem executing the command.
|
||||||
* @throws NotConnectedException
|
* @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
|
* 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.
|
* @param response the form answer of the previous stage.
|
||||||
* @throws XMPPErrorException if there is a problem executing the command.
|
* @throws XMPPErrorException if there is a problem executing the command.
|
||||||
* @throws NotConnectedException
|
* @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
|
* 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 XMPPErrorException if there is a problem executing the command.
|
||||||
* @throws NotConnectedException
|
* @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
|
* 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 XMPPErrorException if there is a problem executing the command.
|
||||||
* @throws NotConnectedException
|
* @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.
|
* Returns a collection with the allowed actions based on the current stage.
|
||||||
|
|
|
@ -175,7 +175,7 @@ public class AdHocCommandManager extends Manager {
|
||||||
try {
|
try {
|
||||||
return processAdHocCommand(requestData);
|
return processAdHocCommand(requestData);
|
||||||
}
|
}
|
||||||
catch (NoResponseException | NotConnectedException e) {
|
catch (InterruptedException | NoResponseException | NotConnectedException e) {
|
||||||
LOGGER.log(Level.INFO, "processAdHocCommand threw exceptino", e);
|
LOGGER.log(Level.INFO, "processAdHocCommand threw exceptino", e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -252,8 +252,9 @@ public class AdHocCommandManager extends Manager {
|
||||||
* @return the discovered items.
|
* @return the discovered items.
|
||||||
* @throws XMPPException if the operation failed for some reason.
|
* @throws XMPPException if the operation failed for some reason.
|
||||||
* @throws SmackException if there was no response from the server.
|
* @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);
|
return serviceDiscoveryManager.discoverItems(jid, NAMESPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,8 +264,9 @@ public class AdHocCommandManager extends Manager {
|
||||||
* @param jid the full JID to publish the commands to.
|
* @param jid the full JID to publish the commands to.
|
||||||
* @throws XMPPException if the operation failed for some reason.
|
* @throws XMPPException if the operation failed for some reason.
|
||||||
* @throws SmackException if there was no response from the server.
|
* @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
|
// Collects the commands to publish as items
|
||||||
DiscoverItems discoverItems = new DiscoverItems();
|
DiscoverItems discoverItems = new DiscoverItems();
|
||||||
Collection<AdHocCommandInfo> xCommandsList = getRegisteredCommands();
|
Collection<AdHocCommandInfo> xCommandsList = getRegisteredCommands();
|
||||||
|
@ -318,8 +320,9 @@ public class AdHocCommandManager extends Manager {
|
||||||
* the packet to process.
|
* the packet to process.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws NoResponseException
|
* @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
|
// Creates the response with the corresponding data
|
||||||
AdHocCommandData response = new AdHocCommandData();
|
AdHocCommandData response = new AdHocCommandData();
|
||||||
response.setTo(requestData.getFrom());
|
response.setTo(requestData.getFrom());
|
||||||
|
|
|
@ -72,17 +72,17 @@ public class RemoteCommand extends AdHocCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cancel() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void cancel() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
executeAction(Action.cancel);
|
executeAction(Action.cancel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void complete(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void complete(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
executeAction(Action.complete, form);
|
executeAction(Action.complete, form);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void execute() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
executeAction(Action.execute);
|
executeAction(Action.execute);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,22 +95,23 @@ public class RemoteCommand extends AdHocCommand {
|
||||||
* @throws XMPPErrorException if an error occurs.
|
* @throws XMPPErrorException if an error occurs.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
executeAction(Action.execute, form);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void next(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void next(Form form) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
executeAction(Action.next, form);
|
executeAction(Action.next, form);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void prev() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void prev() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
executeAction(Action.prev);
|
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);
|
executeAction(action, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,8 +125,9 @@ public class RemoteCommand extends AdHocCommand {
|
||||||
* @throws XMPPErrorException if there is a problem executing the command.
|
* @throws XMPPErrorException if there is a problem executing the command.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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: 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: not throw the corresponding exeption. This will make a faster response,
|
||||||
// TODO: since the request is stoped before it's sent.
|
// TODO: since the request is stoped before it's sent.
|
||||||
|
|
|
@ -475,8 +475,9 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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)
|
if (entityID == null)
|
||||||
return discoverInfo(null, null);
|
return discoverInfo(null, null);
|
||||||
|
|
||||||
|
@ -520,8 +521,9 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @throws XMPPErrorException if the operation failed for some reason.
|
* @throws XMPPErrorException if the operation failed for some reason.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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
|
// Discover the entity's info
|
||||||
DiscoverInfo disco = new DiscoverInfo();
|
DiscoverInfo disco = new DiscoverInfo();
|
||||||
disco.setType(IQ.Type.get);
|
disco.setType(IQ.Type.get);
|
||||||
|
@ -541,8 +543,9 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @throws XMPPErrorException if the operation failed for some reason.
|
* @throws XMPPErrorException if the operation failed for some reason.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
return discoverItems(entityID, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -557,8 +560,9 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @throws XMPPErrorException if the operation failed for some reason.
|
* @throws XMPPErrorException if the operation failed for some reason.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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
|
// Discover the entity's items
|
||||||
DiscoverItems disco = new DiscoverItems();
|
DiscoverItems disco = new DiscoverItems();
|
||||||
disco.setType(IQ.Type.get);
|
disco.setType(IQ.Type.get);
|
||||||
|
@ -580,8 +584,9 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
DiscoverInfo info = discoverInfo(entityID);
|
||||||
return canPublishItems(info);
|
return canPublishItems(info);
|
||||||
}
|
}
|
||||||
|
@ -610,8 +615,9 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
publishItems(entityID, null, discoverItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -627,8 +633,9 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @throws XMPPErrorException if the operation failed for some reason.
|
* @throws XMPPErrorException if the operation failed for some reason.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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.setType(IQ.Type.set);
|
||||||
discoverItems.setTo(entityID);
|
discoverItems.setTo(entityID);
|
||||||
|
@ -645,10 +652,11 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public boolean serverSupportsFeature(String feature) throws NoResponseException, XMPPErrorException,
|
public boolean serverSupportsFeature(String feature) throws NoResponseException, XMPPErrorException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
return supportsFeature(connection().getServiceName(), feature);
|
return supportsFeature(connection().getServiceName(), feature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -661,8 +669,9 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
DiscoverInfo result = discoverInfo(jid);
|
||||||
return result.containsFeature(feature);
|
return result.containsFeature(feature);
|
||||||
}
|
}
|
||||||
|
@ -684,9 +693,10 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<String> findServices(String feature, boolean stopOnFirst, boolean useCache)
|
public List<String> findServices(String feature, boolean stopOnFirst, boolean useCache)
|
||||||
throws NoResponseException, XMPPErrorException, NotConnectedException {
|
throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
List<String> serviceAddresses = null;
|
List<String> serviceAddresses = null;
|
||||||
String serviceName = connection().getServiceName();
|
String serviceName = connection().getServiceName();
|
||||||
if (useCache) {
|
if (useCache) {
|
||||||
|
|
|
@ -79,7 +79,7 @@ public class FaultTolerantNegotiator extends StreamNegotiator {
|
||||||
"method");
|
"method");
|
||||||
}
|
}
|
||||||
|
|
||||||
public InputStream createIncomingStream(StreamInitiation initiation) throws SmackException {
|
public InputStream createIncomingStream(StreamInitiation initiation) throws SmackException, InterruptedException {
|
||||||
PacketCollector collector = connection.createPacketCollectorAndSend(
|
PacketCollector collector = connection.createPacketCollectorAndSend(
|
||||||
getInitiationPacketFilter(initiation.getFrom(), initiation.getSessionID()),
|
getInitiationPacketFilter(initiation.getFrom(), initiation.getSessionID()),
|
||||||
super.createInitiationAccept(initiation, getNamespaces()));
|
super.createInitiationAccept(initiation, getNamespaces()));
|
||||||
|
@ -144,7 +144,7 @@ public class FaultTolerantNegotiator extends StreamNegotiator {
|
||||||
}
|
}
|
||||||
|
|
||||||
public OutputStream createOutgoingStream(String streamID, String initiator, String target)
|
public OutputStream createOutgoingStream(String streamID, String initiator, String target)
|
||||||
throws SmackException, XMPPException {
|
throws SmackException, XMPPException, InterruptedException {
|
||||||
OutputStream stream;
|
OutputStream stream;
|
||||||
try {
|
try {
|
||||||
stream = primaryNegotiator.createOutgoingStream(streamID, initiator, target);
|
stream = primaryNegotiator.createOutgoingStream(streamID, initiator, target);
|
||||||
|
|
|
@ -163,8 +163,9 @@ public class FileTransferManager extends Manager {
|
||||||
* </p>
|
* </p>
|
||||||
* @param request
|
* @param request
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
protected void rejectIncomingFileTransfer(FileTransferRequest request) throws NotConnectedException {
|
protected void rejectIncomingFileTransfer(FileTransferRequest request) throws NotConnectedException, InterruptedException {
|
||||||
StreamInitiation initiation = request.getStreamInitiation();
|
StreamInitiation initiation = request.getStreamInitiation();
|
||||||
|
|
||||||
// Reject as specified in XEP-95 4.2. Note that this is not to be confused with the Socks 5
|
// Reject as specified in XEP-95 4.2. Note that this is not to be confused with the Socks 5
|
||||||
|
|
|
@ -181,9 +181,10 @@ public class FileTransferNegotiator extends Manager {
|
||||||
* there is not an appropriate stream method.
|
* there is not an appropriate stream method.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws NoAcceptableTransferMechanisms
|
* @throws NoAcceptableTransferMechanisms
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public StreamNegotiator selectStreamNegotiator(
|
public StreamNegotiator selectStreamNegotiator(
|
||||||
FileTransferRequest request) throws NotConnectedException, NoStreamMethodsOfferedException, NoAcceptableTransferMechanisms {
|
FileTransferRequest request) throws NotConnectedException, NoStreamMethodsOfferedException, NoAcceptableTransferMechanisms, InterruptedException {
|
||||||
StreamInitiation si = request.getStreamInitiation();
|
StreamInitiation si = request.getStreamInitiation();
|
||||||
FormField streamMethodField = getStreamMethodField(si
|
FormField streamMethodField = getStreamMethodField(si
|
||||||
.getFeatureNegotiationForm());
|
.getFeatureNegotiationForm());
|
||||||
|
@ -299,10 +300,11 @@ public class FileTransferNegotiator extends Manager {
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NoAcceptableTransferMechanisms
|
* @throws NoAcceptableTransferMechanisms
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public StreamNegotiator negotiateOutgoingTransfer(final String userID,
|
public StreamNegotiator negotiateOutgoingTransfer(final String userID,
|
||||||
final String streamID, final String fileName, final long size,
|
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();
|
StreamInitiation si = new StreamInitiation();
|
||||||
si.setSessionID(streamID);
|
si.setSessionID(streamID);
|
||||||
si.setMimeType(URLConnection.guessContentTypeFromName(fileName));
|
si.setMimeType(URLConnection.guessContentTypeFromName(fileName));
|
||||||
|
|
|
@ -129,8 +129,9 @@ public class FileTransferRequest {
|
||||||
/**
|
/**
|
||||||
* Rejects the file transfer request.
|
* Rejects the file transfer request.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void reject() throws NotConnectedException {
|
public void reject() throws NotConnectedException, InterruptedException {
|
||||||
manager.rejectIncomingFileTransfer(this);
|
manager.rejectIncomingFileTransfer(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,14 +63,14 @@ public class IBBTransferNegotiator extends StreamNegotiator {
|
||||||
}
|
}
|
||||||
|
|
||||||
public OutputStream createOutgoingStream(String streamID, String initiator,
|
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);
|
InBandBytestreamSession session = this.manager.establishSession(target, streamID);
|
||||||
session.setCloseBothStreamsEnabled(true);
|
session.setCloseBothStreamsEnabled(true);
|
||||||
return session.getOutputStream();
|
return session.getOutputStream();
|
||||||
}
|
}
|
||||||
|
|
||||||
public InputStream createIncomingStream(StreamInitiation initiation)
|
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
|
* In-Band Bytestream initiation listener must ignore next in-band bytestream request with
|
||||||
* given session ID
|
* given session ID
|
||||||
|
@ -96,7 +96,7 @@ public class IBBTransferNegotiator extends StreamNegotiator {
|
||||||
return new String[] { DataPacketExtension.NAMESPACE };
|
return new String[] { DataPacketExtension.NAMESPACE };
|
||||||
}
|
}
|
||||||
|
|
||||||
InputStream negotiateIncomingStream(Stanza streamInitiation) throws NotConnectedException {
|
InputStream negotiateIncomingStream(Stanza streamInitiation) throws NotConnectedException, InterruptedException {
|
||||||
// build In-Band Bytestream request
|
// build In-Band Bytestream request
|
||||||
InBandBytestreamRequest request = new ByteStreamRequest(this.manager,
|
InBandBytestreamRequest request = new ByteStreamRequest(this.manager,
|
||||||
(Open) streamInitiation);
|
(Open) streamInitiation);
|
||||||
|
|
|
@ -76,8 +76,9 @@ public class IncomingFileTransfer extends FileTransfer {
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws XMPPErrorException If there is an error in the negotiation process an exception
|
* @throws XMPPErrorException If there is an error in the negotiation process an exception
|
||||||
* is thrown.
|
* is thrown.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public InputStream recieveFile() throws SmackException, XMPPErrorException {
|
public InputStream recieveFile() throws SmackException, XMPPErrorException, InterruptedException {
|
||||||
if (inputStream != null) {
|
if (inputStream != null) {
|
||||||
throw new IllegalStateException("Transfer already negotiated!");
|
throw new IllegalStateException("Transfer already negotiated!");
|
||||||
}
|
}
|
||||||
|
@ -174,7 +175,7 @@ public class IncomingFileTransfer extends FileTransfer {
|
||||||
transferThread.start();
|
transferThread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private InputStream negotiateStream() throws SmackException, XMPPErrorException {
|
private InputStream negotiateStream() throws SmackException, XMPPErrorException, InterruptedException {
|
||||||
setStatus(Status.negotiating_transfer);
|
setStatus(Status.negotiating_transfer);
|
||||||
final StreamNegotiator streamNegotiator = negotiator
|
final StreamNegotiator streamNegotiator = negotiator
|
||||||
.selectStreamNegotiator(recieveRequest);
|
.selectStreamNegotiator(recieveRequest);
|
||||||
|
|
|
@ -120,9 +120,10 @@ public class OutgoingFileTransfer extends FileTransfer {
|
||||||
* Thrown if an error occurs during the file transfer
|
* Thrown if an error occurs during the file transfer
|
||||||
* negotiation process.
|
* negotiation process.
|
||||||
* @throws SmackException if there was no response from the server.
|
* @throws SmackException if there was no response from the server.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public synchronized OutputStream sendFile(String fileName, long fileSize,
|
public synchronized OutputStream sendFile(String fileName, long fileSize,
|
||||||
String description) throws XMPPException, SmackException {
|
String description) throws XMPPException, SmackException, InterruptedException {
|
||||||
if (isDone() || outputStream != null) {
|
if (isDone() || outputStream != null) {
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"The negotation process has already"
|
"The negotation process has already"
|
||||||
|
@ -373,7 +374,7 @@ public class OutgoingFileTransfer extends FileTransfer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private OutputStream negotiateStream(String fileName, long fileSize,
|
private OutputStream negotiateStream(String fileName, long fileSize,
|
||||||
String description) throws SmackException, XMPPException {
|
String description) throws SmackException, XMPPException, InterruptedException {
|
||||||
// Negotiate the file transfer profile
|
// Negotiate the file transfer profile
|
||||||
|
|
||||||
if (!updateStatus(Status.initial, Status.negotiating_transfer)) {
|
if (!updateStatus(Status.initial, Status.negotiating_transfer)) {
|
||||||
|
|
|
@ -72,7 +72,7 @@ public abstract class StreamNegotiator {
|
||||||
return response;
|
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,
|
StreamInitiation response = createInitiationAccept(initiation,
|
||||||
getNamespaces());
|
getNamespaces());
|
||||||
|
|
||||||
|
@ -134,9 +134,10 @@ public abstract class StreamNegotiator {
|
||||||
* exception will be thrown.
|
* exception will be thrown.
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public abstract OutputStream createOutgoingStream(String streamID,
|
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
|
* Returns the XMPP namespace reserved for this particular type of file
|
||||||
|
|
|
@ -231,9 +231,10 @@ public class LastActivityManager extends Manager {
|
||||||
* thrown if a server error has occured.
|
* thrown if a server error has occured.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public LastActivity getLastActivity(String jid) throws NoResponseException, XMPPErrorException,
|
public LastActivity getLastActivity(String jid) throws NoResponseException, XMPPErrorException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
LastActivity activity = new LastActivity(jid);
|
LastActivity activity = new LastActivity(jid);
|
||||||
return (LastActivity) connection().createPacketCollectorAndSend(activity).nextResultOrThrow();
|
return (LastActivity) connection().createPacketCollectorAndSend(activity).nextResultOrThrow();
|
||||||
}
|
}
|
||||||
|
@ -246,8 +247,9 @@ public class LastActivityManager extends Manager {
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @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);
|
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid, LastActivity.NAMESPACE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,8 +153,9 @@ public class PrivateDataManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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.
|
// Create an IQ packet to get the private data.
|
||||||
IQ privateDataGet = new PrivateDataIQ(elementName, namespace);
|
IQ privateDataGet = new PrivateDataIQ(elementName, namespace);
|
||||||
|
@ -173,8 +174,9 @@ public class PrivateDataManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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.
|
// Create an IQ packet to set the private data.
|
||||||
IQ privateDataSet = new PrivateDataIQ(privateData);
|
IQ privateDataSet = new PrivateDataIQ(privateData);
|
||||||
|
|
||||||
|
|
|
@ -98,8 +98,9 @@ public class AccountManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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
|
// Check if we already know that the server supports creating new accounts
|
||||||
if (accountCreationSupported) {
|
if (accountCreationSupported) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -140,8 +141,9 @@ public class AccountManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public Set<String> getAccountAttributes() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public Set<String> getAccountAttributes() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
getRegistrationInfo();
|
getRegistrationInfo();
|
||||||
}
|
}
|
||||||
|
@ -163,8 +165,9 @@ public class AccountManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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) {
|
if (info == null) {
|
||||||
getRegistrationInfo();
|
getRegistrationInfo();
|
||||||
}
|
}
|
||||||
|
@ -180,8 +183,9 @@ public class AccountManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public String getAccountInstructions() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public String getAccountInstructions() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
getRegistrationInfo();
|
getRegistrationInfo();
|
||||||
}
|
}
|
||||||
|
@ -201,8 +205,9 @@ public class AccountManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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.
|
// Create a map for all the required attributes, but give them blank values.
|
||||||
Map<String, String> attributes = new HashMap<String, String>();
|
Map<String, String> attributes = new HashMap<String, String>();
|
||||||
for (String attributeName : getAccountAttributes()) {
|
for (String attributeName : getAccountAttributes()) {
|
||||||
|
@ -222,10 +227,11 @@ public class AccountManager extends Manager {
|
||||||
* @throws XMPPErrorException if an error occurs creating the account.
|
* @throws XMPPErrorException if an error occurs creating the account.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see #getAccountAttributes()
|
* @see #getAccountAttributes()
|
||||||
*/
|
*/
|
||||||
public void createAccount(String username, String password, Map<String, String> attributes)
|
public void createAccount(String username, String password, Map<String, String> attributes)
|
||||||
throws NoResponseException, XMPPErrorException, NotConnectedException {
|
throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
attributes.put("username", username);
|
attributes.put("username", username);
|
||||||
attributes.put("password", password);
|
attributes.put("password", password);
|
||||||
Registration reg = new Registration(attributes);
|
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 XMPPErrorException if an error occurs when changing the password.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void changePassword(String newPassword) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void changePassword(String newPassword) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
Map<String, String> map = new HashMap<String, String>();
|
Map<String, String> map = new HashMap<String, String>();
|
||||||
map.put("username",XmppStringUtils.parseLocalpart(connection().getUser()));
|
map.put("username",XmppStringUtils.parseLocalpart(connection().getUser()));
|
||||||
map.put("password",newPassword);
|
map.put("password",newPassword);
|
||||||
|
@ -263,8 +270,9 @@ public class AccountManager extends Manager {
|
||||||
* @throws XMPPErrorException if an error occurs when deleting the account.
|
* @throws XMPPErrorException if an error occurs when deleting the account.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void deleteAccount() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void deleteAccount() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
Map<String, String> attributes = new HashMap<String, String>();
|
Map<String, String> attributes = new HashMap<String, String>();
|
||||||
// To delete an account, we add a single attribute, "remove", that is blank.
|
// To delete an account, we add a single attribute, "remove", that is blank.
|
||||||
attributes.put("remove", "");
|
attributes.put("remove", "");
|
||||||
|
@ -279,17 +287,18 @@ public class AccountManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*
|
*
|
||||||
* @throws XMPPException if an error occurs.
|
* @throws XMPPException if an error occurs.
|
||||||
* @throws SmackException if there was no response from the server.
|
* @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();
|
Registration reg = new Registration();
|
||||||
reg.setTo(connection().getServiceName());
|
reg.setTo(connection().getServiceName());
|
||||||
info = createPacketCollectorAndSend(reg).nextResultOrThrow();
|
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);
|
PacketCollector collector = connection().createPacketCollectorAndSend(new PacketIDFilter(req.getStanzaId()), req);
|
||||||
return collector;
|
return collector;
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,7 +124,7 @@ public class VersionManager extends Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSupported(String jid) throws NoResponseException, XMPPErrorException,
|
public boolean isSupported(String jid) throws NoResponseException, XMPPErrorException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid,
|
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid,
|
||||||
Version.NAMESPACE);
|
Version.NAMESPACE);
|
||||||
}
|
}
|
||||||
|
@ -137,9 +137,10 @@ public class VersionManager extends Manager {
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public Version getVersion(String jid) throws NoResponseException, XMPPErrorException,
|
public Version getVersion(String jid) throws NoResponseException, XMPPErrorException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
if (!isSupported(jid)) {
|
if (!isSupported(jid)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -269,11 +269,12 @@ public class MultiUserChat {
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see <a href="http://xmpp.org/extensions/xep-0045.html#enter">XEP-45 7.2 Entering a Room</a>
|
* @see <a href="http://xmpp.org/extensions/xep-0045.html#enter">XEP-45 7.2 Entering a Room</a>
|
||||||
*/
|
*/
|
||||||
private Presence enter(String nickname, String password, DiscussionHistory history,
|
private Presence enter(String nickname, String password, DiscussionHistory history,
|
||||||
long timeout) throws NotConnectedException, NoResponseException,
|
long timeout) throws NotConnectedException, NoResponseException,
|
||||||
XMPPErrorException {
|
XMPPErrorException, InterruptedException {
|
||||||
StringUtils.requireNotNullOrEmpty(nickname, "Nickname must not be null or blank.");
|
StringUtils.requireNotNullOrEmpty(nickname, "Nickname must not be null or blank.");
|
||||||
// We enter a room by sending a presence packet where the "to"
|
// We enter a room by sending a presence packet where the "to"
|
||||||
// field is in the form "roomName@service/nickname"
|
// field is in the form "roomName@service/nickname"
|
||||||
|
@ -310,7 +311,7 @@ public class MultiUserChat {
|
||||||
try {
|
try {
|
||||||
presence = connection.createPacketCollectorAndSend(responseFilter, joinPresence).nextResultOrThrow(timeout);
|
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
|
// Ensure that all callbacks are removed if there is an exception
|
||||||
removeConnectionCallbacks();
|
removeConnectionCallbacks();
|
||||||
throw e;
|
throw e;
|
||||||
|
@ -345,8 +346,9 @@ public class MultiUserChat {
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws SmackException If the creation failed because of a missing acknowledge from the
|
* @throws SmackException If the creation failed because of a missing acknowledge from the
|
||||||
* server, e.g. because the room already existed.
|
* 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) {
|
if (joined) {
|
||||||
throw new IllegalStateException("Creation failed - User already joined the room.");
|
throw new IllegalStateException("Creation failed - User already joined the room.");
|
||||||
}
|
}
|
||||||
|
@ -369,10 +371,11 @@ public class MultiUserChat {
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see #createOrJoin(String, String, DiscussionHistory, long)
|
* @see #createOrJoin(String, String, DiscussionHistory, long)
|
||||||
*/
|
*/
|
||||||
public synchronized boolean createOrJoin(String nickname) throws NoResponseException, XMPPErrorException,
|
public synchronized boolean createOrJoin(String nickname) throws NoResponseException, XMPPErrorException,
|
||||||
SmackException {
|
SmackException, InterruptedException {
|
||||||
return createOrJoin(nickname, null, null, connection.getPacketReplyTimeout());
|
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
|
* @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)
|
* the user is not allowed to create the room)
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public synchronized boolean createOrJoin(String nickname, String password, DiscussionHistory history, long timeout)
|
public synchronized boolean createOrJoin(String nickname, String password, DiscussionHistory history, long timeout)
|
||||||
throws NoResponseException, XMPPErrorException, SmackException {
|
throws NoResponseException, XMPPErrorException, SmackException, InterruptedException {
|
||||||
if (joined) {
|
if (joined) {
|
||||||
throw new IllegalStateException("Creation failed - User already joined the room.");
|
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.
|
* 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 NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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());
|
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
|
* 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.
|
* 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 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());
|
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.
|
* 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 NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public synchronized void join(
|
public synchronized void join(
|
||||||
String nickname,
|
String nickname,
|
||||||
String password,
|
String password,
|
||||||
DiscussionHistory history,
|
DiscussionHistory history,
|
||||||
long timeout)
|
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
|
// If we've already joined the room, leave it before joining under a new
|
||||||
// nickname.
|
// nickname.
|
||||||
if (joined) {
|
if (joined) {
|
||||||
|
@ -508,8 +515,9 @@ public class MultiUserChat {
|
||||||
/**
|
/**
|
||||||
* Leave the chat room.
|
* Leave the chat room.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public synchronized void leave() throws NotConnectedException {
|
public synchronized void leave() throws NotConnectedException, InterruptedException {
|
||||||
// If not joined already, do nothing.
|
// If not joined already, do nothing.
|
||||||
if (!joined) {
|
if (!joined) {
|
||||||
return;
|
return;
|
||||||
|
@ -536,8 +544,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs asking the configuration form for the room.
|
* @throws XMPPErrorException if an error occurs asking the configuration form for the room.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public Form getConfigurationForm() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public Form getConfigurationForm() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
MUCOwner iq = new MUCOwner();
|
MUCOwner iq = new MUCOwner();
|
||||||
iq.setTo(room);
|
iq.setTo(room);
|
||||||
iq.setType(IQ.Type.get);
|
iq.setType(IQ.Type.get);
|
||||||
|
@ -555,8 +564,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs setting the new rooms' configuration.
|
* @throws XMPPErrorException if an error occurs setting the new rooms' configuration.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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();
|
MUCOwner iq = new MUCOwner();
|
||||||
iq.setTo(room);
|
iq.setTo(room);
|
||||||
iq.setType(IQ.Type.set);
|
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.
|
* 405 error if the user is not allowed to register with the room.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public Form getRegistrationForm() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public Form getRegistrationForm() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
Registration reg = new Registration();
|
Registration reg = new Registration();
|
||||||
reg.setType(IQ.Type.get);
|
reg.setType(IQ.Type.get);
|
||||||
reg.setTo(room);
|
reg.setTo(room);
|
||||||
|
@ -605,8 +616,9 @@ public class MultiUserChat {
|
||||||
* or a 503 error can occur if the room does not support registration.
|
* or a 503 error can occur if the room does not support registration.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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();
|
Registration reg = new Registration();
|
||||||
reg.setType(IQ.Type.set);
|
reg.setType(IQ.Type.set);
|
||||||
reg.setTo(room);
|
reg.setTo(room);
|
||||||
|
@ -628,8 +640,9 @@ public class MultiUserChat {
|
||||||
* appropiate error messages to end-users.
|
* appropiate error messages to end-users.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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();
|
MUCOwner iq = new MUCOwner();
|
||||||
iq.setTo(room);
|
iq.setTo(room);
|
||||||
iq.setType(IQ.Type.set);
|
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 user the user to invite to the room.(e.g. hecate@shakespeare.lit)
|
||||||
* @param reason the reason why the user is being invited.
|
* @param reason the reason why the user is being invited.
|
||||||
* @throws NotConnectedException
|
* @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);
|
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 user the user to invite to the room.(e.g. hecate@shakespeare.lit)
|
||||||
* @param reason the reason why the user is being invited.
|
* @param reason the reason why the user is being invited.
|
||||||
* @throws NotConnectedException
|
* @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
|
// TODO listen for 404 error code when inviter supplies a non-existent JID
|
||||||
message.setTo(room);
|
message.setTo(room);
|
||||||
|
|
||||||
|
@ -800,8 +815,9 @@ public class MultiUserChat {
|
||||||
*
|
*
|
||||||
* @return the reserved room nickname or <tt>null</tt> if none.
|
* @return the reserved room nickname or <tt>null</tt> if none.
|
||||||
* @throws SmackException if there was no response from the server.
|
* @throws SmackException if there was no response from the server.
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public String getReservedNickname() throws SmackException {
|
public String getReservedNickname() throws SmackException, InterruptedException {
|
||||||
try {
|
try {
|
||||||
DiscoverInfo result =
|
DiscoverInfo result =
|
||||||
ServiceDiscoveryManager.getInstanceFor(connection).discoverInfo(
|
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 XMPPErrorException if the new nickname is already in use by another occupant.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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.");
|
StringUtils.requireNotNullOrEmpty(nickname, "Nickname must not be null or blank.");
|
||||||
// Check that we already have joined the room before attempting to change the
|
// Check that we already have joined the room before attempting to change the
|
||||||
// nickname.
|
// nickname.
|
||||||
|
@ -875,8 +892,9 @@ public class MultiUserChat {
|
||||||
* @param status a text message describing the presence update.
|
* @param status a text message describing the presence update.
|
||||||
* @param mode the mode type for the presence update.
|
* @param mode the mode type for the presence update.
|
||||||
* @throws NotConnectedException
|
* @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.");
|
StringUtils.requireNotNullOrEmpty(nickname, "Nickname must not be null or blank.");
|
||||||
// Check that we already have joined the room before attempting to change the
|
// Check that we already have joined the room before attempting to change the
|
||||||
// availability status.
|
// availability status.
|
||||||
|
@ -914,8 +932,9 @@ public class MultiUserChat {
|
||||||
* 400 error can occur if the provided nickname is not present in the room.
|
* 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 NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
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.
|
* Sends a voice request to the MUC. The room moderators usually need to approve this request.
|
||||||
*
|
*
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see <a href="http://xmpp.org/extensions/xep-0045.html#requestvoice">XEP-45 § 7.13 Requesting
|
* @see <a href="http://xmpp.org/extensions/xep-0045.html#requestvoice">XEP-45 § 7.13 Requesting
|
||||||
* Voice</a>
|
* Voice</a>
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public void requestVoice() throws NotConnectedException {
|
public void requestVoice() throws NotConnectedException, InterruptedException {
|
||||||
DataForm form = new DataForm(DataForm.Type.submit);
|
DataForm form = new DataForm(DataForm.Type.submit);
|
||||||
FormField formTypeField = new FormField(FormField.FORM_TYPE);
|
FormField formTypeField = new FormField(FormField.FORM_TYPE);
|
||||||
formTypeField.addValue(MUCInitialPresence.NAMESPACE + "#request");
|
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.
|
* 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 NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void grantVoice(Collection<String> nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void grantVoice(Collection<String> nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeRole(nicknames, MUCRole.participant);
|
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.
|
* 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 NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
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.
|
* 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 NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void revokeVoice(Collection<String> nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void revokeVoice(Collection<String> nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeRole(nicknames, MUCRole.visitor);
|
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.
|
* 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 NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
changeRole(nickname, MUCRole.visitor, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1023,8 +1047,9 @@ public class MultiUserChat {
|
||||||
* was tried to be banned (i.e. Not Allowed error).
|
* was tried to be banned (i.e. Not Allowed error).
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void banUsers(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void banUsers(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeAffiliationByAdmin(jids, MUCAffiliation.outcast);
|
changeAffiliationByAdmin(jids, MUCAffiliation.outcast);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1042,8 +1067,9 @@ public class MultiUserChat {
|
||||||
* was tried to be banned (i.e. Not Allowed error).
|
* was tried to be banned (i.e. Not Allowed error).
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
changeAffiliationByAdmin(jid, MUCAffiliation.outcast, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1056,8 +1082,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs granting membership to a user.
|
* @throws XMPPErrorException if an error occurs granting membership to a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void grantMembership(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void grantMembership(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeAffiliationByAdmin(jids, MUCAffiliation.member);
|
changeAffiliationByAdmin(jids, MUCAffiliation.member);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1070,8 +1097,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs granting membership to a user.
|
* @throws XMPPErrorException if an error occurs granting membership to a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
changeAffiliationByAdmin(jid, MUCAffiliation.member, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1085,8 +1113,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs revoking membership to a user.
|
* @throws XMPPErrorException if an error occurs revoking membership to a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void revokeMembership(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void revokeMembership(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeAffiliationByAdmin(jids, MUCAffiliation.none);
|
changeAffiliationByAdmin(jids, MUCAffiliation.none);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1100,8 +1129,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs revoking membership to a user.
|
* @throws XMPPErrorException if an error occurs revoking membership to a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
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 XMPPErrorException if an error occurs granting moderator privileges to a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void grantModerator(Collection<String> nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void grantModerator(Collection<String> nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeRole(nicknames, MUCRole.moderator);
|
changeRole(nicknames, MUCRole.moderator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1128,8 +1159,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs granting moderator privileges to a user.
|
* @throws XMPPErrorException if an error occurs granting moderator privileges to a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
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 XMPPErrorException if an error occurs revoking moderator privileges from a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void revokeModerator(Collection<String> nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void revokeModerator(Collection<String> nicknames) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeRole(nicknames, MUCRole.participant);
|
changeRole(nicknames, MUCRole.participant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1158,8 +1191,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs revoking moderator privileges from a user.
|
* @throws XMPPErrorException if an error occurs revoking moderator privileges from a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
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 XMPPErrorException if an error occurs granting ownership privileges to a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void grantOwnership(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void grantOwnership(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeAffiliationByAdmin(jids, MUCAffiliation.owner);
|
changeAffiliationByAdmin(jids, MUCAffiliation.owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1188,8 +1223,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs granting ownership privileges to a user.
|
* @throws XMPPErrorException if an error occurs granting ownership privileges to a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
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 XMPPErrorException if an error occurs revoking ownership privileges from a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void revokeOwnership(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void revokeOwnership(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeAffiliationByAdmin(jids, MUCAffiliation.admin);
|
changeAffiliationByAdmin(jids, MUCAffiliation.admin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1216,8 +1253,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs revoking ownership privileges from a user.
|
* @throws XMPPErrorException if an error occurs revoking ownership privileges from a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
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 XMPPErrorException if an error occurs granting administrator privileges to a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void grantAdmin(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void grantAdmin(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeAffiliationByAdmin(jids, MUCAffiliation.admin);
|
changeAffiliationByAdmin(jids, MUCAffiliation.admin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1245,8 +1284,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs granting administrator privileges to a user.
|
* @throws XMPPErrorException if an error occurs granting administrator privileges to a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
changeAffiliationByAdmin(jid, MUCAffiliation.admin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1259,8 +1299,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs revoking administrator privileges from a user.
|
* @throws XMPPErrorException if an error occurs revoking administrator privileges from a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void revokeAdmin(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException {
|
public void revokeAdmin(Collection<String> jids) throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException {
|
||||||
changeAffiliationByAdmin(jids, MUCAffiliation.admin);
|
changeAffiliationByAdmin(jids, MUCAffiliation.admin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1274,8 +1315,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException if an error occurs revoking administrator privileges from a user.
|
* @throws XMPPErrorException if an error occurs revoking administrator privileges from a user.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
changeAffiliationByAdmin(jid, MUCAffiliation.member);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1287,10 +1329,11 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
private void changeAffiliationByAdmin(String jid, MUCAffiliation affiliation)
|
private void changeAffiliationByAdmin(String jid, MUCAffiliation affiliation)
|
||||||
throws NoResponseException, XMPPErrorException,
|
throws NoResponseException, XMPPErrorException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
changeAffiliationByAdmin(jid, affiliation, null);
|
changeAffiliationByAdmin(jid, affiliation, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1303,8 +1346,9 @@ public class MultiUserChat {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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();
|
MUCAdmin iq = new MUCAdmin();
|
||||||
iq.setTo(room);
|
iq.setTo(room);
|
||||||
|
@ -1317,7 +1361,7 @@ public class MultiUserChat {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void changeAffiliationByAdmin(Collection<String> jids, MUCAffiliation affiliation)
|
private void changeAffiliationByAdmin(Collection<String> jids, MUCAffiliation affiliation)
|
||||||
throws NoResponseException, XMPPErrorException, NotConnectedException {
|
throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
MUCAdmin iq = new MUCAdmin();
|
MUCAdmin iq = new MUCAdmin();
|
||||||
iq.setTo(room);
|
iq.setTo(room);
|
||||||
iq.setType(IQ.Type.set);
|
iq.setType(IQ.Type.set);
|
||||||
|
@ -1330,7 +1374,7 @@ public class MultiUserChat {
|
||||||
connection.createPacketCollectorAndSend(iq).nextResultOrThrow();
|
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();
|
MUCAdmin iq = new MUCAdmin();
|
||||||
iq.setTo(room);
|
iq.setTo(room);
|
||||||
iq.setType(IQ.Type.set);
|
iq.setType(IQ.Type.set);
|
||||||
|
@ -1341,7 +1385,7 @@ public class MultiUserChat {
|
||||||
connection.createPacketCollectorAndSend(iq).nextResultOrThrow();
|
connection.createPacketCollectorAndSend(iq).nextResultOrThrow();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void changeRole(Collection<String> nicknames, MUCRole role) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
private void changeRole(Collection<String> nicknames, MUCRole role) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
MUCAdmin iq = new MUCAdmin();
|
MUCAdmin iq = new MUCAdmin();
|
||||||
iq.setTo(room);
|
iq.setTo(room);
|
||||||
iq.setType(IQ.Type.set);
|
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 XMPPErrorException if you don't have enough privileges to get this information.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Affiliate> getOwners() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<Affiliate> getOwners() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
return getAffiliatesByAdmin(MUCAffiliation.owner);
|
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 XMPPErrorException if you don't have enough privileges to get this information.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Affiliate> getAdmins() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<Affiliate> getAdmins() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
return getAffiliatesByAdmin(MUCAffiliation.admin);
|
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 XMPPErrorException if you don't have enough privileges to get this information.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Affiliate> getMembers() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<Affiliate> getMembers() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
return getAffiliatesByAdmin(MUCAffiliation.member);
|
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 XMPPErrorException if you don't have enough privileges to get this information.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Affiliate> getOutcasts() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<Affiliate> getOutcasts() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
return getAffiliatesByAdmin(MUCAffiliation.outcast);
|
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 XMPPErrorException if you don't have enough privileges to get this information.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
private List<Affiliate> getAffiliatesByAdmin(MUCAffiliation affiliation) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
private List<Affiliate> getAffiliatesByAdmin(MUCAffiliation affiliation) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
MUCAdmin iq = new MUCAdmin();
|
MUCAdmin iq = new MUCAdmin();
|
||||||
iq.setTo(room);
|
iq.setTo(room);
|
||||||
iq.setType(IQ.Type.get);
|
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 XMPPErrorException if you don't have enough privileges to get this information.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Occupant> getModerators() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<Occupant> getModerators() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
return getOccupants(MUCRole.moderator);
|
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 XMPPErrorException if you don't have enough privileges to get this information.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Occupant> getParticipants() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<Occupant> getParticipants() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
return getOccupants(MUCRole.participant);
|
return getOccupants(MUCRole.participant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1547,8 +1598,9 @@ public class MultiUserChat {
|
||||||
* don't have enough privileges to get this information.
|
* don't have enough privileges to get this information.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
private List<Occupant> getOccupants(MUCRole role) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
private List<Occupant> getOccupants(MUCRole role) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
MUCAdmin iq = new MUCAdmin();
|
MUCAdmin iq = new MUCAdmin();
|
||||||
iq.setTo(room);
|
iq.setTo(room);
|
||||||
iq.setType(IQ.Type.get);
|
iq.setType(IQ.Type.get);
|
||||||
|
@ -1571,8 +1623,9 @@ public class MultiUserChat {
|
||||||
* @param text the text of the message to send.
|
* @param text the text of the message to send.
|
||||||
* @throws XMPPException if sending the message fails.
|
* @throws XMPPException if sending the message fails.
|
||||||
* @throws NotConnectedException
|
* @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 message = createMessage();
|
||||||
message.setBody(text);
|
message.setBody(text);
|
||||||
connection.sendPacket(message);
|
connection.sendPacket(message);
|
||||||
|
@ -1608,8 +1661,9 @@ public class MultiUserChat {
|
||||||
* @param message the message.
|
* @param message the message.
|
||||||
* @throws XMPPException if sending the message fails.
|
* @throws XMPPException if sending the message fails.
|
||||||
* @throws NotConnectedException
|
* @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.setTo(room);
|
||||||
message.setType(Message.Type.groupchat);
|
message.setType(Message.Type.groupchat);
|
||||||
connection.sendPacket(message);
|
connection.sendPacket(message);
|
||||||
|
@ -1640,8 +1694,9 @@ public class MultiUserChat {
|
||||||
*
|
*
|
||||||
* @return the next message.
|
* @return the next message.
|
||||||
* @throws MUCNotJoinedException
|
* @throws MUCNotJoinedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public Message nextMessage() throws MUCNotJoinedException {
|
public Message nextMessage() throws MUCNotJoinedException, InterruptedException {
|
||||||
if (messageCollector == null) {
|
if (messageCollector == null) {
|
||||||
throw new MUCNotJoinedException(this);
|
throw new MUCNotJoinedException(this);
|
||||||
}
|
}
|
||||||
|
@ -1657,8 +1712,9 @@ public class MultiUserChat {
|
||||||
* @return the next message, or <tt>null</tt> if the timeout elapses without a
|
* @return the next message, or <tt>null</tt> if the timeout elapses without a
|
||||||
* message becoming available.
|
* message becoming available.
|
||||||
* @throws MUCNotJoinedException
|
* @throws MUCNotJoinedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public Message nextMessage(long timeout) throws MUCNotJoinedException {
|
public Message nextMessage(long timeout) throws MUCNotJoinedException, InterruptedException {
|
||||||
if (messageCollector == null) {
|
if (messageCollector == null) {
|
||||||
throw new MUCNotJoinedException(this);
|
throw new MUCNotJoinedException(this);
|
||||||
}
|
}
|
||||||
|
@ -1702,8 +1758,9 @@ public class MultiUserChat {
|
||||||
* room subject will throw an error with code 403 (i.e. Forbidden)
|
* room subject will throw an error with code 403 (i.e. Forbidden)
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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 message = createMessage();
|
||||||
message.setSubject(subject);
|
message.setSubject(subject);
|
||||||
// Wait for an error or confirmation message back from the server.
|
// Wait for an error or confirmation message back from the server.
|
||||||
|
|
|
@ -174,8 +174,9 @@ public class MultiUserChatManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(user, MUCInitialPresence.NAMESPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,9 +199,10 @@ public class MultiUserChatManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<String> getJoinedRooms(String user) throws NoResponseException, XMPPErrorException,
|
public List<String> getJoinedRooms(String user) throws NoResponseException, XMPPErrorException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
// Send the disco packet to the user
|
// Send the disco packet to the user
|
||||||
DiscoverItems result = ServiceDiscoveryManager.getInstanceFor(connection()).discoverItems(user, DISCO_NODE);
|
DiscoverItems result = ServiceDiscoveryManager.getInstanceFor(connection()).discoverItems(user, DISCO_NODE);
|
||||||
List<DiscoverItems.Item> items = result.getItems();
|
List<DiscoverItems.Item> items = result.getItems();
|
||||||
|
@ -221,8 +223,9 @@ public class MultiUserChatManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
DiscoverInfo info = ServiceDiscoveryManager.getInstanceFor(connection()).discoverInfo(room);
|
||||||
return new RoomInfo(info);
|
return new RoomInfo(info);
|
||||||
}
|
}
|
||||||
|
@ -234,8 +237,9 @@ public class MultiUserChatManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<String> getServiceNames() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<String> getServiceNames() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection());
|
ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection());
|
||||||
return sdm.findServices(MUCInitialPresence.NAMESPACE, false, false);
|
return sdm.findServices(MUCInitialPresence.NAMESPACE, false, false);
|
||||||
}
|
}
|
||||||
|
@ -250,9 +254,10 @@ public class MultiUserChatManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<HostedRoom> getHostedRooms(String serviceName) throws NoResponseException, XMPPErrorException,
|
public List<HostedRoom> getHostedRooms(String serviceName) throws NoResponseException, XMPPErrorException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(connection());
|
ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(connection());
|
||||||
DiscoverItems discoverItems = discoManager.discoverItems(serviceName);
|
DiscoverItems discoverItems = discoManager.discoverItems(serviceName);
|
||||||
List<DiscoverItems.Item> items = discoverItems.getItems();
|
List<DiscoverItems.Item> items = discoverItems.getItems();
|
||||||
|
@ -271,8 +276,9 @@ public class MultiUserChatManager extends Manager {
|
||||||
* @param inviter the inviter of the declined invitation.
|
* @param inviter the inviter of the declined invitation.
|
||||||
* @param reason the reason why the invitee is declining the invitation.
|
* @param reason the reason why the invitee is declining the invitation.
|
||||||
* @throws NotConnectedException
|
* @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);
|
Message message = new Message(room);
|
||||||
|
|
||||||
// Create the MUCUser packet that will include the rejection
|
// Create the MUCUser packet that will include the rejection
|
||||||
|
|
|
@ -76,8 +76,9 @@ public class OfflineMessageManager {
|
||||||
* @throws XMPPErrorException If the user is not allowed to make this request.
|
* @throws XMPPErrorException If the user is not allowed to make this request.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
return ServiceDiscoveryManager.getInstanceFor(connection).serverSupportsFeature(namespace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,8 +90,9 @@ public class OfflineMessageManager {
|
||||||
* not support offline message retrieval.
|
* not support offline message retrieval.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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,
|
DiscoverInfo info = ServiceDiscoveryManager.getInstanceFor(connection).discoverInfo(null,
|
||||||
namespace);
|
namespace);
|
||||||
Form extendedInfo = Form.getFormFrom(info);
|
Form extendedInfo = Form.getFormFrom(info);
|
||||||
|
@ -112,8 +114,9 @@ public class OfflineMessageManager {
|
||||||
* not support offline message retrieval.
|
* not support offline message retrieval.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<OfflineMessageHeader> getHeaders() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<OfflineMessageHeader> getHeaders() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
List<OfflineMessageHeader> answer = new ArrayList<OfflineMessageHeader>();
|
List<OfflineMessageHeader> answer = new ArrayList<OfflineMessageHeader>();
|
||||||
DiscoverItems items = ServiceDiscoveryManager.getInstanceFor(connection).discoverItems(
|
DiscoverItems items = ServiceDiscoveryManager.getInstanceFor(connection).discoverItems(
|
||||||
null, namespace);
|
null, namespace);
|
||||||
|
@ -136,8 +139,9 @@ public class OfflineMessageManager {
|
||||||
* not support offline message retrieval.
|
* not support offline message retrieval.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Message> getMessages(final List<String> nodes) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<Message> getMessages(final List<String> nodes) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
List<Message> messages = new ArrayList<Message>();
|
List<Message> messages = new ArrayList<Message>();
|
||||||
OfflineMessageRequest request = new OfflineMessageRequest();
|
OfflineMessageRequest request = new OfflineMessageRequest();
|
||||||
for (String node : nodes) {
|
for (String node : nodes) {
|
||||||
|
@ -180,8 +184,9 @@ public class OfflineMessageManager {
|
||||||
* not support offline message retrieval.
|
* not support offline message retrieval.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Message> getMessages() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<Message> getMessages() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
OfflineMessageRequest request = new OfflineMessageRequest();
|
OfflineMessageRequest request = new OfflineMessageRequest();
|
||||||
request.setFetch(true);
|
request.setFetch(true);
|
||||||
|
|
||||||
|
@ -219,8 +224,9 @@ public class OfflineMessageManager {
|
||||||
* not support offline message retrieval.
|
* not support offline message retrieval.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void deleteMessages(List<String> nodes) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void deleteMessages(List<String> nodes) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
OfflineMessageRequest request = new OfflineMessageRequest();
|
OfflineMessageRequest request = new OfflineMessageRequest();
|
||||||
for (String node : nodes) {
|
for (String node : nodes) {
|
||||||
OfflineMessageRequest.Item item = new OfflineMessageRequest.Item(node);
|
OfflineMessageRequest.Item item = new OfflineMessageRequest.Item(node);
|
||||||
|
@ -237,8 +243,9 @@ public class OfflineMessageManager {
|
||||||
* not support offline message retrieval.
|
* not support offline message retrieval.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void deleteMessages() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void deleteMessages() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
OfflineMessageRequest request = new OfflineMessageRequest();
|
OfflineMessageRequest request = new OfflineMessageRequest();
|
||||||
request.setPurge(true);
|
request.setPurge(true);
|
||||||
connection.createPacketCollectorAndSend(request).nextResultOrThrow();
|
connection.createPacketCollectorAndSend(request).nextResultOrThrow();
|
||||||
|
|
|
@ -107,8 +107,9 @@ public class PEPManager {
|
||||||
*
|
*
|
||||||
* @param item the item to publish.
|
* @param item the item to publish.
|
||||||
* @throws NotConnectedException
|
* @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.
|
// Create a new message to publish the event.
|
||||||
PEPPubSub pubSub = new PEPPubSub(item);
|
PEPPubSub pubSub = new PEPPubSub(item);
|
||||||
pubSub.setType(Type.set);
|
pubSub.setType(Type.set);
|
||||||
|
|
|
@ -155,8 +155,9 @@ public class PingManager extends Manager {
|
||||||
* @return true if a reply was received from the entity, false otherwise.
|
* @return true if a reply was received from the entity, false otherwise.
|
||||||
* @throws NoResponseException if there was no response from the jid.
|
* @throws NoResponseException if there was no response from the jid.
|
||||||
* @throws NotConnectedException
|
* @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();
|
final XMPPConnection connection = connection();
|
||||||
// Packet collector for IQs needs an connection that was at least authenticated once,
|
// Packet collector for IQs needs an connection that was at least authenticated once,
|
||||||
// otherwise the client JID will be null causing an NPE
|
// 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.
|
* @return true if a reply was received from the entity, false otherwise.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws NoResponseException if there was no response from the jid.
|
* @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());
|
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 XMPPErrorException An XMPP related error occurred during the request
|
||||||
* @throws NoResponseException if there was no response from the jid.
|
* @throws NoResponseException if there was no response from the jid.
|
||||||
* @throws NotConnectedException
|
* @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);
|
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.
|
* @return true if a reply was received from the server, false otherwise.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public boolean pingMyServer() throws NotConnectedException {
|
public boolean pingMyServer() throws NotConnectedException, InterruptedException {
|
||||||
return pingMyServer(true);
|
return pingMyServer(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,8 +227,9 @@ public class PingManager extends Manager {
|
||||||
* @param notifyListeners Notify the PingFailedListener in case of error if true
|
* @param notifyListeners Notify the PingFailedListener in case of error if true
|
||||||
* @return true if the user's server could be pinged.
|
* @return true if the user's server could be pinged.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public boolean pingMyServer(boolean notifyListeners) throws NotConnectedException {
|
public boolean pingMyServer(boolean notifyListeners) throws NotConnectedException, InterruptedException {
|
||||||
return pingMyServer(notifyListeners, connection().getPacketReplyTimeout());
|
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
|
* @param pingTimeout The time to wait for a reply in milliseconds
|
||||||
* @return true if the user's server could be pinged.
|
* @return true if the user's server could be pinged.
|
||||||
* @throws NotConnectedException
|
* @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;
|
boolean res;
|
||||||
try {
|
try {
|
||||||
res = ping(connection().getServiceName(), pingTimeout);
|
res = ping(connection().getServiceName(), pingTimeout);
|
||||||
|
@ -369,8 +375,8 @@ public class PingManager extends Manager {
|
||||||
try {
|
try {
|
||||||
res = pingMyServer(false);
|
res = pingMyServer(false);
|
||||||
}
|
}
|
||||||
catch (SmackException e) {
|
catch (InterruptedException | SmackException e) {
|
||||||
LOGGER.log(Level.WARNING, "SmackError while pinging server", e);
|
LOGGER.log(Level.WARNING, "Exception while pinging server", e);
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
// stop when we receive a pong back
|
// stop when we receive a pong back
|
||||||
|
|
|
@ -224,8 +224,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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
|
// The request is a get iq type
|
||||||
requestPrivacy.setType(Privacy.Type.get);
|
requestPrivacy.setType(Privacy.Type.get);
|
||||||
|
|
||||||
|
@ -242,8 +243,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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
|
// The request is a get iq type
|
||||||
requestPrivacy.setType(Privacy.Type.set);
|
requestPrivacy.setType(Privacy.Type.set);
|
||||||
|
|
||||||
|
@ -257,8 +259,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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
|
// The request of the list is an empty privacy message
|
||||||
Privacy request = new Privacy();
|
Privacy request = new Privacy();
|
||||||
|
|
||||||
|
@ -273,8 +276,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public PrivacyList getActiveList() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public PrivacyList getActiveList() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
Privacy privacyAnswer = this.getPrivacyWithListNames();
|
Privacy privacyAnswer = this.getPrivacyWithListNames();
|
||||||
String listName = privacyAnswer.getActiveName();
|
String listName = privacyAnswer.getActiveName();
|
||||||
boolean isDefaultAndActive = listName != null && listName.equals(privacyAnswer.getDefaultName());
|
boolean isDefaultAndActive = listName != null && listName.equals(privacyAnswer.getDefaultName());
|
||||||
|
@ -288,9 +292,10 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public String getActiveListName() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public String getActiveListName() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
if (cachedActiveListName != null) {
|
if (cachedActiveListName != null) {
|
||||||
return cachedActiveListName;
|
return cachedActiveListName;
|
||||||
}
|
}
|
||||||
|
@ -304,8 +309,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public PrivacyList getDefaultList() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public PrivacyList getDefaultList() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
Privacy privacyAnswer = this.getPrivacyWithListNames();
|
Privacy privacyAnswer = this.getPrivacyWithListNames();
|
||||||
String listName = privacyAnswer.getDefaultName();
|
String listName = privacyAnswer.getDefaultName();
|
||||||
boolean isDefaultAndActive = listName != null && listName.equals(privacyAnswer.getActiveName());
|
boolean isDefaultAndActive = listName != null && listName.equals(privacyAnswer.getActiveName());
|
||||||
|
@ -319,9 +325,10 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public String getDefaultListName() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public String getDefaultListName() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
if (cachedDefaultListName != null) {
|
if (cachedDefaultListName != null) {
|
||||||
return cachedDefaultListName;
|
return cachedDefaultListName;
|
||||||
}
|
}
|
||||||
|
@ -339,9 +346,10 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public String getEffectiveListName() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public String getEffectiveListName() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
String activeListName = getActiveListName();
|
String activeListName = getActiveListName();
|
||||||
if (activeListName != null) {
|
if (activeListName != null) {
|
||||||
return activeListName;
|
return activeListName;
|
||||||
|
@ -357,8 +365,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
private List<PrivacyItem> getPrivacyListItems(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
private List<PrivacyItem> getPrivacyListItems(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
// The request of the list is an privacy message with an empty list
|
// The request of the list is an privacy message with an empty list
|
||||||
Privacy request = new Privacy();
|
Privacy request = new Privacy();
|
||||||
request.setPrivacyList(listName, new ArrayList<PrivacyItem>());
|
request.setPrivacyList(listName, new ArrayList<PrivacyItem>());
|
||||||
|
@ -377,8 +386,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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));
|
return new PrivacyList(false, false, listName, getPrivacyListItems(listName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -389,8 +399,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<PrivacyList> getPrivacyLists() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<PrivacyList> getPrivacyLists() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
Privacy privacyAnswer = getPrivacyWithListNames();
|
Privacy privacyAnswer = getPrivacyWithListNames();
|
||||||
Set<String> names = privacyAnswer.getPrivacyListNames();
|
Set<String> names = privacyAnswer.getPrivacyListNames();
|
||||||
List<PrivacyList> lists = new ArrayList<>(names.size());
|
List<PrivacyList> lists = new ArrayList<>(names.size());
|
||||||
|
@ -410,8 +421,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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
|
// The request of the list is an privacy message with an empty list
|
||||||
Privacy request = new Privacy();
|
Privacy request = new Privacy();
|
||||||
request.setActiveName(listName);
|
request.setActiveName(listName);
|
||||||
|
@ -425,8 +437,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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
|
// The request of the list is an privacy message with an empty list
|
||||||
Privacy request = new Privacy();
|
Privacy request = new Privacy();
|
||||||
request.setDeclineActiveList(true);
|
request.setDeclineActiveList(true);
|
||||||
|
@ -442,8 +455,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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
|
// The request of the list is an privacy message with an empty list
|
||||||
Privacy request = new Privacy();
|
Privacy request = new Privacy();
|
||||||
request.setDefaultName(listName);
|
request.setDefaultName(listName);
|
||||||
|
@ -457,8 +471,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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
|
// The request of the list is an privacy message with an empty list
|
||||||
Privacy request = new Privacy();
|
Privacy request = new Privacy();
|
||||||
request.setDeclineDefaultList(true);
|
request.setDeclineDefaultList(true);
|
||||||
|
@ -475,8 +490,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void createPrivacyList(String listName, List<PrivacyItem> privacyItems) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void createPrivacyList(String listName, List<PrivacyItem> privacyItems) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
updatePrivacyList(listName, privacyItems);
|
updatePrivacyList(listName, privacyItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -490,8 +506,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void updatePrivacyList(String listName, List<PrivacyItem> privacyItems) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void updatePrivacyList(String listName, List<PrivacyItem> privacyItems) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
// Build the privacy package to add or update the new list
|
// Build the privacy package to add or update the new list
|
||||||
Privacy request = new Privacy();
|
Privacy request = new Privacy();
|
||||||
request.setPrivacyList(listName, privacyItems);
|
request.setPrivacyList(listName, privacyItems);
|
||||||
|
@ -507,8 +524,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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
|
// The request of the list is an privacy message with an empty list
|
||||||
Privacy request = new Privacy();
|
Privacy request = new Privacy();
|
||||||
request.setPrivacyList(listName, new ArrayList<PrivacyItem>());
|
request.setPrivacyList(listName, new ArrayList<PrivacyItem>());
|
||||||
|
@ -545,8 +563,9 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return ServiceDiscoveryManager.getInstanceFor(connection()).serverSupportsFeature(NAMESPACE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,8 +52,9 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public DiscoverItems discoverItems() throws NoResponseException, XMPPErrorException, NotConnectedException
|
public DiscoverItems discoverItems() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
DiscoverItems items = new DiscoverItems();
|
DiscoverItems items = new DiscoverItems();
|
||||||
items.setTo(to);
|
items.setTo(to);
|
||||||
|
@ -68,8 +69,9 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public <T extends Item> List<T> getItems() throws NoResponseException, XMPPErrorException, NotConnectedException
|
public <T extends Item> List<T> getItems() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
return getItems((List<PacketExtension>) null, (List<PacketExtension>) null);
|
return getItems((List<PacketExtension>) null, (List<PacketExtension>) null);
|
||||||
}
|
}
|
||||||
|
@ -85,8 +87,9 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public <T extends Item> List<T> getItems(String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException
|
public <T extends Item> List<T> getItems(String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId(), subscriptionId));
|
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId(), subscriptionId));
|
||||||
return getItems(request);
|
return getItems(request);
|
||||||
|
@ -105,8 +108,9 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public <T extends Item> List<T> getItems(Collection<String> ids) throws NoResponseException, XMPPErrorException, NotConnectedException
|
public <T extends Item> List<T> getItems(Collection<String> ids) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
List<Item> itemList = new ArrayList<Item>(ids.size());
|
List<Item> itemList = new ArrayList<Item>(ids.size());
|
||||||
|
|
||||||
|
@ -127,8 +131,9 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public <T extends Item> List<T> getItems(int maxItems) throws NoResponseException, XMPPErrorException, NotConnectedException
|
public <T extends Item> List<T> getItems(int maxItems) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId(), maxItems));
|
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId(), maxItems));
|
||||||
return getItems(request);
|
return getItems(request);
|
||||||
|
@ -146,8 +151,9 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public <T extends Item> List<T> getItems(int maxItems, String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException
|
public <T extends Item> List<T> getItems(int maxItems, String subscriptionId) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId(), subscriptionId, maxItems));
|
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId(), subscriptionId, maxItems));
|
||||||
return getItems(request);
|
return getItems(request);
|
||||||
|
@ -168,24 +174,25 @@ public class LeafNode extends Node
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public <T extends Item> List<T> getItems(List<PacketExtension> additionalExtensions,
|
public <T extends Item> List<T> getItems(List<PacketExtension> additionalExtensions,
|
||||||
List<PacketExtension> returnedExtensions) throws NoResponseException,
|
List<PacketExtension> returnedExtensions) throws NoResponseException,
|
||||||
XMPPErrorException, NotConnectedException {
|
XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId()));
|
PubSub request = createPubsubPacket(Type.get, new GetItemsRequest(getId()));
|
||||||
request.addExtensions(additionalExtensions);
|
request.addExtensions(additionalExtensions);
|
||||||
return getItems(request, returnedExtensions);
|
return getItems(request, returnedExtensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T extends Item> List<T> getItems(PubSub request) throws NoResponseException,
|
private <T extends Item> List<T> getItems(PubSub request) throws NoResponseException,
|
||||||
XMPPErrorException, NotConnectedException {
|
XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
return getItems(request, null);
|
return getItems(request, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private <T extends Item> List<T> getItems(PubSub request,
|
private <T extends Item> List<T> getItems(PubSub request,
|
||||||
List<PacketExtension> returnedExtensions) throws NoResponseException,
|
List<PacketExtension> returnedExtensions) throws NoResponseException,
|
||||||
XMPPErrorException, NotConnectedException {
|
XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
PubSub result = con.createPacketCollectorAndSend(request).nextResultOrThrow();
|
PubSub result = con.createPacketCollectorAndSend(request).nextResultOrThrow();
|
||||||
ItemsExtension itemsElem = result.getExtension(PubSubElementType.ITEMS);
|
ItemsExtension itemsElem = result.getExtension(PubSubElementType.ITEMS);
|
||||||
if (returnedExtensions != null) {
|
if (returnedExtensions != null) {
|
||||||
|
@ -206,8 +213,9 @@ public class LeafNode extends Node
|
||||||
*
|
*
|
||||||
* For synchronous calls use {@link #send() send()}.
|
* For synchronous calls use {@link #send() send()}.
|
||||||
* @throws NotConnectedException
|
* @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()));
|
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
|
* @param item - The item being sent
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <T extends Item> void publish(T item) throws NotConnectedException
|
public <T extends Item> void publish(T item) throws NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
Collection<T> items = new ArrayList<T>(1);
|
Collection<T> items = new ArrayList<T>(1);
|
||||||
items.add((T)(item == null ? new Item() : item));
|
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
|
* @param items - The collection of items being sent
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public <T extends Item> void publish(Collection<T> items) throws NotConnectedException
|
public <T extends Item> void publish(Collection<T> items) throws NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
PubSub packet = createPubsubPacket(Type.set, new PublishItem<T>(getId(), items));
|
PubSub packet = createPubsubPacket(Type.set, new PublishItem<T>(getId(), items));
|
||||||
|
|
||||||
|
@ -273,9 +283,10 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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()));
|
PubSub packet = createPubsubPacket(Type.set, new NodeExtension(PubSubElementType.PUBLISH, getId()));
|
||||||
|
|
||||||
|
@ -303,10 +314,11 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <T extends Item> void send(T item) throws NoResponseException, XMPPErrorException, NotConnectedException
|
public <T extends Item> void send(T item) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
Collection<T> items = new ArrayList<T>(1);
|
Collection<T> items = new ArrayList<T>(1);
|
||||||
items.add((item == null ? (T)new Item() : item));
|
items.add((item == null ? (T)new Item() : item));
|
||||||
|
@ -328,9 +340,10 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public <T extends Item> void send(Collection<T> items) throws NoResponseException, XMPPErrorException, NotConnectedException
|
public <T extends Item> void send(Collection<T> items) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
PubSub packet = createPubsubPacket(Type.set, new PublishItem<T>(getId(), items));
|
PubSub packet = createPubsubPacket(Type.set, new PublishItem<T>(getId(), items));
|
||||||
|
|
||||||
|
@ -345,8 +358,9 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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());
|
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 XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void deleteItem(String itemId) throws NoResponseException, XMPPErrorException, NotConnectedException
|
public void deleteItem(String itemId) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
Collection<String> items = new ArrayList<String>(1);
|
Collection<String> items = new ArrayList<String>(1);
|
||||||
items.add(itemId);
|
items.add(itemId);
|
||||||
|
@ -375,8 +390,9 @@ public class LeafNode extends Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void deleteItem(Collection<String> itemIds) throws NoResponseException, XMPPErrorException, NotConnectedException
|
public void deleteItem(Collection<String> itemIds) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
List<Item> items = new ArrayList<Item>(itemIds.size());
|
List<Item> items = new ArrayList<Item>(itemIds.size());
|
||||||
|
|
||||||
|
|
|
@ -95,8 +95,9 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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(
|
PubSub pubSub = createPubsubPacket(Type.get, new NodeExtension(
|
||||||
PubSubElementType.CONFIGURE_OWNER, getId()), PubSubNamespace.OWNER);
|
PubSubElementType.CONFIGURE_OWNER, getId()), PubSubNamespace.OWNER);
|
||||||
|
@ -111,8 +112,9 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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,
|
PubSub packet = createPubsubPacket(Type.set, new FormNode(FormNodeType.CONFIGURE_OWNER,
|
||||||
getId(), submitForm), PubSubNamespace.OWNER);
|
getId(), submitForm), PubSubNamespace.OWNER);
|
||||||
|
@ -126,8 +128,9 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public DiscoverInfo discoverInfo() throws NoResponseException, XMPPErrorException, NotConnectedException
|
public DiscoverInfo discoverInfo() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
DiscoverInfo info = new DiscoverInfo();
|
DiscoverInfo info = new DiscoverInfo();
|
||||||
info.setTo(to);
|
info.setTo(to);
|
||||||
|
@ -142,9 +145,10 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public List<Subscription> getSubscriptions() throws NoResponseException, XMPPErrorException, NotConnectedException
|
public List<Subscription> getSubscriptions() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
return getSubscriptions(null, null);
|
return getSubscriptions(null, null);
|
||||||
}
|
}
|
||||||
|
@ -163,9 +167,10 @@ abstract public class Node
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Subscription> getSubscriptions(List<PacketExtension> additionalExtensions, Collection<PacketExtension> returnedExtensions)
|
public List<Subscription> getSubscriptions(List<PacketExtension> additionalExtensions, Collection<PacketExtension> returnedExtensions)
|
||||||
throws NoResponseException, XMPPErrorException, NotConnectedException {
|
throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
return getSubscriptions(additionalExtensions, returnedExtensions, null);
|
return getSubscriptions(additionalExtensions, returnedExtensions, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,11 +181,12 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see #getSubscriptionsAsOwner(List, Collection)
|
* @see #getSubscriptionsAsOwner(List, Collection)
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public List<Subscription> getSubscriptionsAsOwner() throws NoResponseException, XMPPErrorException,
|
public List<Subscription> getSubscriptionsAsOwner() throws NoResponseException, XMPPErrorException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
return getSubscriptionsAsOwner(null, null);
|
return getSubscriptionsAsOwner(null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,19 +208,20 @@ abstract public class Node
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see <a href="http://www.xmpp.org/extensions/xep-0060.html#owner-subscriptions-retrieve">XEP-60 § 8.8.1 -
|
* @see <a href="http://www.xmpp.org/extensions/xep-0060.html#owner-subscriptions-retrieve">XEP-60 § 8.8.1 -
|
||||||
* Retrieve Subscriptions List</a>
|
* Retrieve Subscriptions List</a>
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public List<Subscription> getSubscriptionsAsOwner(List<PacketExtension> additionalExtensions,
|
public List<Subscription> getSubscriptionsAsOwner(List<PacketExtension> additionalExtensions,
|
||||||
Collection<PacketExtension> returnedExtensions) throws NoResponseException, XMPPErrorException,
|
Collection<PacketExtension> returnedExtensions) throws NoResponseException, XMPPErrorException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
return getSubscriptions(additionalExtensions, returnedExtensions, PubSubNamespace.OWNER);
|
return getSubscriptions(additionalExtensions, returnedExtensions, PubSubNamespace.OWNER);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Subscription> getSubscriptions(List<PacketExtension> additionalExtensions,
|
private List<Subscription> getSubscriptions(List<PacketExtension> additionalExtensions,
|
||||||
Collection<PacketExtension> returnedExtensions, PubSubNamespace pubSubNamespace)
|
Collection<PacketExtension> returnedExtensions, PubSubNamespace pubSubNamespace)
|
||||||
throws NoResponseException, XMPPErrorException, NotConnectedException {
|
throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
PubSub pubSub = createPubsubPacket(Type.get, new NodeExtension(PubSubElementType.SUBSCRIPTIONS, getId()), pubSubNamespace);
|
PubSub pubSub = createPubsubPacket(Type.get, new NodeExtension(PubSubElementType.SUBSCRIPTIONS, getId()), pubSubNamespace);
|
||||||
if (additionalExtensions != null) {
|
if (additionalExtensions != null) {
|
||||||
for (PacketExtension pe : additionalExtensions) {
|
for (PacketExtension pe : additionalExtensions) {
|
||||||
|
@ -236,9 +243,10 @@ abstract public class Node
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Affiliation> getAffiliations() throws NoResponseException, XMPPErrorException,
|
public List<Affiliation> getAffiliations() throws NoResponseException, XMPPErrorException,
|
||||||
NotConnectedException {
|
NotConnectedException, InterruptedException {
|
||||||
return getAffiliations(null, null);
|
return getAffiliations(null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,9 +264,10 @@ abstract public class Node
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Affiliation> getAffiliations(List<PacketExtension> additionalExtensions, Collection<PacketExtension> returnedExtensions)
|
public List<Affiliation> getAffiliations(List<PacketExtension> additionalExtensions, Collection<PacketExtension> returnedExtensions)
|
||||||
throws NoResponseException, XMPPErrorException, NotConnectedException {
|
throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
PubSub pubSub = createPubsubPacket(Type.get, new NodeExtension(PubSubElementType.AFFILIATIONS, getId()));
|
PubSub pubSub = createPubsubPacket(Type.get, new NodeExtension(PubSubElementType.AFFILIATIONS, getId()));
|
||||||
if (additionalExtensions != null) {
|
if (additionalExtensions != null) {
|
||||||
for (PacketExtension pe : additionalExtensions) {
|
for (PacketExtension pe : additionalExtensions) {
|
||||||
|
@ -289,8 +298,9 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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 pubSub = createPubsubPacket(Type.set, new SubscribeExtension(jid, getId()));
|
||||||
PubSub reply = sendPubsubPacket(pubSub);
|
PubSub reply = sendPubsubPacket(pubSub);
|
||||||
|
@ -314,8 +324,9 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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()));
|
PubSub request = createPubsubPacket(Type.set, new SubscribeExtension(jid, getId()));
|
||||||
request.addExtension(new FormNode(FormNodeType.OPTIONS, subForm));
|
request.addExtension(new FormNode(FormNodeType.OPTIONS, subForm));
|
||||||
|
@ -332,9 +343,10 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
unsubscribe(jid, null);
|
||||||
}
|
}
|
||||||
|
@ -347,8 +359,9 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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)));
|
sendPubsubPacket(createPubsubPacket(Type.set, new UnsubscribeExtension(jid, getId(), subscriptionId)));
|
||||||
}
|
}
|
||||||
|
@ -361,8 +374,9 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return getSubscriptionOptions(jid, null);
|
||||||
}
|
}
|
||||||
|
@ -378,9 +392,10 @@ abstract public class Node
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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)));
|
PubSub packet = sendPubsubPacket(createPubsubPacket(Type.get, new OptionsExtension(jid, getId(), subscriptionId)));
|
||||||
FormNode ext = packet.getExtension(PubSubElementType.OPTIONS);
|
FormNode ext = packet.getExtension(PubSubElementType.OPTIONS);
|
||||||
|
@ -486,7 +501,7 @@ abstract public class Node
|
||||||
return PubSub.createPubsubPacket(to, type, ext, ns);
|
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);
|
return PubSubManager.sendPubsubPacket(con, packet);
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,8 +86,9 @@ final public class PubSubManager
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
PubSub reply = sendPubsubPacket(Type.set, new NodeExtension(PubSubElementType.CREATE), null);
|
||||||
NodeExtension elem = reply.getExtension("create", PubSubNamespace.BASIC.getXmlns());
|
NodeExtension elem = reply.getExtension("create", PubSubNamespace.BASIC.getXmlns());
|
||||||
|
@ -108,8 +109,9 @@ final public class PubSubManager
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return (LeafNode)createNode(id, null);
|
||||||
}
|
}
|
||||||
|
@ -126,8 +128,9 @@ final public class PubSubManager
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
PubSub request = PubSub.createPubsubPacket(to, Type.set, new NodeExtension(PubSubElementType.CREATE, name), null);
|
||||||
boolean isLeafNode = true;
|
boolean isLeafNode = true;
|
||||||
|
@ -160,9 +163,10 @@ final public class PubSubManager
|
||||||
* @throws XMPPErrorException The node does not exist
|
* @throws XMPPErrorException The node does not exist
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <T extends Node> T getNode(String id) throws NoResponseException, XMPPErrorException, NotConnectedException
|
public <T extends Node> T getNode(String id) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
Node node = nodeMap.get(id);
|
Node node = nodeMap.get(id);
|
||||||
|
|
||||||
|
@ -211,8 +215,9 @@ final public class PubSubManager
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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();
|
DiscoverItems items = new DiscoverItems();
|
||||||
|
|
||||||
|
@ -230,8 +235,9 @@ final public class PubSubManager
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<Subscription> getSubscriptions() throws NoResponseException, XMPPErrorException, NotConnectedException
|
public List<Subscription> getSubscriptions() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
Stanza reply = sendPubsubPacket(Type.get, new NodeExtension(PubSubElementType.SUBSCRIPTIONS), null);
|
Stanza reply = sendPubsubPacket(Type.get, new NodeExtension(PubSubElementType.SUBSCRIPTIONS), null);
|
||||||
SubscriptionsExtension subElem = reply.getExtension(PubSubElementType.SUBSCRIPTIONS.getElementName(), PubSubElementType.SUBSCRIPTIONS.getNamespace().getXmlns());
|
SubscriptionsExtension subElem = reply.getExtension(PubSubElementType.SUBSCRIPTIONS.getElementName(), PubSubElementType.SUBSCRIPTIONS.getNamespace().getXmlns());
|
||||||
|
@ -245,9 +251,10 @@ final public class PubSubManager
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public List<Affiliation> getAffiliations() throws NoResponseException, XMPPErrorException, NotConnectedException
|
public List<Affiliation> getAffiliations() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
PubSub reply = sendPubsubPacket(Type.get, new NodeExtension(PubSubElementType.AFFILIATIONS), null);
|
PubSub reply = sendPubsubPacket(Type.get, new NodeExtension(PubSubElementType.AFFILIATIONS), null);
|
||||||
AffiliationsExtension listElem = reply.getExtension(PubSubElementType.AFFILIATIONS);
|
AffiliationsExtension listElem = reply.getExtension(PubSubElementType.AFFILIATIONS);
|
||||||
|
@ -261,8 +268,9 @@ final public class PubSubManager
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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());
|
sendPubsubPacket(Type.set, new NodeExtension(PubSubElementType.DELETE, nodeId), PubSubElementType.DELETE.getNamespace());
|
||||||
nodeMap.remove(nodeId);
|
nodeMap.remove(nodeId);
|
||||||
|
@ -275,8 +283,9 @@ final public class PubSubManager
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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
|
// Errors will cause exceptions in getReply, so it only returns
|
||||||
// on success.
|
// on success.
|
||||||
|
@ -292,19 +301,20 @@ final public class PubSubManager
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public DiscoverInfo getSupportedFeatures() throws NoResponseException, XMPPErrorException, NotConnectedException
|
public DiscoverInfo getSupportedFeatures() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
ServiceDiscoveryManager mgr = ServiceDiscoveryManager.getInstanceFor(con);
|
ServiceDiscoveryManager mgr = ServiceDiscoveryManager.getInstanceFor(con);
|
||||||
return mgr.discoverInfo(to);
|
return mgr.discoverInfo(to);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PubSub sendPubsubPacket(Type type, PacketExtension ext, PubSubNamespace ns)
|
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);
|
return sendPubsubPacket(con, to, type, Collections.singletonList(ext), ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PubSub sendPubsubPacket(XMPPConnection con, String to, Type type, List<PacketExtension> extList, PubSubNamespace ns) throws NoResponseException, XMPPErrorException, NotConnectedException
|
static PubSub sendPubsubPacket(XMPPConnection con, String to, Type type, List<PacketExtension> extList, PubSubNamespace ns) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException
|
||||||
{
|
{
|
||||||
PubSub pubSub = new PubSub(to, type, ns);
|
PubSub pubSub = new PubSub(to, type, ns);
|
||||||
for (PacketExtension pe : extList) {
|
for (PacketExtension pe : extList) {
|
||||||
|
@ -313,7 +323,7 @@ final public class PubSubManager
|
||||||
return sendPubsubPacket(con ,pubSub);
|
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();
|
IQ resultIQ = con.createPacketCollectorAndSend(packet).nextResultOrThrow();
|
||||||
if (resultIQ instanceof EmptyResultIQ) {
|
if (resultIQ instanceof EmptyResultIQ) {
|
||||||
|
|
|
@ -141,7 +141,7 @@ public class DeliveryReceiptManager extends Manager {
|
||||||
// Add the packet listener to handle incoming delivery receipt requests
|
// Add the packet listener to handle incoming delivery receipt requests
|
||||||
connection.addAsyncPacketListener(new PacketListener() {
|
connection.addAsyncPacketListener(new PacketListener() {
|
||||||
@Override
|
@Override
|
||||||
public void processPacket(Stanza packet) throws NotConnectedException {
|
public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
|
||||||
final String from = packet.getFrom();
|
final String from = packet.getFrom();
|
||||||
final XMPPConnection connection = connection();
|
final XMPPConnection connection = connection();
|
||||||
switch (autoReceiptMode) {
|
switch (autoReceiptMode) {
|
||||||
|
@ -188,8 +188,9 @@ public class DeliveryReceiptManager extends Manager {
|
||||||
* @return true if supported
|
* @return true if supported
|
||||||
* @throws SmackException if there was no response from the server.
|
* @throws SmackException if there was no response from the server.
|
||||||
* @throws XMPPException
|
* @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,
|
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid,
|
||||||
DeliveryReceipt.NAMESPACE);
|
DeliveryReceipt.NAMESPACE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,8 +64,9 @@ public class UserSearch extends SimpleIQ {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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();
|
UserSearch search = new UserSearch();
|
||||||
search.setType(IQ.Type.get);
|
search.setType(IQ.Type.get);
|
||||||
search.setTo(searchService);
|
search.setTo(searchService);
|
||||||
|
@ -84,8 +85,9 @@ public class UserSearch extends SimpleIQ {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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();
|
UserSearch search = new UserSearch();
|
||||||
search.setType(IQ.Type.set);
|
search.setType(IQ.Type.set);
|
||||||
search.setTo(searchService);
|
search.setTo(searchService);
|
||||||
|
@ -105,8 +107,9 @@ public class UserSearch extends SimpleIQ {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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();
|
SimpleUserSearch search = new SimpleUserSearch();
|
||||||
search.setForm(searchForm);
|
search.setForm(searchForm);
|
||||||
search.setType(IQ.Type.set);
|
search.setType(IQ.Type.set);
|
||||||
|
|
|
@ -66,8 +66,9 @@ public class UserSearchManager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return userSearch.getSearchForm(con, searchService);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,8 +82,9 @@ public class UserSearchManager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return userSearch.sendSearchForm(con, searchForm, searchService);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,8 +96,9 @@ public class UserSearchManager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<String> getSearchServices() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public List<String> getSearchServices() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(con);
|
ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(con);
|
||||||
return discoManager.findServices(UserSearch.NAMESPACE, false, false);
|
return discoManager.findServices(UserSearch.NAMESPACE, false, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,8 +44,9 @@ public class SharedGroupManager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public static List<String> getSharedGroups(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public static List<String> getSharedGroups(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
// Discover the shared groups of the logged user
|
// Discover the shared groups of the logged user
|
||||||
SharedGroupsInfo info = new SharedGroupsInfo();
|
SharedGroupsInfo info = new SharedGroupsInfo();
|
||||||
info.setType(IQ.Type.get);
|
info.setType(IQ.Type.get);
|
||||||
|
|
|
@ -99,11 +99,11 @@ public class EntityTimeManager extends Manager {
|
||||||
enabled = false;
|
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);
|
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))
|
if (!isTimeSupported(jid))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
|
|
@ -70,10 +70,11 @@ public class VCardManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @deprecated use {@link #isSupported(String)} instead.
|
* @deprecated use {@link #isSupported(String)} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@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);
|
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 XMPPErrorException thrown if there was an issue setting the VCard in the server.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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);
|
vcard.setType(IQ.Type.set);
|
||||||
connection().createPacketCollectorAndSend(vcard).nextResultOrThrow();
|
connection().createPacketCollectorAndSend(vcard).nextResultOrThrow();
|
||||||
}
|
}
|
||||||
|
@ -101,8 +103,9 @@ public class VCardManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public VCard loadVCard() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public VCard loadVCard() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
return loadVCard(null);
|
return loadVCard(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,8 +115,9 @@ public class VCardManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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();
|
VCard vcardRequest = new VCard();
|
||||||
vcardRequest.setTo(bareJid);
|
vcardRequest.setTo(bareJid);
|
||||||
VCard result = connection().createPacketCollectorAndSend(vcardRequest).nextResultOrThrow();
|
VCard result = connection().createPacketCollectorAndSend(vcardRequest).nextResultOrThrow();
|
||||||
|
@ -128,8 +132,9 @@ public class VCardManager extends Manager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @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);
|
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid, NAMESPACE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -523,10 +523,11 @@ public class VCard extends IQ {
|
||||||
* @throws XMPPErrorException thrown if there was an issue setting the VCard in the server.
|
* @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 NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @deprecated use {@link VCardManager#saveVCard(VCard)} instead.
|
* @deprecated use {@link VCardManager#saveVCard(VCard)} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@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);
|
VCardManager.getInstanceFor(connection).saveVCard(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -536,10 +537,11 @@ public class VCard extends IQ {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @deprecated use {@link VCardManager#loadVCard()} instead.
|
* @deprecated use {@link VCardManager#loadVCard()} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void load(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public void load(XMPPConnection connection) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
load(connection, null);
|
load(connection, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -548,10 +550,11 @@ public class VCard extends IQ {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @deprecated use {@link VCardManager#loadVCard(String)} instead.
|
* @deprecated use {@link VCardManager#loadVCard(String)} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@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);
|
VCard result = VCardManager.getInstanceFor(connection).loadVCard(user);
|
||||||
copyFieldsFrom(result);
|
copyFieldsFrom(result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,10 +76,11 @@ public class XDataManager extends Manager {
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @see <a href="http://xmpp.org/extensions/xep-0004.html#disco">XEP-0004: Data Forms § 6. Service Discovery</a>
|
* @see <a href="http://xmpp.org/extensions/xep-0004.html#disco">XEP-0004: Data Forms § 6. Service Discovery</a>
|
||||||
* @since 4.1
|
* @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);
|
return ServiceDiscoveryManager.getInstanceFor(connection()).supportsFeature(jid, NAMESPACE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,9 +128,10 @@ public class XHTMLManager {
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public static boolean isServiceEnabled(XMPPConnection connection, String userID)
|
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);
|
return ServiceDiscoveryManager.getInstanceFor(connection).supportsFeature(userID, XHTMLExtension.NAMESPACE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,9 +59,10 @@ public class InBandBytestreamManagerTest {
|
||||||
* Initialize fields used in the tests.
|
* Initialize fields used in the tests.
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws XMPPException, SmackException {
|
public void setup() throws XMPPException, SmackException, InterruptedException {
|
||||||
|
|
||||||
// build protocol verifier
|
// build protocol verifier
|
||||||
protocol = new Protocol();
|
protocol = new Protocol();
|
||||||
|
@ -103,9 +104,10 @@ public class InBandBytestreamManagerTest {
|
||||||
* bytestream.
|
* bytestream.
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void shouldFailIfTargetDoesNotSupportIBB() throws SmackException, XMPPException {
|
public void shouldFailIfTargetDoesNotSupportIBB() throws SmackException, XMPPException, InterruptedException {
|
||||||
InBandBytestreamManager byteStreamManager = InBandBytestreamManager.getByteStreamManager(connection);
|
InBandBytestreamManager byteStreamManager = InBandBytestreamManager.getByteStreamManager(connection);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -153,7 +155,7 @@ public class InBandBytestreamManagerTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldUseConfiguredStanzaType() throws SmackException {
|
public void shouldUseConfiguredStanzaType() throws SmackException, InterruptedException {
|
||||||
InBandBytestreamManager byteStreamManager = InBandBytestreamManager.getByteStreamManager(connection);
|
InBandBytestreamManager byteStreamManager = InBandBytestreamManager.getByteStreamManager(connection);
|
||||||
byteStreamManager.setStanza(StanzaType.MESSAGE);
|
byteStreamManager.setStanza(StanzaType.MESSAGE);
|
||||||
|
|
||||||
|
|
|
@ -67,9 +67,10 @@ public class InBandBytestreamRequestTest {
|
||||||
/**
|
/**
|
||||||
* Test reject() method.
|
* Test reject() method.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void shouldReplyWithErrorIfRequestIsRejected() throws NotConnectedException {
|
public void shouldReplyWithErrorIfRequestIsRejected() throws NotConnectedException, InterruptedException {
|
||||||
InBandBytestreamRequest ibbRequest = new InBandBytestreamRequest(
|
InBandBytestreamRequest ibbRequest = new InBandBytestreamRequest(
|
||||||
byteStreamManager, initBytestream);
|
byteStreamManager, initBytestream);
|
||||||
|
|
||||||
|
|
|
@ -75,9 +75,10 @@ public class InBandBytestreamSessionMessageTest {
|
||||||
* Initialize fields used in the tests.
|
* Initialize fields used in the tests.
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws XMPPException, SmackException {
|
public void setup() throws XMPPException, SmackException, InterruptedException {
|
||||||
|
|
||||||
// build protocol verifier
|
// build protocol verifier
|
||||||
protocol = new Protocol();
|
protocol = new Protocol();
|
||||||
|
|
|
@ -76,9 +76,10 @@ public class InBandBytestreamSessionTest {
|
||||||
* Initialize fields used in the tests.
|
* Initialize fields used in the tests.
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws XMPPException, SmackException {
|
public void setup() throws XMPPException, SmackException, InterruptedException {
|
||||||
|
|
||||||
// build protocol verifier
|
// build protocol verifier
|
||||||
protocol = new Protocol();
|
protocol = new Protocol();
|
||||||
|
|
|
@ -76,9 +76,10 @@ public class Socks5ByteStreamManagerTest {
|
||||||
* Initialize fields used in the tests.
|
* Initialize fields used in the tests.
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws XMPPException, SmackException {
|
public void setup() throws XMPPException, SmackException, InterruptedException {
|
||||||
|
|
||||||
// build protocol verifier
|
// build protocol verifier
|
||||||
protocol = new Protocol();
|
protocol = new Protocol();
|
||||||
|
|
|
@ -64,9 +64,10 @@ public class Socks5ByteStreamRequestTest {
|
||||||
* Initialize fields used in the tests.
|
* Initialize fields used in the tests.
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws XMPPException, SmackException {
|
public void setup() throws XMPPException, SmackException, InterruptedException {
|
||||||
|
|
||||||
// build protocol verifier
|
// build protocol verifier
|
||||||
protocol = new Protocol();
|
protocol = new Protocol();
|
||||||
|
|
|
@ -69,9 +69,10 @@ public class Socks5ClientForInitiatorTest {
|
||||||
* Initialize fields used in the tests.
|
* Initialize fields used in the tests.
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws XMPPException, SmackException {
|
public void setup() throws XMPPException, SmackException, InterruptedException {
|
||||||
|
|
||||||
// build protocol verifier
|
// build protocol verifier
|
||||||
protocol = new Protocol();
|
protocol = new Protocol();
|
||||||
|
|
|
@ -103,9 +103,10 @@ public class PingTest extends InitExtensions {
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void checkFailedPingOnTimeout() throws SmackException, IOException, XMPPException {
|
public void checkFailedPingOnTimeout() throws SmackException, IOException, XMPPException, InterruptedException {
|
||||||
DummyConnection dummyCon = getAuthenticatedDummyConnectionWithoutIqReplies();
|
DummyConnection dummyCon = getAuthenticatedDummyConnectionWithoutIqReplies();
|
||||||
PingManager pinger = PingManager.getInstanceFor(dummyCon);
|
PingManager pinger = PingManager.getInstanceFor(dummyCon);
|
||||||
|
|
||||||
|
@ -181,7 +182,7 @@ public class PingTest extends InitExtensions {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void checkPingToServerTimeout() throws SmackException, IOException, XMPPException {
|
public void checkPingToServerTimeout() throws SmackException, IOException, XMPPException, InterruptedException {
|
||||||
DummyConnection con = getAuthenticatedDummyConnectionWithoutIqReplies();
|
DummyConnection con = getAuthenticatedDummyConnectionWithoutIqReplies();
|
||||||
PingManager pinger = PingManager.getInstanceFor(con);
|
PingManager pinger = PingManager.getInstanceFor(con);
|
||||||
|
|
||||||
|
@ -233,7 +234,7 @@ public class PingTest extends InitExtensions {
|
||||||
assertFalse(pingSupported);
|
assertFalse(pingSupported);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ThreadedDummyConnection getAuthentiactedDummyConnection() throws SmackException, IOException, XMPPException {
|
private static ThreadedDummyConnection getAuthentiactedDummyConnection() throws SmackException, IOException, XMPPException, InterruptedException {
|
||||||
ThreadedDummyConnection connection = new ThreadedDummyConnection();
|
ThreadedDummyConnection connection = new ThreadedDummyConnection();
|
||||||
connection.connect();
|
connection.connect();
|
||||||
connection.login();
|
connection.login();
|
||||||
|
@ -247,8 +248,9 @@ public class PingTest extends InitExtensions {
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
* @throws SmackException
|
* @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();
|
DummyConnection con = new DummyConnection();
|
||||||
con.setPacketReplyTimeout(500);
|
con.setPacketReplyTimeout(500);
|
||||||
con.connect();
|
con.connect();
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class ConfigureFormTest
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getConfigFormWithInsufficientPriviliges() throws XMPPException, SmackException, IOException
|
public void getConfigFormWithInsufficientPriviliges() throws XMPPException, SmackException, IOException, InterruptedException
|
||||||
{
|
{
|
||||||
ThreadedDummyConnection con = ThreadedDummyConnection.newInstance();
|
ThreadedDummyConnection con = ThreadedDummyConnection.newInstance();
|
||||||
PubSubManager mgr = new PubSubManager(con);
|
PubSubManager mgr = new PubSubManager(con);
|
||||||
|
@ -77,7 +77,7 @@ public class ConfigureFormTest
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test (expected=SmackException.class)
|
@Test (expected=SmackException.class)
|
||||||
public void getConfigFormWithTimeout() throws XMPPException, SmackException
|
public void getConfigFormWithTimeout() throws XMPPException, SmackException, InterruptedException
|
||||||
{
|
{
|
||||||
ThreadedDummyConnection con = new ThreadedDummyConnection();
|
ThreadedDummyConnection con = new ThreadedDummyConnection();
|
||||||
PubSubManager mgr = new PubSubManager(con);
|
PubSubManager mgr = new PubSubManager(con);
|
||||||
|
|
|
@ -64,9 +64,10 @@ public class ConnectionUtils {
|
||||||
* @return a mocked XMPP connection
|
* @return a mocked XMPP connection
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public static XMPPConnection createMockedConnection(final Protocol protocol,
|
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
|
// mock XMPP connection
|
||||||
XMPPConnection connection = mock(XMPPConnection.class);
|
XMPPConnection connection = mock(XMPPConnection.class);
|
||||||
|
|
|
@ -91,8 +91,9 @@ public class Chat {
|
||||||
*
|
*
|
||||||
* @param text the text to send.
|
* @param text the text to send.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void sendMessage(String text) throws NotConnectedException {
|
public void sendMessage(String text) throws NotConnectedException, InterruptedException {
|
||||||
Message message = new Message();
|
Message message = new Message();
|
||||||
message.setBody(text);
|
message.setBody(text);
|
||||||
sendMessage(message);
|
sendMessage(message);
|
||||||
|
@ -104,8 +105,9 @@ public class Chat {
|
||||||
*
|
*
|
||||||
* @param message the message to send.
|
* @param message the message to send.
|
||||||
* @throws NotConnectedException
|
* @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
|
// Force the recipient, message type, and thread ID since the user elected
|
||||||
// to send the message through this chat object.
|
// to send the message through this chat object.
|
||||||
message.setTo(participant);
|
message.setTo(participant);
|
||||||
|
|
|
@ -351,7 +351,7 @@ public class ChatManager extends Manager{
|
||||||
chat.deliver(message);
|
chat.deliver(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sendMessage(Chat chat, Message message) throws NotConnectedException {
|
void sendMessage(Chat chat, Message message) throws NotConnectedException, InterruptedException {
|
||||||
for(Map.Entry<MessageListener, PacketFilter> interceptor : interceptors.entrySet()) {
|
for(Map.Entry<MessageListener, PacketFilter> interceptor : interceptors.entrySet()) {
|
||||||
PacketFilter filter = interceptor.getValue();
|
PacketFilter filter = interceptor.getValue();
|
||||||
if(filter != null && filter.accept(message)) {
|
if(filter != null && filter.accept(message)) {
|
||||||
|
|
|
@ -211,7 +211,7 @@ public class Roster extends Manager {
|
||||||
try {
|
try {
|
||||||
Roster.this.reload();
|
Roster.this.reload();
|
||||||
}
|
}
|
||||||
catch (SmackException e) {
|
catch (InterruptedException | SmackException e) {
|
||||||
LOGGER.log(Level.SEVERE, "Could not reload Roster", e);
|
LOGGER.log(Level.SEVERE, "Could not reload Roster", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -229,7 +229,7 @@ public class Roster extends Manager {
|
||||||
try {
|
try {
|
||||||
reload();
|
reload();
|
||||||
}
|
}
|
||||||
catch (SmackException e) {
|
catch (InterruptedException | SmackException e) {
|
||||||
LOGGER.log(Level.SEVERE, "Could not reload Roster", 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.
|
* reloaded at a later point when the server responds to the reload request.
|
||||||
* @throws NotLoggedInException If not logged in.
|
* @throws NotLoggedInException If not logged in.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void reload() throws NotLoggedInException, NotConnectedException{
|
public void reload() throws NotLoggedInException, NotConnectedException, InterruptedException{
|
||||||
final XMPPConnection connection = connection();
|
final XMPPConnection connection = connection();
|
||||||
if (!connection.isAuthenticated()) {
|
if (!connection.isAuthenticated()) {
|
||||||
throw new NotLoggedInException();
|
throw new NotLoggedInException();
|
||||||
|
@ -298,9 +299,10 @@ public class Roster extends Manager {
|
||||||
*
|
*
|
||||||
* @throws NotLoggedInException
|
* @throws NotLoggedInException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public void reloadAndWait() throws NotLoggedInException, NotConnectedException {
|
public void reloadAndWait() throws NotLoggedInException, NotConnectedException, InterruptedException {
|
||||||
reload();
|
reload();
|
||||||
waitUntilLoaded();
|
waitUntilLoaded();
|
||||||
}
|
}
|
||||||
|
@ -317,14 +319,14 @@ public class Roster extends Manager {
|
||||||
try {
|
try {
|
||||||
reload();
|
reload();
|
||||||
}
|
}
|
||||||
catch (NotLoggedInException | NotConnectedException e) {
|
catch (InterruptedException | NotLoggedInException | NotConnectedException e) {
|
||||||
LOGGER.log(Level.FINER, "Could not reload roster", e);
|
LOGGER.log(Level.FINER, "Could not reload roster", e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean waitUntilLoaded() {
|
protected boolean waitUntilLoaded() throws InterruptedException {
|
||||||
final XMPPConnection connection = connection();
|
final XMPPConnection connection = connection();
|
||||||
while (!loaded) {
|
while (!loaded) {
|
||||||
long waitTime = connection.getPacketReplyTimeout();
|
long waitTime = connection.getPacketReplyTimeout();
|
||||||
|
@ -332,17 +334,11 @@ public class Roster extends Manager {
|
||||||
if (waitTime <= 0) {
|
if (waitTime <= 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
try {
|
synchronized (this) {
|
||||||
synchronized (this) {
|
if (!loaded) {
|
||||||
if (!loaded) {
|
wait(waitTime);
|
||||||
wait(waitTime);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (InterruptedException e) {
|
|
||||||
LOGGER.log(Level.FINE, "interrupted", e);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
waitTime -= now - start;
|
waitTime -= now - start;
|
||||||
start = now;
|
start = now;
|
||||||
|
@ -423,8 +419,9 @@ public class Roster extends Manager {
|
||||||
* @throws XMPPErrorException if an XMPP exception occurs.
|
* @throws XMPPErrorException if an XMPP exception occurs.
|
||||||
* @throws NotLoggedInException If not logged in.
|
* @throws NotLoggedInException If not logged in.
|
||||||
* @throws NotConnectedException
|
* @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();
|
final XMPPConnection connection = connection();
|
||||||
if (!connection.isAuthenticated()) {
|
if (!connection.isAuthenticated()) {
|
||||||
throw new NotLoggedInException();
|
throw new NotLoggedInException();
|
||||||
|
@ -464,9 +461,10 @@ public class Roster extends Manager {
|
||||||
* @throws NotLoggedInException if not logged in.
|
* @throws NotLoggedInException if not logged in.
|
||||||
* @throws NoResponseException SmackException if there was no response from the server.
|
* @throws NoResponseException SmackException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
* @throws IllegalStateException if connection is not logged in or logged in anonymously
|
* @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();
|
final XMPPConnection connection = connection();
|
||||||
if (!connection.isAuthenticated()) {
|
if (!connection.isAuthenticated()) {
|
||||||
throw new NotLoggedInException();
|
throw new NotLoggedInException();
|
||||||
|
@ -913,7 +911,7 @@ public class Roster extends Manager {
|
||||||
*/
|
*/
|
||||||
private void setOfflinePresencesAndResetLoaded() {
|
private void setOfflinePresencesAndResetLoaded() {
|
||||||
Presence packetUnavailable;
|
Presence packetUnavailable;
|
||||||
for (String user : presenceMap.keySet()) {
|
outerloop: for (String user : presenceMap.keySet()) {
|
||||||
Map<String, Presence> resources = presenceMap.get(user);
|
Map<String, Presence> resources = presenceMap.get(user);
|
||||||
if (resources != null) {
|
if (resources != null) {
|
||||||
for (String resource : resources.keySet()) {
|
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",
|
"presencePakcetListener should never throw a NotConnectedException when processPacket is called with a presence of type unavailable",
|
||||||
e);
|
e);
|
||||||
}
|
}
|
||||||
|
catch (InterruptedException e) {
|
||||||
|
break outerloop;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1140,7 +1141,7 @@ public class Roster extends Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void processPacket(Stanza packet) throws NotConnectedException {
|
public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
|
||||||
final XMPPConnection connection = connection();
|
final XMPPConnection connection = connection();
|
||||||
Presence presence = (Presence) packet;
|
Presence presence = (Presence) packet;
|
||||||
String from = presence.getFrom();
|
String from = presence.getFrom();
|
||||||
|
|
|
@ -93,8 +93,9 @@ public class RosterEntry {
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @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.
|
// Do nothing if the name hasn't changed.
|
||||||
if (name != null && name.equals(this.name)) {
|
if (name != null && name.equals(this.name)) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -75,8 +75,9 @@ public class RosterGroup {
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @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) {
|
synchronized (entries) {
|
||||||
for (RosterEntry entry : entries) {
|
for (RosterEntry entry : entries) {
|
||||||
RosterPacket packet = new RosterPacket();
|
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 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 NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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;
|
PacketCollector collector = null;
|
||||||
// Only add the entry if it isn't already in the list.
|
// Only add the entry if it isn't already in the list.
|
||||||
synchronized (entries) {
|
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 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 NoResponseException if there was no response from the server.
|
||||||
* @throws NotConnectedException
|
* @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;
|
PacketCollector collector = null;
|
||||||
// Only remove the entry if it's in the entry list.
|
// Only remove the entry if it's in the entry list.
|
||||||
// Remove the entry locally, if we wait for RosterPacketListenerprocess>>Packet(Packet)
|
// Remove the entry locally, if we wait for RosterPacketListenerprocess>>Packet(Packet)
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class ContentNegotiator extends JingleNegotiator {
|
||||||
transportNegotiators = new ArrayList<TransportNegotiator>();
|
transportNegotiators = new ArrayList<TransportNegotiator>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IQ> dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException {
|
public List<IQ> dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException, InterruptedException {
|
||||||
List<IQ> responses = new ArrayList<IQ>();
|
List<IQ> responses = new ArrayList<IQ>();
|
||||||
|
|
||||||
// First only process IQ packets that contain <content> stanzas that
|
// First only process IQ packets that contain <content> stanzas that
|
||||||
|
@ -255,7 +255,7 @@ public class ContentNegotiator extends JingleNegotiator {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void triggerContentEstablished() throws NotConnectedException {
|
public void triggerContentEstablished() throws NotConnectedException, InterruptedException {
|
||||||
|
|
||||||
PayloadType bestCommonAudioPt = getMediaNegotiator().getBestCommonAudioPt();
|
PayloadType bestCommonAudioPt = getMediaNegotiator().getBestCommonAudioPt();
|
||||||
TransportCandidate bestRemoteCandidate = getTransportNegotiator().getBestRemoteCandidate();
|
TransportCandidate bestRemoteCandidate = getTransportNegotiator().getBestRemoteCandidate();
|
||||||
|
@ -268,8 +268,9 @@ public class ContentNegotiator extends JingleNegotiator {
|
||||||
/**
|
/**
|
||||||
* Trigger a session established event.
|
* Trigger a session established event.
|
||||||
* @throws NotConnectedException
|
* @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.
|
// Let the session know that we've established a content/media segment.
|
||||||
JingleSession session = getSession();
|
JingleSession session = getSession();
|
||||||
|
|
|
@ -312,8 +312,9 @@ public class JingleManager implements JingleSessionListener {
|
||||||
* messages
|
* messages
|
||||||
* @throws SmackException if there was no response from the server.
|
* @throws SmackException if there was no response from the server.
|
||||||
* @throws XMPPException
|
* @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);
|
return ServiceDiscoveryManager.getInstanceFor(connection).supportsFeature(userID, Jingle.NAMESPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -232,8 +232,9 @@ public abstract class JingleNegotiator {
|
||||||
* @param id the ID of the response that will be sent
|
* @param id the ID of the response that will be sent
|
||||||
* @return the new packet to send (either a Jingle or an IQ error).
|
* @return the new packet to send (either a Jingle or an IQ error).
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public abstract List<IQ> dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException;
|
public abstract List<IQ> dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException, InterruptedException;
|
||||||
|
|
||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
|
|
|
@ -276,8 +276,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
|
||||||
* the packet received
|
* the packet received
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public synchronized void receivePacketAndRespond(IQ iq) throws XMPPException, SmackException {
|
public synchronized void receivePacketAndRespond(IQ iq) throws XMPPException, SmackException, InterruptedException {
|
||||||
List<IQ> responses = new ArrayList<IQ>();
|
List<IQ> responses = new ArrayList<IQ>();
|
||||||
|
|
||||||
String responseId = null;
|
String responseId = null;
|
||||||
|
@ -344,8 +345,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
|
||||||
* @return the new Jingle packet to send.
|
* @return the new Jingle packet to send.
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<IQ> dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException {
|
public List<IQ> dispatchIncomingPacket(IQ iq, String id) throws XMPPException, SmackException, InterruptedException {
|
||||||
List<IQ> responses = new ArrayList<IQ>();
|
List<IQ> responses = new ArrayList<IQ>();
|
||||||
IQ response = null;
|
IQ response = null;
|
||||||
|
|
||||||
|
@ -397,7 +399,7 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
|
||||||
// Send section
|
// Send section
|
||||||
// ----------------------------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
public void sendPacket(IQ iq) throws NotConnectedException {
|
public void sendPacket(IQ iq) throws NotConnectedException, InterruptedException {
|
||||||
|
|
||||||
if (iq instanceof Jingle) {
|
if (iq instanceof Jingle) {
|
||||||
|
|
||||||
|
@ -416,8 +418,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
|
||||||
* @param jout
|
* @param jout
|
||||||
* the Jingle packet we want to complete and send
|
* the Jingle packet we want to complete and send
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public Jingle sendFormattedJingle(Jingle jout) throws NotConnectedException {
|
public Jingle sendFormattedJingle(Jingle jout) throws NotConnectedException, InterruptedException {
|
||||||
return sendFormattedJingle(null, jout);
|
return sendFormattedJingle(null, jout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,8 +434,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
|
||||||
* @param jout
|
* @param jout
|
||||||
* the Jingle packet we want to complete and send
|
* the Jingle packet we want to complete and send
|
||||||
* @throws NotConnectedException
|
* @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 != null) {
|
||||||
if (jout.getInitiator() == null) {
|
if (jout.getInitiator() == null) {
|
||||||
jout.setInitiator(getInitiator());
|
jout.setInitiator(getInitiator());
|
||||||
|
@ -795,7 +799,7 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
|
||||||
public void mediaClosed(PayloadType cand) {
|
public void mediaClosed(PayloadType cand) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void mediaEstablished(PayloadType pt) throws NotConnectedException {
|
public void mediaEstablished(PayloadType pt) throws NotConnectedException, InterruptedException {
|
||||||
if (isFullyEstablished()) {
|
if (isFullyEstablished()) {
|
||||||
Jingle jout = new Jingle(JingleActionEnum.SESSION_ACCEPT);
|
Jingle jout = new Jingle(JingleActionEnum.SESSION_ACCEPT);
|
||||||
|
|
||||||
|
@ -816,7 +820,7 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
|
||||||
|
|
||||||
JingleTransportListener jingleTransportListener = new JingleTransportListener() {
|
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()) {
|
if (isFullyEstablished()) {
|
||||||
|
|
||||||
// Indicate that this session is active.
|
// Indicate that this session is active.
|
||||||
|
@ -957,8 +961,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
|
||||||
*
|
*
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void terminate() throws XMPPException, NotConnectedException {
|
public void terminate() throws XMPPException, NotConnectedException, InterruptedException {
|
||||||
terminate("Closed Locally");
|
terminate("Closed Locally");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -967,8 +972,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
|
||||||
*
|
*
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void terminate(String reason) throws XMPPException, NotConnectedException {
|
public void terminate(String reason) throws XMPPException, NotConnectedException, InterruptedException {
|
||||||
if (isClosed())
|
if (isClosed())
|
||||||
return;
|
return;
|
||||||
LOGGER.fine("Terminate " + reason);
|
LOGGER.fine("Terminate " + reason);
|
||||||
|
@ -1053,8 +1059,9 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
|
||||||
*
|
*
|
||||||
* @throws IllegalStateException
|
* @throws IllegalStateException
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void startOutgoing() throws IllegalStateException, SmackException {
|
public void startOutgoing() throws IllegalStateException, SmackException, InterruptedException {
|
||||||
|
|
||||||
updatePacketListener();
|
updatePacketListener();
|
||||||
setSessionState(JingleSessionStatePending.getInstance());
|
setSessionState(JingleSessionStatePending.getInstance());
|
||||||
|
|
|
@ -107,8 +107,9 @@ public class JingleSessionRequest {
|
||||||
* @return Returns the <b><i>IncomingJingleSession</b></i> on which the
|
* @return Returns the <b><i>IncomingJingleSession</b></i> on which the
|
||||||
* negotiation can be carried out.
|
* negotiation can be carried out.
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public synchronized JingleSession accept() throws XMPPException, SmackException {
|
public synchronized JingleSession accept() throws XMPPException, SmackException, InterruptedException {
|
||||||
JingleSession session = null;
|
JingleSession session = null;
|
||||||
synchronized (manager) {
|
synchronized (manager) {
|
||||||
session = manager.createIncomingJingleSession(this);
|
session = manager.createIncomingJingleSession(this);
|
||||||
|
|
|
@ -54,8 +54,9 @@ public abstract class JingleSessionState {
|
||||||
/**
|
/**
|
||||||
* Process an incoming Jingle Packet.
|
* Process an incoming Jingle Packet.
|
||||||
* When you look at the GoF State pattern this method roughly corresponds to example on p310: ProcessOctect().
|
* 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.
|
* For debugging just emit the short name of the class.
|
||||||
|
|
|
@ -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;
|
IQ response = null;
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
|
@ -88,9 +88,10 @@ public class JingleSessionStateUnknown extends JingleSessionState {
|
||||||
* In the UNKNOWN state we received a <session-initiate> action.
|
* In the UNKNOWN state we received a <session-initiate> action.
|
||||||
* This method processes that action.
|
* This method processes that action.
|
||||||
* @throws SmackException
|
* @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;
|
IQ response = null;
|
||||||
boolean shouldAck = true;
|
boolean shouldAck = true;
|
||||||
|
|
|
@ -30,8 +30,9 @@ public interface JingleMediaListener extends JingleListener {
|
||||||
*
|
*
|
||||||
* @param pt The payload type agreed.
|
* @param pt The payload type agreed.
|
||||||
* @throws NotConnectedException
|
* @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
|
* Notification that a payload type must be cancelled
|
||||||
|
|
|
@ -37,9 +37,10 @@ public interface JingleSessionListener extends JingleListener {
|
||||||
* @param localCandidate the local candidate where we must listen for connections
|
* @param localCandidate the local candidate where we must listen for connections
|
||||||
* @param jingleSession Session that called the method
|
* @param jingleSession Session that called the method
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void sessionEstablished(PayloadType pt, TransportCandidate remoteCandidate,
|
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.
|
* Notification that the session was declined.
|
||||||
|
|
|
@ -35,9 +35,10 @@ public interface JingleTransportListener extends JingleListener {
|
||||||
* @param remote The transport candidate that has been used for
|
* @param remote The transport candidate that has been used for
|
||||||
* transmitting to the remote machine
|
* transmitting to the remote machine
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void transportEstablished(TransportCandidate local,
|
public void transportEstablished(TransportCandidate local,
|
||||||
TransportCandidate remote) throws NotConnectedException;
|
TransportCandidate remote) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notification that a transport must be cancelled.
|
* Notification that a transport must be cancelled.
|
||||||
|
|
|
@ -103,8 +103,9 @@ public class MediaNegotiator extends JingleNegotiator {
|
||||||
* @return the new Jingle packet to send.
|
* @return the new Jingle packet to send.
|
||||||
* @throws XMPPException
|
* @throws XMPPException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public List<IQ> dispatchIncomingPacket(IQ iq, String id) throws XMPPException, NotConnectedException {
|
public List<IQ> dispatchIncomingPacket(IQ iq, String id) throws XMPPException, NotConnectedException, InterruptedException {
|
||||||
List<IQ> responses = new ArrayList<IQ>();
|
List<IQ> responses = new ArrayList<IQ>();
|
||||||
IQ response = null;
|
IQ response = null;
|
||||||
|
|
||||||
|
@ -202,8 +203,9 @@ public class MediaNegotiator extends JingleNegotiator {
|
||||||
* @param jingle
|
* @param jingle
|
||||||
* @return the iq
|
* @return the iq
|
||||||
* @throws NotConnectedException
|
* @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;
|
IQ response = null;
|
||||||
List<PayloadType> offeredPayloads = new ArrayList<PayloadType>();
|
List<PayloadType> offeredPayloads = new ArrayList<PayloadType>();
|
||||||
|
|
||||||
|
@ -477,8 +479,9 @@ public class MediaNegotiator extends JingleNegotiator {
|
||||||
* @param bestPt
|
* @param bestPt
|
||||||
* payload type that has been agreed.
|
* payload type that has been agreed.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
protected void triggerMediaEstablished(PayloadType bestPt) throws NotConnectedException {
|
protected void triggerMediaEstablished(PayloadType bestPt) throws NotConnectedException, InterruptedException {
|
||||||
List<JingleListener> listeners = getListenersList();
|
List<JingleListener> listeners = getListenersList();
|
||||||
for (JingleListener li : listeners) {
|
for (JingleListener li : listeners) {
|
||||||
if (li instanceof JingleMediaListener) {
|
if (li instanceof JingleMediaListener) {
|
||||||
|
|
|
@ -45,8 +45,9 @@ public class BasicResolver extends TransportResolver {
|
||||||
* The BasicResolver takes the IP addresses of the interfaces and uses the
|
* The BasicResolver takes the IP addresses of the interfaces and uses the
|
||||||
* first non-loopback, non-linklocal and non-sitelocal address.
|
* first non-loopback, non-linklocal and non-sitelocal address.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException {
|
public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException, InterruptedException {
|
||||||
|
|
||||||
setResolveInit();
|
setResolveInit();
|
||||||
|
|
||||||
|
|
|
@ -60,8 +60,9 @@ public class BridgedResolver extends TransportResolver {
|
||||||
* <p/>
|
* <p/>
|
||||||
* The BridgedResolver takes the IP addresse and ports of a jmf proxy service.
|
* The BridgedResolver takes the IP addresse and ports of a jmf proxy service.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException {
|
public synchronized void resolve(JingleSession session) throws XMPPException, NotConnectedException, InterruptedException {
|
||||||
|
|
||||||
setResolveInit();
|
setResolveInit();
|
||||||
|
|
||||||
|
@ -98,7 +99,7 @@ public class BridgedResolver extends TransportResolver {
|
||||||
setResolveEnd();
|
setResolveEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initialize() throws SmackException, XMPPErrorException {
|
public void initialize() throws SmackException, XMPPErrorException, InterruptedException {
|
||||||
|
|
||||||
clearCandidates();
|
clearCandidates();
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class BridgedTransportManager extends JingleTransportManager implements J
|
||||||
|
|
||||||
// Implement a Session Listener to relay candidates after establishment
|
// 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);
|
RTPBridge rtpBridge = RTPBridge.relaySession(lc.getConnection(), lc.getSessionId(), lc.getPassword(), rc, lc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,8 +52,9 @@ public class FixedResolver extends TransportResolver {
|
||||||
/**
|
/**
|
||||||
* Resolve the IP address.
|
* Resolve the IP address.
|
||||||
* @throws NotConnectedException
|
* @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()) {
|
if (!isResolving()) {
|
||||||
setResolveInit();
|
setResolveInit();
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue