View Javadoc
1   package com.atlassian.plugin.refimpl.saldeps;
2   
3   import com.atlassian.plugin.scope.ScopeManager;
4   import org.slf4j.Logger;
5   import org.slf4j.LoggerFactory;
6   
7   import javax.servlet.http.Cookie;
8   import javax.servlet.http.HttpServletRequest;
9   import java.util.Map;
10  
11  import static java.util.Arrays.stream;
12  import static java.util.stream.Collectors.toMap;
13  
14  public class CookieBasedScopeManager implements ScopeManager {
15  
16      private final static String COOKIE_PREFIX = "atlassian.scope.";
17  
18      private static final Logger log = LoggerFactory.getLogger(CookieBasedScopeManager.class);
19  
20      @Override
21      public boolean isScopeActive(String scopeKey) {
22          final HttpServletRequest request = ServletContextThreadLocal.getRequest();
23          if (request != null) {
24              final Cookie[] cookies = ServletContextThreadLocal.getRequest().getCookies();
25              if (cookies != null) {
26                  final Map<String, String> map = stream(cookies).collect(toMap(Cookie::getName, Cookie::getValue));
27                  final String cookieValue = map.get(COOKIE_PREFIX + scopeKey);
28                  if (cookieValue != null) {
29                      log.info("Detected scope cookie for '{}' key", scopeKey);
30                      return Boolean.valueOf(cookieValue);
31                  }
32              } else {
33                  log.info("No cookies were found in request (tumbleweed)");
34              }
35              //false if
36              return false;
37          }
38          //true for all background jobs/threads for now
39          return true;
40      }
41  }