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 java.util.ArrayList;
20 import java.util.Enumeration;
21 import java.util.HashMap;
22 import java.util.List;
23 import java.util.Map;
24
25 import javax.servlet.http.HttpServletRequest;
26
27
28 /***
29 * HttpServletRequest header values (multi-value headers) as Map of String[].
30 * @author Apache MyFaces team
31 */
32 public class ServletRequestHeaderValuesMap extends AbstractAttributeMap
33 {
34 private final HttpServletRequest _httpServletRequest;
35 private final Map _valueCache = new HashMap();
36
37 ServletRequestHeaderValuesMap(HttpServletRequest httpServletRequest)
38 {
39 _httpServletRequest = httpServletRequest;
40 }
41
42 protected Object getAttribute(String key)
43 {
44 Object ret = _valueCache.get(key);
45 if (ret == null)
46 {
47 _valueCache.put(key, ret = toArray(_httpServletRequest
48 .getHeaders(key)));
49 }
50
51 return ret;
52 }
53
54 protected void setAttribute(String key, Object value)
55 {
56 throw new UnsupportedOperationException(
57 "Cannot set HttpServletRequest HeaderValues");
58 }
59
60 protected void removeAttribute(String key)
61 {
62 throw new UnsupportedOperationException(
63 "Cannot remove HttpServletRequest HeaderValues");
64 }
65
66 protected Enumeration getAttributeNames()
67 {
68 return _httpServletRequest.getHeaderNames();
69 }
70
71 private String[] toArray(Enumeration e)
72 {
73 List ret = new ArrayList();
74
75 while (e.hasMoreElements())
76 {
77 ret.add(e.nextElement());
78 }
79
80 return (String[]) ret.toArray(new String[ret.size()]);
81 }
82 }