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,