diff options
author | Sebastien Vincent <seb@jitsi.org> | 2011-04-01 15:59:23 +0000 |
---|---|---|
committer | Sebastien Vincent <seb@jitsi.org> | 2011-04-01 15:59:23 +0000 |
commit | 6fbb79cdfab94be7268b0324ab43f6aee9690ee1 (patch) | |
tree | 363098dc64b3ae470a3bc58260aeb3238483c245 | |
parent | 21403fc25a517771277c26aaf33aa44ba2b298c0 (diff) | |
download | jitsi-6fbb79cdfab94be7268b0324ab43f6aee9690ee1.zip jitsi-6fbb79cdfab94be7268b0324ab43f6aee9690ee1.tar.gz jitsi-6fbb79cdfab94be7268b0324ab43f6aee9690ee1.tar.bz2 |
Add additionnal conference-info attributes (not used yet).
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(); + } +} |