textpresenceprovider.java

来自「基于Jabber协议的即时消息服务器」· Java 代码 · 共 82 行

JAVA
82
字号
/** * $Revision$ * $Date$ * * Copyright (C) 2006 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution. */package org.jivesoftware.wildfire.plugin.presence;import org.xmpp.packet.Presence;import org.xmpp.packet.JID;import org.xmpp.packet.PacketError;import org.jivesoftware.wildfire.XMPPServer;import org.jivesoftware.wildfire.user.User;import org.jivesoftware.wildfire.user.UserNotFoundException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;/** * The TextPresenceProvider provides the user's presence status in plain-text format. * The returned text is the last known presence status of the user. If the user is offline * then the unavailable presence will be recreated with the last known presence status. * * @author Greg Unrein */class TextPresenceProvider extends PresenceInfoProvider {    public void sendInfo(HttpServletRequest request, HttpServletResponse response,            Presence presence) throws IOException {        response.setContentType("text/plain");        PrintWriter out = response.getWriter();        if (presence == null) {            // Recreate the unavailable presence with the last known status            JID targetJID = new JID(request.getParameter("jid"));            presence = new Presence(Presence.Type.unavailable);            XMPPServer server = XMPPServer.getInstance();            try {                User user = server.getUserManager().getUser(targetJID.getNode());                String status = server.getPresenceManager().getLastPresenceStatus(user);                if (status != null) {                    presence.setStatus(status);                }            }            catch (UserNotFoundException e) {                // Ignore.            }            presence.setFrom(targetJID);        }        out.println(presence.getStatus());        out.flush();    }    public void sendUserNotFound(HttpServletRequest request, HttpServletResponse response)            throws IOException {        response.setContentType("text/plain");        PrintWriter out = response.getWriter();        // Send a forbidden presence        Presence presence = new Presence();        presence.setError(PacketError.Condition.forbidden);        try {            presence.setFrom(new JID(request.getParameter("jid")));        }        catch (Exception e) {            // Ignore.        }        try {            presence.setTo(new JID(request.getParameter("req_jid")));        }        catch (Exception e) {            // Ignore.        }        out.println(presence.getStatus());        out.flush();    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?