1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.chain.web.servlet;
18
19
20 import java.util.ArrayList;
21 import java.util.Collection;
22 import java.util.Enumeration;
23 import java.util.HashSet;
24 import java.util.Iterator;
25 import java.util.List;
26 import java.util.Map;
27 import java.util.Set;
28 import javax.servlet.http.HttpServletRequest;
29 import org.apache.commons.chain.web.MapEntry;
30
31
32
33
34
35
36
37
38
39
40 final class ServletHeaderValuesMap implements Map {
41
42
43 public ServletHeaderValuesMap(HttpServletRequest request) {
44 this.request = request;
45 }
46
47
48 private HttpServletRequest request = null;
49
50
51 public void clear() {
52 throw new UnsupportedOperationException();
53 }
54
55
56 public boolean containsKey(Object key) {
57 return (request.getHeader(key(key)) != null);
58 }
59
60
61 public boolean containsValue(Object value) {
62 if (!(value instanceof String[])) {
63 return (false);
64 }
65 String[] test = (String[]) value;
66 Iterator values = values().iterator();
67 while (values.hasNext()) {
68 String[] actual = (String[]) values.next();
69 if (test.length == actual.length) {
70 boolean matched = true;
71 for (int i = 0; i < test.length; i++) {
72 if (!test[i].equals(actual[i])) {
73 matched = false;
74 break;
75 }
76 }
77 if (matched) {
78 return (true);
79 }
80 }
81 }
82 return (false);
83 }
84
85
86 public Set entrySet() {
87 Set set = new HashSet();
88 Enumeration keys = request.getHeaderNames();
89 String key;
90 while (keys.hasMoreElements()) {
91 key = (String) keys.nextElement();
92 set.add(new MapEntry(key, request.getHeaders(key), false));
93 }
94 return (set);
95 }
96
97
98 public boolean equals(Object o) {
99 return (request.equals(o));
100 }
101
102
103 public Object get(Object key) {
104 List list = new ArrayList();
105 Enumeration values = request.getHeaders(key(key));
106 while (values.hasMoreElements()) {
107 list.add((String) values.nextElement());
108 }
109 return (((String[]) list.toArray(new String[list.size()])));
110 }
111
112
113 public int hashCode() {
114 return (request.hashCode());
115 }
116
117
118 public boolean isEmpty() {
119 return (size() < 1);
120 }
121
122
123 public Set keySet() {
124 Set set = new HashSet();
125 Enumeration keys = request.getHeaderNames();
126 while (keys.hasMoreElements()) {
127 set.add(keys.nextElement());
128 }
129 return (set);
130 }
131
132
133 public Object put(Object key, Object value) {
134 throw new UnsupportedOperationException();
135 }
136
137
138 public void putAll(Map map) {
139 throw new UnsupportedOperationException();
140 }
141
142
143 public Object remove(Object key) {
144 throw new UnsupportedOperationException();
145 }
146
147
148 public int size() {
149 int n = 0;
150 Enumeration keys = request.getHeaderNames();
151 while (keys.hasMoreElements()) {
152 keys.nextElement();
153 n++;
154 }
155 return (n);
156 }
157
158
159 public Collection values() {
160 List list = new ArrayList();
161 Enumeration keys = request.getHeaderNames();
162 while (keys.hasMoreElements()) {
163 String key = (String) keys.nextElement();
164 List list1 = new ArrayList();
165 Enumeration values = request.getHeaders(key);
166 while (values.hasMoreElements()) {
167 list1.add((String) values.nextElement());
168 }
169 list.add(((String[]) list1.toArray(new String[list1.size()])));
170 }
171 return (list);
172 }
173
174
175 private String key(Object key) {
176 if (key == null) {
177 throw new IllegalArgumentException();
178 } else if (key instanceof String) {
179 return ((String) key);
180 } else {
181 return (key.toString());
182 }
183 }
184
185
186 }