1.9.30 sync.
[gae.git] / java / src / main / com / google / appengine / tools / development / LocalHttpRequestEnvironment.java
blob793411675906bb752883172400c5c80cf02c79a7
1 // Copyright 2009 Google Inc. All Rights Reserved.
3 package com.google.appengine.tools.development;
5 import com.google.appengine.api.NamespaceManager;
6 import com.google.appengine.api.users.dev.LoginCookieUtils;
8 import javax.servlet.http.HttpServletRequest;
10 /**
11 * {@code LocalHttpRequestEnvironment} is a simple {@link LocalEnvironment} for
12 * use during http request handling.
14 * This sets {@link LocalEnvironment#getAttributes()} from
15 * <ol>
16 * <li> Authentication details from the cookie that is maintained
17 * by the stub implementation of {@link UserService}
18 * </li>
19 * <li> The passed in {@link ModulesFilterHelper}. </li>
20 * </ol>
22 public class LocalHttpRequestEnvironment extends LocalEnvironment {
23 /**
24 * The name of the HTTP header specifying the default namespace
25 * for API calls.
27 static final String DEFAULT_NAMESPACE_HEADER = "X-AppEngine-Default-Namespace";
28 static final String CURRENT_NAMESPACE_HEADER = "X-AppEngine-Current-Namespace";
29 private static final String CURRENT_NAMESPACE_KEY =
30 NamespaceManager.class.getName() + ".currentNamespace";
31 private static final String APPS_NAMESPACE_KEY =
32 NamespaceManager.class.getName() + ".appsNamespace";
34 private static final String USER_ID_KEY =
35 "com.google.appengine.api.users.UserService.user_id_key";
36 private static final String USER_ORGANIZATION_KEY =
37 "com.google.appengine.api.users.UserService.user_organization";
38 private static final String X_APPENGINE_QUEUE_NAME = "X-AppEngine-QueueName";
40 private final LoginCookieUtils.CookieData loginCookieData;
42 public LocalHttpRequestEnvironment(String appId, String serverName, String majorVersionId,
43 int instance, Integer port, HttpServletRequest request, Long deadlineMillis,
44 ModulesFilterHelper modulesFilterHelper) {
45 super(appId, serverName, majorVersionId, instance, port, deadlineMillis);
46 this.loginCookieData = LoginCookieUtils.getCookieData(request);
47 String requestNamespace = request.getHeader(DEFAULT_NAMESPACE_HEADER);
48 if (requestNamespace != null) {
49 attributes.put(APPS_NAMESPACE_KEY, requestNamespace);
51 String currentNamespace = request.getHeader(CURRENT_NAMESPACE_HEADER);
52 if (currentNamespace != null) {
53 attributes.put(CURRENT_NAMESPACE_KEY, currentNamespace);
55 if (loginCookieData != null) {
56 attributes.put(USER_ID_KEY, loginCookieData.getUserId());
57 attributes.put(USER_ORGANIZATION_KEY, "");
59 if (request.getHeader(X_APPENGINE_QUEUE_NAME) != null) {
60 attributes.put(ApiProxyLocalImpl.IS_OFFLINE_REQUEST_KEY, Boolean.TRUE);
62 attributes.put(HTTP_SERVLET_REQUEST, request);
63 if (modulesFilterHelper != null) {
64 attributes.put(DevAppServerImpl.MODULES_FILTER_HELPER_PROPERTY, modulesFilterHelper);
68 @Override
69 public boolean isLoggedIn() {
70 return loginCookieData != null;
73 @Override
74 public String getEmail() {
75 if (loginCookieData == null) {
76 return null;
77 } else {
78 return loginCookieData.getEmail();
82 @Override
83 public boolean isAdmin() {
84 if (loginCookieData == null) {
85 return false;
86 } else {
87 return loginCookieData.isAdmin();