extensions/net.sf.basedb.opengrid/trunk/src/net/sf/basedb/opengrid/servlet/ServletUtil.java

Code
Comments
Other
Rev Date Author Line
4314 20 Jan 17 nicklas 1 package net.sf.basedb.opengrid.servlet;
4314 20 Jan 17 nicklas 2
4314 20 Jan 17 nicklas 3 import java.io.BufferedReader;
4314 20 Jan 17 nicklas 4 import java.io.IOException;
4314 20 Jan 17 nicklas 5 import java.io.InputStreamReader;
4314 20 Jan 17 nicklas 6 import java.io.Reader;
4314 20 Jan 17 nicklas 7 import java.nio.charset.Charset;
4314 20 Jan 17 nicklas 8
4314 20 Jan 17 nicklas 9 import javax.servlet.ServletRequest;
4314 20 Jan 17 nicklas 10 import javax.servlet.http.HttpServletRequest;
4314 20 Jan 17 nicklas 11 import javax.servlet.http.HttpServletResponse;
4314 20 Jan 17 nicklas 12
4314 20 Jan 17 nicklas 13
4314 20 Jan 17 nicklas 14 import org.json.simple.JSONObject;
4314 20 Jan 17 nicklas 15 import org.json.simple.parser.JSONParser;
4314 20 Jan 17 nicklas 16 import org.json.simple.parser.ParseException;
4314 20 Jan 17 nicklas 17
4314 20 Jan 17 nicklas 18 import net.sf.basedb.clients.web.Base;
4314 20 Jan 17 nicklas 19 import net.sf.basedb.clients.web.extensions.ExtensionsControl;
4314 20 Jan 17 nicklas 20 import net.sf.basedb.core.Application;
4314 20 Jan 17 nicklas 21 import net.sf.basedb.core.DbControl;
4314 20 Jan 17 nicklas 22 import net.sf.basedb.core.Permission;
4314 20 Jan 17 nicklas 23 import net.sf.basedb.core.PermissionDeniedException;
4314 20 Jan 17 nicklas 24 import net.sf.basedb.core.SessionControl;
4314 20 Jan 17 nicklas 25
4314 20 Jan 17 nicklas 26 /**
4314 20 Jan 17 nicklas 27   Utility functions for servlets.
4314 20 Jan 17 nicklas 28   @since 1.0
4314 20 Jan 17 nicklas 29 */
4314 20 Jan 17 nicklas 30 public class ServletUtil 
4314 20 Jan 17 nicklas 31 {
4314 20 Jan 17 nicklas 32   
4314 20 Jan 17 nicklas 33   /**
4314 20 Jan 17 nicklas 34     Get an existing session control and check that a user is logged in.
4314 20 Jan 17 nicklas 35   */
4314 20 Jan 17 nicklas 36   public static SessionControl getSessionControl(ServletRequest req)
4314 20 Jan 17 nicklas 37   {
4314 20 Jan 17 nicklas 38     return Application.getSessionControl(req.getParameter("ID"), Base.WEBCLIENT_ID, req.getRemoteAddr(), true);
4314 20 Jan 17 nicklas 39   }
4314 20 Jan 17 nicklas 40   
4314 20 Jan 17 nicklas 41   /**
4314 20 Jan 17 nicklas 42     Set proper response headers for returning a JSON response.
4314 20 Jan 17 nicklas 43     This sets the content type to: application/json;charset=UTF8
4314 20 Jan 17 nicklas 44     and disable caching of the responses.
4314 20 Jan 17 nicklas 45   */
4314 20 Jan 17 nicklas 46   public static void setJsonResponseHeaders(HttpServletResponse resp)
4314 20 Jan 17 nicklas 47   {
4314 20 Jan 17 nicklas 48     resp.setContentType("application/json");
4314 20 Jan 17 nicklas 49     resp.setCharacterEncoding("UTF-8");
4314 20 Jan 17 nicklas 50     resp.setHeader("Cache-Control", "no-cache, max-age=0");
4314 20 Jan 17 nicklas 51   }
4314 20 Jan 17 nicklas 52
4314 20 Jan 17 nicklas 53   /**
4314 20 Jan 17 nicklas 54     Parse the request as JSON data.
4314 20 Jan 17 nicklas 55   */
4314 20 Jan 17 nicklas 56   public static JSONObject parseRequest(HttpServletRequest request)
4314 20 Jan 17 nicklas 57     throws IOException, ParseException
4314 20 Jan 17 nicklas 58   {
4314 20 Jan 17 nicklas 59     Reader reader = new BufferedReader(new InputStreamReader(request.getInputStream(), Charset.forName("UTF-8")));
4314 20 Jan 17 nicklas 60     JSONObject json = (JSONObject)new JSONParser().parse(reader);
4314 20 Jan 17 nicklas 61     return json;
4314 20 Jan 17 nicklas 62   }
4314 20 Jan 17 nicklas 63
4314 20 Jan 17 nicklas 64   /**
4314 20 Jan 17 nicklas 65     Checks if the currently logged in user has permission to manage
4314 20 Jan 17 nicklas 66     Open Grid Clusters (=WRITE permission for the extension system).
4314 20 Jan 17 nicklas 67   */
4314 20 Jan 17 nicklas 68   public static void checkPermission(DbControl dc)
4314 20 Jan 17 nicklas 69   {
4314 20 Jan 17 nicklas 70     if (!ExtensionsControl.get(dc).hasPermission(Permission.WRITE))
4314 20 Jan 17 nicklas 71     {
4314 20 Jan 17 nicklas 72       throw new PermissionDeniedException("You are not allowed to manage Open Grid Clusters.");
4314 20 Jan 17 nicklas 73     }
4314 20 Jan 17 nicklas 74   }
4314 20 Jan 17 nicklas 75 }