Home | History | Annotate | Download | only in packet
      1 /**
      2  * $RCSfile$
      3  * $Revision$
      4  * $Date$
      5  *
      6  * Copyright 2003-2007 Jive Software.
      7  *
      8  * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
      9  * you may not use this file except in compliance with the License.
     10  * You may obtain a copy of the License at
     11  *
     12  *     http://www.apache.org/licenses/LICENSE-2.0
     13  *
     14  * Unless required by applicable law or agreed to in writing, software
     15  * distributed under the License is distributed on an "AS IS" BASIS,
     16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     17  * See the License for the specific language governing permissions and
     18  * limitations under the License.
     19  */
     20 
     21 package org.jivesoftware.smackx.packet;
     22 
     23 import org.jivesoftware.smack.packet.IQ;
     24 
     25 /**
     26  * A Version IQ packet, which is used by XMPP clients to discover version information
     27  * about the software running at another entity's JID.<p>
     28  *
     29  * An example to discover the version of the server:
     30  * <pre>
     31  * // Request the version from the server.
     32  * Version versionRequest = new Version();
     33  * timeRequest.setType(IQ.Type.GET);
     34  * timeRequest.setTo("example.com");
     35  *
     36  * // Create a packet collector to listen for a response.
     37  * PacketCollector collector = con.createPacketCollector(
     38  *                new PacketIDFilter(versionRequest.getPacketID()));
     39  *
     40  * con.sendPacket(versionRequest);
     41  *
     42  * // Wait up to 5 seconds for a result.
     43  * IQ result = (IQ)collector.nextResult(5000);
     44  * if (result != null && result.getType() == IQ.Type.RESULT) {
     45  *     Version versionResult = (Version)result;
     46  *     // Do something with result...
     47  * }</pre><p>
     48  *
     49  * @author Gaston Dombiak
     50  */
     51 public class Version extends IQ {
     52 
     53     private String name;
     54     private String version;
     55     private String os;
     56 
     57     /**
     58      * Returns the natural-language name of the software. This property will always be
     59      * present in a result.
     60      *
     61      * @return the natural-language name of the software.
     62      */
     63     public String getName() {
     64         return name;
     65     }
     66 
     67     /**
     68      * Sets the natural-language name of the software. This message should only be
     69      * invoked when parsing the XML and setting the property to a Version instance.
     70      *
     71      * @param name the natural-language name of the software.
     72      */
     73     public void setName(String name) {
     74         this.name = name;
     75     }
     76 
     77     /**
     78      * Returns the specific version of the software. This property will always be
     79      * present in a result.
     80      *
     81      * @return the specific version of the software.
     82      */
     83     public String getVersion() {
     84         return version;
     85     }
     86 
     87     /**
     88      * Sets the specific version of the software. This message should only be
     89      * invoked when parsing the XML and setting the property to a Version instance.
     90      *
     91      * @param version the specific version of the software.
     92      */
     93     public void setVersion(String version) {
     94         this.version = version;
     95     }
     96 
     97     /**
     98      * Returns the operating system of the queried entity. This property will always be
     99      * present in a result.
    100      *
    101      * @return the operating system of the queried entity.
    102      */
    103     public String getOs() {
    104         return os;
    105     }
    106 
    107     /**
    108      * Sets the operating system of the queried entity. This message should only be
    109      * invoked when parsing the XML and setting the property to a Version instance.
    110      *
    111      * @param os operating system of the queried entity.
    112      */
    113     public void setOs(String os) {
    114         this.os = os;
    115     }
    116 
    117     public String getChildElementXML() {
    118         StringBuilder buf = new StringBuilder();
    119         buf.append("<query xmlns=\"jabber:iq:version\">");
    120         if (name != null) {
    121             buf.append("<name>").append(name).append("</name>");
    122         }
    123         if (version != null) {
    124             buf.append("<version>").append(version).append("</version>");
    125         }
    126         if (os != null) {
    127             buf.append("<os>").append(os).append("</os>");
    128         }
    129         buf.append("</query>");
    130         return buf.toString();
    131     }
    132 }
    133