1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $RCSfile: PEPEvent.java,v $ 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Revision: 1.1 $ 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Date: 2007/11/03 00:14:32 $ 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2003-2007 Jive Software. 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License. 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * http://www.apache.org/licenses/LICENSE-2.0 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS, 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License. 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smackx.packet; 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.packet.PacketExtension; 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Represents XMPP Personal Event Protocol packets.<p> 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * The 'http://jabber.org/protocol/pubsub#event' namespace is used to publish personal events items from one client 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * to subscribed clients (See XEP-163). 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Jeff Williams 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class PEPEvent implements PacketExtension { 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen PEPItem item; 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates a new empty roster exchange package. 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public PEPEvent() { 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super(); 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates a new empty roster exchange package. 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public PEPEvent(PEPItem item) { 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super(); 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.item = item; 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void addPEPItem(PEPItem item) { 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.item = item; 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the XML element name of the extension sub-packet root element. 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Always returns "x" 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the XML element name of the packet extension. 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getElementName() { 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return "event"; 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the XML namespace of the extension sub-packet root element. 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * According the specification the namespace is always "jabber:x:roster" 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * (which is not to be confused with the 'jabber:iq:roster' namespace 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the XML namespace of the packet extension. 75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getNamespace() { 77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return "http://jabber.org/protocol/pubsub"; 78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the XML representation of a Personal Event Publish according the specification. 82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Usually the XML representation will be inside of a Message XML representation like 84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * in the following example: 85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <pre> 86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <message id="MlIpV-4" to="gato1@gato.home" from="gato3@gato.home/Smack"> 87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <subject>Any subject you want</subject> 88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <body>This message contains roster items.</body> 89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <x xmlns="jabber:x:roster"> 90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <item jid="gato1@gato.home"/> 91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <item jid="gato2@gato.home"/> 92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * </x> 93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * </message> 94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * </pre> 95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 96d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 97d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() { 98d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 99d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<").append(getElementName()).append(" xmlns=\"").append(getNamespace()).append("\">"); 100d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(item.toXML()); 101d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</").append(getElementName()).append(">"); 102d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 103d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 104d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 105d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 106