View Javadoc

1   package com.atlassian.seraph.cookie;
2   
3   import com.atlassian.seraph.config.SecurityConfigFactory;
4   import org.apache.log4j.Logger;
5   
6   import javax.servlet.http.Cookie;
7   import javax.servlet.http.HttpServletRequest;
8   import javax.servlet.http.HttpServletResponse;
9   
10  public class DefaultCookieHandler implements CookieHandler
11  {
12      private static final Logger log = Logger.getLogger(DefaultCookieHandler.class);
13  
14      public void invalidateCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
15              String path)
16      {
17          if (log.isDebugEnabled())
18          {
19              log.debug("invalidateCookie " + cookieName + " for path " + path);
20          }
21          setCookie(request, response, cookieName, null, 0, path);
22      }
23  
24      public Cookie getCookie(HttpServletRequest request, String name)
25      {
26          final boolean dbg = log.isDebugEnabled();
27          if (dbg) {
28              log.debug("Looking for a cookie named : '" + name + "'");
29          }
30          final Cookie cookies[] = request.getCookies();
31          if (cookies == null || name == null || name.length() == 0)
32          {
33              if (dbg)
34              {
35                  if (cookies == null) {
36                      log.debug("The Cookies array in the HTTP request is null");
37                  }
38              }
39              return null;
40          }
41          //Otherwise, we have to do a linear scan for the cookie.
42          for (int i = 0; i < cookies.length; i++)
43          {
44              if (cookies[i].getName().equals(name))
45              {
46                  return cookies[i];
47              }
48          }
49          if (dbg)
50          {
51              log.debug("No cookie was found with name :" + name);
52          }
53          return null;
54      }
55  
56      public Cookie setCookie(HttpServletRequest request, HttpServletResponse response, String name, String value,
57              int maxAge, String path)
58      {
59          final boolean isInSecureCookie = SecurityConfigFactory.getInstance().isInsecureCookie();
60          if (log.isDebugEnabled())
61          {
62              log.debug("setCookie " + name + ":" + value + " path : " + path + " maxAge : " + maxAge + (isInSecureCookie ? " insecure" : " secure"));
63          }
64          Cookie cookie = new Cookie(name, value);
65          cookie.setMaxAge(maxAge);
66          cookie.setPath(path);
67          if (!isInSecureCookie)
68          {
69              cookie.setSecure(request.isSecure());
70          }
71  
72          response.addCookie(cookie);
73  
74          return cookie;
75      }
76  
77      public String getCookieValue(HttpServletRequest request, String name)
78      {
79          Cookie cookie = getCookie(request, name);
80          if (cookie != null)
81          {
82              return cookie.getValue();
83          }
84          return null;
85      }
86  }