diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java index 2a8a534e5..9d93f8b14 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java @@ -138,9 +138,43 @@ public abstract class Stanza implements TopLevelStreamElement { * * @return the stanza id. * @since 4.2 + * @deprecated use {@link #setNewStanzaId()} instead. */ + @Deprecated + // TODO: Remove in Smack 4.5. public String setStanzaId() { - if (!hasStanzaIdSet()) { + return ensureStanzaIdSet(); + } + + /** + * Set a new stanza ID even if there is already one set. + * + * @return the stanza id. + * @since 4.4 + */ + public String setNewStanzaId() { + return ensureStanzaIdSet(true); + } + + /** + * Ensure a stanza id is set. + * + * @return the stanza id. + * @since 4.4 + */ + public String ensureStanzaIdSet() { + return ensureStanzaIdSet(false); + } + + /** + * Ensure that a stanza ID is set. + * + * @param forceNew force a new ID even if there is already one set. + * @return the stanza ID. + * @since 4.4 + */ + private String ensureStanzaIdSet(boolean forceNew) { + if (forceNew || !hasStanzaIdSet()) { setStanzaId(StanzaIdUtil.newStanzaId()); } return getStanzaId(); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceiptRequest.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceiptRequest.java index 0ecef64f7..23a129e24 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceiptRequest.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceiptRequest.java @@ -22,7 +22,6 @@ import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smack.packet.XmlEnvironment; -import org.jivesoftware.smack.packet.id.StanzaIdUtil; import org.jivesoftware.smack.provider.ExtensionElementProvider; import org.jivesoftware.smack.xml.XmlPullParser; import org.jivesoftware.smack.xml.XmlPullParserException; @@ -83,9 +82,7 @@ public class DeliveryReceiptRequest implements ExtensionElement { * @return the Message ID which will be used as receipt ID */ public static String addTo(Message message) { - if (message.getStanzaId() == null) { - message.setStanzaId(StanzaIdUtil.newStanzaId()); - } + message.ensureStanzaIdSet(); message.addExtension(new DeliveryReceiptRequest()); return message.getStanzaId(); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/VCardManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/VCardManager.java index 28e126d7f..45c16f506 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/VCardManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/VCardManager.java @@ -1,6 +1,6 @@ /** * - * Copyright 2014 Florian Schmaus + * Copyright 2014-2019 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,6 @@ import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPConnectionRegistry; import org.jivesoftware.smack.XMPPException.XMPPErrorException; import org.jivesoftware.smack.packet.IQ; -import org.jivesoftware.smack.packet.id.StanzaIdUtil; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.vcardtemp.packet.VCard; @@ -105,7 +104,7 @@ public final class VCardManager extends Manager { vcard.setType(IQ.Type.set); // Also make sure to generate a new stanza id (the given vcard could be a vcard result), in which case we don't // want to use the same stanza id again (although it wouldn't break if we did) - vcard.setStanzaId(StanzaIdUtil.newStanzaId()); + vcard.setNewStanzaId(); connection().createStanzaCollectorAndSend(vcard).nextResultOrThrow(); } diff --git a/smack-integration-test/src/main/java/org/jivesoftware/smackx/mam/MamIntegrationTest.java b/smack-integration-test/src/main/java/org/jivesoftware/smackx/mam/MamIntegrationTest.java index a7ac44581..f09832b25 100644 --- a/smack-integration-test/src/main/java/org/jivesoftware/smackx/mam/MamIntegrationTest.java +++ b/smack-integration-test/src/main/java/org/jivesoftware/smackx/mam/MamIntegrationTest.java @@ -67,7 +67,7 @@ public class MamIntegrationTest extends AbstractSmackIntegrationTest { EntityBareJid userTwo = conTwo.getUser().asEntityBareJid(); Message message = new Message(userTwo); - String messageId = message.setStanzaId(); + String messageId = message.ensureStanzaIdSet(); final String messageBody = "Test MAM message (" + testRunId + ')'; message.setBody(messageBody);