KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > soto > config > ThreadState


1 package org.sapia.soto.config;
2
3 import org.sapia.util.text.SystemContext;
4 import org.sapia.util.text.TemplateContextIF;
5
6 import java.util.Stack JavaDoc;
7
8
9 /**
10  * @author Yanick Duchesne
11  * <dl>
12  * <dt><b>Copyright:</b><dd>Copyright &#169; 2002-2003 <a HREF="http://www.sapia-oss.org">Sapia Open Source Software</a>. All Rights Reserved.</dd></dt>
13  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
14  * <a HREF="http://www.sapia-oss.org/license.html">license page</a> at the Sapia OSS web site</dd></dt>
15  * </dl>
16  */

17 public class ThreadState {
18   static ThreadLocal JavaDoc _state = new ThreadLocal JavaDoc();
19   TemplateContextIF _ctx;
20   Object JavaDoc _lastObject;
21
22   public ThreadState() {
23     _state.set(new Stack JavaDoc());
24   }
25
26   public ThreadState(TemplateContextIF ctx) {
27     this();
28     _ctx = ctx;
29   }
30
31   static void push(ThreadState st) {
32     stack().push(st);
33   }
34
35   static void pop() {
36     Stack JavaDoc stack = stack();
37
38     if (stack.size() > 0) {
39       stack().pop();
40     }
41   }
42
43   TemplateContextIF getTemplateContext() {
44     if (_ctx == null) {
45       return new SystemContext();
46     }
47
48     return _ctx;
49   }
50
51   public static TemplateContextIF currentTemplateContext() {
52     return currentState().getTemplateContext();
53   }
54
55   public static ThreadState currentState() {
56     Stack JavaDoc st = stack();
57
58     if (st.size() == 0) {
59       return new ThreadState();
60     }
61
62     return (ThreadState) st.peek();
63   }
64
65   public void setLastObject(Object JavaDoc o) {
66     _lastObject = o;
67   }
68
69   public Object JavaDoc getLastObject() {
70     return _lastObject;
71   }
72
73   static Stack JavaDoc stack() {
74     Stack JavaDoc st = (Stack JavaDoc) _state.get();
75
76     if (st == null) {
77       _state.set(st = new Stack JavaDoc());
78     }
79
80     return st;
81   }
82 }
83
Popular Tags