1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.context.servlet;
20
21 import java.util.ArrayList;
22 import java.util.Enumeration;
23 import java.util.HashMap;
24 import java.util.List;
25 import java.util.Map;
26
27 import javax.servlet.http.HttpServletRequest;
28
29 import org.apache.myfaces.util.AbstractAttributeMap;
30
31
32
33
34
35
36
37 public final class RequestHeaderValuesMap extends AbstractAttributeMap<String[]>
38 {
39 private final HttpServletRequest _httpServletRequest;
40 private final Map<String, String[]> _valueCache = new HashMap<String, String[]>();
41
42 RequestHeaderValuesMap(final HttpServletRequest httpServletRequest)
43 {
44 _httpServletRequest = httpServletRequest;
45 }
46
47 @Override
48 @SuppressWarnings("unchecked")
49 protected String[] getAttribute(final String key)
50 {
51 String[] ret = _valueCache.get(key);
52 if (ret == null)
53 {
54 ret = toArray(_httpServletRequest.getHeaders(key));
55 _valueCache.put(key, ret);
56 }
57
58 return ret;
59 }
60
61 @Override
62 protected void setAttribute(final String key, final String[] value)
63 {
64 throw new UnsupportedOperationException("Cannot set HttpServletRequest HeaderValues");
65 }
66
67 @Override
68 protected void removeAttribute(final String key)
69 {
70 throw new UnsupportedOperationException("Cannot remove HttpServletRequest HeaderValues");
71 }
72
73 @Override
74 @SuppressWarnings("unchecked")
75 protected Enumeration<String> getAttributeNames()
76 {
77 return _httpServletRequest.getHeaderNames();
78 }
79
80 private String[] toArray(Enumeration<String> e)
81 {
82 List<String> ret = new ArrayList<String>();
83
84 while (e.hasMoreElements())
85 {
86 ret.add(e.nextElement());
87 }
88
89 return ret.toArray(new String[ret.size()]);
90 }
91 }