Revision created by MOE tool push_codebase.
[gae.git] / java / src / main / com / google / appengine / tools / development / LocalHttpRequestEnvironment.java
blobb9b0aacadb6da3a53dd5ce228287b6a7fc27cdbb
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} that
12 * retrieves authentication details from the cookie that is maintained by the
13 * stub implementation of {@link UserService}.
16 public class LocalHttpRequestEnvironment extends LocalEnvironment {
17 /**
18 * The name of the HTTP header specifying the default namespace
19 * for API calls.
21 static final String DEFAULT_NAMESPACE_HEADER = "X-AppEngine-Default-Namespace";
22 static final String CURRENT_NAMESPACE_HEADER = "X-AppEngine-Current-Namespace";
23 private static final String CURRENT_NAMESPACE_KEY =
24 NamespaceManager.class.getName() + ".currentNamespace";
25 private static final String APPS_NAMESPACE_KEY =
26 NamespaceManager.class.getName() + ".appsNamespace";
28 private static final String USER_ID_KEY =
29 "com.google.appengine.api.users.UserService.user_id_key";
30 private static final String USER_ORGANIZATION_KEY =
31 "com.google.appengine.api.users.UserService.user_organization";
32 private static final String X_APPENGINE_QUEUE_NAME = "X-AppEngine-QueueName";
34 private final LoginCookieUtils.CookieData loginCookieData;
36 public LocalHttpRequestEnvironment(String appId, String serverName, String majorVersionId,
37 int instance, HttpServletRequest request, Long deadlineMillis) {
38 super(appId, serverName, majorVersionId, instance, deadlineMillis);
39 this.loginCookieData = LoginCookieUtils.getCookieData(request);
40 String requestNamespace = request.getHeader(DEFAULT_NAMESPACE_HEADER);
41 if (requestNamespace != null) {
42 attributes.put(APPS_NAMESPACE_KEY, requestNamespace);
44 String currentNamespace = request.getHeader(CURRENT_NAMESPACE_HEADER);
45 if (currentNamespace != null) {
46 attributes.put(CURRENT_NAMESPACE_KEY, currentNamespace);
48 if (loginCookieData != null) {
49 attributes.put(USER_ID_KEY, loginCookieData.getUserId());
50 attributes.put(USER_ORGANIZATION_KEY, "");
52 if (request.getHeader(X_APPENGINE_QUEUE_NAME) != null) {
53 attributes.put(ApiProxyLocalImpl.IS_OFFLINE_REQUEST_KEY, Boolean.TRUE);
55 attributes.put(HTTP_SERVLET_REQUEST, request);
58 @Override
59 public boolean isLoggedIn() {
60 return loginCookieData != null;
63 @Override
64 public String getEmail() {
65 if (loginCookieData == null) {
66 return null;
67 } else {
68 return loginCookieData.getEmail();
72 @Override
73 public boolean isAdmin() {
74 if (loginCookieData == null) {
75 return false;
76 } else {
77 return loginCookieData.isAdmin();