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
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 }