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 2021/06/28 14:16:42 UTC
[commons-pool] branch master updated: Add and use
AbandonedConfig.copy(AbandonedConfig) to fix CPD code duplication issues in
GenericKeyedObjectPool and GenericObjectPool.
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 38a8341 Add and use AbandonedConfig.copy(AbandonedConfig) to fix CPD code duplication issues in GenericKeyedObjectPool and GenericObjectPool.
38a8341 is described below
commit 38a83412b960d128e1795db449f0dc29c70e3644
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Jun 28 10:16:38 2021 -0400
Add and use AbandonedConfig.copy(AbandonedConfig) to fix CPD code
duplication issues in GenericKeyedObjectPool and GenericObjectPool.
Also use lambdas.
---
src/changes/changes.xml | 3 ++
.../apache/commons/pool2/impl/AbandonedConfig.java | 34 ++++++++++++++++++++++
.../commons/pool2/impl/GenericKeyedObjectPool.java | 24 ++++-----------
.../commons/pool2/impl/GenericObjectPool.java | 14 +--------
4 files changed, 43 insertions(+), 32 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 4d98e39..5e4335e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -72,6 +72,9 @@ The <action> type attribute can be add,update,fix,remove.
<action issue="POOL-395" dev="ggregory" type="add" due-to="Gary Gregory, Arash Nikoo">
Improve exception thrown in GenericObjectPool.borrowObject when pool is exhausted. Added BaseGenericObjectPool.setMessagesStatistics(boolean).
</action>
+ <action issue="POOL-395" dev="ggregory" type="add" due-to="Gary Gregory, Arash Nikoo">
+ Add and use AbandonedConfig.copy(AbandonedConfig) to fix CPD code duplication issues in GenericKeyedObjectPool and GenericObjectPool.
+ </action>
<!-- FIXES -->
<action dev="ggregory" type="fix" due-to="Gary Gregory">
Fix "[WARNING] Old version of checkstyle detected. Consider updating to >= v8.30." Update Checktyle to 8.44.
diff --git a/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java b/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
index 6187189..31e1250 100644
--- a/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
@@ -35,6 +35,17 @@ public class AbandonedConfig {
private static final Duration DEFAULT_REMOVE_ABANDONED_TIMEOUT = Duration.ofSeconds(300);
/**
+ * Creates a new instance with values from the given instance.
+ *
+ * @param abandonedConfig the source, may be null.
+ * @return A new instance or null if the input is null.
+ * @since 2.11.0
+ */
+ public static AbandonedConfig copy(final AbandonedConfig abandonedConfig) {
+ return abandonedConfig == null ? null : new AbandonedConfig(abandonedConfig);
+ }
+
+ /**
* Whether or not borrowObject performs abandoned object removal.
*/
private boolean removeAbandonedOnBorrow;
@@ -79,6 +90,29 @@ public class AbandonedConfig {
private boolean useUsageTracking = false;
/**
+ * Creates a new instance.
+ */
+ public AbandonedConfig() {
+ // empty
+ }
+
+ /**
+ * Creates a new instance with values from the given instance.
+ *
+ * @param abandonedConfig the source.
+ */
+ @SuppressWarnings("resource")
+ private AbandonedConfig(AbandonedConfig abandonedConfig) {
+ this.setLogAbandoned(abandonedConfig.getLogAbandoned());
+ this.setLogWriter(abandonedConfig.getLogWriter());
+ this.setRemoveAbandonedOnBorrow(abandonedConfig.getRemoveAbandonedOnBorrow());
+ this.setRemoveAbandonedOnMaintenance(abandonedConfig.getRemoveAbandonedOnMaintenance());
+ this.setRemoveAbandonedTimeout(abandonedConfig.getRemoveAbandonedTimeoutDuration());
+ this.setUseUsageTracking(abandonedConfig.getUseUsageTracking());
+ this.setRequireFullStackTrace(abandonedConfig.getRequireFullStackTrace());
+ }
+
+ /**
* Flag to log stack traces for application code which abandoned
* an object.
*
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 7dd3157..7d68cac 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -1191,12 +1191,10 @@ public class GenericKeyedObjectPool<K, T> extends BaseGenericObjectPool<T>
}
@Override
- public Map<String,Integer> getNumActivePerKey() {
- final HashMap<String,Integer> result = new HashMap<>();
+ public Map<String, Integer> getNumActivePerKey() {
+ final HashMap<String, Integer> result = new HashMap<>();
- final Iterator<Entry<K,ObjectDeque<T>>> iter = poolMap.entrySet().iterator();
- while (iter.hasNext()) {
- final Entry<K,ObjectDeque<T>> entry = iter.next();
+ poolMap.entrySet().forEach(entry -> {
if (entry != null) {
final K key = entry.getKey();
final ObjectDeque<T> objectDequeue = entry.getValue();
@@ -1206,7 +1204,7 @@ public class GenericKeyedObjectPool<K, T> extends BaseGenericObjectPool<T>
objectDequeue.getIdleObjects().size()));
}
}
- }
+ });
return result;
}
@@ -1732,20 +1730,8 @@ public class GenericKeyedObjectPool<K, T> extends BaseGenericObjectPool<T>
* @see AbandonedConfig
* @since 2.10.0
*/
- @SuppressWarnings("resource") // PrintWriter is managed elsewhere
public void setAbandonedConfig(final AbandonedConfig abandonedConfig) {
- if (abandonedConfig == null) {
- this.abandonedConfig = null;
- } else {
- this.abandonedConfig = new AbandonedConfig();
- this.abandonedConfig.setLogAbandoned(abandonedConfig.getLogAbandoned());
- this.abandonedConfig.setLogWriter(abandonedConfig.getLogWriter());
- this.abandonedConfig.setRemoveAbandonedOnBorrow(abandonedConfig.getRemoveAbandonedOnBorrow());
- this.abandonedConfig.setRemoveAbandonedOnMaintenance(abandonedConfig.getRemoveAbandonedOnMaintenance());
- this.abandonedConfig.setRemoveAbandonedTimeout(abandonedConfig.getRemoveAbandonedTimeoutDuration());
- this.abandonedConfig.setUseUsageTracking(abandonedConfig.getUseUsageTracking());
- this.abandonedConfig.setRequireFullStackTrace(abandonedConfig.getRequireFullStackTrace());
- }
+ this.abandonedConfig = AbandonedConfig.copy(abandonedConfig);
}
/**
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index 93cef67..7ab55c2 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -1217,20 +1217,8 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
*
* @see AbandonedConfig
*/
- @SuppressWarnings("resource") // PrintWriter is managed elsewhere
public void setAbandonedConfig(final AbandonedConfig abandonedConfig) {
- if (abandonedConfig == null) {
- this.abandonedConfig = null;
- } else {
- this.abandonedConfig = new AbandonedConfig();
- this.abandonedConfig.setLogAbandoned(abandonedConfig.getLogAbandoned());
- this.abandonedConfig.setLogWriter(abandonedConfig.getLogWriter());
- this.abandonedConfig.setRemoveAbandonedOnBorrow(abandonedConfig.getRemoveAbandonedOnBorrow());
- this.abandonedConfig.setRemoveAbandonedOnMaintenance(abandonedConfig.getRemoveAbandonedOnMaintenance());
- this.abandonedConfig.setRemoveAbandonedTimeout(abandonedConfig.getRemoveAbandonedTimeoutDuration());
- this.abandonedConfig.setUseUsageTracking(abandonedConfig.getUseUsageTracking());
- this.abandonedConfig.setRequireFullStackTrace(abandonedConfig.getRequireFullStackTrace());
- }
+ this.abandonedConfig = AbandonedConfig.copy(abandonedConfig);
}
/**