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-dbcp.git
commit 344234a758da62aa422f6f67c6e7b1f37329c9c0 Author: Gary Gregory <gardgreg...@gmail.com> AuthorDate: Sun Jul 3 07:53:52 2022 -0400 Refactor duplicate pattern --- .../org/apache/commons/dbcp2/BasicDataSource.java | 73 ++++++---------------- 1 file changed, 18 insertions(+), 55 deletions(-) diff --git a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java index 3763d1d1..5aad39d7 100644 --- a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java +++ b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java @@ -36,6 +36,7 @@ import java.util.List; import java.util.Objects; import java.util.Properties; import java.util.Set; +import java.util.function.BiConsumer; import java.util.logging.Logger; import javax.management.MBeanRegistration; @@ -1711,22 +1712,26 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean start(); } - /** - * Sets the print writer to be used by this configuration to log information on abandoned objects. - * - * @param logWriter The new log writer - */ - public void setAbandonedLogWriter(final PrintWriter logWriter) { + private <T> void setAbandoned(final T object, BiConsumer<AbandonedConfig, T> consumer) { if (abandonedConfig == null) { abandonedConfig = new AbandonedConfig(); } - abandonedConfig.setLogWriter(logWriter); + consumer.accept(abandonedConfig, object); final GenericObjectPool<?> gop = this.connectionPool; if (gop != null) { gop.setAbandonedConfig(abandonedConfig); } } + /** + * Sets the print writer to be used by this configuration to log information on abandoned objects. + * + * @param logWriter The new log writer + */ + public void setAbandonedLogWriter(final PrintWriter logWriter) { + setAbandoned(logWriter, AbandonedConfig::setLogWriter); + } + /** * If the connection pool implements {@link org.apache.commons.pool2.UsageTracking UsageTracking}, configure whether * the connection pool should record a stack trace every time a method is called on a pooled connection and retain @@ -1736,14 +1741,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean * pooled connection */ public void setAbandonedUsageTracking(final boolean usageTracking) { - if (abandonedConfig == null) { - abandonedConfig = new AbandonedConfig(); - } - abandonedConfig.setUseUsageTracking(usageTracking); - final GenericObjectPool<?> gop = this.connectionPool; - if (gop != null) { - gop.setAbandonedConfig(abandonedConfig); - } + setAbandoned(usageTracking, AbandonedConfig::setUseUsageTracking); } /** @@ -2125,14 +2123,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean * @param logAbandoned new logAbandoned property value */ public void setLogAbandoned(final boolean logAbandoned) { - if (abandonedConfig == null) { - abandonedConfig = new AbandonedConfig(); - } - abandonedConfig.setLogAbandoned(logAbandoned); - final GenericObjectPool<?> gop = this.connectionPool; - if (gop != null) { - gop.setAbandonedConfig(abandonedConfig); - } + setAbandoned(logAbandoned, AbandonedConfig::setLogAbandoned); } /** @@ -2373,14 +2364,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean * @see #getRemoveAbandonedOnBorrow() */ public void setRemoveAbandonedOnBorrow(final boolean removeAbandonedOnBorrow) { - if (abandonedConfig == null) { - abandonedConfig = new AbandonedConfig(); - } - abandonedConfig.setRemoveAbandonedOnBorrow(removeAbandonedOnBorrow); - final GenericObjectPool<?> gop = this.connectionPool; - if (gop != null) { - gop.setAbandonedConfig(abandonedConfig); - } + setAbandoned(removeAbandonedOnBorrow, AbandonedConfig::setRemoveAbandonedOnBorrow); } /** @@ -2388,14 +2372,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean * @see #getRemoveAbandonedOnMaintenance() */ public void setRemoveAbandonedOnMaintenance(final boolean removeAbandonedOnMaintenance) { - if (abandonedConfig == null) { - abandonedConfig = new AbandonedConfig(); - } - abandonedConfig.setRemoveAbandonedOnMaintenance(removeAbandonedOnMaintenance); - final GenericObjectPool<?> gop = this.connectionPool; - if (gop != null) { - gop.setAbandonedConfig(abandonedConfig); - } + setAbandoned(removeAbandonedOnMaintenance, AbandonedConfig::setRemoveAbandonedOnMaintenance); } /** @@ -2412,14 +2389,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean * @since 2.10.0 */ public void setRemoveAbandonedTimeout(final Duration removeAbandonedTimeout) { - if (abandonedConfig == null) { - abandonedConfig = new AbandonedConfig(); - } - abandonedConfig.setRemoveAbandonedTimeout(removeAbandonedTimeout); - final GenericObjectPool<?> gop = this.connectionPool; - if (gop != null) { - gop.setAbandonedConfig(abandonedConfig); - } + setAbandoned(removeAbandonedTimeout, AbandonedConfig::setRemoveAbandonedTimeout); } /** @@ -2437,14 +2407,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean */ @Deprecated public void setRemoveAbandonedTimeout(final int removeAbandonedTimeout) { - if (abandonedConfig == null) { - abandonedConfig = new AbandonedConfig(); - } - abandonedConfig.setRemoveAbandonedTimeout(Duration.ofSeconds(removeAbandonedTimeout)); - final GenericObjectPool<?> gop = this.connectionPool; - if (gop != null) { - gop.setAbandonedConfig(abandonedConfig); - } + setAbandoned(Duration.ofSeconds(removeAbandonedTimeout), AbandonedConfig::setRemoveAbandonedTimeout); } /**