• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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      */
getName()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      */
setName(String name)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      */
getVersion()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      */
setVersion(String version)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      */
getOs()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      */
setOs(String os)113     public void setOs(String os) {
114         this.os = os;
115     }
116 
getChildElementXML()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