org.picocontainer.defaults
Class ThreadLocalCyclicDependencyGuard
java.lang.Object
java.lang.ThreadLocal
org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard
- All Implemented Interfaces:
- CyclicDependencyGuard
- Direct Known Subclasses:
- ConstructorInjectionComponentAdapter.Guard, InstantiatingComponentAdapter.Guard
public abstract class ThreadLocalCyclicDependencyGuard
- extends java.lang.ThreadLocal
- implements CyclicDependencyGuard
Abstract utility class to detect recursion cycles.
Derive from this class and implement run()
.
The method will be called by observe(java.lang.Class)
. Select
an appropriate guard for your scope. Any ObjectReference
can be
used as long as it is initialized with Boolean.FALSE
.
- Since:
- 1.1
- Author:
- Jörg Schaible
Method Summary |
protected java.lang.Object |
initialValue()
|
java.lang.Object |
observe(java.lang.Class stackFrame)
Call the observing function. |
abstract java.lang.Object |
run()
Derive from this class and implement this function with the functionality
to observe for a dependency cycle. |
Methods inherited from class java.lang.ThreadLocal |
get, remove, set |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ThreadLocalCyclicDependencyGuard
public ThreadLocalCyclicDependencyGuard()
initialValue
protected java.lang.Object initialValue()
- Overrides:
initialValue
in class java.lang.ThreadLocal
run
public abstract java.lang.Object run()
- Derive from this class and implement this function with the functionality
to observe for a dependency cycle.
- Specified by:
run
in interface CyclicDependencyGuard
- Returns:
- a value, if the functionality result in an expression,
otherwise just return
null
observe
public final java.lang.Object observe(java.lang.Class stackFrame)
- Call the observing function. The provided guard will hold the
Boolean
value.
If the guard is already Boolean.TRUE
a CyclicDependencyException
will be thrown.
- Specified by:
observe
in interface CyclicDependencyGuard
- Parameters:
stackFrame
- the current stack frame
- Returns:
- the result of the
run
method