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
;
11 * {@code LocalHttpRequestEnvironment} is a simple {@link LocalEnvironment} for
12 * use during http request handling.
14 * This sets {@link LocalEnvironment#getAttributes()} from
16 * <li> Authentication details from the cookie that is maintained
17 * by the stub implementation of {@link UserService}
19 * <li> The passed in {@link ModulesFilterHelper}. </li>
22 public class LocalHttpRequestEnvironment
extends LocalEnvironment
{
24 * The name of the HTTP header specifying the default namespace
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
);
67 public boolean isLoggedIn() {
68 return loginCookieData
!= null;
72 public String
getEmail() {
73 if (loginCookieData
== null) {
76 return loginCookieData
.getEmail();
81 public boolean isAdmin() {
82 if (loginCookieData
== null) {
85 return loginCookieData
.isAdmin();