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
36 return false;
37 }
38
39 return true;
40 }
41 }