From dc6af6dd99592630ec16fe6cf50a0f8f4f15a828 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Wed, 21 Jan 2015 14:06:27 +0100 Subject: [PATCH] Add IQ.isRequestIQ() and check IQ argument in IQReplyFilter. --- .../jivesoftware/smack/filter/IQReplyFilter.java | 3 +++ .../java/org/jivesoftware/smack/packet/IQ.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/smack-core/src/main/java/org/jivesoftware/smack/filter/IQReplyFilter.java b/smack-core/src/main/java/org/jivesoftware/smack/filter/IQReplyFilter.java index 1c3ec64f6..703c40b68 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/filter/IQReplyFilter.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/filter/IQReplyFilter.java @@ -81,6 +81,9 @@ public class IQReplyFilter implements PacketFilter { * @param iqPacket An IQ request. Filter for replies to this packet. */ public IQReplyFilter(IQ iqPacket, XMPPConnection conn) { + if (!iqPacket.isRequestIQ()) { + throw new IllegalArgumentException("IQ must be a request IQ, i.e. of type 'get' or 'set'."); + } if (iqPacket.getTo() != null) { to = iqPacket.getTo().toLowerCase(Locale.US); } else { diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java index 070c9eb09..1dacac6a2 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java @@ -90,6 +90,22 @@ public abstract class IQ extends Packet { this.type = type; } + /** + * Return true if this IQ is a request IQ, i.e. an IQ of type {@link Type#get} or {@link Type#set}. + * + * @return true if IQ type is 'get' or 'set', false otherwise. + * @since 4.1 + */ + public boolean isRequestIQ() { + switch (type) { + case get: + case set: + return true; + default: + return false; + } + } + public final String getChildElementName() { return childElementName; }