mirror of https://github.com/sipwise/jitsi.git
parent
5c5fb51f2a
commit
a522c7f51a
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
|
||||
*
|
||||
* Distributable under LGPL license.
|
||||
* See terms of license at gnu.org.
|
||||
*/
|
||||
package net.java.sip.communicator.impl.protocol.jabber.extensions.carbon;
|
||||
|
||||
import org.jivesoftware.smack.packet.*;
|
||||
import org.xmlpull.v1.*;
|
||||
|
||||
import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
|
||||
|
||||
/**
|
||||
* This class implements message carbons extensions added to message stanzas.
|
||||
*
|
||||
* @author Hristo Terezov
|
||||
*/
|
||||
public class CarbonPacketExtension
|
||||
extends AbstractPacketExtension
|
||||
{
|
||||
|
||||
/**
|
||||
* The namespace for the XML element.
|
||||
*/
|
||||
public static final String NAMESPACE = "urn:xmpp:carbons:2";
|
||||
|
||||
/**
|
||||
* The name of the "received" XML element.
|
||||
*/
|
||||
public static final String RECEIVED_ELEMENT_NAME = "received";
|
||||
|
||||
/**
|
||||
* The name of the "sent" XML element.
|
||||
*/
|
||||
public static final String SENT_ELEMENT_NAME = "sent";
|
||||
|
||||
/**
|
||||
* The name of the "private" XML element.
|
||||
*/
|
||||
public static final String PRIVATE_ELEMENT_NAME = "private";
|
||||
|
||||
|
||||
/**
|
||||
* Constructs new <tt>CarbonPacketExtension</tt> instance.
|
||||
* @param elementName the name of the XML element.
|
||||
*/
|
||||
public CarbonPacketExtension( String elementName)
|
||||
{
|
||||
super(NAMESPACE, elementName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses sent and received XML elements.
|
||||
*/
|
||||
public static class Provider
|
||||
extends ForwardedPacketExtension.Provider
|
||||
{
|
||||
|
||||
/**
|
||||
* The name of the elements to be parsed.
|
||||
*/
|
||||
private String elementName;
|
||||
|
||||
/**
|
||||
* Constructs new <tt>Provider</tt> instance.
|
||||
* @param elementName the name of the elements to be parsed
|
||||
*/
|
||||
public Provider(String elementName)
|
||||
{
|
||||
this.elementName = elementName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a <tt>CarbonPacketExtension</tt> by parsing
|
||||
* an XML document.
|
||||
* @param parser the parser to use.
|
||||
* @return the created <tt>CarbonPacketExtension</tt>.
|
||||
* @throws Exception
|
||||
*/
|
||||
@Override
|
||||
public PacketExtension parseExtension(XmlPullParser parser)
|
||||
throws Exception
|
||||
{
|
||||
CarbonPacketExtension packetExtension
|
||||
= new CarbonPacketExtension(elementName);
|
||||
|
||||
//now parse the sub elements
|
||||
boolean done = false;
|
||||
String elementName;
|
||||
ForwardedPacketExtension extension = null;
|
||||
while (!done)
|
||||
{
|
||||
switch (parser.next())
|
||||
{
|
||||
case XmlPullParser.START_TAG:
|
||||
{
|
||||
elementName = parser.getName();
|
||||
if (ForwardedPacketExtension.ELEMENT_NAME.equals(
|
||||
elementName))
|
||||
{
|
||||
extension = (ForwardedPacketExtension) super
|
||||
.parseExtension(parser);
|
||||
if (extension != null)
|
||||
{
|
||||
packetExtension.addChildExtension(extension);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case XmlPullParser.END_TAG:
|
||||
{
|
||||
elementName = parser.getName();
|
||||
if (this.elementName.equals(elementName))
|
||||
{
|
||||
done = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return packetExtension;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This class implements the private carbon extension.
|
||||
*/
|
||||
public static class PrivateExtension extends AbstractPacketExtension
|
||||
{
|
||||
public PrivateExtension()
|
||||
{
|
||||
super(NAMESPACE, PRIVATE_ELEMENT_NAME);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,123 @@
|
||||
/*
|
||||
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
|
||||
*
|
||||
* Distributable under LGPL license.
|
||||
* See terms of license at gnu.org.
|
||||
*/
|
||||
package net.java.sip.communicator.impl.protocol.jabber.extensions.carbon;
|
||||
|
||||
import org.jivesoftware.smack.packet.*;
|
||||
import org.jivesoftware.smack.provider.*;
|
||||
import org.jivesoftware.smack.util.*;
|
||||
import org.xmlpull.v1.*;
|
||||
|
||||
import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
|
||||
|
||||
/**
|
||||
* This class implements the forward extension. It is used by carbon extensions.
|
||||
* @author Hristo Terezov
|
||||
*/
|
||||
public class ForwardedPacketExtension
|
||||
extends AbstractPacketExtension
|
||||
{
|
||||
/**
|
||||
* The namespace for the XML element.
|
||||
*/
|
||||
public static final String NAMESPACE = "urn:xmpp:forward:0";
|
||||
|
||||
/**
|
||||
* The name of the "forwarded" XML element.
|
||||
*/
|
||||
public static final String ELEMENT_NAME = "forwarded";
|
||||
|
||||
/**
|
||||
* The message instance included in the forwarded extension.
|
||||
*/
|
||||
private Message message = null;
|
||||
|
||||
/**
|
||||
* Constructs new <tt>ForwardedPacketExtension</tt> instance.
|
||||
*/
|
||||
public ForwardedPacketExtension()
|
||||
{
|
||||
super(NAMESPACE, ELEMENT_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the <tt>Message</tt> instance to the forwarded extension.
|
||||
* @param message the messages
|
||||
*/
|
||||
public void setMessage(Message message)
|
||||
{
|
||||
this.message = message;
|
||||
addPacket(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the <tt>Message</tt> instance.
|
||||
* @return the <tt>Message</tt> instance.
|
||||
*/
|
||||
public Message getMessage()
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the forwarded XML element.
|
||||
*/
|
||||
public static class Provider
|
||||
implements PacketExtensionProvider
|
||||
{
|
||||
/**
|
||||
* Creates a <tt>ForwardedPacketExtension</tt> by parsing
|
||||
* an XML document.
|
||||
* @param parser the parser to use.
|
||||
* @return the created <tt>ForwardedPacketExtension</tt>.
|
||||
* @throws Exception
|
||||
*/
|
||||
@Override
|
||||
public PacketExtension parseExtension(XmlPullParser parser)
|
||||
throws Exception
|
||||
{
|
||||
ForwardedPacketExtension packetExtension
|
||||
= new ForwardedPacketExtension();
|
||||
|
||||
//now parse the sub elements
|
||||
boolean done = false;
|
||||
String elementName;
|
||||
Message message = null;
|
||||
|
||||
while (!done)
|
||||
{
|
||||
switch (parser.next())
|
||||
{
|
||||
case XmlPullParser.START_TAG:
|
||||
{
|
||||
elementName = parser.getName();
|
||||
if ("message".equals(elementName))
|
||||
{
|
||||
message
|
||||
= (Message)PacketParserUtils.parseMessage(parser);
|
||||
if (message != null)
|
||||
{
|
||||
packetExtension.setMessage(message);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case XmlPullParser.END_TAG:
|
||||
{
|
||||
elementName = parser.getName();
|
||||
if (ELEMENT_NAME.equals(elementName))
|
||||
{
|
||||
done = true;
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return packetExtension;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue