diff --git a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java index 5a5478529..3a9f283d0 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java @@ -754,6 +754,16 @@ public abstract class AbstractXMPPConnection implements XMPPConnection { connectionListeners.remove(connectionListener); } + @Override + public I sendIqRequestAndWaitForResponse(IQ request) + throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { + StanzaCollector collector = createStanzaCollectorAndSend(request); + IQ resultResponse = collector.nextResultOrThrow(); + @SuppressWarnings("unchecked") + I concreteResultResponse = (I) resultResponse; + return concreteResultResponse; + } + @Override public StanzaCollector createStanzaCollectorAndSend(IQ packet) throws NotConnectedException, InterruptedException { StanzaFilter packetFilter = new IQReplyFilter(packet, this); diff --git a/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java b/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java index 9f2cee262..57da400fe 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java @@ -18,6 +18,7 @@ package org.jivesoftware.smack; import org.jivesoftware.smack.SmackException.NoResponseException; import org.jivesoftware.smack.SmackException.NotConnectedException; +import org.jivesoftware.smack.XMPPException.XMPPErrorException; import org.jivesoftware.smack.filter.IQReplyFilter; import org.jivesoftware.smack.filter.StanzaFilter; import org.jivesoftware.smack.iqrequest.IQRequestHandler; @@ -191,6 +192,20 @@ public interface XMPPConnection { */ void removeConnectionListener(ConnectionListener connectionListener); + /** + * Send an IQ request and wait for the response. + * + * @param request the IQ request + * @return an IQ with type 'result' + * @throws NoResponseException + * @throws XMPPErrorException + * @throws NotConnectedException + * @throws InterruptedException + * @since 4.3 + */ + I sendIqRequestAndWaitForResponse(IQ request) + throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException; + /** * Creates a new stanza(/packet) collector collecting packets that are replies to packet. * Does also send packet. The stanza(/packet) filter for the collector is an