aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator
diff options
context:
space:
mode:
authorYana Stamcheva <yana@jitsi.org>2007-12-04 15:20:30 +0000
committerYana Stamcheva <yana@jitsi.org>2007-12-04 15:20:30 +0000
commit4c6085ca1475c7a3d6f92b4e6950c325c19d57bf (patch)
tree052d8445f75f8040b955c9c17a3d3abf93054cd5 /src/net/java/sip/communicator
parent7c1212b670d6289d23be15ac89c7123d488af1d1 (diff)
downloadjitsi-4c6085ca1475c7a3d6f92b4e6950c325c19d57bf.zip
jitsi-4c6085ca1475c7a3d6f92b4e6950c325c19d57bf.tar.gz
jitsi-4c6085ca1475c7a3d6f92b4e6950c325c19d57bf.tar.bz2
"leave" extension added to jabber whiteboard extensions
Diffstat (limited to 'src/net/java/sip/communicator')
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectJabberProvider.java37
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectPacketExtension.java (renamed from src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectPacketExtensionImpl.java)36
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardSessionPacketExtension.java217
3 files changed, 258 insertions, 32 deletions
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectJabberProvider.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectJabberProvider.java
index c20724e..2f1b8e2 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectJabberProvider.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectJabberProvider.java
@@ -38,14 +38,19 @@ public class WhiteboardObjectJabberProvider
public PacketExtension parseExtension (XmlPullParser parser)
throws Exception
{
+ PacketExtension extension = null;
+
StringBuilder sb = new StringBuilder ();
boolean done = false;
while (!done)
{
int eventType = parser.next ();
- if (eventType == XmlPullParser.START_TAG &&
- !parser.getName ().equals (
- WhiteboardObjectPacketExtensionImpl.ELEMENT_NAME))
+
+ if (eventType == XmlPullParser.START_TAG
+ && !parser.getName ().equals (
+ WhiteboardObjectPacketExtension.ELEMENT_NAME)
+ && !parser.getName ().equals (
+ WhiteboardSessionPacketExtension.ELEMENT_NAME))
{
sb.append (parser.getText ());
}
@@ -53,26 +58,32 @@ public class WhiteboardObjectJabberProvider
{
sb.append (parser.getText ());
}
- else if (eventType == XmlPullParser.END_TAG &&
- parser.getName ().equals ("image"))
+ else if (eventType == XmlPullParser.END_TAG
+ && parser.getName ().equals ("image"))
{
sb.append (parser.getText ());
}
- else if (eventType == XmlPullParser.END_TAG &&
- parser.getName ().equals ("text"))
+ else if (eventType == XmlPullParser.END_TAG
+ && parser.getName ().equals ("text"))
{
sb.append (parser.getText ());
}
- else if (eventType == XmlPullParser.END_TAG &&
- parser.getName ().equals (
- WhiteboardObjectPacketExtensionImpl.ELEMENT_NAME))
+ else if (eventType == XmlPullParser.END_TAG
+ && parser.getName ().equals (
+ WhiteboardObjectPacketExtension.ELEMENT_NAME))
+ {
+ extension = new WhiteboardObjectPacketExtension(sb.toString ());
+ done = true;
+ }
+ else if (eventType == XmlPullParser.END_TAG
+ && parser.getName ().equals (
+ WhiteboardSessionPacketExtension.ELEMENT_NAME))
{
+ extension = new WhiteboardSessionPacketExtension(sb.toString ());
done = true;
}
}
- WhiteboardObjectPacketExtensionImpl wbo
- = new WhiteboardObjectPacketExtensionImpl(sb.toString ());
- return wbo;
+ return extension;
}
} \ No newline at end of file
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectPacketExtensionImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectPacketExtension.java
index 7e110fc..f5ed288 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectPacketExtensionImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardObjectPacketExtension.java
@@ -17,19 +17,19 @@ import org.jivesoftware.smack.packet.*;
import org.w3c.dom.*;
/**
- * WhiteboardObjectPacketExtensionImpl
+ * WhiteboardObjectPacketExtension
*
* @author Julien Waechter
*/
-public class WhiteboardObjectPacketExtensionImpl implements PacketExtension
+public class WhiteboardObjectPacketExtension implements PacketExtension
{
private static final Logger logger =
- Logger.getLogger (WhiteboardObjectPacketExtensionImpl.class);
+ Logger.getLogger (WhiteboardObjectPacketExtension.class);
/**
* The name of the XML element used for transport of white-board parameters.
*/
- public static final String ELEMENT_NAME = "x";
+ public static final String ELEMENT_NAME = "xObject";
/**
* The names XMPP space that the white-board elements belong to.
@@ -69,20 +69,20 @@ public class WhiteboardObjectPacketExtensionImpl implements PacketExtension
private String whiteboardObjectID;
/**
- * Default WhiteboardObjectPacketExtensionImpl constructor.
+ * Default WhiteboardObjectPacketExtension constructor.
*/
- public WhiteboardObjectPacketExtensionImpl ()
+ public WhiteboardObjectPacketExtension ()
{
this.action = ACTION_DRAW;
}
/**
- * WhiteboardObjectPacketExtensionImpl constructor.
+ * WhiteboardObjectPacketExtension constructor.
*
* @param id Identifier of the WhiteboardObject to be treated
* @param action The current action associated with the WhiteboardObject.
*/
- public WhiteboardObjectPacketExtensionImpl (String id, String action)
+ public WhiteboardObjectPacketExtension (String id, String action)
{
this.whiteboardObjectID = id;
this.action = action;
@@ -94,7 +94,7 @@ public class WhiteboardObjectPacketExtensionImpl implements PacketExtension
* @param whiteboardObject The WhiteboardObject to be treated
* @param action The current action associated with the WhiteboardObject.
*/
- public WhiteboardObjectPacketExtensionImpl (
+ public WhiteboardObjectPacketExtension (
WhiteboardObjectJabberImpl whiteboardObject, String action)
{
this.whiteboardObject = whiteboardObject;
@@ -102,11 +102,11 @@ public class WhiteboardObjectPacketExtensionImpl implements PacketExtension
}
/**
- * WhiteboardObjectPacketExtensionImpl constructor with a XML-SVG String.
+ * WhiteboardObjectPacketExtension constructor with a XML-SVG String.
*
* @param xml XML-SVG String
*/
- public WhiteboardObjectPacketExtensionImpl (String xml)
+ public WhiteboardObjectPacketExtension (String xml)
{
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance ();
@@ -119,7 +119,7 @@ public class WhiteboardObjectPacketExtensionImpl implements PacketExtension
Element e = doc.getDocumentElement ();
String elementName = e.getNodeName ();
- this.action = WhiteboardObjectPacketExtensionImpl.ACTION_DRAW;
+ this.action = WhiteboardObjectPacketExtension.ACTION_DRAW;
if (elementName.equals ("rect"))
{
@@ -165,12 +165,10 @@ public class WhiteboardObjectPacketExtensionImpl implements PacketExtension
{
//we have a delete action
this.setWhiteboardObjectID (e.getAttribute ("id"));
- this.action = WhiteboardObjectPacketExtensionImpl.ACTION_DELETE;
+ this.action = WhiteboardObjectPacketExtension.ACTION_DELETE;
}
else //we have a problem :p
logger.debug ("elementName unknow\n");
-
- System.out.println("XML =====================================" + xml);
}
catch (ParserConfigurationException ex)
{
@@ -216,7 +214,7 @@ public class WhiteboardObjectPacketExtensionImpl implements PacketExtension
{
String s="";
if(getAction ().equals (
- WhiteboardObjectPacketExtensionImpl.ACTION_DELETE))
+ WhiteboardObjectPacketExtension.ACTION_DELETE))
{
s = "<delete id=\"#i\"/>";
s = s.replaceAll ("#i", getWhiteboardObjectID());
@@ -224,9 +222,9 @@ public class WhiteboardObjectPacketExtensionImpl implements PacketExtension
else
s = getWhiteboardObject ().toXML ();
- return "<" + WhiteboardObjectPacketExtensionImpl.ELEMENT_NAME +
- " xmlns=\"" + WhiteboardObjectPacketExtensionImpl.NAMESPACE +
- "\">"+s+"</" + WhiteboardObjectPacketExtensionImpl.ELEMENT_NAME + ">";
+ return "<" + WhiteboardObjectPacketExtension.ELEMENT_NAME +
+ " xmlns=\"" + WhiteboardObjectPacketExtension.NAMESPACE +
+ "\">"+s+"</" + WhiteboardObjectPacketExtension.ELEMENT_NAME + ">";
}
/**
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardSessionPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardSessionPacketExtension.java
new file mode 100644
index 0000000..258e36f
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/whiteboard/WhiteboardSessionPacketExtension.java
@@ -0,0 +1,217 @@
+/*
+ * SIP Communicator, 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.whiteboard;
+
+import java.io.*;
+
+import javax.xml.parsers.*;
+
+import net.java.sip.communicator.impl.protocol.jabber.*;
+import net.java.sip.communicator.util.*;
+
+import org.jivesoftware.smack.packet.*;
+import org.w3c.dom.*;
+
+public class WhiteboardSessionPacketExtension
+ implements PacketExtension
+{
+ private Logger logger
+ = Logger.getLogger(WhiteboardSessionPacketExtension.class);
+
+ /**
+ * A type string constant indicating that the user would like to leave the
+ * current white board session.
+ */
+ public static final String ACTION_LEAVE = "LEAVE";
+
+ /**
+ * The name of the XML element used for transport of white-board parameters.
+ */
+ public static final String ELEMENT_NAME = "xSession";
+
+ /**
+ * The names XMPP space that the white-board elements belong to.
+ */
+ public static final String NAMESPACE = "http://jabber.org/protocol/swb";
+
+ /**
+ * The current action associated with the WhiteboardObject.
+ */
+ private String action;
+
+ /**
+ * The white board session for which the action is about.
+ */
+ private WhiteboardSessionJabberImpl whiteboardSession;
+
+ /**
+ * The address of the contact associated with this packet extension.
+ */
+ private String contactAddress;
+
+ private String whiteboardSessionId;
+
+ /**
+ * Constructs and initializes a WhiteboardObjectPacketExtension.
+ *
+ * @param session The WhiteboardSession to be treated
+ * @param contactAddress The address of the contact associated with this
+ * packet extension
+ * @param action The current action associated with the WhiteboardSession.
+ */
+ public WhiteboardSessionPacketExtension (
+ WhiteboardSessionJabberImpl session,
+ String contactAddress,
+ String action)
+ {
+ this.whiteboardSession = session;
+ this.whiteboardSessionId = session.getWhiteboardID();
+ this.contactAddress = contactAddress;
+ this.action = action;
+ }
+
+ /**
+ * WhiteboardSessionPacketExtension constructor with a XML-SVG String.
+ *
+ * @param xml XML-SVG String
+ */
+ public WhiteboardSessionPacketExtension (String xml)
+ {
+ DocumentBuilderFactory factory =
+ DocumentBuilderFactory.newInstance ();
+
+ DocumentBuilder builder;
+ try
+ {
+ builder = factory.newDocumentBuilder ();
+ InputStream in = new ByteArrayInputStream (xml.getBytes ());
+ Document doc = builder.parse (in);
+
+ Element e = doc.getDocumentElement ();
+ String elementName = e.getNodeName ();
+
+ if (elementName.equals (ACTION_LEAVE))
+ {
+ this.setWhiteboardSessionId(e.getAttribute ("id"));
+ this.setContactAddress(e.getAttribute ("userId"));
+ this.action = WhiteboardSessionPacketExtension.ACTION_LEAVE;
+ }
+ else
+ logger.debug ("Element name unknown!");
+ }
+ catch (ParserConfigurationException ex)
+ {
+ logger.debug ("Problem WhiteboardSession : " + xml, ex);
+ }
+ catch (IOException ex)
+ {
+ logger.debug ("Problem WhiteboardSession : " + xml, ex);
+ }
+ catch (Exception ex)
+ {
+ logger.debug ("Problem WhiteboardSession : " + xml, ex);
+ }
+ }
+
+ /**
+ * Returns the root element name.
+ *
+ * @return the element name.
+ */
+ public String getElementName ()
+ {
+ return ELEMENT_NAME;
+ }
+
+ /**
+ * Returns the root element XML namespace.
+ *
+ * @return the namespace.
+ */
+ public String getNamespace ()
+ {
+ return NAMESPACE;
+ }
+
+ public String toXML()
+ {
+ String s = "";
+
+ if(action.equals (
+ WhiteboardSessionPacketExtension.ACTION_LEAVE))
+ {
+ s = "<LEAVE id=\"#sessionId\" userId=\"#userId\"/>";
+ s = s.replaceAll ("#sessionId", whiteboardSession.getWhiteboardID());
+ s = s.replaceAll ("#userId", contactAddress);
+ }
+
+ return "<" + WhiteboardSessionPacketExtension.ELEMENT_NAME +
+ " xmlns=\"" + WhiteboardSessionPacketExtension.NAMESPACE +
+ "\">"+s+"</" + WhiteboardSessionPacketExtension.ELEMENT_NAME + ">";
+ }
+
+ /**
+ * Returns the white board session identifier.
+ *
+ * @return the white board session identifier
+ */
+ public String getWhiteboardSessionId()
+ {
+ return whiteboardSessionId;
+ }
+
+ /**
+ * Sets the white board session identifier.
+ *
+ * @param whiteboardSessionId the identifier of the session
+ */
+ public void setWhiteboardSessionId(String whiteboardSessionId)
+ {
+ this.whiteboardSessionId = whiteboardSessionId;
+ }
+
+ /**
+ * Returns the action associated with this session packet extension.
+ *
+ * @return the action associated with this session packet extension.
+ */
+ public String getAction()
+ {
+ return action;
+ }
+
+ /**
+ * Sets the action associated with this session packet extension.
+ *
+ * @param action the action associated with this session packet extension.
+ */
+ public void setAction(String action)
+ {
+ this.action = action;
+ }
+
+ /**
+ * Returns the address of the contact associated with this packet extension
+ *
+ * @return the address of the contact associated with this packet extension
+ */
+ public String getContactAddress()
+ {
+ return contactAddress;
+ }
+
+ /**
+ * Sets the address of the contact associated with this packet extension
+ *
+ * @param contactAddress the address of the contact associated with this
+ * packet extension
+ */
+ public void setContactAddress(String contactAddress)
+ {
+ this.contactAddress = contactAddress;
+ }
+}