Package xmpp

Source Code of xmpp.PresenceServlet

package xmpp;

import java.io.IOException;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.*;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.xmpp.JID;
import com.google.appengine.api.xmpp.Presence;
import com.google.appengine.api.xmpp.PresenceShow;
import com.google.appengine.api.xmpp.PresenceType;
import com.google.appengine.api.xmpp.XMPPService;
import com.google.appengine.api.xmpp.XMPPServiceFactory;


@SuppressWarnings("serial")
public class PresenceServlet extends HttpServlet {
    private static final Logger log =
        Logger.getLogger(MainPageServlet.class.getName());

    public void doPost(HttpServletRequest req,
                       HttpServletResponse resp)
        throws IOException, ServletException {

        log.info("PresenceServlet: ..." + req.getPathInfo());

        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        XMPPService xmpp = XMPPServiceFactory.getXMPPService();

        Presence presence = xmpp.parsePresence(req);
        JID userJID = presence.getFromJid();

        if (presence.getPresenceType() == PresenceType.AVAILABLE ||
            presence.getPresenceType() == PresenceType.UNAVAILABLE) {
            // Store the user's presence.
            Entity userEntity = MainPageServlet.getUserEntity(userJID);
            userEntity.setProperty("is_available",
                                   presence.getPresenceType() == PresenceType.AVAILABLE);

            // Interpret no show value or "none" as "chat".
            if (presence.getPresenceShow() == null ||
                presence.getPresenceShow() == PresenceShow.NONE) {
                userEntity.setProperty("presence_show", "chat");
            } else {
                userEntity.setProperty("presence_show",
                                       presence.getPresenceShow().toString().toLowerCase());
            }

            userEntity.setProperty("status_message", presence.getStatus());
            datastore.put(userEntity);

        } else if (presence.getPresenceType() == PresenceType.PROBE) {
            // Respond to the probe by sending the app's presence.
            Entity statusEntity = MainPageServlet.getStatusEntity();
            xmpp.sendPresence(userJID,
                              ((Boolean)statusEntity.getProperty("presence_available")) ?
                              PresenceType.AVAILABLE : PresenceType.UNAVAILABLE,
                              PresenceShow.valueOf(((String)statusEntity.getProperty("presence_show")).toUpperCase()),
                              (String)statusEntity.getProperty("status_message"));
        }
    }
}
TOP

Related Classes of xmpp.PresenceServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.