diff --git a/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketExtensionFilter.java b/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketExtensionFilter.java index 7d8fe5019..1d4fe220c 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketExtensionFilter.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketExtensionFilter.java @@ -18,6 +18,7 @@ package org.jivesoftware.smack.filter; import org.jivesoftware.smack.packet.Packet; +import org.jivesoftware.smack.packet.PacketExtension; /** * Filters for packets with a particular type of packet extension. @@ -26,8 +27,8 @@ import org.jivesoftware.smack.packet.Packet; */ public class PacketExtensionFilter implements PacketFilter { - private String elementName; - private String namespace; + private final String elementName; + private final String namespace; /** * Creates a new packet extension filter. Packets will pass the filter if @@ -52,6 +53,14 @@ public class PacketExtensionFilter implements PacketFilter { this(null, namespace); } + public PacketExtensionFilter(PacketExtension packetExtension) { + this(packetExtension.getElementName(), packetExtension.getNamespace()); + } + + public PacketExtensionFilter(Class packetExtensionClass) throws InstantiationException, IllegalAccessException { + this(packetExtensionClass.newInstance()); + } + public boolean accept(Packet packet) { return packet.getExtension(elementName, namespace) != null; }