You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2007/02/21 17:36:17 UTC
svn commit: r510091 -
/incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/PoolManager.java
Author: jmsnell
Date: Wed Feb 21 08:36:17 2007
New Revision: 510091
URL: http://svn.apache.org/viewvc?view=rev&rev=510091
Log:
Allow the max size to be set on the PoolManager
Modified:
incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/PoolManager.java
Modified: incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/PoolManager.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/PoolManager.java?view=diff&rev=510091&r1=510090&r2=510091
==============================================================================
--- incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/PoolManager.java (original)
+++ incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/PoolManager.java Wed Feb 21 08:36:17 2007
@@ -22,22 +22,33 @@
/**
* Implements a simple pool manager.
*
- * An upper limit to the pool is set at 25 entries.
+ * By default, an upper limit to the pool is set at 25 entries.
* New items can always be created.
*/
public abstract class PoolManager<T> {
- private static final int SIZE = 25;
+ private static final int DEFAULT_SIZE = 25;
+ private final Stack<T> pool;
- private final Stack<T> pool = new Stack<T>() {
- private static final long serialVersionUID = -6647024253014661104L;
- @Override
- public T push(T item) {
- T obj = super.push(item);
- if (this.size() > SIZE) this.removeElementAt(0);
- return obj;
- }
- };
+ protected PoolManager() {
+ this(DEFAULT_SIZE);
+ }
+
+ protected PoolManager(int max) {
+ this.pool = initStack(max);
+ }
+
+ private Stack<T> initStack(final int max) {
+ return new Stack<T>() {
+ private static final long serialVersionUID = -6647024253014661104L;
+ @Override
+ public T push(T item) {
+ T obj = super.push(item);
+ if (this.size() > max) this.removeElementAt(0);
+ return obj;
+ }
+ };
+ }
protected synchronized T getInstance() {
return (!pool.empty()) ? pool.pop() : internalNewInstance();