1 /*
2  * Copyright (c) 2018 Google Inc. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you
5  * may not use this file except in compliance with the License. You may
6  * obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13  * implied. See the License for the specific language governing
14  * permissions and limitations under the License.
15  */
16 
17 package com.android.vts.api;
18 
19 import com.google.apphosting.api.ApiProxy;
20 import java.util.Properties;
21 import java.util.logging.Logger;
22 import javax.servlet.ServletConfig;
23 import javax.servlet.ServletException;
24 import javax.servlet.http.HttpServlet;
25 import javax.servlet.http.HttpServletResponse;
26 
27 /** An abstract class to be subclassed to create API Servlet */
28 public class BaseApiServlet extends HttpServlet {
29 
30     private static final Logger logger = Logger.getLogger(BaseApiServlet.class.getName());
31 
32     /** System Configuration Property class */
33     protected Properties systemConfigProp = new Properties();
34 
35     /** Appengine server host name */
36     protected String hostName;
37 
38     /**
39      * This variable is for maximum number of entities per transaction You can find the detail here
40      * (https://cloud.google.com/datastore/docs/concepts/limits)
41      */
42     protected int MAX_ENTITY_SIZE_PER_TRANSACTION = 300;
43 
44     @Override
init(ServletConfig cfg)45     public void init(ServletConfig cfg) throws ServletException {
46         super.init(cfg);
47 
48         systemConfigProp =
49                 Properties.class.cast(cfg.getServletContext().getAttribute("systemConfigProp"));
50 
51         this.MAX_ENTITY_SIZE_PER_TRANSACTION =
52                 Integer.parseInt(systemConfigProp.getProperty("datastore.maxEntitySize"));
53 
54         ApiProxy.Environment env = ApiProxy.getCurrentEnvironment();
55         hostName =
56                 env.getAttributes()
57                         .get("com.google.appengine.runtime.default_version_hostname")
58                         .toString();
59     }
60 
setAccessControlHeaders(HttpServletResponse resp)61     protected void setAccessControlHeaders(HttpServletResponse resp) {
62         resp.setHeader("Access-Control-Allow-Origin", hostName);
63         resp.setHeader("Access-Control-Allow-Methods", "GET, PUT, POST, OPTIONS, DELETE");
64         resp.addHeader("Access-Control-Allow-Headers", "Content-Type");
65         resp.addHeader("Access-Control-Max-Age", "86400");
66     }
67 }
68