diff --git a/build.gradle b/build.gradle index bcffddd94..0fd69f2e0 100644 --- a/build.gradle +++ b/build.gradle @@ -95,6 +95,7 @@ allprojects { options.addStringOption('Xdoclint:none', '-quiet') } } + } gradle.taskGraph.whenReady { taskGraph -> diff --git a/documentation/processing.md b/documentation/processing.md index 4e4fe1b9b..6d3b41c7e 100644 --- a/documentation/processing.md +++ b/documentation/processing.md @@ -46,7 +46,7 @@ own filters by coding to the `PacketFilter` interface. The default set of filters includes: * `PacketTypeFilter` -- filters for packets that are a particular Class type. - * `PacketIDFilter` -- filters for packets with a particular packet ID. + * `StanzaIdFilter` -- filters for packets with a particular packet ID. * `ThreadFilter` -- filters for message packets with a particular thread ID. * `ToContainsFilter` -- filters for packets that are sent to a particular address. * `FromContainsFilter` -- filters for packets that are sent to a particular address. 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 e8585ad85..5e8b4928a 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java @@ -57,7 +57,7 @@ import org.jivesoftware.smack.compression.XMPPInputOutputStream; import org.jivesoftware.smack.debugger.SmackDebugger; import org.jivesoftware.smack.filter.IQReplyFilter; import org.jivesoftware.smack.filter.PacketFilter; -import org.jivesoftware.smack.filter.PacketIDFilter; +import org.jivesoftware.smack.filter.StanzaIdFilter; import org.jivesoftware.smack.iqrequest.IQRequestHandler; import org.jivesoftware.smack.packet.Bind; import org.jivesoftware.smack.packet.ErrorIQ; @@ -539,7 +539,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection { // Note that we can not use IQReplyFilter here, since the users full JID is not yet // available. It will become available right after the resource has been successfully bound. Bind bindResource = Bind.newSet(resource); - PacketCollector packetCollector = createPacketCollectorAndSend(new PacketIDFilter(bindResource), bindResource); + PacketCollector packetCollector = createPacketCollectorAndSend(new StanzaIdFilter(bindResource), bindResource); Bind response = packetCollector.nextResultOrThrow(); // Set the connections user to the result of resource binding. It is important that we don't infer the user // from the login() arguments and the configurations service name, as, for example, when SASL External is used, @@ -552,7 +552,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection { // For more information see http://tools.ietf.org/html/draft-cridland-xmpp-session-01 if (sessionFeature != null && !sessionFeature.isOptional() && !getConfiguration().isLegacySessionDisabled()) { Session session = new Session(); - packetCollector = createPacketCollectorAndSend(new PacketIDFilter(session), session); + packetCollector = createPacketCollectorAndSend(new StanzaIdFilter(session), session); packetCollector.nextResultOrThrow(); } } 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 e7b162356..0c3064e65 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 @@ -99,7 +99,7 @@ public class IQReplyFilter implements PacketFilter { packetId = iqPacket.getStanzaId(); PacketFilter iqFilter = new OrFilter(IQTypeFilter.ERROR, IQTypeFilter.RESULT); - PacketFilter idFilter = new PacketIDFilter(iqPacket); + PacketFilter idFilter = new StanzaIdFilter(iqPacket); iqAndIdFilter = new AndFilter(iqFilter, idFilter); fromFilter = new OrFilter(); fromFilter.addFilter(FromMatchesFilter.createFull(to)); diff --git a/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketFilter.java b/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketFilter.java index c71cbe3fe..5aecfa2a2 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketFilter.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketFilter.java @@ -28,7 +28,7 @@ import org.jivesoftware.smack.packet.Stanza; * packet filtering by using the {@link org.jivesoftware.smack.filter.AndFilter AndFilter} and * {@link org.jivesoftware.smack.filter.OrFilter OrFilter} filters. It's also possible to define * your own filters by implementing this interface. The code example below creates a trivial filter - * for packets with a specific ID (real code should use {@link PacketIDFilter} instead). + * for packets with a specific ID (real code should use {@link StanzaIdFilter} instead). * *
* // Use an anonymous inner class to define a packet filter that returns diff --git a/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketIDFilter.java b/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketIDFilter.java index a01b247c6..11796a0ab 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketIDFilter.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/filter/PacketIDFilter.java @@ -24,7 +24,9 @@ import org.jivesoftware.smack.util.StringUtils; * Filters for packets with a particular packet ID. * * @author Matt Tucker + * @deprecated use {@link StanzaIdFilter} instead. */ +@Deprecated public class PacketIDFilter implements PacketFilter { private final String packetID; @@ -33,7 +35,9 @@ public class PacketIDFilter implements PacketFilter { * Creates a new packet ID filter using the specified packet's ID. * * @param packet the packet which the ID is taken from. + * @deprecated use {@link StanzaIdfilter(Stanza)} instead. */ + @Deprecated public PacketIDFilter(Stanza packet) { this(packet.getStanzaId()); } @@ -42,7 +46,9 @@ public class PacketIDFilter implements PacketFilter { * Creates a new packet ID filter using the specified packet ID. * * @param packetID the packet ID to filter for. + * @deprecated use {@link StanzaIdFilter(String)} instead. */ + @Deprecated public PacketIDFilter(String packetID) { StringUtils.requireNotNullOrEmpty(packetID, "Packet ID must not be null or empty."); this.packetID = packetID; diff --git a/smack-core/src/main/java/org/jivesoftware/smack/filter/StanzaIdFilter.java b/smack-core/src/main/java/org/jivesoftware/smack/filter/StanzaIdFilter.java new file mode 100644 index 000000000..bf123726b --- /dev/null +++ b/smack-core/src/main/java/org/jivesoftware/smack/filter/StanzaIdFilter.java @@ -0,0 +1,57 @@ +/** + * + * Copyright 2003-2007 Jive Software. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jivesoftware.smack.filter; + +import org.jivesoftware.smack.packet.Stanza; +import org.jivesoftware.smack.util.StringUtils; + +/** + * Filters for Stanzas with a particular stanza ID. + * + * @author Matt Tucker + */ +public class StanzaIdFilter implements PacketFilter { + + private final String stanzaId; + + /** + * Creates a new stanza ID filter using the specified stanza's ID. + * + * @param stanza the stanza which the ID is taken from. + */ + public StanzaIdFilter(Stanza stanza) { + this(stanza.getStanzaId()); + } + + /** + * Creates a new stanza ID filter using the specified stanza ID. + * + * @param stanzaID the stanza ID to filter for. + */ + public StanzaIdFilter(String stanzaID) { + this.stanzaId = StringUtils.requireNotNullOrEmpty(stanzaID, "Stanza ID must not be null or empty."); + } + + public boolean accept(Stanza stanza) { + return stanzaId.equals(stanza.getStanzaId()); + } + + public String toString() { + return getClass().getSimpleName() + ": id=" + stanzaId; + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/AccountManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/AccountManager.java index c701e5105..b0ec24d08 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/AccountManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/AccountManager.java @@ -31,7 +31,7 @@ import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.SmackException.NoResponseException; import org.jivesoftware.smack.SmackException.NotConnectedException; import org.jivesoftware.smack.XMPPException.XMPPErrorException; -import org.jivesoftware.smack.filter.PacketIDFilter; +import org.jivesoftware.smack.filter.StanzaIdFilter; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smackx.iqregister.packet.Registration; import org.jxmpp.util.XmppStringUtils; @@ -290,7 +290,7 @@ public class AccountManager extends Manager { } private PacketCollector createPacketCollectorAndSend(IQ req) throws NotConnectedException { - PacketCollector collector = connection().createPacketCollectorAndSend(new PacketIDFilter(req.getStanzaId()), req); + PacketCollector collector = connection().createPacketCollectorAndSend(new StanzaIdFilter(req.getStanzaId()), req); return collector; } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqversion/packet/Version.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqversion/packet/Version.java index 58e592849..e2bf06ec7 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqversion/packet/Version.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqversion/packet/Version.java @@ -26,26 +26,6 @@ import org.jivesoftware.smack.util.StringUtils; * A Version IQ packet, which is used by XMPP clients to discover version information * about the software running at another entity's JID.* - * An example to discover the version of the server: - *
- * // Request the version from the server. - * Version versionRequest = new Version(); - * timeRequest.setType(IQ.Type.get); - * timeRequest.setTo("example.com"); - * - * // Create a packet collector to listen for a response. - * PacketCollector collector = con.createPacketCollector( - * new PacketIDFilter(versionRequest.getStanzaId())); - * - * con.sendPacket(versionRequest); - * - * // Wait up to 5 seconds for a result. - * IQ result = (IQ)collector.nextResult(5000); - * if (result != null && result.getType() == IQ.Type.result) { - * Version versionResult = (Version)result; - * // Do something with result... - * }- * * @author Gaston Dombiak */ public class Version extends IQ { diff --git a/smack-extensions/src/test/java/org/jivesoftware/util/Protocol.java b/smack-extensions/src/test/java/org/jivesoftware/util/Protocol.java index 71fdbc33a..75acff249 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/util/Protocol.java +++ b/smack-extensions/src/test/java/org/jivesoftware/util/Protocol.java @@ -51,7 +51,7 @@ import org.jivesoftware.smack.packet.Stanza; *
* public void methodToTest() { * Packet packet = new Packet(); // create an XMPP packet - * PacketCollector collector = connection.createPacketCollector(new PacketIDFilter()); + * PacketCollector collector = connection.createPacketCollector(new StanzaIdFilter()); * connection.sendPacket(packet); * Packet reply = collector.nextResult(); * }