You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Quinton McCombs <qm...@nequalsone.com> on 2003/03/04 00:35:43 UTC
[POOL] [PATCH] Pool listeners
I have completed the work on implementing pool listeners. I also
corrected a few small defects. Unit tests have been modified to
include testing using listeners as well. I am attaching a
compressed tar file.
Here are the changes:
StackObjectPool.borrowObject():
- Implement listener notification
StackObjectPool.returnObject():
- Implement listener notification
- restructured to improve readability (IMHO)
- Fixed slight defect where _factory.destroyObject(obj) was
called when _factory==null. This was probabley never noticed
because the statement in a try/catch block with the exception
being ignored.
- _totActive can no longer be set to negative numbers as a result
of returning objects to the pool that were never borrowed.
StackObjectPool.invalidateObject():
- Implement listener notification
StackObjectPool.clear():
- Implement listener notification
- Switched from using Enum in a while loop to an Iterator in a
for loop.
---------------------------------------------------
StackKeyedObjectPool.borrowObject():
- Implement listener notification
StackKeyedObjectPool.returnObject():
- Implement listener notification
- restructured to improve readability (IMHO)
- The counters for the total active and active per key can no
longer be set to negative numbers as a result of returning
objects to the pool that were never borrowed.
StackKeyedObjectPool.invalidateObject():
- Implement listener notification
StackKeyedObjectPool.clear():
- Switch from a while loop to a for loop for the iteration.
StackObjectPool.destoryStack():
- Implement listener notification
- Switched from using Enum in a while loop to an Iterator in a
for loop.
StackObjectPool - general:
- Added a few javadocs
- made the declaration of synchronized methods consistent.
----------------------------------------------------
SoftReferenceObjectPool(PoolableObjectFactory,int):
- Implement listener notification
SoftReferenceObjectPool.borrowObject():
- Implement listener notification
SoftReferenceObjectPool.returnObject():
- Implement listener notification
- restructured to improve readability (IMHO)
- Fixed slight defect where _factory.destroyObject(obj) was
called when _factory==null. This was probabley never noticed
because the statement in a try/catch block with the exception
being ignored.
- _totActive can no longer be set to negative numbers as a result
of returning objects to the pool that were never borrowed.
SoftReferenceObjectPool.invalidateObject():
- Implement listener notification
SoftReferenceObjectPool.clear():
- Implement listener notification
- Switched from using Enum in a while loop to an Iterator in a
for loop.
------------------------------------------------------
GenericObjectPool.borrowObject():
- Implement listener notification
- object creation is now done in one place.
- If validation fails (testOnBorrow=true), the object will not
be passivated. It will just be destroyed instead. According
to the factory docs, passivation only occurs when being returned
to the pool. Also - the call to destroy() object was not surrounded
in a try/catch block. If an exception was thrown the entire call
to borrowObject() would have failed.
GenericObjectPool.returnObject():
- Implement listener notification
- restructured to improve readability (IMHO)
GenericObjectPool.invalidateObject():
- Implement listener notification
GenericObjectPool.clear():
- Implement listener notification
- Switched from using Enum in a while loop to an Iterator in a
for loop.
GenericObjectPool.evict():
- Implement listener notification
- restructured the code so that code to remove the object from the pool
is not duplicated.
- If activation fails, the object will not be passivated. It will just
be
destroyed.
- There were two places during the validation of the object where on
failure,
the object would be destroyed. The call to destoryObject() was not in
a
try/catch block. This has been corrected.
------------------------------------------------------------
GenericKeyedObjectPool.borrowObject():
- Implement listener notification
- object creation is now done in one place.
- If validation fails (testOnBorrow=true), the object will not
be passivated. It will just be destroyed instead. According
to the factory docs, passivation only occurs when being returned
to the pool. Also - the call to destroy() object was not surrounded
in a try/catch block. If an exception was thrown the entire call
to borrowObject() would have failed.
GenericKeyedObjectPool.clear():
- Implement listener notification
- Switch from a while loop to a for loop for the iteration.
GenericKeyedObjectPool.clear(key):
- Implement listener notification
- Switch from a while loop to a for loop for the iteration.
GenericKeyedObjectPool.returnObject():
- Implement listener notification
- restructured to improve readability (IMHO)
GenericKeyedObjectPool.invalidateObject():
- Implement listener notification
GenericKeyedObjectPool.evict():
- Implement listener notification
- restructured the code so that code to remove the object from the pool
is not duplicated.
- If activation fails, the object will not be passivated. It will just
be
destroyed.
- There were two places during the validation of the object where on
failure,
the object would be destroyed. The call to destoryObject() was not in
a
try/catch block. This has been corrected.
- If activation failed, the object was being dropped from the pool but
no check
was being done to remove the pool if that was the last object. This
has been
corrected.
GenericKeyedObjectPool - general:
- made the declaration of synchronized methods consistent.
-----------------------------------------------------------------
BaseKeyedObjectPool:
- Added listener manager
- added notify*() methods
- added addListener()
-----------------------------------------------------------------
BaseObjectPool:
- Added listener manager
- added notify*() methods
- added addListener()
-----------------------------------------------------------------
KeyedObjectPool:
- Added addListener() declaration
-----------------------------------------------------------------
ObjectPool:
- Added addListener() declaration
-----------------------------------------------------------------
New class: PoolAdapter
Default implementation of PoolListener
-----------------------------------------------------------------
New class: PoolEvent
Wrapper for the object which the event is about.
-----------------------------------------------------------------
New class: PoolListener
Interface for listener classes
-----------------------------------------------------------------
New class: PoolListenerManager
Manages the listeners for the pools.