1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package javax.faces.context;
20
21 import java.util.Collections;
22 import java.util.Iterator;
23 import java.util.List;
24 import java.util.Map;
25
26 import javax.el.ELContext;
27 import javax.faces.application.Application;
28 import javax.faces.application.FacesMessage;
29 import javax.faces.application.ProjectStage;
30 import javax.faces.component.UINamingContainer;
31 import javax.faces.component.UIViewRoot;
32 import javax.faces.event.PhaseId;
33 import javax.faces.render.RenderKit;
34
35
36
37
38 public abstract class FacesContext
39 {
40 private static ThreadLocal<FacesContext> currentInstance = new ThreadLocal<FacesContext>();
41
42 private static ThreadLocal<FacesContext> firstInstance = new ThreadLocal<FacesContext>();
43
44 public abstract void addMessage(String clientId, FacesMessage message);
45
46 public abstract Application getApplication();
47
48
49
50
51
52
53
54 public Map<Object, Object> getAttributes()
55 {
56 FacesContext ctx = firstInstance.get();
57
58 if (ctx == null)
59 {
60 throw new UnsupportedOperationException();
61 }
62
63 return ctx.getAttributes();
64 }
65
66 public abstract Iterator<String> getClientIdsWithMessages();
67
68 public static FacesContext getCurrentInstance()
69 {
70 return currentInstance.get();
71 }
72
73
74
75
76
77
78
79 public PhaseId getCurrentPhaseId()
80 {
81 FacesContext ctx = firstInstance.get();
82
83 if (ctx == null)
84 {
85 throw new UnsupportedOperationException();
86 }
87
88 return ctx.getCurrentPhaseId();
89 }
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115 public ELContext getELContext()
116 {
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131 FacesContext ctx = firstInstance.get();
132
133 if (ctx == null)
134 {
135 throw new NullPointerException(FacesContext.class.getName());
136 }
137
138 ELContext elctx = ctx.getELContext();
139 if (elctx == null)
140 {
141 throw new UnsupportedOperationException();
142 }
143
144 return elctx;
145 }
146
147
148
149
150
151
152
153 public ExceptionHandler getExceptionHandler()
154 {
155 FacesContext ctx = firstInstance.get();
156
157 if (ctx == null)
158 {
159 throw new UnsupportedOperationException();
160 }
161
162 return ctx.getExceptionHandler();
163 }
164
165 public abstract ExternalContext getExternalContext();
166
167 public abstract FacesMessage.Severity getMaximumSeverity();
168
169
170
171
172
173
174
175 public List<FacesMessage> getMessageList()
176 {
177 FacesContext ctx = firstInstance.get();
178
179 if (ctx == null)
180 {
181 throw new UnsupportedOperationException();
182 }
183
184 return ctx.getMessageList();
185 }
186
187
188
189
190
191
192
193
194 public List<FacesMessage> getMessageList(String clientId)
195 {
196 FacesContext ctx = firstInstance.get();
197
198 if (ctx == null)
199 {
200 throw new UnsupportedOperationException();
201 }
202
203 return ctx.getMessageList(clientId);
204 }
205
206 public abstract Iterator<FacesMessage> getMessages();
207
208 public abstract Iterator<FacesMessage> getMessages(String clientId);
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224 public PartialViewContext getPartialViewContext()
225 {
226 FacesContext ctx = firstInstance.get();
227
228 if (ctx == null)
229 {
230 throw new UnsupportedOperationException();
231 }
232
233 return ctx.getPartialViewContext();
234 }
235
236 public abstract RenderKit getRenderKit();
237
238 public abstract boolean getRenderResponse();
239
240 public abstract boolean getResponseComplete();
241
242 public abstract ResponseStream getResponseStream();
243
244 public abstract ResponseWriter getResponseWriter();
245
246
247
248
249
250
251
252 public boolean isValidationFailed()
253 {
254 FacesContext ctx = firstInstance.get();
255
256 if (ctx == null)
257 {
258 throw new UnsupportedOperationException();
259 }
260
261 return ctx.isValidationFailed();
262 }
263
264 public abstract UIViewRoot getViewRoot();
265
266
267
268
269
270
271
272 public boolean isPostback()
273 {
274 FacesContext ctx = firstInstance.get();
275
276 if (ctx == null)
277 {
278 throw new UnsupportedOperationException();
279 }
280
281 return ctx.isPostback();
282 }
283
284
285
286
287
288
289
290 public boolean isProcessingEvents()
291 {
292 FacesContext ctx = firstInstance.get();
293
294 if (ctx == null)
295 {
296 throw new UnsupportedOperationException();
297 }
298
299 return ctx.isProcessingEvents();
300 }
301
302 public abstract void release();
303
304 public abstract void renderResponse();
305
306 public abstract void responseComplete();
307
308 protected static void setCurrentInstance(FacesContext context)
309 {
310 if (context == null)
311 {
312 currentInstance.remove();
313 firstInstance.remove();
314 }
315 else
316 {
317 currentInstance.set(context);
318
319 if (firstInstance.get() == null)
320 {
321 firstInstance.set(context);
322 }
323 }
324 }
325
326
327
328
329
330
331 public void setCurrentPhaseId(PhaseId currentPhaseId)
332 {
333 FacesContext ctx = firstInstance.get();
334
335 if (ctx == null)
336 {
337 throw new UnsupportedOperationException();
338 }
339
340 ctx.setCurrentPhaseId(currentPhaseId);
341 }
342
343
344
345
346
347
348 public void setExceptionHandler(ExceptionHandler exceptionHandler)
349 {
350 FacesContext ctx = firstInstance.get();
351
352 if (ctx == null)
353 {
354 throw new UnsupportedOperationException();
355 }
356
357 ctx.setExceptionHandler(exceptionHandler);
358 }
359
360
361
362
363
364
365 public void setProcessingEvents(boolean processingEvents)
366 {
367 FacesContext ctx = firstInstance.get();
368
369 if (ctx == null)
370 {
371 throw new UnsupportedOperationException();
372 }
373
374 ctx.setProcessingEvents(processingEvents);
375 }
376
377 public abstract void setResponseStream(ResponseStream responseStream);
378
379 public abstract void setResponseWriter(ResponseWriter responseWriter);
380
381 public abstract void setViewRoot(UIViewRoot root);
382
383
384
385
386
387
388 public void validationFailed()
389 {
390 FacesContext ctx = firstInstance.get();
391
392 if (ctx == null)
393 {
394 throw new UnsupportedOperationException();
395 }
396
397 ctx.validationFailed();
398 }
399
400 public boolean isProjectStage(ProjectStage stage)
401 {
402 if (stage == null)
403 {
404 throw new NullPointerException();
405 }
406
407 if (stage.equals(getApplication().getProjectStage()))
408 {
409 return true;
410 }
411 return false;
412 }
413
414
415
416
417
418
419 public boolean isReleased()
420 {
421 FacesContext ctx = firstInstance.get();
422
423 if (ctx == null)
424 {
425 throw new UnsupportedOperationException();
426 }
427
428 return ctx.isReleased();
429 }
430
431
432
433
434
435 public List<String> getResourceLibraryContracts()
436 {
437 FacesContext ctx = firstInstance.get();
438
439 if (ctx == null)
440 {
441 return Collections.emptyList();
442 }
443
444 return ctx.getResourceLibraryContracts();
445 }
446
447
448
449
450
451 public void setResourceLibraryContracts(List<String> contracts)
452 {
453 FacesContext ctx = firstInstance.get();
454
455 if (ctx == null)
456 {
457 return;
458 }
459 ctx.setResourceLibraryContracts(contracts);
460 }
461
462
463
464
465
466 public char getNamingContainerSeparatorChar()
467 {
468 FacesContext ctx = firstInstance.get();
469
470 if (ctx == null)
471 {
472 return UINamingContainer.getSeparatorChar(this);
473 }
474 return ctx.getNamingContainerSeparatorChar();
475 }
476 }