public final class SimpleResourceHolder extends Object
bind(Object, Object)
supports one resource per key without overwriting, that
is, a resource needs to be removed before a new one can be set for the same key. But
see push(Object, Object)
and pop(Object)
.
Resource management code should check for thread-bound resources via
has(Object)
.
This helper isn't designed for transaction synchronization cases. Use
TransactionSynchronizationManager
and ResourceHolder
instead.
Modifier and Type | Method and Description |
---|---|
static void |
bind(Object key,
Object value)
Bind the given resource for the given key to the current thread.
|
static void |
clear()
Clear resources for the current thread.
|
static Object |
get(Object key)
Retrieve a resource for the given key that is bound to the current thread.
|
static Map<Object,Object> |
getResources()
Return all resources that are bound to the current thread.
|
static boolean |
has(Object key)
Check if there is a resource for the given key bound to the current thread.
|
static Object |
pop(Object key)
Unbind the current value and bind the head of the stack if present.
|
static void |
push(Object key,
Object value)
Set the value for this key and push any existing value onto a stack.
|
static Object |
unbind(Object key)
Unbind a resource for the given key from the current thread.
|
static Object |
unbindIfPossible(Object key)
Unbind a resource for the given key from the current thread.
|
public static Map<Object,Object> getResources()
Mainly for debugging purposes. Resource managers should always invoke
hasResource
for a specific resource key that they are interested in.
has(java.lang.Object)
public static boolean has(Object key)
key
- the key to check (usually the resource factory)@Nullable public static Object get(Object key)
key
- the key to check (usually the resource factory)null
if nonepublic static void bind(Object key, Object value)
key
- the key to bind the value to (usually the resource factory)value
- the value to bind (usually the active resource object)IllegalStateException
- if there is already a value bound to the threadpublic static void push(Object key, Object value)
key
- the key.value
- the value.@Nullable public static Object pop(Object key)
key
- the key.public static Object unbind(Object key) throws IllegalStateException
key
- the key to unbind (usually the resource factory)IllegalStateException
- if there is no value bound to the thread@Nullable public static Object unbindIfPossible(Object key)
key
- the key to unbind (usually the resource factory)null
if none boundpublic static void clear()