diff --git a/sample/web/viewRoster.jsp b/sample/web/viewRoster.jsp new file mode 100644 index 000000000..0261c5765 --- /dev/null +++ b/sample/web/viewRoster.jsp @@ -0,0 +1,230 @@ +<%-- + - $RCSfile$ + - $Revision$ + - $Date$ + - + - Copyright (C) 2002-2003 Jive Software. All rights reserved. + - + - The Jive Software License (based on Apache Software License, Version 1.1) + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - + - 2. Redistributions in binary form must reproduce the above copyright + - notice, this list of conditions and the following disclaimer in + - the documentation and/or other materials provided with the + - distribution. + - + - 3. The end-user documentation included with the redistribution, + - if any, must include the following acknowledgment: + - "This product includes software developed by + - Jive Software (http://www.jivesoftware.com)." + - Alternately, this acknowledgment may appear in the software itself, + - if and wherever such third-party acknowledgments normally appear. + - + - 4. The names "Smack" and "Jive Software" must not be used to + - endorse or promote products derived from this software without + - prior written permission. For written permission, please + - contact webmaster@jivesoftware.com. + - + - 5. Products derived from this software may not be called "Smack", + - nor may "Smack" appear in their name, without prior written + - permission of Jive Software. + - + - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + - DISCLAIMED. IN NO EVENT SHALL JIVE SOFTWARE OR + - ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + - USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + - OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + - SUCH DAMAGE. + --%> +<%@ page import="java.util.*, + org.jivesoftware.smack.*, + org.jivesoftware.smack.packet.*, + org.jivesoftware.smack.util.*"%> +<%@ include file="global.jsp" %> +<% + // If we don't have a valid connection then proceed to login + XMPPConnection conn = (XMPPConnection) session.getAttribute("connection"); + if (conn == null || !conn.isConnected()) { + response.sendRedirect("login.jsp"); + return; + } + Roster roster = conn.getRoster(); + + // Get parameters + String action = getParameter(request, "action"); + String user = getParameter(request, "user"); + String groupName = getParameter(request, "group"); + + // Removes the selected user from the roster (and all the groups) + if ("rosterDelete".equals(action)) { + RosterEntry entry = roster.getEntry(user); + roster.removeEntry(entry); + response.sendRedirect("viewRoster.jsp"); + return; + } + + // Removes the selected user from the selected group + if ("groupDelete".equals(action)) { + RosterEntry entry = roster.getEntry(user); + RosterGroup rosterGroup = roster.getGroup(groupName); + rosterGroup.removeEntry(entry); + response.sendRedirect("viewRoster.jsp"); + return; + } + + // Close the connection to the XMPP server + if ("close".equals(action)) { + conn.close(); + session.invalidate(); + response.sendRedirect("login.jsp"); + return; + } +%> + + +Viewing roster + + + + + + + + + + + + +
<%= StringUtils.parseName(conn.getUser())%>'s roster + + + + + +
 Refresh rosterClose connection
+ + + + +
+ + + + + + +
Roster entries
+ <% for (Iterator groups = roster.getGroups(); groups.hasNext();) { + RosterGroup group = (RosterGroup)groups.next();%> + + + + + + + + + + <% for (Iterator it = group.getEntries(); it.hasNext();) { + RosterEntry entry = (RosterEntry)it.next();%> + + + + + + + + + <% }%> + <% }%> + + + + + + + + + + <% for (Iterator it = roster.getUnfiledEntries(); it.hasNext();) { + RosterEntry entry = (RosterEntry)it.next();%> + + + + + + + + + <% }%> +
Group: + <%= group.getName()%>
UserNameSubscriptionAdd contact to group
<%= entry.getUser()%><%= entry.getName()%><%= entry.getType()%>Move entry to other groupRemove contact from the groupRemove contact from the roster
Unfiled + entries
UserNameSubscriptionAdd contact
<%= entry.getUser()%><%= entry.getName()%><%= entry.getType()%>Move entry to a group Remove contact from roster
  + + + + + + +
Presences +
+ + + + + + + + + + <% for (Iterator entries = roster.getEntries(); entries.hasNext();) { + RosterEntry entry = (RosterEntry)entries.next(); + Iterator presences = roster.getPresences(entry.getUser()); + if (presences != null) { + while (presences.hasNext()) { + Presence presence = (Presence)presences.next(); %> + + + + + + + <% }%> + <% }%> + <% }%> + + + + + + + + + + <% // Show other presences of the current user + Iterator presences = roster.getPresences(conn.getUser()); + if (presences != null) { + while (presences.hasNext()) { + Presence presence = (Presence)presences.next(); %> + + + + + + + <% }%> + <% }%> +
Rosterīs presences
UserModeType 
<%= presence.getFrom()%><%= presence.getMode()%><%= presence.getType()%>Chat
My other resources
UserModeType 
<%= presence.getFrom()%><%= presence.getMode()%><%= presence.getType()%>Chat
+ +