org.codehaus.plexus.util
Class SweeperPool

java.lang.Object
  extended by org.codehaus.plexus.util.SweeperPool

public class SweeperPool
extends java.lang.Object

Pools a bunch of objects . Runs a sweeper periodically to keep it down to size. The objects in the pool first get disposed first.

Author:
Bert van Brakel

Nested Class Summary
private static class SweeperPool.Sweeper
          Periodically at sweepInterval goes through and tests if the pool should be trimmed.
 
Field Summary
private static boolean DEBUG
           
private  int maxSize
          Absolute maxiumuim size of the pool.
private  int minSize
          The size the pool gets trimmed down to
private  java.util.ArrayList pooledObjects
          Holds the pooled objects
private  boolean shuttingDown
          Flag indicating this pool is shuting down
private  SweeperPool.Sweeper sweeper
          Sweeps the pool periodically to trim it's size
private  int triggerSize
          When the sweeper runs and the pool is over this size, then the pool is trimmed
 
Constructor Summary
SweeperPool(int maxSize, int minSize, int intialCapacity, int sweepInterval, int triggerSize)
          There are a number of settings to control how the pool operates.
 
Method Summary
 void dispose()
          Dispose of this pool.
 java.lang.Object get()
          Return the pooled object
 int getSize()
          Return the number of pooled objects.
 void objectAdded(java.lang.Object obj)
          Override this to be notified of object addition.
 void objectDisposed(java.lang.Object obj)
          Override this to be notified of object disposal.
 void objectRetrieved(java.lang.Object obj)
          Override this to be notified of object retrieval.
 boolean put(java.lang.Object obj)
          Add an object to the pool
private  int saneConvert(int value)
           
 void trim()
          Trim the pool down to min size
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEBUG

private static final boolean DEBUG
See Also:
Constant Field Values

sweeper

private transient SweeperPool.Sweeper sweeper
Sweeps the pool periodically to trim it's size


maxSize

private transient int maxSize
Absolute maxiumuim size of the pool.


minSize

private transient int minSize
The size the pool gets trimmed down to


triggerSize

private int triggerSize
When the sweeper runs and the pool is over this size, then the pool is trimmed


pooledObjects

private java.util.ArrayList pooledObjects
Holds the pooled objects


shuttingDown

private boolean shuttingDown
Flag indicating this pool is shuting down

Constructor Detail

SweeperPool

public SweeperPool(int maxSize,
                   int minSize,
                   int intialCapacity,
                   int sweepInterval,
                   int triggerSize)

There are a number of settings to control how the pool operates.

Any value less than 0 is automatically converted to 0

Method Detail

saneConvert

private int saneConvert(int value)

get

public java.lang.Object get()
Return the pooled object


put

public boolean put(java.lang.Object obj)
Add an object to the pool

Parameters:
obj - the object to pool. Can be null.
Returns:
true if the object was added to the pool, false if it was disposed or null

getSize

public int getSize()
Return the number of pooled objects. This is never greater than t maximuim size of the pool

Returns:
the number of pooled objects

dispose

public void dispose()
Dispose of this pool. Stops the sweeper and disposes each object in the pool


trim

public void trim()
Trim the pool down to min size


objectDisposed

public void objectDisposed(java.lang.Object obj)
Override this to be notified of object disposal. Called after the object has been removed. Occurs when the pool is trimmed.

Parameters:
obj -

objectAdded

public void objectAdded(java.lang.Object obj)
Override this to be notified of object addition. Called before object is to be added.

Parameters:
obj -

objectRetrieved

public void objectRetrieved(java.lang.Object obj)
Override this to be notified of object retrieval. Called after object removed from the pool, but before returned to the client.

Parameters:
obj -