private static class PoolUtils.SynchronizedPoolableObjectFactory<T> extends java.lang.Object implements PoolableObjectFactory<T>
Note: This should not be used on pool implementations that already provide proper synchronization such as the pools provided in the Commons Pool library.
Modifier and Type | Field and Description |
---|---|
private PoolableObjectFactory<T> |
factory
Wrapped factory
|
private java.lang.Object |
lock
Synchronization lock
|
Constructor and Description |
---|
SynchronizedPoolableObjectFactory(PoolableObjectFactory<T> factory)
Create a SynchronizedPoolableObjectFactory wrapping the given factory.
|
Modifier and Type | Method and Description |
---|---|
void |
activateObject(T obj)
Reinitialize an instance to be returned by the pool.
|
void |
destroyObject(T obj)
Destroys an instance no longer needed by the pool.
|
T |
makeObject()
Creates an instance that can be served by the pool.
|
void |
passivateObject(T obj)
Uninitialize an instance to be returned to the idle object pool.
|
java.lang.String |
toString() |
boolean |
validateObject(T obj)
Ensures that the instance is safe to be returned by the pool.
|
private final java.lang.Object lock
private final PoolableObjectFactory<T> factory
SynchronizedPoolableObjectFactory(PoolableObjectFactory<T> factory) throws java.lang.IllegalArgumentException
factory
- underlying factory to wrapjava.lang.IllegalArgumentException
- if the factory is nullpublic T makeObject() throws java.lang.Exception
activated
. They will not be
activated before being served by the pool.makeObject
in interface PoolableObjectFactory<T>
java.lang.Exception
- if there is a problem creating a new instance,
this will be propagated to the code requesting an object.public void destroyObject(T obj) throws java.lang.Exception
It is important for implementations of this method to be aware
that there is no guarantee about what state obj
will be in and the implementation should be prepared to handle
unexpected errors.
Also, an implementation must take in to consideration that instances lost to the garbage collector may never be destroyed.
destroyObject
in interface PoolableObjectFactory<T>
obj
- the instance to be destroyedjava.lang.Exception
- should be avoided as it may be swallowed by
the pool implementation.PoolableObjectFactory.validateObject(T)
,
ObjectPool.invalidateObject(T)
public boolean validateObject(T obj)
false
if obj
should be destroyed.validateObject
in interface PoolableObjectFactory<T>
obj
- the instance to be validatedfalse
if obj
is not valid and should
be dropped from the pool, true
otherwise.public void activateObject(T obj) throws java.lang.Exception
activateObject
in interface PoolableObjectFactory<T>
obj
- the instance to be activatedjava.lang.Exception
- if there is a problem activating obj
,
this exception may be swallowed by the pool.PoolableObjectFactory.destroyObject(T)
public void passivateObject(T obj) throws java.lang.Exception
passivateObject
in interface PoolableObjectFactory<T>
obj
- the instance to be passivatedjava.lang.Exception
- if there is a problem passivating obj
,
this exception may be swallowed by the pool.PoolableObjectFactory.destroyObject(T)
public java.lang.String toString()
toString
in class java.lang.Object