1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.myfaces.webapp.filter.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
30 /**
31 * HttpServletRequest header values (multi-value headers) as Map of String[].
32 *
33 * <p>
34 * NOTE: This class was copied from myfaces impl
35 * org.apache.myfaces.context.servlet and it is
36 * used by TomahawkFacesContextWrapper. By that reason, it could change
37 * in the future.
38 * </p>
39 *
40 * @since 1.1.7
41 * @author Anton Koinov (latest modification by $Author: lu4242 $)
42 * @version $Revision: 691871 $ $Date: 2008-09-03 23:32:08 -0500 (Wed, 03 Sep 2008) $
43 */
44 public class RequestHeaderValuesMap extends AbstractAttributeMap
45 {
46 private final HttpServletRequest _httpServletRequest;
47 private final Map _valueCache = new HashMap();
48
49 RequestHeaderValuesMap(HttpServletRequest httpServletRequest)
50 {
51 _httpServletRequest = httpServletRequest;
52 }
53
54 protected Object getAttribute(String key)
55 {
56 Object ret = _valueCache.get(key);
57 if (ret == null)
58 {
59 _valueCache.put(key, ret = toArray(_httpServletRequest
60 .getHeaders(key)));
61 }
62
63 return ret;
64 }
65
66 protected void setAttribute(String key, Object value)
67 {
68 throw new UnsupportedOperationException(
69 "Cannot set HttpServletRequest HeaderValues");
70 }
71
72 protected void removeAttribute(String key)
73 {
74 throw new UnsupportedOperationException(
75 "Cannot remove HttpServletRequest HeaderValues");
76 }
77
78 protected Enumeration getAttributeNames()
79 {
80 return _httpServletRequest.getHeaderNames();
81 }
82
83 private String[] toArray(Enumeration e)
84 {
85 List ret = new ArrayList();
86
87 while (e.hasMoreElements())
88 {
89 ret.add(e.nextElement());
90 }
91
92 return (String[]) ret.toArray(new String[ret.size()]);
93 }
94 }