| /** |
| * $RCSfile$ |
| * $Revision: 2407 $ |
| * $Date: 2004-11-02 15:37:00 -0800 (Tue, 02 Nov 2004) $ |
| * |
| * Copyright 2003-2007 Jive Software. |
| * |
| * All rights reserved. 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 org.jivesoftware.smackx.packet; |
| |
| import org.jivesoftware.smackx.ChatState; |
| import org.jivesoftware.smack.packet.PacketExtension; |
| import org.jivesoftware.smack.provider.PacketExtensionProvider; |
| import org.xmlpull.v1.XmlPullParser; |
| |
| /** |
| * Represents a chat state which is an extension to message packets which is used to indicate |
| * the current status of a chat participant. |
| * |
| * @author Alexander Wenckus |
| * @see org.jivesoftware.smackx.ChatState |
| */ |
| public class ChatStateExtension implements PacketExtension { |
| |
| private ChatState state; |
| |
| /** |
| * Default constructor. The argument provided is the state that the extension will represent. |
| * |
| * @param state the state that the extension represents. |
| */ |
| public ChatStateExtension(ChatState state) { |
| this.state = state; |
| } |
| |
| public String getElementName() { |
| return state.name(); |
| } |
| |
| public String getNamespace() { |
| return "http://jabber.org/protocol/chatstates"; |
| } |
| |
| public String toXML() { |
| return "<" + getElementName() + " xmlns=\"" + getNamespace() + "\" />"; |
| } |
| |
| public static class Provider implements PacketExtensionProvider { |
| |
| public PacketExtension parseExtension(XmlPullParser parser) throws Exception { |
| ChatState state; |
| try { |
| state = ChatState.valueOf(parser.getName()); |
| } |
| catch (Exception ex) { |
| state = ChatState.active; |
| } |
| return new ChatStateExtension(state); |
| } |
| } |
| } |