Commit cff4776d authored by Gaston Dombiak's avatar Gaston Dombiak Committed by gaston

First implementation. JM-234


git-svn-id: http://svn.igniterealtime.org/svn/repos/messenger/trunk@1665 b35dd754-fafc-0310-a699-88a17e54d16e
parent 686f9fd6
......@@ -11,29 +11,72 @@
package org.jivesoftware.messenger.plugin.presence;
import org.jivesoftware.messenger.XMPPServer;
import org.jivesoftware.messenger.user.User;
import org.jivesoftware.messenger.user.UserNotFoundException;
import org.xmpp.packet.JID;
import org.xmpp.packet.PacketError;
import org.xmpp.packet.Presence;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* The XMLPresenceProvider provides information about the users presence in XML format.
* The returned XML format has the following structure:
*
*
* The returned XML will include the last known presence of the user. If the user is offline
* then the unavailable presence will be recreated with the last known presence status.
*
* @author Gaston Dombiak
*
*/
class XMLPresenceProvider extends PresenceInfoProvider {
public void sendInfo(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Presence presence) {
//TODO Implement
public void sendInfo(HttpServletRequest request, HttpServletResponse response,
Presence presence) throws IOException {
response.setContentType("text/xml");
PrintWriter out = response.getWriter();
if (presence == null) {
// Recreate the unavailable presence with the last known status
String username = request.getParameter("username");
presence = new Presence(Presence.Type.unavailable);
XMPPServer server = XMPPServer.getInstance();
try {
User user = server.getUserManager().getUser(username);
String status = server.getPresenceManager().getLastPresenceStatus(user);
if (status != null) {
presence.setStatus(status);
}
}
catch (UserNotFoundException e) {}
presence.setFrom(server.createJID(username, null));
}
out.println(presence.toXML());
out.flush();
}
public void sendUserNotFound(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//TODO Implement
public void sendUserNotFound(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType("text/xml");
PrintWriter out = response.getWriter();
// Send a forbidden presence
Presence presence = new Presence();
presence.setError(PacketError.Condition.forbidden);
String username = request.getParameter("username");
if (username != null) {
try {
presence.setFrom(XMPPServer.getInstance().createJID(username, null));
}
catch (Exception e) {}
}
String sender = request.getParameter("sender");
if (sender != null) {
try {
presence.setTo(new JID(sender));
}
catch (Exception e) {}
}
out.println(presence.toXML());
out.flush();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment