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
The following commit(s) were added to refs/heads/master by this push: new 6006154a Use streams and reuse internal Utils code 6006154a is described below commit 6006154a2f89d94e51075a7ba83dd60968e2ea07 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sun Jul 17 09:15:00 2022 -0400 Use streams and reuse internal Utils code --- .../org/apache/commons/dbcp2/BasicDataSource.java | 65 ++++++++++++---------- .../apache/commons/dbcp2/DelegatingConnection.java | 2 +- .../commons/dbcp2/PoolableConnectionFactory.java | 2 +- src/main/java/org/apache/commons/dbcp2/Utils.java | 5 ++ 4 files changed, 42 insertions(+), 32 deletions(-) diff --git a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java index 23dd2bb3..29fdcdd7 100644 --- a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java +++ b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java @@ -28,16 +28,15 @@ import java.sql.DriverManager; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.time.Duration; -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.HashSet; 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 java.util.stream.Collectors; import java.util.stream.Stream; import javax.management.MBeanRegistration; @@ -1792,20 +1791,23 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean * @param connectionInitSqls Collection of SQL statements to execute on connection creation */ public void setConnectionInitSqls(final Collection<String> connectionInitSqls) { - if (connectionInitSqls != null && !connectionInitSqls.isEmpty()) { - ArrayList<String> newVal = null; - for (final String s : connectionInitSqls) { - if (!isEmpty(s)) { - if (newVal == null) { - newVal = new ArrayList<>(); - } - newVal.add(s); - } - } - this.connectionInitSqls = newVal; - } else { - this.connectionInitSqls = null; - } +// if (connectionInitSqls != null && !connectionInitSqls.isEmpty()) { +// ArrayList<String> newVal = null; +// for (final String s : connectionInitSqls) { +// if (!isEmpty(s)) { +// if (newVal == null) { +// newVal = new ArrayList<>(); +// } +// newVal.add(s); +// } +// } +// this.connectionInitSqls = newVal; +// } else { +// this.connectionInitSqls = null; +// } + final List<String> collect = Utils.isEmpty(connectionInitSqls) ? null + : connectionInitSqls.stream().filter(s -> !isEmpty(s)).collect(Collectors.toList()); + this.connectionInitSqls = Utils.isEmpty(collect) ? null : collect; } /** @@ -1955,20 +1957,23 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean * @since 2.1 */ public void setDisconnectionSqlCodes(final Collection<String> disconnectionSqlCodes) { - if (disconnectionSqlCodes != null && !disconnectionSqlCodes.isEmpty()) { - HashSet<String> newVal = null; - for (final String s : disconnectionSqlCodes) { - if (!isEmpty(s)) { - if (newVal == null) { - newVal = new HashSet<>(); - } - newVal.add(s); - } - } - this.disconnectionSqlCodes = newVal; - } else { - this.disconnectionSqlCodes = null; - } +// if (disconnectionSqlCodes != null && !disconnectionSqlCodes.isEmpty()) { +// HashSet<String> newVal = null; +// for (final String s : disconnectionSqlCodes) { +// if (!isEmpty(s)) { +// if (newVal == null) { +// newVal = new HashSet<>(); +// } +// newVal.add(s); +// } +// } +// this.disconnectionSqlCodes = newVal; +// } else { +// this.disconnectionSqlCodes = null; +// } + final Set<String> collect = Utils.isEmpty(disconnectionSqlCodes) ? null + : disconnectionSqlCodes.stream().filter(s -> !isEmpty(s)).collect(Collectors.toSet()); + this.disconnectionSqlCodes = Utils.isEmpty(collect) ? null : collect; } /** diff --git a/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java b/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java index 654eb78c..0b14076c 100644 --- a/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java +++ b/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java @@ -651,7 +651,7 @@ public class DelegatingConnection<C extends Connection> extends AbandonedTrace i // Statement's when it is closed. // DBCP-288. Not all the traced objects will be statements final List<AbandonedTrace> traceList = getTrace(); - if (traceList != null && !traceList.isEmpty()) { + if (!Utils.isEmpty(traceList)) { final List<Exception> thrownList = new ArrayList<>(); traceList.forEach(trace -> trace.close(thrownList::add)); clearTrace(); diff --git a/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java b/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java index fbca26ea..9bfb0ba5 100644 --- a/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java +++ b/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java @@ -363,7 +363,7 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo if (conn.isClosed()) { throw new SQLException("initializeConnection: connection closed"); } - if (null != sqls) { + if (!Utils.isEmpty(sqls)) { try (Statement statement = conn.createStatement()) { for (final String sql : sqls) { statement.execute(Objects.requireNonNull(sql, "null connectionInitSqls element")); diff --git a/src/main/java/org/apache/commons/dbcp2/Utils.java b/src/main/java/org/apache/commons/dbcp2/Utils.java index 0bf8ed06..fcfa2839 100644 --- a/src/main/java/org/apache/commons/dbcp2/Utils.java +++ b/src/main/java/org/apache/commons/dbcp2/Utils.java @@ -23,6 +23,7 @@ import java.sql.Statement; import java.text.MessageFormat; import java.time.Duration; import java.time.Instant; +import java.util.Collection; import java.util.HashSet; import java.util.Properties; import java.util.ResourceBundle; @@ -213,6 +214,10 @@ public final class Utils { return mf.format(args, new StringBuffer(), null).toString(); } + static boolean isEmpty(final Collection<?> collection) { + return collection == null || collection.isEmpty(); + } + static boolean isSecurityEnabled() { return System.getSecurityManager() != null; }