You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2012/04/30 16:30:35 UTC
svn commit: r1332219 - in
/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl:
BaseGenericObjectPool.java GenericKeyedObjectPool.java GenericObjectPool.java
Author: markt
Date: Mon Apr 30 14:30:35 2012
New Revision: 1332219
URL: http://svn.apache.org/viewvc?rev=1332219&view=rev
Log:
Pull up lifo and evictionPolicy
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
Modified: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java?rev=1332219&r1=1332218&r2=1332219&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java (original)
+++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java Mon Apr 30 14:30:35 2012
@@ -61,6 +61,7 @@ public abstract class BaseGenericObjectP
GenericObjectPoolConfig.DEFAULT_BLOCK_WHEN_EXHAUSTED;
private volatile long maxWaitMillis =
GenericKeyedObjectPoolConfig.DEFAULT_MAX_WAIT_MILLIS;
+ private volatile boolean lifo = GenericObjectPoolConfig.DEFAULT_LIFO;
private volatile boolean testOnBorrow =
GenericObjectPoolConfig.DEFAULT_TEST_ON_BORROW;
private volatile boolean testOnReturn =
@@ -75,6 +76,7 @@ public abstract class BaseGenericObjectP
GenericObjectPoolConfig.DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
private volatile long softMinEvictableIdleTimeMillis =
GenericObjectPoolConfig.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
+ private volatile EvictionPolicy<T> evictionPolicy;
// Internal (primarily state) attributes
@@ -212,6 +214,38 @@ public abstract class BaseGenericObjectP
}
/**
+ * Returns whether the pool has LIFO (last in, first out) behaviour with
+ * respect to idle objects - always returning the most recently used object
+ * from the pool, or as a FIFO (first in, first out) queue, where the pool
+ * always returns the oldest object in the idle object pool.
+ *
+ * @return <code>true</true> if the pool is configured with LIFO behaviour
+ * or <code>false</code> if the pool is configured with FIFO
+ * behaviour
+ *
+ * @see #setLifo
+ */
+ public boolean getLifo() {
+ return lifo;
+ }
+
+ /**
+ * Sets whether the pool has LIFO (last in, first out) behaviour with
+ * respect to idle objects - always returning the most recently used object
+ * from the pool, or as a FIFO (first in, first out) queue, where the pool
+ * always returns the oldest object in the idle object pool.
+ *
+ * @param lifo <code>true</true> if the pool is to be configured with LIFO
+ * behaviour or <code>false</code> if the pool is to be
+ * configured with FIFO behaviour
+ *
+ * @see #getLifo()
+ */
+ public void setLifo(boolean lifo) {
+ this.lifo = lifo;
+ }
+
+ /**
* Returns whether objects borrowed from the pool will be validated before
* being returned from the <code>borrowObject()</code> method. Validation is
* performed by the factory associated with the pool. If the object fails to
@@ -450,6 +484,50 @@ public abstract class BaseGenericObjectP
this.softMinEvictableIdleTimeMillis = softMinEvictableIdleTimeMillis;
}
+ /**
+ * Returns the name of the {@link EvictionPolicy} implementation that is
+ * used by this pool.
+ *
+ * @return The fully qualified class name of the {@link EvictionPolicy}
+ *
+ * @see #setEvictionPolicyClassName(String)
+ */
+ public String getEvictionPolicyClassName() {
+ return evictionPolicy.getClass().getName();
+ }
+
+ /**
+ * Sets the name of the {@link EvictionPolicy} implementation that is
+ * used by this pool.
+ *
+ * @param evictionPolicyClassName the fully qualified class name of the
+ * new eviction policy
+ *
+ * @see #getEvictionPolicyClassName()
+ */
+ @SuppressWarnings("unchecked")
+ public void setEvictionPolicyClassName(String evictionPolicyClassName) {
+ try {
+ Class<?> clazz = Class.forName(evictionPolicyClassName);
+ Object policy = clazz.newInstance();
+ if (policy instanceof EvictionPolicy<?>) {
+ this.evictionPolicy = (EvictionPolicy<T>) policy;
+ }
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException(
+ "Unable to create EvictionPolicy instance of type " +
+ evictionPolicyClassName, e);
+ } catch (InstantiationException e) {
+ throw new IllegalArgumentException(
+ "Unable to create EvictionPolicy instance of type " +
+ evictionPolicyClassName, e);
+ } catch (IllegalAccessException e) {
+ throw new IllegalArgumentException(
+ "Unable to create EvictionPolicy instance of type " +
+ evictionPolicyClassName, e);
+ }
+ }
+
/**
* Closes the pool, destroys the remaining idle objects and, if registered
@@ -477,6 +555,13 @@ public abstract class BaseGenericObjectP
*/
public abstract void evict() throws Exception;
+ /*
+ * Make the eviction policy instance available to the sub-classes
+ */
+ EvictionPolicy<T> getEvictionPolicy() {
+ return evictionPolicy;
+ }
+
/**
* Throws an <code>IllegalStateException</code> if called when the pool has
* been closed.
Modified: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java?rev=1332219&r1=1332218&r2=1332219&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java (original)
+++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java Mon Apr 30 14:30:35 2012
@@ -364,61 +364,6 @@ public class GenericKeyedObjectPool<K,T>
}
}
- public String getEvictionPolicyClassName() {
- return evictionPolicy.getClass().getName();
- }
-
- @SuppressWarnings("unchecked")
- public void setEvictionPolicyClassName(String evictionPolicyClassName) {
- try {
- Class<?> clazz = Class.forName(evictionPolicyClassName);
- Object policy = clazz.newInstance();
- if (policy instanceof EvictionPolicy<?>) {
- this.evictionPolicy = (EvictionPolicy<T>) policy;
- }
- } catch (ClassNotFoundException e) {
- throw new IllegalArgumentException(
- "Unable to create EvictionPolicy instance of type " +
- evictionPolicyClassName, e);
- } catch (InstantiationException e) {
- throw new IllegalArgumentException(
- "Unable to create EvictionPolicy instance of type " +
- evictionPolicyClassName, e);
- } catch (IllegalAccessException e) {
- throw new IllegalArgumentException(
- "Unable to create EvictionPolicy instance of type " +
- evictionPolicyClassName, e);
- }
- }
-
- /**
- * The pools can be configured to behave as LIFO (last in, first out) queues
- * with respect to idle objects - always returning the most recently used
- * object from the pool, or as FIFO (first in, first out) queues, where
- * {@link #borrowObject(Object)} and {@link #borrowObject(Object, long)}
- * always return the oldest object in the idle object pool.
- *
- * @return <code>true</code> if the pools are configured to act as LIFO
- * queues or <code>false</code> if the pools are configured to act
- * as FIFO queues
- * @since 1.4
- */
- @Override
- public boolean getLifo() {
- return lifo;
- }
-
- /**
- * Sets the LIFO property of the pools.
- *
- * @param lifo the new value for the lifo property
- * @since 1.4
- * @see #getLifo()
- */
- public void setLifo(boolean lifo) {
- this.lifo = lifo;
- }
-
/**
* Sets the configuration.
* @param conf the new configuration to use.
@@ -1062,6 +1007,7 @@ public class GenericKeyedObjectPool<K,T>
}
PooledObject<T> underTest = null;
+ EvictionPolicy<T> evictionPolicy = getEvictionPolicy();
synchronized (evictionLock) {
EvictionConfig evictionConfig = new EvictionConfig(
@@ -1769,7 +1715,6 @@ public class GenericKeyedObjectPool<K,T>
private int maxTotalPerKey =
GenericKeyedObjectPoolConfig.DEFAULT_MAX_TOTAL_PER_KEY;
- private boolean lifo = GenericKeyedObjectPoolConfig.DEFAULT_LIFO;
private final KeyedPoolableObjectFactory<K,T> factory;
@@ -1813,11 +1758,6 @@ public class GenericKeyedObjectPool<K,T>
*/
private K evictionKey = null; // @GuardedBy("evictionLock")
- /**
- * Policy that determines if an object is eligible for eviction or not.
- */
- private EvictionPolicy<T> evictionPolicy;
-
/** Object used to ensure closed() is only called once. */
private final Object closeLock = new Object();
Modified: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java?rev=1332219&r1=1332218&r2=1332219&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java (original)
+++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java Mon Apr 30 14:30:35 2012
@@ -302,61 +302,6 @@ public class GenericObjectPool<T> extend
}
- public String getEvictionPolicyClassName() {
- return evictionPolicy.getClass().getName();
- }
-
- @SuppressWarnings("unchecked")
- public void setEvictionPolicyClassName(String evictionPolicyClassName) {
- try {
- Class<?> clazz = Class.forName(evictionPolicyClassName);
- Object policy = clazz.newInstance();
- if (policy instanceof EvictionPolicy<?>) {
- this.evictionPolicy = (EvictionPolicy<T>) policy;
- }
- } catch (ClassNotFoundException e) {
- throw new IllegalArgumentException(
- "Unable to create EvictionPolicy instance of type " +
- evictionPolicyClassName, e);
- } catch (InstantiationException e) {
- throw new IllegalArgumentException(
- "Unable to create EvictionPolicy instance of type " +
- evictionPolicyClassName, e);
- } catch (IllegalAccessException e) {
- throw new IllegalArgumentException(
- "Unable to create EvictionPolicy instance of type " +
- evictionPolicyClassName, e);
- }
- }
-
- /**
- * The pool can be configured to behave as a LIFO (last in, first out) queue
- * with respect to idle objects - always returning the most recently used
- * object from the pool, or as a FIFO (first in, first out) queue, where
- * {@link #borrowObject} always returns the oldest object in the idle object
- * pool.
- *
- * @return <code>true</true> if the pool is configured to act as a LIFO
- * queue or <code>false</code> if the pool is configured to act as a
- * FIFO queue
- * @since 1.4
- */
- @Override
- public boolean getLifo() {
- return lifo;
- }
-
- /**
- * Sets the LIFO property of the pool.
- *
- * @param lifo the new value for the LIFO property
- * @since 1.4
- * @see #getLifo()
- */
- public void setLifo(boolean lifo) {
- this.lifo = lifo;
- }
-
/**
* Sets my configuration.
*
@@ -785,6 +730,7 @@ public class GenericObjectPool<T> extend
}
PooledObject<T> underTest = null;
+ EvictionPolicy<T> evictionPolicy = getEvictionPolicy();
synchronized (evictionLock) {
EvictionConfig evictionConfig = new EvictionConfig(
@@ -1106,7 +1052,6 @@ public class GenericObjectPool<T> extend
*/
private volatile int minIdle = GenericObjectPoolConfig.DEFAULT_MIN_IDLE;
- private volatile boolean lifo = GenericObjectPoolConfig.DEFAULT_LIFO;
private final PoolableObjectFactory<T> factory;
@@ -1134,11 +1079,6 @@ public class GenericObjectPool<T> extend
private final LinkedBlockingDeque<PooledObject<T>> idleObjects =
new LinkedBlockingDeque<PooledObject<T>>();
- /**
- * Policy that determines if an object is eligible for eviction or not.
- */
- private EvictionPolicy<T> evictionPolicy;
-
/** Object used to ensure closed() is only called once. */
private final Object closeLock = new Object();