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 ; 7 8 9 17 public class ThreadState { 18 static ThreadLocal _state = new ThreadLocal (); 19 TemplateContextIF _ctx; 20 Object _lastObject; 21 22 public ThreadState() { 23 _state.set(new Stack ()); 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 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 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 o) { 66 _lastObject = o; 67 } 68 69 public Object getLastObject() { 70 return _lastObject; 71 } 72 73 static Stack stack() { 74 Stack st = (Stack ) _state.get(); 75 76 if (st == null) { 77 _state.set(st = new Stack ()); 78 } 79 80 return st; 81 } 82 } 83 | Popular Tags |