1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $RCSfile$ 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Revision$ 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Date$ 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2005 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 Chenpackage org.jivesoftware.smackx; 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.Connection; 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.PacketCollector; 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.SmackConfiguration; 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.XMPPException; 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.filter.PacketIDFilter; 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.packet.IQ; 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smackx.packet.SharedGroupsInfo; 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.List; 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * A SharedGroupManager provides services for discovering the shared groups where a user belongs.<p> 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Important note: This functionality is not part of the XMPP spec and it will only work 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * with Wildfire. 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Gaston Dombiak 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class SharedGroupManager { 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the collection that will contain the name of the shared groups where the user 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * logged in with the specified session belongs. 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param connection connection to use to get the user's shared groups. 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return collection with the shared groups' name of the logged user. 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public static List<String> getSharedGroups(Connection connection) throws XMPPException { 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen // Discover the shared groups of the logged user 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen SharedGroupsInfo info = new SharedGroupsInfo(); 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen info.setType(IQ.Type.GET); 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen // Create a packet collector to listen for a response. 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen PacketCollector collector = 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen connection.createPacketCollector(new PacketIDFilter(info.getPacketID())); 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen connection.sendPacket(info); 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen // Wait up to 5 seconds for a result. 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen IQ result = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout()); 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen // Stop queuing results 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen collector.cancel(); 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (result == null) { 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throw new XMPPException("No response from the server."); 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (result.getType() == IQ.Type.ERROR) { 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throw new XMPPException(result.getError()); 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return ((SharedGroupsInfo) result).getGroups(); 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 73