You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2018/05/26 17:21:55 UTC
[1/3] commons-pool git commit: Remove trailing spaces.
Repository: commons-pool
Updated Branches:
refs/heads/master d63cc48fd -> 41bf71b0f
Remove trailing spaces.
Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/7e1b7e45
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/7e1b7e45
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/7e1b7e45
Branch: refs/heads/master
Commit: 7e1b7e454fbc781db699b67a509d4ff651b8b439
Parents: d63cc48
Author: Gary Gregory <ga...@gmail.com>
Authored: Sat May 26 11:19:48 2018 -0600
Committer: Gary Gregory <ga...@gmail.com>
Committed: Sat May 26 11:19:48 2018 -0600
----------------------------------------------------------------------
src/main/java/org/apache/commons/pool2/PooledObjectFactory.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-pool/blob/7e1b7e45/src/main/java/org/apache/commons/pool2/PooledObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/PooledObjectFactory.java b/src/main/java/org/apache/commons/pool2/PooledObjectFactory.java
index 6adb778..3521daa 100644
--- a/src/main/java/org/apache/commons/pool2/PooledObjectFactory.java
+++ b/src/main/java/org/apache/commons/pool2/PooledObjectFactory.java
@@ -69,7 +69,7 @@ package org.apache.commons.pool2;
* @since 2.0
*/
public interface PooledObjectFactory<T> {
-
+
/**
* Creates an instance that can be served by the pool and wrap it in a
* {@link PooledObject} to be managed by the pool.
[3/3] commons-pool git commit: [POL-324]
org.apache.commons.pool2.impl.GenericObjectPool.getFactoryType() throws
java.lang.ClassCastException.
Posted by gg...@apache.org.
[POL-324]
org.apache.commons.pool2.impl.GenericObjectPool.getFactoryType() throws
java.lang.ClassCastException.
Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/41bf71b0
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/41bf71b0
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/41bf71b0
Branch: refs/heads/master
Commit: 41bf71b0f1e861008515b20672f86e98fbc8284f
Parents: 5499672
Author: Gary Gregory <ga...@gmail.com>
Authored: Sat May 26 11:21:51 2018 -0600
Committer: Gary Gregory <ga...@gmail.com>
Committed: Sat May 26 11:21:51 2018 -0600
----------------------------------------------------------------------
src/changes/changes.xml | 7 ++
.../commons/pool2/impl/PoolImplUtils.java | 105 +++++++++++++------
.../pool2/impl/TestGenericObjectPool.java | 7 +-
3 files changed, 80 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-pool/blob/41bf71b0/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 8f5f9c9..7d0bd85 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -62,6 +62,9 @@ The <action> type attribute can be add,update,fix,remove.
<action dev="ggregory" issue="POOL-338" type="fix" due-to="Michael C, Gary Gregory">
GenericObjectPool constructor may throw an exception under OSGi.
</action>
+ <action dev="ggregory" issue="POOL-324" type="fix" due-to="Jay Xu, Gary Gregory">
+ org.apache.commons.pool2.impl.GenericObjectPool.getFactoryType() throws java.lang.ClassCastException.
+ </action>
</release>
<release version="2.5.0" date="2017-12-16" description="This is a minor release, updating to Java 7.">
<action dev="ggregory" issue="POOL-331" type="update">
@@ -83,6 +86,10 @@ The <action> type attribute can be add,update,fix,remove.
Make abandoned logging stack trace requirements configurable. This also reverts
the default behavior introduced by POOL-320.
</action>
+ <action dev="mattsicker" issue="POOL-335" type="add">
+ Make abandoned logging stack trace requirements configurable. This also reverts
+ the default behavior introduced by POOL-320.
+ </action>
</release>
<release version="2.4.3" date="2017-10-24" description="This is a patch release, including bug fixes only.">
<action dev="ggregory" issue="POOL-328" type="fix" due-to="Lorenzo Solano Martinez">
http://git-wip-us.apache.org/repos/asf/commons-pool/blob/41bf71b0/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java b/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
index d39c96f..7d7e806 100644
--- a/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
+++ b/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
@@ -32,51 +32,65 @@ class PoolImplUtils {
/**
* Identifies the concrete type of object that an object factory creates.
*
- * @param factoryClass The factory to examine
+ * @param factoryClass
+ * The factory to examine
*
* @return the type of object the factory creates
*/
@SuppressWarnings("rawtypes")
static Class<?> getFactoryType(final Class<? extends PooledObjectFactory> factoryClass) {
- return (Class<?>) getGenericType(PooledObjectFactory.class, factoryClass);
+ final Class<PooledObjectFactory> type = PooledObjectFactory.class;
+ final Object genericType = getGenericType(type, factoryClass);
+ if (genericType instanceof Integer) {
+ // POOL-324 org.apache.commons.pool2.impl.GenericObjectPool.getFactoryType() throws
+ // java.lang.ClassCastException
+ //
+ // A bit hackish, but we must handle cases when getGenericType() does not return a concrete types.
+ final ParameterizedType pi = getParameterizedType(type, factoryClass);
+ if (pi != null) {
+ final Type[] bounds = ((TypeVariable) pi.getActualTypeArguments()[(Integer) genericType]).getBounds();
+ if (bounds != null && bounds.length > 0) {
+ final Type bound0 = bounds[0];
+ if (bound0 instanceof Class) {
+ return (Class<?>) bound0;
+ }
+ }
+ }
+ // last resort: Always return a Class
+ return Object.class;
+ }
+ return (Class<?>) genericType;
}
-
/**
- * Obtains the concrete type used by an implementation of an interface that
- * uses a generic type.
+ * Obtains the concrete type used by an implementation of an interface that uses a generic type.
*
- * @param type The interface that defines a generic type
- * @param clazz The class that implements the interface with a concrete type
- * @param <T> The interface type
+ * @param type
+ * The interface that defines a generic type
+ * @param clazz
+ * The class that implements the interface with a concrete type
+ * @param <T>
+ * The interface type
*
* @return concrete type used by the implementation
*/
- private static <T> Object getGenericType(final Class<T> type,
- final Class<? extends T> clazz) {
+ private static <T> Object getGenericType(final Class<T> type, final Class<? extends T> clazz) {
+ if (type == null || clazz == null) {
+ // Error will be logged further up the call stack
+ return null;
+ }
// Look to see if this class implements the generic interface
-
- // Get all the interfaces
- final Type[] interfaces = clazz.getGenericInterfaces();
- for (final Type iface : interfaces) {
- // Only need to check interfaces that use generics
- if (iface instanceof ParameterizedType) {
- final ParameterizedType pi = (ParameterizedType) iface;
- // Look for the generic interface
- if (pi.getRawType() instanceof Class) {
- if (type.isAssignableFrom((Class<?>) pi.getRawType())) {
- return getTypeParameter(clazz, pi.getActualTypeArguments()[0]);
- }
- }
- }
+ final ParameterizedType pi = getParameterizedType(type, clazz);
+ if (pi != null) {
+ return getTypeParameter(clazz, pi.getActualTypeArguments()[0]);
}
// Interface not found on this class. Look at the superclass.
@SuppressWarnings("unchecked")
- final Class<? extends T> superClazz = (Class<? extends T>) clazz.getSuperclass();
+ final Class<? extends T> superClass = (Class<? extends T>) clazz.getSuperclass();
- final Object result = getGenericType(type, superClazz);
+ final Object result = getGenericType(type, superClass);
if (result instanceof Class<?>) {
// Superclass implements interface and defines explicit type for generic
return result;
@@ -91,17 +105,42 @@ class PoolImplUtils {
}
}
+ /**
+ * Gets the matching parameterized type or null.
+ * @param type
+ * The interface that defines a generic type
+ * @param clazz
+ * The class that implements the interface with a concrete type
+ * @param <T>
+ * The interface type
+ */
+ private static <T> ParameterizedType getParameterizedType(final Class<T> type, final Class<? extends T> clazz) {
+ for (final Type iface : clazz.getGenericInterfaces()) {
+ // Only need to check interfaces that use generics
+ if (iface instanceof ParameterizedType) {
+ final ParameterizedType pi = (ParameterizedType) iface;
+ // Look for the generic interface
+ if (pi.getRawType() instanceof Class) {
+ if (type.isAssignableFrom((Class<?>) pi.getRawType())) {
+ return pi;
+ }
+ }
+ }
+ }
+ return null;
+ }
/**
- * For a generic parameter, return either the Class used or if the type
- * is unknown, the index for the type in definition of the class
+ * For a generic parameter, return either the Class used or if the type is unknown, the index for the type in
+ * definition of the class
*
- * @param clazz defining class
- * @param argType the type argument of interest
+ * @param clazz
+ * defining class
+ * @param argType
+ * the type argument of interest
*
- * @return An instance of {@link Class} representing the type used by the
- * type parameter or an instance of {@link Integer} representing
- * the index for the type in the definition of the defining class
+ * @return An instance of {@link Class} representing the type used by the type parameter or an instance of
+ * {@link Integer} representing the index for the type in the definition of the defining class
*/
private static Object getTypeParameter(final Class<?> clazz, final Type argType) {
if (argType instanceof Class<?>) {
http://git-wip-us.apache.org/repos/asf/commons-pool/blob/41bf71b0/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index cc71fd4..baac885 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -54,7 +54,6 @@ import org.apache.commons.pool2.WaiterFactory;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -2726,7 +2725,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
}
};
}
-
+
private BasePooledObjectFactory<String> createDefaultPooledObjectFactory() {
return new BasePooledObjectFactory<String>() {
@Override
@@ -2758,7 +2757,6 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
}
@Test
- @Ignore("https://issues.apache.org/jira/browse/POOL-324")
public void testGetFactoryType_PoolUtilsSynchronizedNullPooledFactory() {
try (final GenericObjectPool<String> pool = new GenericObjectPool<>(
PoolUtils.synchronizedPooledFactory(createNullPooledObjectFactory()))) {
@@ -2767,7 +2765,6 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
}
@Test
- @Ignore("https://issues.apache.org/jira/browse/POOL-324")
public void testGetFactoryType_PoolUtilsSynchronizedDefaultPooledFactory() {
try (final GenericObjectPool<String> pool = new GenericObjectPool<>(
PoolUtils.synchronizedPooledFactory(createDefaultPooledObjectFactory()))) {
@@ -2776,7 +2773,6 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
}
@Test
- @Ignore("https://issues.apache.org/jira/browse/POOL-324")
public void testGetFactoryType_SynchronizedNullPooledObjectFactory() {
try (final GenericObjectPool<String> pool = new GenericObjectPool<>(
new TestSynchronizedPooledObjectFactory<>(createNullPooledObjectFactory()))) {
@@ -2785,7 +2781,6 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
}
@Test
- @Ignore("https://issues.apache.org/jira/browse/POOL-324")
public void testGetFactoryType_SynchronizedDefaultPooledObjectFactory() {
try (final GenericObjectPool<String> pool = new GenericObjectPool<>(
new TestSynchronizedPooledObjectFactory<>(createDefaultPooledObjectFactory()))) {
[2/3] commons-pool git commit: Remove trailing spaces.
Posted by gg...@apache.org.
Remove trailing spaces.
Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/54996726
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/54996726
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/54996726
Branch: refs/heads/master
Commit: 54996726a89142f694efa43192b2547a907bf333
Parents: 7e1b7e4
Author: Gary Gregory <ga...@gmail.com>
Authored: Sat May 26 11:20:33 2018 -0600
Committer: Gary Gregory <ga...@gmail.com>
Committed: Sat May 26 11:20:33 2018 -0600
----------------------------------------------------------------------
src/main/java/org/apache/commons/pool2/PoolUtils.java | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-pool/blob/54996726/src/main/java/org/apache/commons/pool2/PoolUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/PoolUtils.java b/src/main/java/org/apache/commons/pool2/PoolUtils.java
index ba05cd4..a3097f1 100644
--- a/src/main/java/org/apache/commons/pool2/PoolUtils.java
+++ b/src/main/java/org/apache/commons/pool2/PoolUtils.java
@@ -639,7 +639,7 @@ public final class PoolUtils {
*/
private static final class KeyedObjectPoolMinIdleTimerTask<K, V> extends
TimerTask {
-
+
/** Minimum number of idle instances. Not the same as pool.getMinIdle(). */
private final int minIdle;
@@ -1119,7 +1119,7 @@ public final class PoolUtils {
*/
private static final class SynchronizedPooledObjectFactory<T> implements
PooledObjectFactory<T> {
-
+
/** Synchronization lock */
private final WriteLock writeLock = new ReentrantReadWriteLock().writeLock();
@@ -1236,7 +1236,7 @@ public final class PoolUtils {
*/
private static final class SynchronizedKeyedPooledObjectFactory<K, V>
implements KeyedPooledObjectFactory<K, V> {
-
+
/** Synchronization lock */
private final WriteLock writeLock = new ReentrantReadWriteLock().writeLock();
@@ -1421,7 +1421,7 @@ public final class PoolUtils {
* @param <T> type of objects in the pool
*/
private static class ErodingObjectPool<T> implements ObjectPool<T> {
-
+
/** Underlying object pool */
private final ObjectPool<T> pool;
@@ -1567,7 +1567,7 @@ public final class PoolUtils {
*/
private static class ErodingKeyedObjectPool<K, V> implements
KeyedObjectPool<K, V> {
-
+
/** Underlying pool */
private final KeyedObjectPool<K, V> keyedPool;
@@ -1781,7 +1781,7 @@ public final class PoolUtils {
*/
private static final class ErodingPerKeyKeyedObjectPool<K, V> extends
ErodingKeyedObjectPool<K, V> {
-
+
/** Erosion factor - same for all pools */
private final float factor;