Package org.apache.commons.pool2

# Class BaseKeyedPooledObjectFactory<K,V>

java.lang.Object
org.apache.commons.pool2.BaseObject
org.apache.commons.pool2.BaseKeyedPooledObjectFactory<K,V>

Type Parameters:
  `K` - The type of keys managed by this factory.
  `V` - Type of element managed by this factory.

All Implemented Interfaces:
  `KeyedPooledObjectFactory<K,V>`

public abstract class BaseKeyedPooledObjectFactory<K,V> extends BaseObject implements KeyedPooledObjectFactory<K,V>
A base implementation of `KeyedPooledObjectFactory`.

All operations defined here are essentially no-op's.

This class is immutable, and therefore thread-safe.

Since:
  2.0
See Also:
  - `KeyedPooledObjectFactory`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BaseKeyedPooledObjectFactory()`
  Constructs a new instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `activateObject(K key, PooledObject<V> p)`
  Reinitializes an instance to be returned by the pool.
  `abstract V`
  `create(K key)`
  Creates an instance that can be served by the pool.
  `void`
  `destroyObject(K key, PooledObject<V> p)`
  Destroys an instance no longer needed by the pool.
  `PooledObject<V>`
  `makeObject(K key)`
  Creates an instance that can be served by the pool and wrap it in a `PooledObject` to be managed by the pool.
  `void`
  `passivateObject(K key, PooledObject<V> p)`
  Uninitializes an instance to be returned to the idle object pool.
  `boolean`
  `validateObject(K key, PooledObject<V> p)`
  Ensures that the instance is safe to be returned by the pool.
  `abstract PooledObject<V>`
  `wrap(V value)`
  Wraps the provided instance with an implementation of `PooledObject`.

  ### Methods inherited from class org.apache.commons.pool2.BaseObject

  `toString, toStringAppendFields`

  ### 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.KeyedPooledObjectFactory

  `destroyObject`

- ## Constructor Details

  - ### BaseKeyedPooledObjectFactory

    public BaseKeyedPooledObjectFactory()
    Constructs a new instance.

- ## Method Details

  - ### activateObject

    public void activateObject(K key, PooledObject<V> p) throws Exception
    Reinitializes an instance to be returned by the pool.

    The default implementation is a no-op.

    Specified by:
      `activateObject` in interface `KeyedPooledObjectFactory<K,V>`
    Parameters:
      `key` - the key used when selecting the object
      `p` - a `PooledObject` wrapping the instance to be activated
    Throws:
      `Exception` - if there is a problem activating `obj`, this exception may be swallowed by the pool.
    See Also:
      - `KeyedPooledObjectFactory.destroyObject(K, org.apache.commons.pool2.PooledObject<V>)`

  - ### create

    public abstract V create(K key) throws Exception
    Creates an instance that can be served by the pool.
    Parameters:
      `key` - the key used when constructing the object
    Returns:
      an instance that can be served by the pool
    Throws:
      `Exception` - if there is a problem creating a new instance, this will be propagated to the code requesting an object.

  - ### destroyObject

    public void destroyObject(K key, PooledObject<V> p) throws Exception
    Destroys an instance no longer needed by the pool.

    The default implementation is a no-op.

    Specified by:
      `destroyObject` in interface `KeyedPooledObjectFactory<K,V>`
    Parameters:
      `key` - the key used when selecting the instance
      `p` - a `PooledObject` wrapping the instance to be destroyed
    Throws:
      `Exception` - should be avoided as it may be swallowed by the pool implementation.
    See Also:
      - `KeyedPooledObjectFactory.validateObject(K, org.apache.commons.pool2.PooledObject<V>)`
      - `KeyedObjectPool.invalidateObject(K, V)`

  - ### makeObject

    public PooledObject<V> makeObject(K key) throws Exception
    Description copied from interface: `KeyedPooledObjectFactory`
    Creates an instance that can be served by the pool and wrap it in a `PooledObject` to be managed by the pool.
    Specified by:
      `makeObject` in interface `KeyedPooledObjectFactory<K,V>`
    Parameters:
      `key` - the key used when constructing the object
    Returns:
      a `PooledObject` wrapping an instance that can be served by the pool.
    Throws:
      `Exception` - if there is a problem creating a new instance, this will be propagated to the code requesting an object.

  - ### passivateObject

    public void passivateObject(K key, PooledObject<V> p) throws Exception
    Uninitializes an instance to be returned to the idle object pool.

    The default implementation is a no-op.

    Specified by:
      `passivateObject` in interface `KeyedPooledObjectFactory<K,V>`
    Parameters:
      `key` - the key used when selecting the object
      `p` - a `PooledObject` wrapping the instance to be passivated
    Throws:
      `Exception` - if there is a problem passivating `obj`, this exception may be swallowed by the pool.
    See Also:
      - `KeyedPooledObjectFactory.destroyObject(K, org.apache.commons.pool2.PooledObject<V>)`

  - ### validateObject

    public boolean validateObject(K key, PooledObject<V> p)
    Ensures that the instance is safe to be returned by the pool.

    The default implementation always returns `true`.

    Specified by:
      `validateObject` in interface `KeyedPooledObjectFactory<K,V>`
    Parameters:
      `key` - the key used when selecting the object
      `p` - a `PooledObject` wrapping the instance to be validated
    Returns:
      always `true` in this default implementation

  - ### wrap

    public abstract PooledObject<V> wrap(V value)
    Wraps the provided instance with an implementation of `PooledObject`.
    Parameters:
      `value` - the instance to wrap, should not be null.
    Returns:
      The provided instance, wrapped by a `PooledObject`