"leave" extension added to jabber whiteboard extensions

cusax-fix
Yana Stamcheva 19 years ago
parent 7c1212b670
commit 4c6085ca14

@ -38,14 +38,19 @@ public 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 @@ else if (eventType == XmlPullParser.TEXT)
{
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;
}
}

@ -17,19 +17,19 @@
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 WhiteboardObjectPacketExtensionImpl (String id, String action)
* @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 WhiteboardObjectPacketExtensionImpl (
}
/**
* 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 WhiteboardObjectPacketExtensionImpl (String xml)
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 @@ else if (elementName.equals ("delete"))
{
//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 String toXML ()
{
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 String toXML ()
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 + ">";
}
/**

@ -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;
}
}
Loading…
Cancel
Save