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} 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
{
18 * The name of the HTTP header specifying the default namespace
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
);
59 public boolean isLoggedIn() {
60 return loginCookieData
!= null;
64 public String
getEmail() {
65 if (loginCookieData
== null) {
68 return loginCookieData
.getEmail();
73 public boolean isAdmin() {
74 if (loginCookieData
== null) {
77 return loginCookieData
.isAdmin();