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 2022/04/15 14:47:28 UTC
[commons-pool] branch master updated: Add KeyedObjectPool.getKeys()
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-pool.git
The following commit(s) were added to refs/heads/master by this push:
new ccd36019 Add KeyedObjectPool.getKeys()
ccd36019 is described below
commit ccd36019f3a87b38405a8ba3ddcacfac855bdb7b
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Apr 15 10:47:22 2022 -0400
Add KeyedObjectPool.getKeys()
---
src/changes/changes.xml | 3 +++
.../org/apache/commons/pool2/KeyedObjectPool.java | 12 +++++++++++
.../java/org/apache/commons/pool2/PoolUtils.java | 25 +++++++++++++++++++++-
.../commons/pool2/impl/GenericKeyedObjectPool.java | 1 +
.../pool2/proxy/ProxiedKeyedObjectPool.java | 6 ++++++
.../org/apache/commons/pool2/TestPoolUtils.java | 11 +++++-----
6 files changed, 52 insertions(+), 6 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d40ccf13..84c1577e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -64,6 +64,9 @@ The <action> type attribute can be add,update,fix,remove.
<action dev="ggregory" type="add" due-to="Vamsi Pavan Kumar Sanka, Phil Steitz, Gary Gregory">
Add GenericKeyedObjectPool.getKeys().
</action>
+ <action dev="ggregory" type="add" due-to="Gary Gregory">
+ Add KeyedObjectPool.getKeys().
+ </action>
<!-- UPDATE -->
<action dev="ggregory" type="update" due-to="Dependabot">
Bump actions/checkout from 2.3.4 to 3 #109, #112, #134.
diff --git a/src/main/java/org/apache/commons/pool2/KeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/KeyedObjectPool.java
index 3996bfbf..7b0960c0 100644
--- a/src/main/java/org/apache/commons/pool2/KeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/KeyedObjectPool.java
@@ -18,6 +18,8 @@ package org.apache.commons.pool2;
import java.io.Closeable;
import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
import java.util.NoSuchElementException;
/**
@@ -210,6 +212,16 @@ public interface KeyedObjectPool<K, V> extends Closeable {
@Override
void close();
+ /**
+ * Gets a copy of the pool key list.
+ *
+ * @return a copy of the pool key list.
+ * @since 2.12.0
+ */
+ default List<K> getKeys() {
+ return Collections.emptyList();
+ }
+
/**
* Gets the total number of instances currently borrowed from this pool but
* not yet returned. Returns a negative value if this information is not
diff --git a/src/main/java/org/apache/commons/pool2/PoolUtils.java b/src/main/java/org/apache/commons/pool2/PoolUtils.java
index ffbd89c3..023b040c 100644
--- a/src/main/java/org/apache/commons/pool2/PoolUtils.java
+++ b/src/main/java/org/apache/commons/pool2/PoolUtils.java
@@ -19,6 +19,7 @@ package org.apache.commons.pool2;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Timer;
@@ -223,6 +224,14 @@ public final class PoolUtils {
return keyedPool;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public List<K> getKeys() {
+ return keyedPool.getKeys();
+ }
+
/**
* {@inheritDoc}
*/
@@ -681,7 +690,7 @@ public final class PoolUtils {
* @param <K> object pool key type
* @param <V> object pool value type
*/
- private static final class SynchronizedKeyedObjectPool<K, V> implements
+ static final class SynchronizedKeyedObjectPool<K, V> implements
KeyedObjectPool<K, V> {
/**
@@ -785,6 +794,20 @@ public final class PoolUtils {
}
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public List<K> getKeys() {
+ final ReadLock readLock = readWriteLock.readLock();
+ readLock.lock();
+ try {
+ return keyedPool.getKeys();
+ } finally {
+ readLock.unlock();
+ }
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index e5d17b50..02c68eaa 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -1112,6 +1112,7 @@ public class GenericKeyedObjectPool<K, T> extends BaseGenericObjectPool<T>
* @return a copy of the pool key list.
* @since 2.12.0
*/
+ @Override
@SuppressWarnings("unchecked")
public List<K> getKeys() {
return (List<K>) poolKeyList.clone();
diff --git a/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
index c9877f7b..96f8ad86 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
@@ -16,6 +16,7 @@
*/
package org.apache.commons.pool2.proxy;
+import java.util.List;
import java.util.NoSuchElementException;
import org.apache.commons.pool2.KeyedObjectPool;
@@ -83,6 +84,11 @@ public class ProxiedKeyedObjectPool<K, V> implements KeyedObjectPool<K, V> {
pool.close();
}
+ @Override
+ public List<K> getKeys() {
+ return pool.getKeys();
+ }
+
@Override
public int getNumActive() {
return pool.getNumActive();
diff --git a/src/test/java/org/apache/commons/pool2/TestPoolUtils.java b/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
index de0efb2d..ceace74e 100644
--- a/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
+++ b/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
@@ -100,12 +100,13 @@ public class TestPoolUtils {
return createProxy(clazz, new MethodCallLogger(logger));
}
- private static List<String> invokeEveryMethod(final KeyedObjectPool<Object,Object> kop) throws Exception {
+ private static List<String> invokeEveryMethod(final KeyedObjectPool<Object, Object> kop) throws Exception {
kop.addObject(null);
kop.borrowObject(null);
kop.clear();
kop.clear(null);
kop.close();
+ kop.getKeys();
kop.getNumActive();
kop.getNumActive(null);
kop.getNumIdle();
@@ -114,8 +115,8 @@ public class TestPoolUtils {
kop.returnObject(null, new Object());
kop.toString();
- return Arrays.asList("addObject", "borrowObject", "clear", "clear", "close", "getNumActive", "getNumActive",
- "getNumIdle", "getNumIdle", "invalidateObject", "returnObject", "toString");
+ return Arrays.asList("addObject", "borrowObject", "clear", "clear", "close", "getKeys", "getNumActive", "getNumActive", "getNumIdle", "getNumIdle",
+ "invalidateObject", "returnObject", "toString");
}
private static <K, V> List<String> invokeEveryMethod(final KeyedPooledObjectFactory<K, V> kpof) throws Exception {
@@ -748,8 +749,8 @@ public class TestPoolUtils {
final List<String> calledMethods = new ArrayList<>();
try (@SuppressWarnings("unchecked")
- final KeyedObjectPool<Object, Object> kop = createProxy(KeyedObjectPool.class, calledMethods);
- final KeyedObjectPool<Object, Object> skop = PoolUtils.synchronizedPool(kop)) {
+ final KeyedObjectPool<Object, Object> kop = createProxy(KeyedObjectPool.class, calledMethods);
+ final KeyedObjectPool<Object, Object> skop = PoolUtils.synchronizedPool(kop)) {
final List<String> expectedMethods = invokeEveryMethod(skop);
assertEquals(expectedMethods, calledMethods);
}