@Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); // Basic XSRF protection if (req.getHeader("X-Same-Domain") == null) { // TODO: Enable at consumer launch // resp.setStatus(400); // resp.getWriter().println(ERROR_STATUS + " (Missing X-Same-Domain header)"); // return; } String deviceRegistrationID = req.getParameter("devregid"); if (deviceRegistrationID == null) { resp.setStatus(400); resp.getWriter().println(ERROR_STATUS + "(Must specify devregid)"); return; } User user = checkUser(req, resp, true); if (user != null) { Key key = KeyFactory.createKey(DeviceInfo.class.getSimpleName(), user.getEmail()); DeviceInfo device = new DeviceInfo(key, deviceRegistrationID); // Context-shared PMF. PersistenceManager pm = C2DMessaging.getPMF(getServletContext()).getPersistenceManager(); try { pm.makePersistent(device); resp.getWriter().println(OK_STATUS); } catch (Exception e) { resp.setStatus(500); resp.getWriter().println(ERROR_STATUS + " (Error registering device)"); log.warning("Error registering device."); } finally { pm.close(); } } }