1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.flow.cdi;
20
21 import org.apache.myfaces.cdi.util.CDIUtils;
22 import java.util.Collection;
23 import java.util.Map;
24 import java.util.Set;
25 import javax.enterprise.inject.spi.BeanManager;
26 import org.apache.myfaces.cdi.util.BeanProvider;
27
28
29
30
31
32
33 public class FlowScopeMap implements Map
34 {
35 private BeanManager _beanManager;
36 private String _currentClientWindowFlowId;
37 private FlowScopeBeanHolder _flowScopeBeanHolder;
38 private boolean _initOptional = false;
39
40 public FlowScopeMap(BeanManager beanManager, String currentFlowMapKey)
41 {
42 this._beanManager = beanManager;
43 this._currentClientWindowFlowId = currentFlowMapKey;
44 }
45
46 private FlowScopeBeanHolder getFlowScopeBeanHolder(boolean create)
47 {
48 if (_flowScopeBeanHolder == null)
49 {
50 if (create)
51 {
52 _flowScopeBeanHolder = CDIUtils.lookup(_beanManager,
53 FlowScopeBeanHolder.class);
54 }
55 else if (!_initOptional)
56 {
57 _flowScopeBeanHolder = BeanProvider.getContextualReference(
58 _beanManager, FlowScopeBeanHolder.class, true);
59 _initOptional = true;
60 }
61 }
62 return _flowScopeBeanHolder;
63 }
64
65 public int size()
66 {
67 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(false);
68 if (flowScopeBeanHolder == null)
69 {
70 return 0;
71 }
72 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(_beanManager,
73 _currentClientWindowFlowId, false);
74 if (map == null)
75 {
76 return 0;
77 }
78 return map.size();
79 }
80
81 public boolean isEmpty()
82 {
83 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(false);
84 if (flowScopeBeanHolder == null)
85 {
86 return true;
87 }
88 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(_beanManager,
89 _currentClientWindowFlowId, false);
90 if (map == null)
91 {
92 return true;
93 }
94 return map.isEmpty();
95 }
96
97 public boolean containsKey(Object key)
98 {
99 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(false);
100 if (flowScopeBeanHolder == null)
101 {
102 return false;
103 }
104 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(_beanManager,
105 _currentClientWindowFlowId, false);
106 if (map == null)
107 {
108 return false;
109 }
110 return map.containsKey(key);
111 }
112
113 public boolean containsValue(Object value)
114 {
115 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(false);
116 if (flowScopeBeanHolder == null)
117 {
118 return false;
119 }
120 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(_beanManager,
121 _currentClientWindowFlowId, false);
122 if (map == null)
123 {
124 return false;
125 }
126 return map.containsValue(value);
127 }
128
129 public Object get(Object key)
130 {
131 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(false);
132 if (flowScopeBeanHolder == null)
133 {
134 return null;
135 }
136 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(_beanManager,
137 _currentClientWindowFlowId, false);
138 if (map == null)
139 {
140 return null;
141 }
142 return map.get(key);
143 }
144
145 public Object put(Object key, Object value)
146 {
147 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(true);
148 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(
149 _beanManager, _currentClientWindowFlowId, true);
150 return map.put(key, value);
151 }
152
153 public Object remove(Object key)
154 {
155 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(false);
156 if (flowScopeBeanHolder == null)
157 {
158 return null;
159 }
160 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(_beanManager,
161 _currentClientWindowFlowId, false);
162 if (map == null)
163 {
164 return null;
165 }
166 return map.remove(key);
167 }
168
169 public void putAll(Map m)
170 {
171 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(true);
172 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(
173 _beanManager, _currentClientWindowFlowId, true);
174 map.putAll(m);
175 }
176
177 public void clear()
178 {
179 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(false);
180 if (flowScopeBeanHolder == null)
181 {
182 return;
183 }
184 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(_beanManager,
185 _currentClientWindowFlowId, false);
186 if (map == null)
187 {
188 return;
189 }
190 map.clear();
191 }
192
193 public Set keySet()
194 {
195 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(true);
196 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(
197 _beanManager, _currentClientWindowFlowId, true);
198 return map.keySet();
199 }
200
201 public Collection values()
202 {
203 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(true);
204 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(
205 _beanManager, _currentClientWindowFlowId, true);
206 return map.values();
207 }
208
209 public Set entrySet()
210 {
211 FlowScopeBeanHolder flowScopeBeanHolder = getFlowScopeBeanHolder(true);
212 Map<Object, Object> map = flowScopeBeanHolder.getFlowScopeMap(
213 _beanManager, _currentClientWindowFlowId, true);
214 return map.entrySet();
215 }
216 }