Package org.apache.commons.pool2.proxy

# Class ProxiedObjectPool<T>

java.lang.Object
org.apache.commons.pool2.proxy.ProxiedObjectPool<T>

Type Parameters:
  `T` - type of the pooled object

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `ObjectPool<T>`

public class ProxiedObjectPool<T> extends Object implements ObjectPool<T>
Create a new object pool where the pooled objects are wrapped in proxies allowing better control of pooled objects and in particular the prevention of the continued use of an object by a client after that client returns the object to the pool.

Since:
  2.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ProxiedObjectPool(ObjectPool<T> pool, org.apache.commons.pool2.proxy.ProxySource<T> proxySource)`
  Constructs a new proxied object pool.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addObject()`
  Creates an object using the `factory` or other implementation dependent mechanism, passivate it, and then place it in the idle object pool.
  `T`
  `borrowObject()`
  Borrows an instance from this pool.
  `void`
  `clear()`
  Clears any objects sitting idle in the pool, releasing any associated resources (optional operation).
  `void`
  `close()`
  Closes this pool, and free any resources associated with it.
  `int`
  `getNumActive()`
  Gets the number of instances currently borrowed from this pool.
  `int`
  `getNumIdle()`
  Gets the number of instances currently idle in this pool.
  `void`
  `invalidateObject(T proxy)`
  Invalidates an object from the pool.
  `void`
  `returnObject(T proxy)`
  Returns an instance to the pool.
  `String`
  `toString()`

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

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

  ### Methods inherited from interface org.apache.commons.pool2.ObjectPool

  `addObjects, invalidateObject`

- ## Constructor Details

  - ### ProxiedObjectPool

    public ProxiedObjectPool(ObjectPool<T> pool, org.apache.commons.pool2.proxy.ProxySource<T> proxySource)
    Constructs a new proxied object pool.
    Parameters:
      `pool` - The object pool to wrap
      `proxySource` - The source of the proxy objects

- ## Method Details

  - ### addObject

    public void addObject() throws Exception
    Description copied from interface: `ObjectPool`
    Creates an object using the `factory` or other implementation dependent mechanism, passivate it, and then place it in the idle object pool. `addObject` is useful for "pre-loading" a pool with idle objects. (Optional operation).
    Specified by:
      `addObject` in interface `ObjectPool<T>`
    Throws:
      `Exception` - when `PooledObjectFactory.makeObject()` fails.

  - ### borrowObject

    public T borrowObject() throws Exception
    Description copied from interface: `ObjectPool`
    Borrows an instance from this pool.

    Instances returned from this method will have been either newly created with `PooledObjectFactory.makeObject()` or will be a previously idle object and have been activated with `PooledObjectFactory.activateObject(org.apache.commons.pool2.PooledObject<T>)` and then validated with `PooledObjectFactory.validateObject(org.apache.commons.pool2.PooledObject<T>)`.

    By contract, clients must return the borrowed instance using `ObjectPool.returnObject(T)`, `ObjectPool.invalidateObject(T)`, or a related method as defined in an implementation or sub-interface.

    The behavior of this method when the pool has been exhausted is not strictly specified (although it may be specified by implementations).

    Specified by:
      `borrowObject` in interface `ObjectPool<T>`
    Returns:
      an instance from this pool.
    Throws:
      `Exception` - when `PooledObjectFactory.makeObject()` throws an exception.

  - ### clear

    public void clear() throws Exception
    Description copied from interface: `ObjectPool`
    Clears any objects sitting idle in the pool, releasing any associated resources (optional operation). Idle objects cleared must be `PooledObjectFactory.destroyObject(PooledObject)`.
    Specified by:
      `clear` in interface `ObjectPool<T>`
    Throws:
      `Exception` - if the pool cannot be cleared

  - ### close

    public void close()
    Description copied from interface: `ObjectPool`
    Closes this pool, and free any resources associated with it.

    Calling `ObjectPool.addObject()` or `ObjectPool.borrowObject()` after invoking this method on a pool will cause them to throw an `IllegalStateException`.

    Implementations should silently fail if not all resources can be freed.

    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Specified by:
      `close` in interface `ObjectPool<T>`

  - ### getNumActive

    public int getNumActive()
    Description copied from interface: `ObjectPool`
    Gets the number of instances currently borrowed from this pool. Returns a negative value if this information is not available.
    Specified by:
      `getNumActive` in interface `ObjectPool<T>`
    Returns:
      the number of instances currently borrowed from this pool.

  - ### getNumIdle

    public int getNumIdle()
    Description copied from interface: `ObjectPool`
    Gets the number of instances currently idle in this pool. This may be considered an approximation of the number of objects that can be `borrowed` without creating any new instances. Returns a negative value if this information is not available.
    Specified by:
      `getNumIdle` in interface `ObjectPool<T>`
    Returns:
      the number of instances currently idle in this pool.

  - ### invalidateObject

    public void invalidateObject(T proxy) throws Exception
    Description copied from interface: `ObjectPool`
    Invalidates an object from the pool.

    By contract, `obj` must have been obtained using `ObjectPool.borrowObject()` or a related method as defined in an implementation or sub-interface.

    This method should be used when an object that has been borrowed is determined (due to an exception or other problem) to be invalid.

    Specified by:
      `invalidateObject` in interface `ObjectPool<T>`
    Parameters:
      `proxy` - a `borrowed` instance to be disposed.
    Throws:
      `Exception` - if the instance cannot be invalidated

  - ### returnObject

    public void returnObject(T proxy) throws Exception
    Description copied from interface: `ObjectPool`
    Returns an instance to the pool. By contract, `obj` must have been obtained using `ObjectPool.borrowObject()` or a related method as defined in an implementation or sub-interface.
    Specified by:
      `returnObject` in interface `ObjectPool<T>`
    Parameters:
      `proxy` - a `borrowed` instance to be returned.
    Throws:
      `Exception` - if an instance cannot be returned to the pool

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`
    Since:
      2.4.3