Package com.complexible.common.pool

# Class PoolConfig<T,E extends Exception>

java.lang.Object
com.complexible.common.pool.PoolConfig<T,E>

Direct Known Subclasses:
  `ApachePoolConfig`, `ConnectionPoolConfig`

public abstract class PoolConfig<T,E extends Exception> extends Object

Abstract configuration for a `Pool`

Since:
  0.5.1
Version:
  0.7
Author:
  Michael Grove

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final org.apache.commons.pool.impl.GenericObjectPool.Config`
  `mConfig`
  `protected int`
  `mMinPool`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `PoolConfig()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `PoolConfig<T,E>`
  `blockAtCapacity(long theTime, TimeUnit theUnit)`
  Set the amount of time to wait to obtain an object.
  `abstract Pool<T,E>`
  `create()`
  Create the Pool
  `PoolConfig<T,E>`
  `expiration(long theTime, TimeUnit theUnit)`
  Specifes the minimum amount of time something should remain idle for before it is eligible to be expired.
  `PoolConfig<T,E>`
  `failAtCapacity()`
  Configure the pool to fail to obtain an object if you are at `maxPool(int)` objects.
  `PoolConfig<T,E>`
  `growAtCapacity()`
  Configure the pool to grow if it is at `maxPool(int)` objects, effectively rendering the max moot.
  `PoolConfig<T,E>`
  `maxIdle(int theMaxIdle)`
  The maximum number of objects which are allowed to sit idle in the pool.
  `PoolConfig<T,E>`
  `maxPool(int theMax)`
  Set the maximum number of objects that can be active in the pool (leased or idle).
  `PoolConfig<T,E>`
  `minPool(int theMin)`
  Set the minimum size of the pool, ie, the number of objects to start with.
  `PoolConfig<T,E>`
  `noExpiration()`
  Set that entries should not timeout/expire while idle

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

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

- ## Field Details

  - ### mMinPool

    protected int mMinPool

  - ### mConfig

    protected final org.apache.commons.pool.impl.GenericObjectPool.Config mConfig

- ## Constructor Details

  - ### PoolConfig

    protected PoolConfig()

- ## Method Details

  - ### maxIdle

    public PoolConfig<T,E> maxIdle(int theMaxIdle)
    The maximum number of objects which are allowed to sit idle in the pool. The default is -1, which means there is no limit of idle objects.
    Parameters:
      `theMaxIdle` - the max idle
    Returns:
      this object

  - ### maxPool

    public PoolConfig<T,E> maxPool(int theMax)
    Set the maximum number of objects that can be active in the pool (leased or idle). The default is 1000
    Parameters:
      `theMax` - the max
    Returns:
      this object

  - ### minPool

    public PoolConfig<T,E> minPool(int theMin)
    Set the minimum size of the pool, ie, the number of objects to start with. Default is 0.
    Parameters:
      `theMin` - the min pool size
    Returns:
      this object

  - ### growAtCapacity

    public PoolConfig<T,E> growAtCapacity()
    Configure the pool to grow if it is at `maxPool(int)` objects, effectively rendering the max moot.
    Returns:
      this object

  - ### failAtCapacity

    public PoolConfig<T,E> failAtCapacity()
    Configure the pool to fail to obtain an object if you are at `maxPool(int)` objects.
    Returns:
      this object

  - ### blockAtCapacity

    public PoolConfig<T,E> blockAtCapacity(long theTime, TimeUnit theUnit)
    Set the amount of time to wait to obtain an object. This will have `Pool.obtain()` block the specified amount of time until an object can be obtained. If the max is reached, obtain will return null. The default is that it will block indefinitely (-1 value for theTime).
    Parameters:
      `theTime` - the time to wait
      `theUnit` - the unit of time
    Returns:
      this object

  - ### noExpiration

    public PoolConfig<T,E> noExpiration()
    Set that entries should not timeout/expire while idle
    Returns:
      this object

  - ### expiration

    public PoolConfig<T,E> expiration(long theTime, TimeUnit theUnit)
    Specifes the minimum amount of time something should remain idle for before it is eligible to be expired. The default is 30 minutes
    Parameters:
      `theTime` - the amount of time
      `theUnit` - the unit of time
    Returns:
      this configuration

  - ### create

    public abstract Pool<T,E> create()
    Create the Pool
    Returns:
      the pool