1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $RCSfile: PEPItem.java,v $ 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Revision: 1.2 $ 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Date: 2007/11/06 02:05:09 $ 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 abstract class PEPItem implements PacketExtension { 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen String id; 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen abstract String getNode(); 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen abstract String getItemDetailsXML(); 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates a new PEPItem. 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public PEPItem(String id) { 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super(); 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.id = id; 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the XML element name of the extension sub-packet root element. 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Always returns "x" 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the XML element name of the packet extension. 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getElementName() { 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return "item"; 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the XML namespace of the extension sub-packet root element. 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the XML namespace of the packet extension. 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getNamespace() { 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return "http://jabber.org/protocol/pubsub"; 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the XML representation of a Personal Event Publish according the specification. 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Usually the XML representation will be inside of a Message XML representation like 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * in the following example: 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <pre> 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <message id="MlIpV-4" to="gato1@gato.home" from="gato3@gato.home/Smack"> 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <subject>Any subject you want</subject> 75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <body>This message contains roster items.</body> 76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <x xmlns="jabber:x:roster"> 77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <item jid="gato1@gato.home"/> 78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * <item jid="gato2@gato.home"/> 79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * </x> 80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * </message> 81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * </pre> 82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() { 85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<").append(getElementName()).append(" id=\"").append(id).append("\">"); 87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(getItemDetailsXML()); 88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</").append(getElementName()).append(">"); 89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 93