diff options
author | Yana Stamcheva <yana@jitsi.org> | 2007-12-04 15:20:30 +0000 |
---|---|---|
committer | Yana Stamcheva <yana@jitsi.org> | 2007-12-04 15:20:30 +0000 |
commit | 4c6085ca1475c7a3d6f92b4e6950c325c19d57bf (patch) | |
tree | 052d8445f75f8040b955c9c17a3d3abf93054cd5 /src/net/java/sip/communicator | |
parent | 7c1212b670d6289d23be15ac89c7123d488af1d1 (diff) | |
download | jitsi-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.java | 37 | ||||
-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.java | 217 |
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; + } +} |