Author: markt
Date: Wed Nov 2 15:53:08 2016
New Revision: 1767714
URL: http://svn.apache.org/viewvc?rev=1767714&view=rev
Log:
Check class used for evictionPolicyClassName implements EvictionPolicy
Modified:
commons/proper/pool/trunk/src/changes/changes.xml
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
Modified: commons/proper/pool/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/changes/changes.xml?rev=1767714&r1=1767713&r2=1767714&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/changes/changes.xml (original)
+++ commons/proper/pool/trunk/src/changes/changes.xml Wed Nov 2 15:53:08 2016
@@ -67,6 +67,10 @@ The <action> type attribute can be add,u
maxTotal threads try to borrow objects with different keys at the same
time and the factory destroys objects on return.
</action>
+ <action dev="markt" type="fix">
+ Ensure that any class name used for evictionPolicyClassName represents a
+ class that implements EvictionPolicy.
+ </action>
</release>
<release version="2.4.2" date="2015-08-01" description=
"This is a patch release, including bug fixes only.">
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=1767714&r1=1767713&r2=1767714&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
Wed Nov 2 15:53:08 2016
@@ -613,6 +613,9 @@ public abstract class BaseGenericObjectP
final
EvictionPolicy<T> evicPolicy = (EvictionPolicy<T>) policy;
this.evictionPolicy = evicPolicy;
+ } else {
+ throw new IllegalArgumentException("[" +
evictionPolicyClassName +
+ "] does not implement EvictionPolicy");
}
} catch (final ClassNotFoundException e) {
throw new IllegalArgumentException(
Modified:
commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java?rev=1767714&r1=1767713&r2=1767714&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
(original)
+++
commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
Wed Nov 2 15:53:08 2016
@@ -1080,6 +1080,14 @@ public class TestGenericObjectPool exten
// expected
}
+ try {
+ pool.setEvictionPolicyClassName(java.lang.String.class.getName());
+ fail("setEvictionPolicyClassName must throw an error if a class
that does not "
+ + "implement EvictionPolicy is specified.");
+ } catch (final IllegalArgumentException e) {
+ // expected
+ }
+
pool.setEvictionPolicyClassName(TestEvictionPolicy.class.getName());
assertEquals(TestEvictionPolicy.class.getName(),
pool.getEvictionPolicyClassName());
@@ -1704,49 +1712,49 @@ public class TestGenericObjectPool exten
public SimpleFactory() {
this(true);
}
-
+
public SimpleFactory(final boolean valid) {
this(valid,valid);
}
-
+
public SimpleFactory(final boolean evalid, final boolean ovalid) {
evenValid = evalid;
oddValid = ovalid;
}
-
+
public synchronized void setValid(final boolean valid) {
setEvenValid(valid);
setOddValid(valid);
}
-
+
public synchronized void setEvenValid(final boolean valid) {
evenValid = valid;
}
-
+
public synchronized void setOddValid(final boolean valid) {
oddValid = valid;
}
-
+
public synchronized void setThrowExceptionOnPassivate(final boolean
bool) {
exceptionOnPassivate = bool;
}
-
+
public synchronized void setMaxTotal(final int maxTotal) {
this.maxTotal = maxTotal;
}
-
+
public synchronized void setDestroyLatency(final long destroyLatency) {
this.destroyLatency = destroyLatency;
}
-
+
public synchronized void setMakeLatency(final long makeLatency) {
this.makeLatency = makeLatency;
}
-
+
public synchronized void setValidateLatency(final long
validateLatency) {
this.validateLatency = validateLatency;
}
-
+
@Override
public PooledObject<String> makeObject() {
final long waitLatency;
@@ -1767,7 +1775,7 @@ public class TestGenericObjectPool exten
}
return new DefaultPooledObject<String>(String.valueOf(counter));
}
-
+
@Override
public void destroyObject(final PooledObject<String> obj) throws
Exception {
final long waitLatency;
@@ -1786,7 +1794,7 @@ public class TestGenericObjectPool exten
throw new Exception();
}
}
-
+
@Override
public boolean validateObject(final PooledObject<String> obj) {
final boolean validate;
@@ -1809,7 +1817,7 @@ public class TestGenericObjectPool exten
}
return true;
}
-
+
@Override
public void activateObject(final PooledObject<String> obj) throws
Exception {
final boolean hurl;
@@ -1828,7 +1836,7 @@ public class TestGenericObjectPool exten
}
}
}
-
+
@Override
public void passivateObject(final PooledObject<String> obj) throws
Exception {
final boolean hurl;