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.ServletContext;
29 import org.apache.commons.chain.web.MapEntry;
30
31
32
33
34
35
36
37
38
39
40 final class ServletApplicationScopeMap implements Map {
41
42
43 public ServletApplicationScopeMap(ServletContext context) {
44 this.context = context;
45 }
46
47
48 private ServletContext context = null;
49
50
51 public void clear() {
52 Iterator keys = keySet().iterator();
53 while (keys.hasNext()) {
54 context.removeAttribute((String) keys.next());
55 }
56 }
57
58
59 public boolean containsKey(Object key) {
60 return (context.getAttribute(key(key)) != null);
61 }
62
63
64 public boolean containsValue(Object value) {
65 if (value == null) {
66 return (false);
67 }
68 Enumeration keys = context.getAttributeNames();
69 while (keys.hasMoreElements()) {
70 Object next = context.getAttribute((String) keys.nextElement());
71 if (value.equals(next)) {
72 return (true);
73 }
74 }
75 return (false);
76 }
77
78
79 public Set entrySet() {
80 Set set = new HashSet();
81 Enumeration keys = context.getAttributeNames();
82 String key;
83 while (keys.hasMoreElements()) {
84 key = (String)keys.nextElement();
85 set.add(new MapEntry(key, context.getAttribute(key), true));
86 }
87 return (set);
88 }
89
90
91 public boolean equals(Object o) {
92 return (context.equals(o));
93 }
94
95
96 public Object get(Object key) {
97 return (context.getAttribute(key(key)));
98 }
99
100
101 public int hashCode() {
102 return (context.hashCode());
103 }
104
105
106 public boolean isEmpty() {
107 return (size() < 1);
108 }
109
110
111 public Set keySet() {
112 Set set = new HashSet();
113 Enumeration keys = context.getAttributeNames();
114 while (keys.hasMoreElements()) {
115 set.add(keys.nextElement());
116 }
117 return (set);
118 }
119
120
121 public Object put(Object key, Object value) {
122 if (value == null) {
123 return (remove(key));
124 }
125 String skey = key(key);
126 Object previous = context.getAttribute(skey);
127 context.setAttribute(skey, value);
128 return (previous);
129 }
130
131
132 public void putAll(Map map) {
133 Iterator entries = map.entrySet().iterator();
134 while (entries.hasNext()) {
135 Map.Entry entry = (Map.Entry)entries.next();
136 put(entry.getKey(), entry.getValue());
137 }
138 }
139
140
141 public Object remove(Object key) {
142 String skey = key(key);
143 Object previous = context.getAttribute(skey);
144 context.removeAttribute(skey);
145 return (previous);
146 }
147
148
149 public int size() {
150 int n = 0;
151 Enumeration keys = context.getAttributeNames();
152 while (keys.hasMoreElements()) {
153 keys.nextElement();
154 n++;
155 }
156 return (n);
157 }
158
159
160 public Collection values() {
161 List list = new ArrayList();
162 Enumeration keys = context.getAttributeNames();
163 while (keys.hasMoreElements()) {
164 list.add(context.getAttribute((String) keys.nextElement()));
165 }
166 return (list);
167 }
168
169
170 private String key(Object key) {
171 if (key == null) {
172 throw new IllegalArgumentException();
173 } else if (key instanceof String) {
174 return ((String) key);
175 } else {
176 return (key.toString());
177 }
178 }
179
180
181 }