App Engine SDK 1.8.4 release.
[gae.git] / java / src / main / com / google / appengine / tools / development / LocalHttpRequestEnvironment.java
blob2bc80d838789491b8c734ba84988ca5ae432dc29
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 attributes.put(DevAppServerImpl.MODULES_FILTER_HELPER_PROPERTY, modulesFilterHelper);
66 @Override
67 public boolean isLoggedIn() {
68 return loginCookieData != null;
71 @Override
72 public String getEmail() {
73 if (loginCookieData == null) {
74 return null;
75 } else {
76 return loginCookieData.getEmail();
80 @Override
81 public boolean isAdmin() {
82 if (loginCookieData == null) {
83 return false;
84 } else {
85 return loginCookieData.isAdmin();