package org.kvj.lima1.gae.sync.rest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import javax.servlet.ServletException; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.codehaus.jettison.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class OAuthSecuredServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected Logger log = LoggerFactory.getLogger(getClass()); protected void writeJSON(JSONObject object, ServletResponse resp) throws IOException { resp.setContentType("application/json"); OutputStreamWriter writer = new OutputStreamWriter( resp.getOutputStream(), "utf-8"); writer.write(object.toString()); writer.flush(); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { JSONObject object = get(req); writeJSON(object, resp); } catch (Exception e) { log.error("Error in REST", e); throw new ServletException(e); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { BufferedReader reader = new BufferedReader(new InputStreamReader( req.getInputStream(), "utf-8")); StringBuilder builder = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { builder.append(line); } reader.close(); log.info("Parse POST body: {}", builder); JSONObject object = new JSONObject(builder.toString()); JSONObject outObject = post(object, req); if (null == outObject) { outObject = new JSONObject(); } writeJSON(outObject, resp); } catch (Exception e) { log.error("Error in REST", e); throw new ServletException(e); } } protected JSONObject get(HttpServletRequest req) throws Exception { throw new Exception("Not supported"); } protected JSONObject post(JSONObject in, HttpServletRequest req) throws Exception { throw new Exception("Not supported"); } }