1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.portals.bridges.jsf;
18
19 import javax.servlet.http.Cookie;
20 import javax.servlet.http.HttpServletRequest;
21 import java.util.Enumeration;
22 import java.util.Map;
23
24 /***
25 * @author Apache MyFaces team
26 */
27 public class ServletCookieMap extends AbstractAttributeMap
28 {
29 private static final Cookie[] EMPTY_ARRAY = new Cookie[0];
30
31 final HttpServletRequest _httpServletRequest;
32
33 ServletCookieMap(HttpServletRequest httpServletRequest)
34 {
35 _httpServletRequest = httpServletRequest;
36 }
37
38 public void clear()
39 {
40 throw new UnsupportedOperationException(
41 "Cannot clear HttpRequest Cookies");
42 }
43
44 public boolean containsKey(Object key)
45 {
46 Cookie[] cookies = _httpServletRequest.getCookies();
47 if (cookies == null) return false;
48 for (int i = 0, len = cookies.length; i < len; i++)
49 {
50 if (cookies[i].getName().equals(key))
51 {
52 return true;
53 }
54 }
55
56 return false;
57 }
58
59 public boolean containsValue(Object findValue)
60 {
61 if (findValue == null)
62 {
63 return false;
64 }
65
66 Cookie[] cookies = _httpServletRequest.getCookies();
67 if (cookies == null) return false;
68 for (int i = 0, len = cookies.length; i < len; i++)
69 {
70 if (findValue.equals(cookies[i]))
71 {
72 return true;
73 }
74 }
75
76 return false;
77 }
78
79 public boolean isEmpty()
80 {
81 Cookie[] cookies = _httpServletRequest.getCookies();
82 return cookies == null || cookies.length == 0;
83 }
84
85 public int size()
86 {
87 Cookie[] cookies = _httpServletRequest.getCookies();
88 return cookies == null ? 0 : cookies.length;
89 }
90
91 public void putAll(Map t)
92 {
93 throw new UnsupportedOperationException();
94 }
95
96
97 protected Object getAttribute(String key)
98 {
99 Cookie[] cookies = _httpServletRequest.getCookies();
100 if (cookies == null) return null;
101 for (int i = 0, len = cookies.length; i < len; i++)
102 {
103 if (cookies[i].getName().equals(key))
104 {
105 return cookies[i];
106 }
107 }
108
109 return null;
110 }
111
112 protected void setAttribute(String key, Object value)
113 {
114 throw new UnsupportedOperationException(
115 "Cannot set HttpRequest Cookies");
116 }
117
118 protected void removeAttribute(String key)
119 {
120 throw new UnsupportedOperationException(
121 "Cannot remove HttpRequest Cookies");
122 }
123
124 protected Enumeration getAttributeNames()
125 {
126 Cookie[] cookies = _httpServletRequest.getCookies();
127 if (cookies == null)
128 {
129 return new CookieNameEnumeration(EMPTY_ARRAY);
130 }
131 else
132 {
133 return new CookieNameEnumeration(cookies);
134 }
135 }
136
137 private static class CookieNameEnumeration implements Enumeration {
138 private final Cookie[] _cookies;
139 private final int _length;
140 private int _index;
141
142 public CookieNameEnumeration(Cookie[] cookies)
143 {
144 _cookies = cookies;
145 _length = cookies.length;
146 }
147
148 public boolean hasMoreElements()
149 {
150 return _index < _length;
151 }
152
153 public Object nextElement()
154 {
155 return _cookies[_index++].getName();
156 }
157 }
158 }