aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Vincent <seb@jitsi.org>2011-04-01 15:59:23 +0000
committerSebastien Vincent <seb@jitsi.org>2011-04-01 15:59:23 +0000
commit6fbb79cdfab94be7268b0324ab43f6aee9690ee1 (patch)
tree363098dc64b3ae470a3bc58260aeb3238483c245
parent21403fc25a517771277c26aaf33aa44ba2b298c0 (diff)
downloadjitsi-6fbb79cdfab94be7268b0324ab43f6aee9690ee1.zip
jitsi-6fbb79cdfab94be7268b0324ab43f6aee9690ee1.tar.gz
jitsi-6fbb79cdfab94be7268b0324ab43f6aee9690ee1.tar.bz2
Add additionnal conference-info attributes (not used yet).
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CallInfoPacketExtension.java36
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CoinIQ.java2
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CoinIQProvider.java71
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediaPacketExtension.java36
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediumPacketExtension.java189
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediumProvider.java89
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/DescriptionPacketExtension.java8
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/EndpointProvider.java12
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ExecutionPacketExtension.java8
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/HostInfoPacketExtension.java8
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/MediaPacketExtension.java9
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/SIPDialogIDPacketExtension.java136
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/SidebarsByValPacketExtension.java36
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/StatePacketExtension.java7
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/URIPacketExtension.java148
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/URIsPacketExtension.java36
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserLanguagesPacketExtension.java114
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserLanguagesProvider.java69
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserRolesPacketExtension.java112
19 files changed, 1123 insertions, 3 deletions
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CallInfoPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CallInfoPacketExtension.java
new file mode 100644
index 0000000..8256a4c
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CallInfoPacketExtension.java
@@ -0,0 +1,36 @@
+/*
+ * 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.coin;
+
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
+/**
+ * Call information packet extension.
+ *
+ * @author Sebastien Vincent
+ */
+public class CallInfoPacketExtension
+ extends AbstractPacketExtension
+{
+ /**
+ * The namespace that call info belongs to.
+ */
+ public static final String NAMESPACE = "";
+
+ /**
+ * The name of the element that contains the call info.
+ */
+ public static final String ELEMENT_NAME = "call-info";
+
+ /**
+ * Constructor.
+ */
+ public CallInfoPacketExtension()
+ {
+ super(NAMESPACE, ELEMENT_NAME);
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CoinIQ.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CoinIQ.java
index 9e55efb..74b700b 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CoinIQ.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CoinIQ.java
@@ -182,9 +182,9 @@ public class CoinIQ
{
bldr.append(pe.toXML());
}
+ bldr.append("</").append(ELEMENT_NAME).append(">");
}
- bldr.append("</").append(ELEMENT_NAME).append(">");
return bldr.toString();
}
}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CoinIQProvider.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CoinIQProvider.java
index f65f598..6bb8eff 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CoinIQProvider.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/CoinIQProvider.java
@@ -6,6 +6,8 @@
*/
package net.java.sip.communicator.impl.protocol.jabber.extensions.coin;
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
import org.jivesoftware.smack.packet.*;
import org.jivesoftware.smack.provider.*;
import org.xmlpull.v1.*;
@@ -35,10 +37,66 @@ public class CoinIQProvider
private final StateProvider stateProvider = new StateProvider();
/**
+ * Provider for URIs packet extension.
+ */
+ private final DefaultPacketExtensionProvider<URIsPacketExtension>
+ urisProvider = new DefaultPacketExtensionProvider<URIsPacketExtension>(
+ URIsPacketExtension.class);
+
+ /**
+ * Provider for sidbars by val packet extension.
+ */
+ private final DefaultPacketExtensionProvider<SidebarsByValPacketExtension>
+ sidebarsByValProvider =
+ new DefaultPacketExtensionProvider<SidebarsByValPacketExtension>(
+ SidebarsByValPacketExtension.class);
+
+ /**
* Constructor.
*/
public CoinIQProvider()
{
+ ProviderManager providerManager = ProviderManager.getInstance();
+
+ providerManager.addExtensionProvider(
+ UserRolesPacketExtension.ELEMENT_NAME,
+ UserRolesPacketExtension.NAMESPACE,
+ new DefaultPacketExtensionProvider
+ <UserRolesPacketExtension>(
+ UserRolesPacketExtension.class));
+
+ providerManager.addExtensionProvider(
+ URIPacketExtension.ELEMENT_NAME,
+ URIPacketExtension.NAMESPACE,
+ new DefaultPacketExtensionProvider
+ <URIPacketExtension>(
+ URIPacketExtension.class));
+
+ providerManager.addExtensionProvider(
+ SIPDialogIDPacketExtension.ELEMENT_NAME,
+ SIPDialogIDPacketExtension.NAMESPACE,
+ new DefaultPacketExtensionProvider
+ <SIPDialogIDPacketExtension>(
+ SIPDialogIDPacketExtension.class));
+
+ providerManager.addExtensionProvider(
+ ConferenceMediumPacketExtension.ELEMENT_NAME,
+ ConferenceMediumPacketExtension.NAMESPACE,
+ new ConferenceMediumProvider());
+
+ providerManager.addExtensionProvider(
+ ConferenceMediaPacketExtension.ELEMENT_NAME,
+ ConferenceMediaPacketExtension.NAMESPACE,
+ new DefaultPacketExtensionProvider
+ <ConferenceMediaPacketExtension>(
+ ConferenceMediaPacketExtension.class));
+
+ providerManager.addExtensionProvider(
+ CallInfoPacketExtension.ELEMENT_NAME,
+ CallInfoPacketExtension.NAMESPACE,
+ new DefaultPacketExtensionProvider
+ <CallInfoPacketExtension>(
+ CallInfoPacketExtension.class));
}
/**
@@ -102,6 +160,19 @@ public class CoinIQProvider
stateProvider.parseExtension(parser);
coinIQ.addExtension(childExtension);
}
+ else if(elementName.equals(URIsPacketExtension.ELEMENT_NAME))
+ {
+ PacketExtension childExtension =
+ urisProvider.parseExtension(parser);
+ coinIQ.addExtension(childExtension);
+ }
+ else if(elementName.equals(
+ SidebarsByValPacketExtension.ELEMENT_NAME))
+ {
+ PacketExtension childExtension =
+ sidebarsByValProvider.parseExtension(parser);
+ coinIQ.addExtension(childExtension);
+ }
}
if (eventType == XmlPullParser.END_TAG)
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediaPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediaPacketExtension.java
new file mode 100644
index 0000000..6661e0b
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediaPacketExtension.java
@@ -0,0 +1,36 @@
+/*
+ * 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.coin;
+
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
+/**
+ * Conference media packet extension.
+ *
+ * @author Sebastien Vincent
+ */
+public class ConferenceMediaPacketExtension
+ extends AbstractPacketExtension
+{
+ /**
+ * The namespace that conference media belongs to.
+ */
+ public static final String NAMESPACE = "";
+
+ /**
+ * The name of the element that contains the conference media.
+ */
+ public static final String ELEMENT_NAME = "available-media";
+
+ /**
+ * Constructor.
+ */
+ public ConferenceMediaPacketExtension()
+ {
+ super(NAMESPACE, ELEMENT_NAME);
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediumPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediumPacketExtension.java
new file mode 100644
index 0000000..cb82e0c
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediumPacketExtension.java
@@ -0,0 +1,189 @@
+/*
+ * 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.coin;
+
+import java.util.*;
+
+import org.jivesoftware.smack.packet.*;
+
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
+/**
+ * Conference medium packet extension.
+ *
+ * @author Sebastien Vincent
+ */
+public class ConferenceMediumPacketExtension
+ extends AbstractPacketExtension
+{
+ /**
+ * The namespace that conference medium belongs to.
+ */
+ public static final String NAMESPACE = "";
+
+ /**
+ * The name of the element that contains the conference medium.
+ */
+ public static final String ELEMENT_NAME = "medium";
+
+ /**
+ * Display text element name.
+ */
+ public static final String ELEMENT_DISPLAY_TEXT = "display-text";
+
+ /**
+ * Type element name.
+ */
+ public static final String ELEMENT_TYPE = "type";
+
+ /**
+ * Status element name.
+ */
+ public static final String ELEMENT_STATUS = "status";
+
+ /**
+ * Label attribute name.
+ */
+ public static final String LABEL_ATTR_NAME = "label";
+
+ /**
+ * Type.
+ */
+ private String type = null;
+
+ /**
+ * Display text.
+ */
+ private String displayText = null;
+
+ /**
+ * Media status.
+ */
+ private String status = null;
+
+ /**
+ * Constructor.
+ *
+ * @param elementName element name
+ * @param label label
+ */
+ public ConferenceMediumPacketExtension(String elementName, String label)
+ {
+ super(NAMESPACE, elementName);
+ setAttribute(LABEL_ATTR_NAME, label);
+ }
+
+ /**
+ * Set status.
+ *
+ * @param status status.
+ */
+ public void setStatus(String status)
+ {
+ this.status = status;
+ }
+
+ /**
+ * Set type.
+ *
+ * @param type type
+ */
+ public void setType(String type)
+ {
+ this.type = type;
+ }
+
+ /**
+ * Set display text.
+ * @param displayText display text
+ */
+ public void setDisplayText(String displayText)
+ {
+ this.displayText = displayText;
+ }
+
+ /**
+ * Get display text.
+ *
+ * @return display text
+ */
+ public String getDisplayText()
+ {
+ return displayText;
+ }
+
+ /**
+ * Get type.
+ *
+ * @return type
+ */
+ public String getType()
+ {
+ return type;
+ }
+
+ /**
+ * Get status.
+ *
+ * @return status.
+ */
+ public String getStatus()
+ {
+ return status;
+ }
+
+ /**
+ * Get an XML string representation.
+ *
+ * @return XML string representation
+ */
+ @Override
+ public String toXML()
+ {
+ StringBuilder bldr = new StringBuilder();
+
+ bldr.append("<").append(getElementName()).append(" ");
+
+ if(getNamespace() != null)
+ bldr.append("xmlns='").append(getNamespace()).append("'");
+
+ //add the rest of the attributes if any
+ for(Map.Entry<String, String> entry : attributes.entrySet())
+ {
+ bldr.append(" ")
+ .append(entry.getKey())
+ .append("='")
+ .append(entry.getValue())
+ .append("'");
+ }
+
+ bldr.append(">");
+
+ if(displayText != null)
+ bldr.append("<").append(ELEMENT_DISPLAY_TEXT).append(">").append(
+ displayText).append("</").append(
+ ELEMENT_DISPLAY_TEXT).append(">");
+
+ if(type != null)
+ bldr.append("<").append(ELEMENT_TYPE).append(">").append(
+ type).append("</").append(
+ ELEMENT_TYPE).append(">");
+
+ if(status != null)
+ bldr.append("<").append(ELEMENT_STATUS).append(">").append(
+ status).append("</").append(
+ ELEMENT_STATUS).append(">");
+
+ for(PacketExtension ext : getChildExtensions())
+ {
+ bldr.append(ext.toXML());
+ }
+
+ bldr.append("</").append(getElementName()).append(">");
+ return bldr.toString();
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediumProvider.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediumProvider.java
new file mode 100644
index 0000000..3822b67
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ConferenceMediumProvider.java
@@ -0,0 +1,89 @@
+/*
+ * 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.coin;
+
+import org.jivesoftware.smack.packet.*;
+import org.jivesoftware.smack.provider.*;
+import org.xmlpull.v1.*;
+
+/**
+ * Parser for ConferenceMediumProvider.
+ *
+ * @author Sebastien Vincent
+ */
+public class ConferenceMediumProvider
+ implements PacketExtensionProvider
+{
+ /**
+ * Parses a ConferenceMedium extension sub-packet and creates a {@link
+ * ConferenceMediumPacketExtension} instance. At the beginning of the method
+ * call, the xml parser will be positioned on the opening element of the
+ * packet extension. As required by the smack API, at the end of the method
+ * call, the parser will be positioned on the closing element of the packet
+ * extension.
+ *
+ * @param parser an XML parser positioned at the opening
+ * <tt>ConferenceMedium</tt> element.
+ *
+ * @return a new {@link ConferenceMediumPacketExtension} instance.
+ * @throws java.lang.Exception if an error occurs parsing the XML.
+ */
+ public PacketExtension parseExtension(XmlPullParser parser)
+ throws Exception
+ {
+ boolean done = false;
+ int eventType;
+ String elementName = null;
+ String label = parser.getAttributeValue(
+ "",
+ ConferenceMediumPacketExtension.LABEL_ATTR_NAME);
+
+ if(label == null)
+ {
+ throw new Exception(
+ "Coin medium element must contain entity attribute");
+ }
+
+ ConferenceMediumPacketExtension ext =
+ new ConferenceMediumPacketExtension("entry", label);
+
+ while (!done)
+ {
+ eventType = parser.next();
+ elementName = parser.getName();
+
+ if (eventType == XmlPullParser.START_TAG)
+ {
+ if(elementName.equals(
+ MediaPacketExtension.ELEMENT_DISPLAY_TEXT))
+ {
+ ext.setDisplayText(CoinIQProvider.parseText(parser));
+ }
+ else if(elementName.equals(
+ MediaPacketExtension.ELEMENT_STATUS))
+ {
+ ext.setStatus(CoinIQProvider.parseText(parser));
+ }
+ else if(elementName.equals(
+ MediaPacketExtension.ELEMENT_TYPE))
+ {
+ ext.setType(CoinIQProvider.parseText(parser));
+ }
+ }
+ else if (eventType == XmlPullParser.END_TAG)
+ {
+ if (parser.getName().equals(
+ ConferenceMediumPacketExtension.ELEMENT_NAME))
+ {
+ done = true;
+ }
+ }
+ }
+
+ return ext;
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/DescriptionPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/DescriptionPacketExtension.java
index 52e61b6..5b707a1 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/DescriptionPacketExtension.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/DescriptionPacketExtension.java
@@ -8,6 +8,8 @@ package net.java.sip.communicator.impl.protocol.jabber.extensions.coin;
import java.util.*;
+import org.jivesoftware.smack.packet.*;
+
import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
/**
@@ -183,8 +185,12 @@ public class DescriptionPacketExtension
maximumUserCount).append("</").append(
ELEMENT_MAX_USER_COUNT).append(">");
+ for(PacketExtension ext : getChildExtensions())
+ {
+ bldr.append(ext.toXML());
+ }
- bldr.append("</").append(ELEMENT_NAME).append(">");
+ bldr.append("</").append(getElementName()).append(">");
return bldr.toString();
}
}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/EndpointProvider.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/EndpointProvider.java
index bb37832..498dfd9 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/EndpointProvider.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/EndpointProvider.java
@@ -6,6 +6,8 @@
*/
package net.java.sip.communicator.impl.protocol.jabber.extensions.coin;
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
import org.jivesoftware.smack.packet.*;
import org.jivesoftware.smack.provider.*;
import org.xmlpull.v1.*;
@@ -84,6 +86,16 @@ public class EndpointProvider
ext.setStatus(EndpointStatusType.parseString(
CoinIQProvider.parseText(parser)));
}
+ else if(elementName.equals(
+ CallInfoPacketExtension.ELEMENT_NAME))
+ {
+ PacketExtensionProvider provider
+ = new DefaultPacketExtensionProvider<
+ CallInfoPacketExtension>(CallInfoPacketExtension.class);
+ PacketExtension childExtension = provider.parseExtension(
+ parser);
+ ext.addChildExtension(childExtension);
+ }
else if(elementName.equals(MediaPacketExtension.ELEMENT_NAME))
{
PacketExtensionProvider provider
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ExecutionPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ExecutionPacketExtension.java
index e7fcaaa..20842db 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ExecutionPacketExtension.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/ExecutionPacketExtension.java
@@ -8,6 +8,8 @@ package net.java.sip.communicator.impl.protocol.jabber.extensions.coin;
import java.util.*;
+import org.jivesoftware.smack.packet.*;
+
import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
/**
@@ -186,6 +188,12 @@ public class ExecutionPacketExtension
reason).append("</").append(
ELEMENT_REASON).append(">");
+
+ for(PacketExtension ext : getChildExtensions())
+ {
+ bldr.append(ext.toXML());
+ }
+
bldr.append("</").append(getElementName()).append(">");
return bldr.toString();
}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/HostInfoPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/HostInfoPacketExtension.java
index b68dd81..c7c3d01 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/HostInfoPacketExtension.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/HostInfoPacketExtension.java
@@ -8,6 +8,8 @@ package net.java.sip.communicator.impl.protocol.jabber.extensions.coin;
import java.util.*;
+import org.jivesoftware.smack.packet.*;
+
import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
/**
@@ -131,7 +133,13 @@ public class HostInfoPacketExtension
webPage).append("</").append(
ELEMENT_WEB_PAGE).append(">");
+ for(PacketExtension ext : getChildExtensions())
+ {
+ bldr.append(ext.toXML());
+ }
+
bldr.append("</").append(ELEMENT_NAME).append(">");
+
return bldr.toString();
}
}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/MediaPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/MediaPacketExtension.java
index 44a4ad5..9255e87 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/MediaPacketExtension.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/MediaPacketExtension.java
@@ -8,6 +8,8 @@ package net.java.sip.communicator.impl.protocol.jabber.extensions.coin;
import java.util.*;
+import org.jivesoftware.smack.packet.*;
+
import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
/**
@@ -245,7 +247,12 @@ public class MediaPacketExtension
label).append("</").append(
ELEMENT_LABEL).append(">");
- bldr.append("</").append(ELEMENT_NAME).append(">");
+ for(PacketExtension ext : getChildExtensions())
+ {
+ bldr.append(ext.toXML());
+ }
+
+ bldr.append("</").append(getElementName()).append(">");
return bldr.toString();
}
}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/SIPDialogIDPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/SIPDialogIDPacketExtension.java
new file mode 100644
index 0000000..be0944e
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/SIPDialogIDPacketExtension.java
@@ -0,0 +1,136 @@
+/*
+ * 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.coin;
+
+import java.util.*;
+
+import org.jivesoftware.smack.packet.*;
+
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
+/**
+ * SIP Dialog ID packet extension.
+ *
+ * @author Sebastien Vincent
+ */
+public class SIPDialogIDPacketExtension
+ extends AbstractPacketExtension
+{
+ /**
+ * The namespace that SIP Dialog ID belongs to.
+ */
+ public static final String NAMESPACE = "";
+
+ /**
+ * The name of the element that contains the SIP Dialog ID data.
+ */
+ public static final String ELEMENT_NAME = "sip";
+
+ /**
+ * Display text element name.
+ */
+ public static final String ELEMENT_DISPLAY_TEXT = "display-text";
+
+ /**
+ * Call ID element name.
+ */
+ public static final String ELEMENT_CALLID = "call-id";
+
+ /**
+ * From tag element name.
+ */
+ public static final String ELEMENT_FROMTAG = "from-tag";
+
+ /**
+ * From tag element name.
+ */
+ public static final String ELEMENT_TOTAG = "to-tag";
+
+ /**
+ * Display text.
+ */
+ private String displayText = null;
+
+ /**
+ * Call ID.
+ */
+ private String callID = null;
+
+ /**
+ * From tag.
+ */
+ private String fromTag = null;
+
+ /**
+ * To tag.
+ */
+ private String toTag = null;
+
+ /**
+ * Constructor
+ */
+ public SIPDialogIDPacketExtension()
+ {
+ super(NAMESPACE, ELEMENT_NAME);
+ }
+
+ /**
+ * Returns an XML representation of this extension.
+ *
+ * @return an XML representation of this extension.
+ */
+ public String toXML()
+ {
+ StringBuilder bldr = new StringBuilder();
+
+ bldr.append("<").append(getElementName()).append(" ");
+
+ if(getNamespace() != null)
+ bldr.append("xmlns='").append(getNamespace()).append("'");
+
+ //add the rest of the attributes if any
+ for(Map.Entry<String, String> entry : attributes.entrySet())
+ {
+ bldr.append(" ")
+ .append(entry.getKey())
+ .append("='")
+ .append(entry.getValue())
+ .append("'");
+ }
+
+ bldr.append(">");
+
+ if(displayText != null)
+ bldr.append("<").append(ELEMENT_DISPLAY_TEXT).append(">").append(
+ displayText).append("</").append(
+ ELEMENT_DISPLAY_TEXT).append(">");
+
+ if(callID != null)
+ bldr.append("<").append(ELEMENT_CALLID).append(">").append(
+ callID).append("</").append(
+ ELEMENT_CALLID).append(">");
+
+ if(fromTag != null)
+ bldr.append("<").append(ELEMENT_FROMTAG).append(">").append(
+ fromTag).append("</").append(
+ ELEMENT_FROMTAG).append(">");
+
+ if(toTag != null)
+ bldr.append("<").append(ELEMENT_TOTAG).append(">").append(
+ toTag).append("</").append(
+ ELEMENT_TOTAG).append(">");
+
+ for(PacketExtension ext : getChildExtensions())
+ {
+ bldr.append(ext.toXML());
+ }
+
+ bldr.append("</").append(getElementName()).append(">");
+
+ return bldr.toString();
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/SidebarsByValPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/SidebarsByValPacketExtension.java
new file mode 100644
index 0000000..817589c
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/SidebarsByValPacketExtension.java
@@ -0,0 +1,36 @@
+/*
+ * 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.coin;
+
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
+/**
+ * Sidebars by val packet extension.
+ *
+ * @author Sebastien Vincent
+ */
+public class SidebarsByValPacketExtension
+ extends AbstractPacketExtension
+{
+ /**
+ * The namespace that sidebars by val belongs to.
+ */
+ public static final String NAMESPACE = "";
+
+ /**
+ * The name of the element that contains the sidebars by val.
+ */
+ public static final String ELEMENT_NAME = "sidebars-by-val";
+
+ /**
+ * Constructor.
+ */
+ public SidebarsByValPacketExtension()
+ {
+ super(NAMESPACE, ELEMENT_NAME);
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/StatePacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/StatePacketExtension.java
index c3cdf71..a2fcf96 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/StatePacketExtension.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/StatePacketExtension.java
@@ -8,6 +8,8 @@ package net.java.sip.communicator.impl.protocol.jabber.extensions.coin;
import java.util.*;
+import org.jivesoftware.smack.packet.*;
+
import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
/**
@@ -168,6 +170,11 @@ public class StatePacketExtension
(active > 0)).append("</").append(ELEMENT_LOCKED).append(
">");
+ for(PacketExtension ext : getChildExtensions())
+ {
+ bldr.append(ext.toXML());
+ }
+
bldr.append("</").append(getElementName()).append(">");
return bldr.toString();
}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/URIPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/URIPacketExtension.java
new file mode 100644
index 0000000..b8c2a94
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/URIPacketExtension.java
@@ -0,0 +1,148 @@
+/*
+ * 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.coin;
+
+import java.util.*;
+
+import org.jivesoftware.smack.packet.*;
+
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
+/**
+ * URI packet extension.
+ *
+ * @author Sebastien Vincent
+ */
+public class URIPacketExtension
+ extends AbstractPacketExtension
+{
+ /**
+ * The namespace that URI belongs to.
+ */
+ public static final String NAMESPACE = "";
+
+ /**
+ * The name of the element that contains the URI data.
+ */
+ public static final String ELEMENT_NAME = "uri";
+
+ /**
+ * Display text element name.
+ */
+ public static final String ELEMENT_DISPLAY_TEXT = "display-text";
+
+ /**
+ * Purpose element name.
+ */
+ public static final String ELEMENT_PURPOSE = "purpose";
+
+ /**
+ * Display text.
+ */
+ private String displayText = null;
+
+ /**
+ * Purpose.
+ */
+ private String purpose = null;
+
+ /**
+ * Constructor.
+ *
+ * @param elementName element name
+ */
+ public URIPacketExtension(String elementName)
+ {
+ super(NAMESPACE, elementName);
+ }
+
+ /**
+ * Set the display text.
+ *
+ * @param displayText display text
+ */
+ public void setDisplayText(String displayText)
+ {
+ this.displayText = displayText;
+ }
+
+ /**
+ * Get display text.
+ *
+ * @return display text
+ */
+ public String getDisplayText()
+ {
+ return displayText;
+ }
+
+ /**
+ * Set the purpose.
+ *
+ * @param purpose purpose
+ */
+ public void setPurpose(String purpose)
+ {
+ this.purpose = purpose;
+ }
+
+ /**
+ * Get purpose.
+ *
+ * @return purpose
+ */
+ public String getPurpose()
+ {
+ return purpose;
+ }
+
+ /**
+ * Returns an XML representation of this extension.
+ *
+ * @return an XML representation of this extension.
+ */
+ public String toXML()
+ {
+ StringBuilder bldr = new StringBuilder();
+
+ bldr.append("<").append(getElementName()).append(" ");
+
+ if(getNamespace() != null)
+ bldr.append("xmlns='").append(getNamespace()).append("'");
+
+ //add the rest of the attributes if any
+ for(Map.Entry<String, String> entry : attributes.entrySet())
+ {
+ bldr.append(" ")
+ .append(entry.getKey())
+ .append("='")
+ .append(entry.getValue())
+ .append("'");
+ }
+
+ bldr.append(">");
+
+ if(displayText != null)
+ bldr.append("<").append(ELEMENT_DISPLAY_TEXT).append(">").append(
+ displayText).append("</").append(
+ ELEMENT_DISPLAY_TEXT).append(">");
+
+ if(purpose != null)
+ bldr.append("<").append(ELEMENT_PURPOSE).append(">").append(
+ purpose).append("</").append(
+ ELEMENT_PURPOSE).append(">");
+
+ for(PacketExtension ext : getChildExtensions())
+ {
+ bldr.append(ext.toXML());
+ }
+
+ bldr.append("</").append(getElementName()).append(">");
+
+ return bldr.toString();
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/URIsPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/URIsPacketExtension.java
new file mode 100644
index 0000000..6adb269
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/URIsPacketExtension.java
@@ -0,0 +1,36 @@
+/*
+ * 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.coin;
+
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
+/**
+ * URIs packet extension.
+ *
+ * @author Sebastien Vincent
+ */
+public class URIsPacketExtension
+ extends AbstractPacketExtension
+{
+ /**
+ * The namespace that URIs belongs to.
+ */
+ public static final String NAMESPACE = "";
+
+ /**
+ * The name of the element that contains the URIs data.
+ */
+ public static final String ELEMENT_NAME = "uris";
+
+ /**
+ * Constructor.
+ */
+ public URIsPacketExtension()
+ {
+ super(NAMESPACE, ELEMENT_NAME);
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserLanguagesPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserLanguagesPacketExtension.java
new file mode 100644
index 0000000..1d79312
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserLanguagesPacketExtension.java
@@ -0,0 +1,114 @@
+/*
+ * 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.coin;
+
+import java.util.*;
+
+import org.jivesoftware.smack.packet.*;
+
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
+/**
+ * User languages packet extension.
+ *
+ * @author Sebastien Vincent
+ */
+public class UserLanguagesPacketExtension
+ extends AbstractPacketExtension
+{
+ /**
+ * The namespace that user languages belongs to.
+ */
+ public static final String NAMESPACE = "";
+
+ /**
+ * The name of the element that contains the user languages data.
+ */
+ public static final String ELEMENT_NAME = "languages";
+
+ /**
+ * The name of the element that contains the media data.
+ */
+ public static final String ELEMENT_LANGUAGES = "stringvalues";
+
+ /**
+ * The list of languages separated by space.
+ */
+ private String languages = null;
+
+ /**
+ * Constructor.
+ */
+ public UserLanguagesPacketExtension()
+ {
+ super(NAMESPACE, ELEMENT_NAME);
+ }
+
+ /**
+ * Set languages.
+ *
+ * @param languages list of languages
+ */
+ public void setLanguages(String languages)
+ {
+ this.languages = languages;
+ }
+
+ /**
+ * Get languages.
+ *
+ * @return languages
+ */
+ public String getLanguages()
+ {
+ return languages;
+ }
+
+ /**
+ * Get an XML string representation.
+ *
+ * @return XML string representation
+ */
+ @Override
+ public String toXML()
+ {
+ StringBuilder bldr = new StringBuilder();
+
+ bldr.append("<").append(getElementName()).append(" ");
+
+ if(getNamespace() != null)
+ bldr.append("xmlns='").append(getNamespace()).append("'");
+
+ //add the rest of the attributes if any
+ for(Map.Entry<String, String> entry : attributes.entrySet())
+ {
+ bldr.append(" ")
+ .append(entry.getKey())
+ .append("='")
+ .append(entry.getValue())
+ .append("'");
+ }
+
+ bldr.append(">");
+
+ if(languages != null)
+ {
+ bldr.append("<").append(ELEMENT_LANGUAGES).append(">").append(
+ languages).append("</").append(
+ ELEMENT_LANGUAGES).append(">");
+ }
+
+ for(PacketExtension ext : getChildExtensions())
+ {
+ bldr.append(ext.toXML());
+ }
+
+ bldr.append("</").append(getElementName()).append(">");
+
+ return bldr.toString();
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserLanguagesProvider.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserLanguagesProvider.java
new file mode 100644
index 0000000..9731266
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserLanguagesProvider.java
@@ -0,0 +1,69 @@
+/*
+ * 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.coin;
+
+import org.jivesoftware.smack.packet.*;
+import org.jivesoftware.smack.provider.*;
+import org.xmlpull.v1.*;
+
+/**
+ * Parser for UserLanguagesPacketExtension.
+ *
+ * @author Sebastien Vincent
+ */
+public class UserLanguagesProvider
+ implements PacketExtensionProvider
+{
+ /**
+ * Parses a UserLanguages extension sub-packet and creates a {@link
+ * UserLanguagesPacketExtension} instance. At the beginning of the method
+ * call, the xml parser will be positioned on the opening element of the
+ * packet extension. As required by the smack API, at the end of the method
+ * call, the parser will be positioned on the closing element of the packet
+ * extension.
+ *
+ * @param parser an XML parser positioned at the opening
+ * <tt>UserLanguages</tt> element.
+ *
+ * @return a new {@link UserLanguagesPacketExtension} instance.
+ * @throws java.lang.Exception if an error occurs parsing the XML.
+ */
+ public PacketExtension parseExtension(XmlPullParser parser)
+ throws Exception
+ {
+ boolean done = false;
+ int eventType;
+ String elementName = null;
+
+ UserLanguagesPacketExtension ext = new UserLanguagesPacketExtension();
+
+ while (!done)
+ {
+ eventType = parser.next();
+ elementName = parser.getName();
+
+ if (eventType == XmlPullParser.START_TAG)
+ {
+ if(elementName.equals(
+ UserLanguagesPacketExtension.ELEMENT_LANGUAGES))
+ {
+ ext.setLanguages(CoinIQProvider.parseText(parser));
+ }
+ }
+ else if (eventType == XmlPullParser.END_TAG)
+ {
+ if (parser.getName().equals(
+ UserLanguagesPacketExtension.ELEMENT_NAME))
+ {
+ done = true;
+ }
+ }
+ }
+
+ return ext;
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserRolesPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserRolesPacketExtension.java
new file mode 100644
index 0000000..07df484
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/coin/UserRolesPacketExtension.java
@@ -0,0 +1,112 @@
+/*
+ * 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.coin;
+
+import java.util.*;
+
+import org.jivesoftware.smack.packet.*;
+
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
+
+/**
+ * User roles packet extension.
+ *
+ * @author Sebastien Vincent
+ */
+public class UserRolesPacketExtension
+ extends AbstractPacketExtension
+{
+ /**
+ * The namespace that user roles belongs to.
+ */
+ public static final String NAMESPACE = "";
+
+ /**
+ * The name of the element that contains the user roles data.
+ */
+ public static final String ELEMENT_NAME = "roles";
+
+ /**
+ * Subject element name.
+ */
+ public static final String ELEMENT_ROLE = "entry";
+
+ /**
+ * List of roles.
+ */
+ private List<String> roles = new ArrayList<String>();
+
+ /**
+ * Constructor.
+ */
+ public UserRolesPacketExtension()
+ {
+ super(NAMESPACE, ELEMENT_NAME);
+ }
+
+ /**
+ * Add roles.
+ *
+ * @param role role to add
+ */
+ public void addRoles(String role)
+ {
+ roles.add(role);
+ }
+
+ /**
+ * Get list of roles.
+ *
+ * @return list of roles
+ */
+ public List<String> getRoles()
+ {
+ return roles;
+ }
+
+ /**
+ * Returns an XML representation of this extension.
+ *
+ * @return an XML representation of this extension.
+ */
+ public String toXML()
+ {
+ StringBuilder bldr = new StringBuilder();
+
+ bldr.append("<").append(getElementName()).append(" ");
+
+ if(getNamespace() != null)
+ bldr.append("xmlns='").append(getNamespace()).append("'");
+
+ //add the rest of the attributes if any
+ for(Map.Entry<String, String> entry : attributes.entrySet())
+ {
+ bldr.append(" ")
+ .append(entry.getKey())
+ .append("='")
+ .append(entry.getValue())
+ .append("'");
+ }
+
+ bldr.append(">");
+
+ for(String role : roles)
+ {
+ bldr.append("<").append(ELEMENT_ROLE).append(">").append(
+ role).append("</").append(ELEMENT_ROLE).append(">");
+ }
+
+ for(PacketExtension ext : getChildExtensions())
+ {
+ bldr.append(ext.toXML());
+ }
+
+ bldr.append("</").append(getElementName()).append(">");
+
+ return bldr.toString();
+ }
+}