diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/forward/packet/Forwarded.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/forward/packet/Forwarded.java index 5aec4388e..edc1fbd13 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/forward/packet/Forwarded.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/forward/packet/Forwarded.java @@ -16,7 +16,12 @@ */ package org.jivesoftware.smackx.forward.packet; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -112,4 +117,21 @@ public class Forwarded implements ExtensionElement { public static Forwarded from(Stanza packet) { return packet.getExtension(ELEMENT, NAMESPACE); } + + /** + * Extract messages in a collection of forwarded elements. Note that it is required that the {@link Forwarded} in + * the given collection only contain {@link Message} stanzas. + * + * @param forwardedCollection the collection to extract from. + * @return a list a the extracted messages. + * @since 4.3.0 + */ + public static List extractMessagesFrom(Collection forwardedCollection) { + List res = new ArrayList<>(forwardedCollection.size()); + for (Forwarded forwarded : forwardedCollection) { + Message message = (Message) forwarded.forwardedPacket; + res.add(message); + } + return res; + } }