mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-25 13:32:07 +01:00
[muc] Fix changeSubject() to throw XMPPErrorException on failures
When Smack requests a subject change of a MUC, an error returned by the server (eg: 'forbidden') should be propagated (as suggested by the pre-existing javadoc). Reported-by: Guus der Kinderen <guus@goodbytes.nl>
This commit is contained in:
parent
4ce926bd63
commit
147071ff64
1 changed files with 7 additions and 4 deletions
|
@ -2248,17 +2248,20 @@ public class MultiUserChat {
|
||||||
* @throws InterruptedException if the calling thread was interrupted.
|
* @throws InterruptedException if the calling thread was interrupted.
|
||||||
*/
|
*/
|
||||||
public void changeSubject(final String subject) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
public void changeSubject(final String subject) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
MessageBuilder message = buildMessage();
|
Message message = buildMessage()
|
||||||
message.setSubject(subject);
|
.setSubject(subject)
|
||||||
|
.build();
|
||||||
// Wait for an error or confirmation message back from the server.
|
// Wait for an error or confirmation message back from the server.
|
||||||
StanzaFilter responseFilter = new AndFilter(fromRoomGroupchatFilter, new StanzaFilter() {
|
StanzaFilter successFilter = new AndFilter(fromRoomGroupchatFilter, new StanzaFilter() {
|
||||||
@Override
|
@Override
|
||||||
public boolean accept(Stanza packet) {
|
public boolean accept(Stanza packet) {
|
||||||
Message msg = (Message) packet;
|
Message msg = (Message) packet;
|
||||||
return subject.equals(msg.getSubject());
|
return subject.equals(msg.getSubject());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
StanzaCollector response = connection.createStanzaCollectorAndSend(responseFilter, message.build());
|
StanzaFilter errorFilter = new AndFilter(fromRoomFilter, new StanzaIdFilter(message), MessageTypeFilter.ERROR);
|
||||||
|
StanzaFilter responseFilter = new OrFilter(successFilter, errorFilter);
|
||||||
|
StanzaCollector response = connection.createStanzaCollectorAndSend(responseFilter, message);
|
||||||
// Wait up to a certain number of seconds for a reply.
|
// Wait up to a certain number of seconds for a reply.
|
||||||
response.nextResultOrThrow();
|
response.nextResultOrThrow();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue