/** * * Copyright 2013-2014 Georg Lukas * * 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.smackx.forward; import org.jivesoftware.smack.packet.Packet; import org.jivesoftware.smack.packet.PacketExtension; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.delay.packet.DelayInformation; /** * Packet extension for XEP-0297: Stanza Forwarding. * * @author Georg Lukas */ public class Forwarded implements PacketExtension { public static final String NAMESPACE = "urn:xmpp:forward:0"; public static final String ELEMENT = "forwarded"; private DelayInformation delay; private Packet forwardedPacket; /** * Creates a new Forwarded packet extension. * * @param delay an optional {@link DelayInformation} timestamp of the packet. * @param fwdPacket the packet that is forwarded (required). */ public Forwarded(DelayInformation delay, Packet fwdPacket) { this.delay = delay; this.forwardedPacket = fwdPacket; } /** * Creates a new Forwarded packet extension. * * @param fwdPacket the packet that is forwarded (required). */ public Forwarded(Packet fwdPacket) { this.forwardedPacket = fwdPacket; } @Override public String getElementName() { return ELEMENT; } @Override public String getNamespace() { return NAMESPACE; } @Override public XmlStringBuilder toXML() { XmlStringBuilder xml = new XmlStringBuilder(this); xml.rightAngleBracket(); xml.optElement(getDelayInformation()); xml.append(forwardedPacket.toXML()); xml.closeElement(this); return xml; } /** * * @param packet * @return the Forwarded extension or null * @deprecated use {@link #from(Packet)} instead */ @Deprecated public static Forwarded getFrom(Packet packet) { return from(packet); } /** * * @param packet * @return the Forwarded extension or null */ public static Forwarded from(Packet packet) { return packet.getExtension(ELEMENT, NAMESPACE); } /** * get the packet forwarded by this stanza. * * @return the {@link Packet} instance (typically a message) that was forwarded. */ public Packet getForwardedPacket() { return forwardedPacket; } /** * get the timestamp of the forwarded packet. * * @return the {@link DelayInformation} representing the time when the original packet was sent. May be null. * @deprecated Use {@link #getDelayInformation} instead. */ public DelayInformation getDelayInfo() { return getDelayInformation(); } /** * get the timestamp of the forwarded packet. * * @return the {@link DelayInformation} representing the time when the original packet was sent. May be null. */ public DelayInformation getDelayInformation() { return delay; } }