Package org.springframework.transaction.support

# Class ResourceHolderSupport

java.lang.Object
org.springframework.transaction.support.ResourceHolderSupport

All Implemented Interfaces:
  `ResourceHolder`

public abstract class ResourceHolderSupport extends Object implements ResourceHolder
Convenient base class for resource holders.

Features rollback-only support for participating transactions. Can expire after a certain number of seconds or milliseconds in order to determine a transactional timeout.

Since:
  02.02.2004
Author:
  Juergen Hoeller
See Also:
  - `org.springframework.jdbc.datasource.DataSourceTransactionManager#doBegin`
  - `org.springframework.jdbc.datasource.DataSourceUtils#applyTransactionTimeout`

## Constructor Summary

Constructors
Constructor
Description
`ResourceHolderSupport()`

## Method Summary

Modifier and Type
Method
Description
`void`
`clear()`
Clear the transactional state of this resource holder.
`Date`
`getDeadline()`
Return the expiration deadline of this object.
`long`
`getTimeToLiveInMillis()`
Return the time to live for this object in milliseconds.
`int`
`getTimeToLiveInSeconds()`
Return the time to live for this object in seconds.
`boolean`
`hasTimeout()`
Return whether this object has an associated timeout.
`boolean`
`isOpen()`
Return whether there are still open references to this holder.
`boolean`
`isRollbackOnly()`
Return whether the resource transaction is marked as rollback-only.
`boolean`
`isSynchronizedWithTransaction()`
Return whether the resource is synchronized with a transaction.
`boolean`
`isVoid()`
Determine whether this holder is considered as 'void', i.e.
`void`
`released()`
Decrease the reference count by one because the holder has been released (i.e.
`void`
`requested()`
Increase the reference count by one because the holder has been requested (i.e.
`void`
`reset()`
Reset this resource holder - transactional state as well as reference count.
`void`
`resetRollbackOnly()`
Reset the rollback-only status for this resource transaction.
`void`
`setRollbackOnly()`
Mark the resource transaction as rollback-only.
`void`
`setSynchronizedWithTransaction(boolean synchronizedWithTransaction)`
Mark the resource as synchronized with a transaction.
`void`
`setTimeoutInMillis(long millis)`
Set the timeout for this object in milliseconds.
`void`
`setTimeoutInSeconds(int seconds)`
Set the timeout for this object in seconds.
`void`
`unbound()`
Notify this holder that it has been unbound from transaction synchronization.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ResourceHolderSupport

public ResourceHolderSupport()

## Method Details

### setSynchronizedWithTransaction

public void setSynchronizedWithTransaction(boolean synchronizedWithTransaction)
Mark the resource as synchronized with a transaction.

### isSynchronizedWithTransaction

public boolean isSynchronizedWithTransaction()
Return whether the resource is synchronized with a transaction.

### setRollbackOnly

public void setRollbackOnly()
Mark the resource transaction as rollback-only.

### resetRollbackOnly

public void resetRollbackOnly()
Reset the rollback-only status for this resource transaction.

Only really intended to be called after custom rollback steps which keep the original resource in action, for example, in case of a savepoint.

Since:
  5.0
See Also:
  - `SavepointManager.rollbackToSavepoint(java.lang.Object)`

### isRollbackOnly

public boolean isRollbackOnly()
Return whether the resource transaction is marked as rollback-only.

### setTimeoutInSeconds

public void setTimeoutInSeconds(int seconds)
Set the timeout for this object in seconds.

Parameters:
  `seconds` - number of seconds until expiration

### setTimeoutInMillis

public void setTimeoutInMillis(long millis)
Set the timeout for this object in milliseconds.

Parameters:
  `millis` - number of milliseconds until expiration

### hasTimeout

public boolean hasTimeout()
Return whether this object has an associated timeout.

### getDeadline

@Nullable public Date getDeadline()
Return the expiration deadline of this object.

Returns:
  the deadline as Date object

### getTimeToLiveInSeconds

public int getTimeToLiveInSeconds()
Return the time to live for this object in seconds. Rounds up eagerly, for example, 9.00001 still to 10.

Returns:
  number of seconds until expiration
Throws:
  `TransactionTimedOutException` - if the deadline has already been reached

### getTimeToLiveInMillis

public long getTimeToLiveInMillis() throws TransactionTimedOutException
Return the time to live for this object in milliseconds.

Returns:
  number of milliseconds until expiration
Throws:
  `TransactionTimedOutException` - if the deadline has already been reached

### requested

public void requested()
Increase the reference count by one because the holder has been requested (i.e. someone requested the resource held by it).

### released

public void released()
Decrease the reference count by one because the holder has been released (i.e. someone released the resource held by it).

### isOpen

public boolean isOpen()
Return whether there are still open references to this holder.

### clear

public void clear()
Clear the transactional state of this resource holder.

### reset

public void reset()
Reset this resource holder - transactional state as well as reference count.

Specified by:
  `reset` in interface `ResourceHolder`

### unbound

public void unbound()
Description copied from interface: `ResourceHolder`
Notify this holder that it has been unbound from transaction synchronization.

Specified by:
  `unbound` in interface `ResourceHolder`

### isVoid

public boolean isVoid()
Description copied from interface: `ResourceHolder`
Determine whether this holder is considered as 'void', i.e. as a leftover from a previous thread.

Specified by:
  `isVoid` in interface `ResourceHolder`