diff options
Diffstat (limited to 'src/net/java/sip/communicator/impl/protocol/jabber/extensions/jitsimeet/ComponentVersionsExtension.java')
-rw-r--r-- | src/net/java/sip/communicator/impl/protocol/jabber/extensions/jitsimeet/ComponentVersionsExtension.java | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jitsimeet/ComponentVersionsExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jitsimeet/ComponentVersionsExtension.java new file mode 100644 index 0000000..bcc3397 --- /dev/null +++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jitsimeet/ComponentVersionsExtension.java @@ -0,0 +1,135 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Copyright @ 2015 Atlassian Pty Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package net.java.sip.communicator.impl.protocol.jabber.extensions.jitsimeet; + +import net.java.sip.communicator.impl.protocol.jabber.extensions.*; + +/** + * The packet extension is used by Jicofo to broadcast versions of all video + * conferencing system components. This packets extension is added to jicofo's + * MUC presence. It will contain {@link Component} children which carry each + * component's name and version. + * + * @author Pawel Domas + */ +public class ComponentVersionsExtension + extends AbstractPacketExtension +{ + /** + * The XML element name of {@link ComponentVersionsExtension}. + */ + public static final String ELEMENT_NAME = "versions"; + + /** + * The name of XML sub-elements which carry the info about particular + * component's version. + */ + public static final String COMPONENT_ELEMENT_NAME = "component"; + + /** + * Constant for {@link Component} name used to signal the version of + * conference focus. + */ + public static final String COMPONENT_FOCUS = "focus"; + + /** + * Constant for {@link Component} name used to signal the version of + * XMPP server. + */ + public static final String COMPONENT_XMPP_SERVER = "xmpp"; + + /** + * Constant for {@link Component} name used to signal the version of + * the videobridge. + */ + public static final String COMPONENT_VIDEOBRIDGE = "videobridge"; + + /** + * The XML element namespace of {@link ComponentVersionsExtension}. + */ + public static final String NAMESPACE = "http://jitsi.org/jitmeet"; + + /** + * Creates an {@link AbstractPacketExtension} instance for the specified + * <tt>namespace</tt> and <tt>elementName</tt>. + */ + public ComponentVersionsExtension() + { + super(NAMESPACE, ELEMENT_NAME); + } + + /** + * Adds component's version to this extension. + * + * @param componentName the name of the component for which + * child {@link Component} extension will be added. + * @param versionStr human readable string that describes component's + * version. + */ + public void addComponentVersion(String componentName, String versionStr) + { + Component v = new Component(); + + v.setName(componentName); + v.setText(versionStr); + + addChildExtension(v); + } + + /** + * Component child element of {@link ComponentVersionsExtension}. The name + * of the component is carried in name attribute and the version string is + * the text value. + */ + public class Component + extends AbstractPacketExtension + { + /** + * The name of that attribute that carries component's name. + */ + private final String NAME_ATTR_NAME = "name"; + + /** + * Creates new instance of {@link Component} packet extension. + */ + public Component() + { + super(NAMESPACE, COMPONENT_ELEMENT_NAME); + } + + /** + * Returns the value of the name attribute. + * @return <tt>String</tt> which describes the name of video + * conferencing system component. + */ + public String getName() + { + return getAttributeAsString(NAME_ATTR_NAME); + } + + /** + * Sets new value for the component's name attribute. + * @param name a <tt>String</tt> which describes the name of video + * conferencing system component. + */ + public void setName(String name) + { + setAttribute(NAME_ATTR_NAME, name); + } + } +} |