KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jivesoftware > smackx > packet > OfflineMessageInfo


1 /**
2  * $RCSfile$
3  * $Revision: 2512 $
4  * $Date: 2005-07-26 01:57:36 -0300 (Tue, 26 Jul 2005) $
5  *
6  * Copyright 2003-2004 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.PacketExtension;
24 import org.jivesoftware.smack.provider.PacketExtensionProvider;
25 import org.xmlpull.v1.XmlPullParser;
26
27 /**
28  * OfflineMessageInfo is an extension included in the retrieved offline messages requested by
29  * the {@link org.jivesoftware.smackx.OfflineMessageManager}. This extension includes a stamp
30  * that uniquely identifies the offline message. This stamp may be used for deleting the offline
31  * message. The stamp may be of the form UTC timestamps but it is not required to have that format.
32  *
33  * @author Gaston Dombiak
34  */

35 public class OfflineMessageInfo implements PacketExtension {
36
37     private String JavaDoc node = null;
38
39     /**
40     * Returns the XML element name of the extension sub-packet root element.
41     * Always returns "offline"
42     *
43     * @return the XML element name of the packet extension.
44     */

45     public String JavaDoc getElementName() {
46         return "offline";
47     }
48
49     /**
50      * Returns the XML namespace of the extension sub-packet root element.
51      * According the specification the namespace is always "http://jabber.org/protocol/offline"
52      *
53      * @return the XML namespace of the packet extension.
54      */

55     public String JavaDoc getNamespace() {
56         return "http://jabber.org/protocol/offline";
57     }
58
59     /**
60      * Returns the stamp that uniquely identifies the offline message. This stamp may
61      * be used for deleting the offline message. The stamp may be of the form UTC timestamps
62      * but it is not required to have that format.
63      *
64      * @return the stamp that uniquely identifies the offline message.
65      */

66     public String JavaDoc getNode() {
67         return node;
68     }
69
70     /**
71      * Sets the stamp that uniquely identifies the offline message. This stamp may
72      * be used for deleting the offline message. The stamp may be of the form UTC timestamps
73      * but it is not required to have that format.
74      *
75      * @param node the stamp that uniquely identifies the offline message.
76      */

77     public void setNode(String JavaDoc node) {
78         this.node = node;
79     }
80
81     public String JavaDoc toXML() {
82         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
83         buf.append("<").append(getElementName()).append(" xmlns=\"").append(getNamespace()).append(
84             "\">");
85         if (getNode() != null)
86             buf.append("<item node=\"").append(getNode()).append("\"/>");
87         buf.append("</").append(getElementName()).append(">");
88         return buf.toString();
89     }
90
91     public static class Provider implements PacketExtensionProvider {
92
93         /**
94          * Creates a new Provider.
95          * ProviderManager requires that every PacketExtensionProvider has a public,
96          * no-argument constructor
97          */

98         public Provider() {
99         }
100
101         /**
102          * Parses a OfflineMessageInfo packet (extension sub-packet).
103          *
104          * @param parser the XML parser, positioned at the starting element of the extension.
105          * @return a PacketExtension.
106          * @throws Exception if a parsing error occurs.
107          */

108         public PacketExtension parseExtension(XmlPullParser parser)
109             throws Exception JavaDoc {
110             OfflineMessageInfo info = new OfflineMessageInfo();
111             boolean done = false;
112             while (!done) {
113                 int eventType = parser.next();
114                 if (eventType == XmlPullParser.START_TAG) {
115                     if (parser.getName().equals("item"))
116                         info.setNode(parser.getAttributeValue("", "node"));
117                 } else if (eventType == XmlPullParser.END_TAG) {
118                     if (parser.getName().equals("offline")) {
119                         done = true;
120                     }
121                 }
122             }
123
124             return info;
125         }
126
127     }
128 }
129
Popular Tags