1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License. 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * http://www.apache.org/licenses/LICENSE-2.0 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS, 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License. 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smackx.pubsub; 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.Arrays; 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.List; 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.packet.PacketExtension; 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smackx.pubsub.packet.PubSubNamespace; 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Represents the top level element of a pubsub event extension. All types of pubsub events are 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * represented by this class. The specific type can be found by {@link #getEventType()}. The 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * embedded event information, which is specific to the event type, can be retrieved by the {@link #getEvent()} 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * method. 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Robin Collier 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class EventElement implements EmbeddedPacketExtension 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen{ 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private EventElementType type; 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private NodeExtension ext; 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public EventElement(EventElementType eventType, NodeExtension eventExt) 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen type = eventType; 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen ext = eventExt; 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public EventElementType getEventType() 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return type; 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public List<PacketExtension> getExtensions() 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return Arrays.asList(new PacketExtension[]{getEvent()}); 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public NodeExtension getEvent() 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return ext; 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getElementName() 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return "event"; 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getNamespace() 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return PubSubNamespace.EVENT.getXmlns(); 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder builder = new StringBuilder("<event xmlns='" + PubSubNamespace.EVENT.getXmlns() + "'>"); 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen builder.append(ext.toXML()); 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen builder.append("</event>"); 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return builder.toString(); 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 75