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 boolean isStopped() {
031 return tl.get().isStopped();
032 }
033
034 public boolean isDisposed() {
035 return tl.get().isDisposed();
036 }
037
038 public void disposing() {
039 tl.get().disposing();
040 }
041
042 public void disposed() {
043 tl.get().disposed();
044 }
045
046 public void putLifecycleStateModelForThread(LifecycleState lifecycleState) {
047 tl.set(lifecycleState);
048 }
049
050 public LifecycleState resetStateModelForThread() {
051 DefaultLifecycleState dls = new DefaultLifecycleState();
052 tl.set(dls);
053 return dls;
054 }
055
056 public void invalidateStateModelForThread() {
057 tl.set(null);
058 }
059
060 private static class LifecycleStateThreadLocal extends ThreadLocal<LifecycleState> {
061 protected LifecycleState initialValue() {
062 return new DefaultLifecycleState();
063 }
064 }
065
066 }