001 package org.picocontainer.web;
002
003 import org.picocontainer.lifecycle.LifecycleState;
004 import org.picocontainer.lifecycle.DefaultLifecycleState;
005
006 public class ThreadLocalLifecycleState implements LifecycleState {
007
008 private LifecycleStateThreadLocal tl = new LifecycleStateThreadLocal();
009
010 public void removingComponent() {
011 tl.get().removingComponent();
012 }
013
014 public void starting() {
015 tl.get().starting();
016 }
017
018 public void stopping() {
019 tl.get().stopping();
020 }
021
022 public void stopped() {
023 tl.get().stopped();
024 }
025
026 public boolean isStarted() {
027 return tl.get().isStarted();
028 }
029
030 public void disposing() {
031 tl.get().disposing();
032 }
033
034 public void disposed() {
035 tl.get().disposed();
036 }
037
038 public void putLifecycleStateModelForThread(DefaultLifecycleState lifecycleState) {
039 tl.set(lifecycleState);
040 }
041
042 public DefaultLifecycleState resetStateModelForThread() {
043 DefaultLifecycleState dls = new DefaultLifecycleState();
044 tl.set(dls);
045 return dls;
046 }
047
048 public void invalidateStateModelForThread() {
049 tl.set(null);
050 }
051
052 private static class LifecycleStateThreadLocal extends ThreadLocal<DefaultLifecycleState> {
053 protected DefaultLifecycleState initialValue() {
054 return new DefaultLifecycleState();
055 }
056 }
057
058 }