View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package com.ibatis.struts.httpmap;
18  
19  import com.ibatis.struts.httpmap.BaseHttpMap;
20  
21  import javax.servlet.http.Cookie;
22  import javax.servlet.http.HttpServletRequest;
23  import java.util.Enumeration;
24  
25  /***
26   * Map to wrap cookie names and values (READ ONLY).
27   * <p/>
28   * Date: Mar 11, 2004 11:31:35 PM
29   *
30   * @author Clinton Begin
31   */
32  public class CookieMap extends BaseHttpMap {
33  
34    private Cookie[] cookies;
35  
36    public CookieMap(HttpServletRequest request) {
37      cookies = request.getCookies();
38    }
39  
40    protected Enumeration getNames() {
41      return new CookieEnumerator(cookies);
42    }
43  
44    protected Object getValue(Object key) {
45      for (int i = 0; i < cookies.length; i++) {
46        if (key.equals(cookies[i].getName())) {
47          return cookies[i].getValue();
48        }
49      }
50      return null;
51    }
52  
53    protected void putValue(Object key, Object value) {
54      throw new UnsupportedOperationException();
55    }
56  
57    protected void removeValue(Object key) {
58      throw new UnsupportedOperationException();
59    }
60  
61    /***
62     * Cookie Enumerator Class
63     */
64    private class CookieEnumerator implements Enumeration {
65  
66      private int i = 0;
67  
68      private Cookie[] cookieArray;
69  
70      public CookieEnumerator(Cookie[] cookies) {
71        this.cookieArray = cookies;
72      }
73  
74      public synchronized boolean hasMoreElements() {
75        return cookieArray.length > i;
76      }
77  
78      public synchronized Object nextElement() {
79        Object element = cookieArray[i];
80        i++;
81        return element;
82      }
83  
84    }
85  
86  }