Package org.apache.tomcat.dbcp.pool2.impl

# Class PooledSoftReference<T>

java.lang.Object
org.apache.tomcat.dbcp.pool2.impl.DefaultPooledObject<T>
org.apache.tomcat.dbcp.pool2.impl.PooledSoftReference<T>

Type Parameters:
  `T` - the type of the underlying object that the wrapped SoftReference refers to.

All Implemented Interfaces:
  `Comparable<PooledObject<T>>`, `PooledObject<T>`

public class PooledSoftReference<T> extends DefaultPooledObject<T>
Extension of `DefaultPooledObject` to wrap pooled soft references.

This class is intended to be thread-safe.

Since:
  2.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PooledSoftReference(SoftReference<T> reference)`
  Creates a new PooledSoftReference wrapping the provided reference.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `T`
  `getObject()`
  Gets the object that the wrapped SoftReference refers to.
  `SoftReference<T>`
  `getReference()`
  Gets the SoftReference wrapped by this object.
  `void`
  `setReference(SoftReference<T> reference)`
  Sets the wrapped reference.
  `String`
  `toString()`
  Gets a String form of the wrapper for debug purposes.

  ### Methods inherited from class org.apache.tomcat.dbcp.pool2.impl.DefaultPooledObject

  `allocate, compareTo, deallocate, endEvictionTest, getActiveTimeMillis, getBorrowedCount, getCreateInstant, getCreateTime, getIdleDuration, getIdleTime, getIdleTimeMillis, getLastBorrowInstant, getLastBorrowTime, getLastReturnInstant, getLastReturnTime, getLastUsedInstant, getLastUsedTime, getState, invalidate, markAbandoned, markReturning, printStackTrace, setLogAbandoned, setRequireFullStackTrace, startEvictionTest, use`

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

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

  ### Methods inherited from interface org.apache.tomcat.dbcp.pool2.PooledObject

  `equals, getActiveDuration, getActiveTime, getFullDuration, hashCode`

- ## Constructor Details

  - ### PooledSoftReference

    public PooledSoftReference(SoftReference<T> reference)
    Creates a new PooledSoftReference wrapping the provided reference.
    Parameters:
      `reference` - SoftReference to be managed by the pool

- ## Method Details

  - ### getObject

    public T getObject()
    Gets the object that the wrapped SoftReference refers to.

    Note that if the reference has been cleared, this method will return null.

    Specified by:
      `getObject` in interface `PooledObject<T>`
    Overrides:
      `getObject` in class `DefaultPooledObject<T>`
    Returns:
      Object referred to by the SoftReference

  - ### getReference

    public SoftReference<T> getReference()
    Gets the SoftReference wrapped by this object.
    Returns:
      underlying SoftReference

  - ### setReference

    public void setReference(SoftReference<T> reference)
    Sets the wrapped reference.

    This method exists to allow a new, non-registered reference to be held by the pool to track objects that have been checked out of the pool. The actual parameter should be a reference to the same object that `getObject()` returns before calling this method.

    Parameters:
      `reference` - new reference

  - ### toString

    public String toString()
    Description copied from interface: `PooledObject`
    Gets a String form of the wrapper for debug purposes. The format is not fixed and may change at any time.
    Specified by:
      `toString` in interface `PooledObject<T>`
    Overrides:
      `toString` in class `DefaultPooledObject<T>`