Class SimpleResourceHolder

java.lang.Object
org.springframework.amqp.rabbit.connection.SimpleResourceHolder

public final class SimpleResourceHolder extends Object
Central helper that manages resources per thread to be used by resource management code.

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.

Since:
1.3
Author:
Artem Bilan, Gary Russell
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    bind(Object key, Object value)
    Bind the given resource for the given key to the current thread.
    static void
    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>
    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 a resource for the given key from the current thread.
    static Object
    Unbind a resource for the given key from the current thread.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • getResources

      public static Map<Object,Object> getResources()
      Return all resources that are bound to the current thread.

      Mainly for debugging purposes. Resource managers should always invoke hasResource for a specific resource key that they are interested in.

      Returns:
      a Map with resource keys (usually the resource factory) and resource values (usually the active resource object), or an empty Map if there are currently no resources bound
      See Also:
    • has

      public static boolean has(Object key)
      Check if there is a resource for the given key bound to the current thread.
      Parameters:
      key - the key to check (usually the resource factory)
      Returns:
      if there is a value bound to the current thread
    • get

      @Nullable public static Object get(Object key)
      Retrieve a resource for the given key that is bound to the current thread.
      Parameters:
      key - the key to check (usually the resource factory)
      Returns:
      a value bound to the current thread (usually the active resource object), or null if none
    • bind

      public static void bind(Object key, Object value)
      Bind the given resource for the given key to the current thread.
      Parameters:
      key - the key to bind the value to (usually the resource factory)
      value - the value to bind (usually the active resource object)
      Throws:
      IllegalStateException - if there is already a value bound to the thread
    • push

      public static void push(Object key, Object value)
      Set the value for this key and push any existing value onto a stack.
      Parameters:
      key - the key.
      value - the value.
      Since:
      2.1.11
    • pop

      @Nullable public static Object pop(Object key)
      Unbind the current value and bind the head of the stack if present.
      Parameters:
      key - the key.
      Returns:
      the popped value.
      Since:
      2.1.11
    • unbind

      public static Object unbind(Object key) throws IllegalStateException
      Unbind a resource for the given key from the current thread.
      Parameters:
      key - the key to unbind (usually the resource factory)
      Returns:
      the previously bound value (usually the active resource object)
      Throws:
      IllegalStateException - if there is no value bound to the thread
    • unbindIfPossible

      @Nullable public static Object unbindIfPossible(Object key)
      Unbind a resource for the given key from the current thread.
      Parameters:
      key - the key to unbind (usually the resource factory)
      Returns:
      the previously bound value, or null if none bound
    • clear

      public static void clear()
      Clear resources for the current thread.