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 <gardgreg...@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); } /**