Example usage for org.springframework.transaction.support TransactionSynchronizationUtils unwrapResourceIfNecessary

List of usage examples for org.springframework.transaction.support TransactionSynchronizationUtils unwrapResourceIfNecessary

Introduction

In this page you can find the example usage for org.springframework.transaction.support TransactionSynchronizationUtils unwrapResourceIfNecessary.

Prototype

static Object unwrapResourceIfNecessary(Object resource) 

Source Link

Document

Unwrap the given resource handle if necessary; otherwise return the given handle as-is.

Usage

From source file:org.springframework.transaction.support.TransactionSynchronizationManager.java

/**
 * Check if there is a resource for the given key bound to the current thread.
 * @param key the key to check (usually the resource factory)
 * @return if there is a value bound to the current thread
 * @see ResourceTransactionManager#getResourceFactory()
 *//*from   www  .ja va 2  s  . c om*/
public static boolean hasResource(Object key) {
    Object actualKey = TransactionSynchronizationUtils.unwrapResourceIfNecessary(key);
    Object value = doGetResource(actualKey);
    return (value != null);
}

From source file:org.springframework.transaction.support.TransactionSynchronizationManager.java

/**
 * Retrieve a resource for the given key that is bound to the current thread.
 * @param key the key to check (usually the resource factory)
 * @return a value bound to the current thread (usually the active
 * resource object), or {@code null} if none
 * @see ResourceTransactionManager#getResourceFactory()
 *///from   ww  w  .jav  a2 s .c o m
@Nullable
public static Object getResource(Object key) {
    Object actualKey = TransactionSynchronizationUtils.unwrapResourceIfNecessary(key);
    Object value = doGetResource(actualKey);
    if (value != null && logger.isTraceEnabled()) {
        logger.trace("Retrieved value [" + value + "] for key [" + actualKey + "] bound to thread ["
                + Thread.currentThread().getName() + "]");
    }
    return value;
}

From source file:org.springframework.transaction.support.TransactionSynchronizationManager.java

/**
 * Bind the given resource for the given key to the current thread.
 * @param key the key to bind the value to (usually the resource factory)
 * @param value the value to bind (usually the active resource object)
 * @throws IllegalStateException if there is already a value bound to the thread
 * @see ResourceTransactionManager#getResourceFactory()
 *///www  .  j a v a  2s .c  om
public static void bindResource(Object key, Object value) throws IllegalStateException {
    Object actualKey = TransactionSynchronizationUtils.unwrapResourceIfNecessary(key);
    Assert.notNull(value, "Value must not be null");
    Map<Object, Object> map = resources.get();
    // set ThreadLocal Map if none found
    if (map == null) {
        map = new HashMap<>();
        resources.set(map);
    }
    Object oldValue = map.put(actualKey, value);
    // Transparently suppress a ResourceHolder that was marked as void...
    if (oldValue instanceof ResourceHolder && ((ResourceHolder) oldValue).isVoid()) {
        oldValue = null;
    }
    if (oldValue != null) {
        throw new IllegalStateException("Already value [" + oldValue + "] for key [" + actualKey
                + "] bound to thread [" + Thread.currentThread().getName() + "]");
    }
    if (logger.isTraceEnabled()) {
        logger.trace("Bound value [" + value + "] for key [" + actualKey + "] to thread ["
                + Thread.currentThread().getName() + "]");
    }
}

From source file:org.springframework.transaction.support.TransactionSynchronizationManager.java

/**
 * Unbind a resource for the given key from the current thread.
 * @param key the key to unbind (usually the resource factory)
 * @return the previously bound value (usually the active resource object)
 * @throws IllegalStateException if there is no value bound to the thread
 * @see ResourceTransactionManager#getResourceFactory()
 *//*from ww w .j a  v a2 s  .  co  m*/
public static Object unbindResource(Object key) throws IllegalStateException {
    Object actualKey = TransactionSynchronizationUtils.unwrapResourceIfNecessary(key);
    Object value = doUnbindResource(actualKey);
    if (value == null) {
        throw new IllegalStateException("No value for key [" + actualKey + "] bound to thread ["
                + Thread.currentThread().getName() + "]");
    }
    return value;
}

From source file:org.springframework.transaction.support.TransactionSynchronizationManager.java

/**
 * Unbind a resource for the given key from the current thread.
 * @param key the key to unbind (usually the resource factory)
 * @return the previously bound value, or {@code null} if none bound
 *//*from   ww  w.j  ava 2 s .c  o  m*/
@Nullable
public static Object unbindResourceIfPossible(Object key) {
    Object actualKey = TransactionSynchronizationUtils.unwrapResourceIfNecessary(key);
    return doUnbindResource(actualKey);
}