Return-Path: Delivered-To: apmail-commons-commits-archive@minotaur.apache.org Received: (qmail 91676 invoked from network); 29 Oct 2010 09:15:49 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 29 Oct 2010 09:15:49 -0000 Received: (qmail 57545 invoked by uid 500); 29 Oct 2010 09:15:49 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 57183 invoked by uid 500); 29 Oct 2010 09:15:48 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 57174 invoked by uid 99); 29 Oct 2010 09:15:47 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Oct 2010 09:15:47 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Oct 2010 09:15:46 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 2956F23889FD; Fri, 29 Oct 2010 09:14:50 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1028653 - in /commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl: AbstractGenericObjectPoolConfig.java GenericKeyedObjectPoolConfig.java GenericObjectPoolConfig.java Date: Fri, 29 Oct 2010 09:14:50 -0000 To: commits@commons.apache.org From: simonetripodi@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101029091450.2956F23889FD@eris.apache.org> Author: simonetripodi Date: Fri Oct 29 09:14:49 2010 New Revision: 1028653 URL: http://svn.apache.org/viewvc?rev=1028653&view=rev Log: according to POOL-176, the GKOPC extends GOPC, the abstract layer is not more needed Removed: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/AbstractGenericObjectPoolConfig.java Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java?rev=1028653&r1=1028652&r2=1028653&view=diff ============================================================================== --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java Fri Oct 29 09:14:49 2010 @@ -22,7 +22,7 @@ package org.apache.commons.pool2.impl; * @since Pool 2.0 * @version $Revision$ $Date$ */ -public class GenericKeyedObjectPoolConfig extends AbstractGenericObjectPoolConfig { +public class GenericKeyedObjectPoolConfig extends GenericObjectPoolConfig { /** * The default cap on the the overall maximum number of objects that can Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java?rev=1028653&r1=1028652&r2=1028653&view=diff ============================================================================== --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java Fri Oct 29 09:14:49 2010 @@ -22,7 +22,119 @@ package org.apache.commons.pool2.impl; * @since Pool 2.0 * @version $Revision$ $Date$ */ -public class GenericObjectPoolConfig extends AbstractGenericObjectPoolConfig { +public class GenericObjectPoolConfig { + + /** + * The default cap on the number of "sleeping" instances in the pool. + * + * @see #getMaxIdle + * @see #setMaxIdle + */ + public static final int DEFAULT_MAX_IDLE = 8; + + /** + * The default minimum number of "sleeping" instances in the pool + * before before the evictor thread (if active) spawns new objects. + * + * @see #getMinIdle + * @see #setMinIdle + */ + public static final int DEFAULT_MIN_IDLE = 0; + + /** + * The default cap on the total number of active instances from the pool. + * + * @see #getMaxActive + * @see #setMaxActive + */ + public static final int DEFAULT_MAX_ACTIVE = 8; + + /** + * The default "when exhausted action" for the pool. + * + * @see WhenExhaustedAction#BLOCK + * @see WhenExhaustedAction#FAIL + * @see WhenExhaustedAction#GROW + * @see #setWhenExhaustedAction + */ + public static final WhenExhaustedAction DEFAULT_WHEN_EXHAUSTED_ACTION = WhenExhaustedAction.BLOCK; + + /** + * The default LIFO status. True means that borrowObject returns the + * most recently used ("last in") idle object in the pool (if there are + * idle instances available). False means that the pool behaves as a FIFO + * queue - objects are taken from the idle object pool in the order that + * they are returned to the pool. + * + * @see #getLifo + * @see #setLifo + */ + public static final boolean DEFAULT_LIFO = true; + + /** + * The default maximum amount of time (in milliseconds) the + * {@link #borrowObject} method should block before throwing + * an exception when the pool is exhausted and the + * {@link #getWhenExhaustedAction "when exhausted" action} is + * {@link WhenExhaustedAction#BLOCK}. + * + * @see #getMaxWait + * @see #setMaxWait + */ + public static final long DEFAULT_MAX_WAIT = -1L; + + /** + * The default "test on borrow" value. + * + * @see #getTestOnBorrow + * @see #setTestOnBorrow + */ + public static final boolean DEFAULT_TEST_ON_BORROW = false; + + /** + * The default "test on return" value. + * + * @see #getTestOnReturn + * @see #setTestOnReturn + */ + public static final boolean DEFAULT_TEST_ON_RETURN = false; + + /** + * The default "test while idle" value. + * + * @see #getTestWhileIdle + * @see #setTestWhileIdle + * @see #getTimeBetweenEvictionRunsMillis + * @see #setTimeBetweenEvictionRunsMillis + */ + public static final boolean DEFAULT_TEST_WHILE_IDLE = false; + + /** + * The default "time between eviction runs" value. + * + * @see #getTimeBetweenEvictionRunsMillis + * @see #setTimeBetweenEvictionRunsMillis + */ + public static final long DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS = -1L; + + /** + * The default number of objects to examine per run in the + * idle object evictor. + * + * @see #getNumTestsPerEvictionRun + * @see #setNumTestsPerEvictionRun + * @see #getTimeBetweenEvictionRunsMillis + * @see #setTimeBetweenEvictionRunsMillis + */ + public static final int DEFAULT_NUM_TESTS_PER_EVICTION_RUN = 3; + + /** + * The default value for {@link #getMinEvictableIdleTimeMillis}. + * + * @see #getMinEvictableIdleTimeMillis + * @see #setMinEvictableIdleTimeMillis + */ + public static final long DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS = 1000L * 60L * 30L; /** * The default value for {@link #getSoftMinEvictableIdleTimeMillis}. @@ -33,6 +145,147 @@ public class GenericObjectPoolConfig ext public static final long DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS = -1; /** + * The cap on the number of idle instances in the pool. + * + * @see #getMaxIdle + * @see #setMaxIdle + */ + private int maxIdle = DEFAULT_MAX_IDLE; + + /** + * The cap on the minimum number of idle instances in the pool. + * + * @see #getMinIdle + * @see #setMinIdle + */ + private int minIdle = DEFAULT_MIN_IDLE; + + /** + * The cap on the total number of active instances from the pool. + * + * @see #getMaxActive + * @see #setMaxActive + */ + private int maxActive = DEFAULT_MAX_ACTIVE; + + /** + * The maximum amount of time (in millis) the + * {@link org.apache.commons.pool2.ObjectPool#borrowObject} method should block before throwing + * an exception when the pool is exhausted and the + * {@link #getWhenExhaustedAction "when exhausted" action} is + * {@link WhenExhaustedAction#BLOCK}. + * + * When less than or equal to 0, the {@link org.apache.commons.pool2.ObjectPool#borrowObject} method + * may block indefinitely. + * + * @see #getMaxWait + * @see #setMaxWait + * @see WhenExhaustedAction#BLOCK + * @see #getWhenExhaustedAction + * @see #setWhenExhaustedAction + */ + private long maxWait = DEFAULT_MAX_WAIT; + + /** + * The action to take when the {@link org.apache.commons.pool2.ObjectPool#borrowObject} method + * is invoked when the pool is exhausted (the maximum number + * of "active" objects has been reached). + * + * @see WHEN_EXHAUSTED_ACTION#BLOCK + * @see WHEN_EXHAUSTED_ACTION#FAIL + * @see WHEN_EXHAUSTED_ACTION#GROW + * @see DEFAULT_WHEN_EXHAUSTED_ACTION + * @see #getWhenExhaustedAction + * @see #setWhenExhaustedAction + */ + private WhenExhaustedAction whenExhaustedAction = DEFAULT_WHEN_EXHAUSTED_ACTION; + + /** + * When true, objects will be + * {@link org.apache.commons.pool2.PoolableObjectFactory#validateObject validated} + * before being returned by the {@link org.apache.commons.pool2.ObjectPool#borrowObject} + * method. If the object fails to validate, + * it will be dropped from the pool, and we will attempt + * to borrow another. + * + * @see #getTestOnBorrow + * @see #setTestOnBorrow + */ + private boolean testOnBorrow = DEFAULT_TEST_ON_BORROW; + + /** + * When true, objects will be + * {@link org.apache.commons.pool2.ObjectPool#validateObject validated} + * before being returned to the pool within the + * {@link #returnObject}. + * + * @see #getTestOnReturn + * @see #setTestOnReturn + */ + private boolean testOnReturn = DEFAULT_TEST_ON_RETURN; + + /** + * When true, objects will be + * {@link org.apache.commons.pool2.ObjectPool#validateObject validated} + * by the idle object evictor (if any). If an object + * fails to validate, it will be dropped from the pool. + * + * @see #setTestWhileIdle + * @see #getTestWhileIdle + * @see #getTimeBetweenEvictionRunsMillis + * @see #setTimeBetweenEvictionRunsMillis + */ + private boolean testWhileIdle = DEFAULT_TEST_WHILE_IDLE; + + /** + * The number of milliseconds to sleep between runs of the + * idle object evictor thread. + * When non-positive, no idle object evictor thread will be + * run. + * + * @see #setTimeBetweenEvictionRunsMillis + * @see #getTimeBetweenEvictionRunsMillis + */ + private long timeBetweenEvictionRunsMillis = DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS; + + /** + * The max number of objects to examine during each run of the + * idle object evictor thread (if any). + *

+ * When a negative value is supplied, ceil({@link #getNumIdle})/abs({@link #getNumTestsPerEvictionRun}) + * tests will be run. I.e., when the value is -n, roughly one nth of the + * idle objects will be tested per run. + * + * @see #setNumTestsPerEvictionRun + * @see #getNumTestsPerEvictionRun + * @see #getTimeBetweenEvictionRunsMillis + * @see #setTimeBetweenEvictionRunsMillis + */ + private int numTestsPerEvictionRun = DEFAULT_NUM_TESTS_PER_EVICTION_RUN; + + /** + * The minimum amount of time an object may sit idle in the pool + * before it is eligible for eviction by the idle object evictor + * (if any). + * When non-positive, no objects will be evicted from the pool + * due to idle time alone. + * + * @see #setMinEvictableIdleTimeMillis + * @see #getMinEvictableIdleTimeMillis + * @see #getTimeBetweenEvictionRunsMillis + * @see #setTimeBetweenEvictionRunsMillis + */ + private long minEvictableIdleTimeMillis = DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS; + + /** + * Whether or not the pool behaves as a LIFO queue (last in first out) + * + * @see #getLifo + * @see #setLifo + */ + private boolean lifo = DEFAULT_LIFO; + + /** * The minimum amount of time an object may sit idle in the pool * before it is eligible for eviction by the idle object evictor * (if any), with the extra condition that at least @@ -45,6 +298,102 @@ public class GenericObjectPoolConfig ext */ private long softMinEvictableIdleTimeMillis = DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS; + public final int getMaxIdle() { + return maxIdle; + } + + public final void setMaxIdle(int maxIdle) { + this.maxIdle = maxIdle; + } + + public final int getMinIdle() { + return minIdle; + } + + public final void setMinIdle(int minIdle) { + this.minIdle = minIdle; + } + + public final int getMaxActive() { + return maxActive; + } + + public final void setMaxActive(int maxActive) { + this.maxActive = maxActive; + } + + public final long getMaxWait() { + return maxWait; + } + + public final void setMaxWait(long maxWait) { + this.maxWait = maxWait; + } + + public final WhenExhaustedAction getWhenExhaustedAction() { + return whenExhaustedAction; + } + + public final void setWhenExhaustedAction(WhenExhaustedAction whenExhaustedAction) { + this.whenExhaustedAction = whenExhaustedAction; + } + + public final boolean getTestOnBorrow() { + return testOnBorrow; + } + + public final void setTestOnBorrow(boolean testOnBorrow) { + this.testOnBorrow = testOnBorrow; + } + + public final boolean getTestOnReturn() { + return testOnReturn; + } + + public final void setTestOnReturn(boolean testOnReturn) { + this.testOnReturn = testOnReturn; + } + + public final boolean getTestWhileIdle() { + return testWhileIdle; + } + + public final void setTestWhileIdle(boolean testWhileIdle) { + this.testWhileIdle = testWhileIdle; + } + + public final long getTimeBetweenEvictionRunsMillis() { + return timeBetweenEvictionRunsMillis; + } + + public final void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) { + this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; + } + + public final int getNumTestsPerEvictionRun() { + return numTestsPerEvictionRun; + } + + public final void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) { + this.numTestsPerEvictionRun = numTestsPerEvictionRun; + } + + public final long getMinEvictableIdleTimeMillis() { + return minEvictableIdleTimeMillis; + } + + public final void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) { + this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; + } + + public final boolean getLifo() { + return lifo; + } + + public final void setLifo(boolean lifo) { + this.lifo = lifo; + } + public final synchronized long getSoftMinEvictableIdleTimeMillis() { return softMinEvictableIdleTimeMillis; }