From 16436f7cefa7cafa26d8eb4d1fe619e317ce4b88 Mon Sep 17 00:00:00 2001 From: Eric Long Date: Wed, 10 Mar 2021 10:52:42 -0500 Subject: [PATCH] 0004880: Upgrade DBCP and Vaadin libraries --- symmetric-assemble/common.gradle | 2 +- symmetric-assemble/gradle.properties | 2 +- .../symmetric/AbstractCommandLauncher.java | 2 +- .../symmetric/ClientSymmetricEngine.java | 2 +- .../org/jumpmind/symmetric/DbSqlCommand.java | 2 +- .../db/sqlite/SqliteJdbcSymmetricDialect.java | 2 +- .../service/jmx/NodeManagementService.java | 6 +-- .../jumpmind/symmetric/util/SnapshotUtil.java | 4 +- symmetric-jdbc/build.gradle | 2 +- .../AbstractJdbcDatabasePlatform.java | 2 +- .../db/platform/AbstractJdbcDdlReader.java | 1 + .../db/util/BasicDataSourceFactory.java | 4 +- .../db/util/ResettableBasicDataSource.java | 52 +++++-------------- symmetric-sqlexplorer/build.gradle | 2 +- .../vaadin/ui/sqlexplorer/DemoUI.java | 2 +- 15 files changed, 32 insertions(+), 55 deletions(-) diff --git a/symmetric-assemble/common.gradle b/symmetric-assemble/common.gradle index f7f67ac398..c75fa1ea0d 100644 --- a/symmetric-assemble/common.gradle +++ b/symmetric-assemble/common.gradle @@ -223,7 +223,7 @@ subprojects { subproject -> bshVersion = '2.0b6' commonsBeanUtilsVersion = '1.9.4' commonsCliVersion = '1.4' - commonsDbcpVersion = '1.4' + commonsDbcpVersion = '2.8.0' commonsFileuploadVersion = '1.4' commonsIoVersion = '2.8.0' commonsLangVersion = '3.11' diff --git a/symmetric-assemble/gradle.properties b/symmetric-assemble/gradle.properties index bd764a73bc..8934f72ea4 100644 --- a/symmetric-assemble/gradle.properties +++ b/symmetric-assemble/gradle.properties @@ -11,7 +11,7 @@ publishPort=? publishServer=symmetricds.org sourceforgeUser=? sourceforgePassword=? -vaadinVersion=8.12.1 +vaadinVersion=8.12.3 org.gradle.daemon=false latestPreviousVersion=3.11.9 restAPISecret=? \ No newline at end of file diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/AbstractCommandLauncher.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/AbstractCommandLauncher.java index f0d8518763..4fa69e2b5f 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/AbstractCommandLauncher.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/AbstractCommandLauncher.java @@ -40,7 +40,7 @@ import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; -import org.apache.commons.dbcp.BasicDataSource; +import org.apache.commons.dbcp2.BasicDataSource; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import org.jumpmind.db.platform.IDatabasePlatform; diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/ClientSymmetricEngine.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/ClientSymmetricEngine.java index 7ec97be963..4347396d80 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/ClientSymmetricEngine.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/ClientSymmetricEngine.java @@ -40,7 +40,7 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; -import org.apache.commons.dbcp.BasicDataSource; +import org.apache.commons.dbcp2.BasicDataSource; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.jumpmind.db.platform.IDatabasePlatform; diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/DbSqlCommand.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/DbSqlCommand.java index e8b3ee6c5e..bca0c723d0 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/DbSqlCommand.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/DbSqlCommand.java @@ -26,7 +26,7 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Options; -import org.apache.commons.dbcp.BasicDataSource; +import org.apache.commons.dbcp2.BasicDataSource; import org.h2.tools.Shell; public class DbSqlCommand extends AbstractCommandLauncher { diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/db/sqlite/SqliteJdbcSymmetricDialect.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/db/sqlite/SqliteJdbcSymmetricDialect.java index d1c5f70749..73abfeb1fc 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/db/sqlite/SqliteJdbcSymmetricDialect.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/db/sqlite/SqliteJdbcSymmetricDialect.java @@ -21,7 +21,7 @@ protected void setSqliteFunctionResult(ISqlTransaction transaction, final String trans.executeCallback(new IConnectionCallback() { @Override public Object execute(Connection con) throws SQLException { - org.sqlite.SQLiteConnection unwrapped = ((org.sqlite.SQLiteConnection)((org.apache.commons.dbcp.DelegatingConnection)con).getInnermostDelegate()); + org.sqlite.SQLiteConnection unwrapped = ((org.sqlite.SQLiteConnection)((org.apache.commons.dbcp2.DelegatingConnection)con).getInnermostDelegate()); org.sqlite.Function.create(unwrapped, name, new org.sqlite.Function() { @Override diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/service/jmx/NodeManagementService.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/service/jmx/NodeManagementService.java index 8606074739..76cbdd0056 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/service/jmx/NodeManagementService.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/service/jmx/NodeManagementService.java @@ -32,7 +32,7 @@ import javax.sql.DataSource; -import org.apache.commons.dbcp.BasicDataSource; +import org.apache.commons.dbcp2.BasicDataSource; import org.apache.commons.lang3.StringUtils; import org.jumpmind.extension.IBuiltInExtensionPoint; import org.jumpmind.security.SecurityConstants; @@ -259,11 +259,11 @@ public int getDatabaseConnectionsActive() { } } - @ManagedAttribute(description = "If a BasicDataSource, then show the number of active connections") + @ManagedAttribute(description = "If a BasicDataSource, then show the max number of total connections") public int getDatabaseConnectionsMax() { if (isBasicDataSource()) { DataSource dataSource = engine.getDataSource(); - return ((BasicDataSource) dataSource).getMaxActive(); + return ((BasicDataSource) dataSource).getMaxTotal(); } else { return -1; } diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java index 6bd7aca08c..38ef62a8e7 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java @@ -56,7 +56,7 @@ import javax.management.ObjectName; import javax.sql.DataSource; -import org.apache.commons.dbcp.BasicDataSource; +import org.apache.commons.dbcp2.BasicDataSource; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; @@ -618,7 +618,7 @@ public synchronized Enumeration keys() { BasicDataSource dbcp = (BasicDataSource) dataSource; runtimeProperties.setProperty("connections.idle", String.valueOf(dbcp.getNumIdle())); runtimeProperties.setProperty("connections.used", String.valueOf(dbcp.getNumActive())); - runtimeProperties.setProperty("connections.max", String.valueOf(dbcp.getMaxActive())); + runtimeProperties.setProperty("connections.max", String.valueOf(dbcp.getMaxTotal())); } Runtime rt = Runtime.getRuntime(); diff --git a/symmetric-jdbc/build.gradle b/symmetric-jdbc/build.gradle index ac46344469..a0673d4c12 100644 --- a/symmetric-jdbc/build.gradle +++ b/symmetric-jdbc/build.gradle @@ -4,7 +4,7 @@ apply from: symAssembleDir + '/common.gradle' dependencies { compile project(":symmetric-db") - compile "commons-dbcp:commons-dbcp:$commonsDbcpVersion" + compile "org.apache.commons:commons-dbcp2:$commonsDbcpVersion" compile "org.springframework:spring-jdbc:$springVersion" compileOnly "com.h2database:h2:$h2Version" diff --git a/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/AbstractJdbcDatabasePlatform.java b/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/AbstractJdbcDatabasePlatform.java index 140a78a4a5..081868f18d 100644 --- a/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/AbstractJdbcDatabasePlatform.java +++ b/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/AbstractJdbcDatabasePlatform.java @@ -25,7 +25,7 @@ import javax.sql.DataSource; -import org.apache.commons.dbcp.BasicDataSource; +import org.apache.commons.dbcp2.BasicDataSource; import org.jumpmind.db.sql.ISqlTemplate; import org.jumpmind.db.sql.JdbcSqlTemplate; import org.jumpmind.db.sql.SqlTemplateSettings; diff --git a/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/AbstractJdbcDdlReader.java b/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/AbstractJdbcDdlReader.java index d9d8e486e9..4e45d6dcc3 100644 --- a/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/AbstractJdbcDdlReader.java +++ b/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/AbstractJdbcDdlReader.java @@ -1731,6 +1731,7 @@ public List getExportedForeignTableRows(ISqlTransaction transaction, L foreignTable.getSchema(), foreignTable.getName(), keyColumns, foreignTable.getColumns(), nullValues, null); Object[] selectValues = selectRow.toArray(selectRow.keySet().toArray(new String[0])); + //platform.getObjectValues(BinaryEncoding.NONE, _defaultTableTypes, keyColumns); List rows = transaction.query(selectSt.getSql(), new RowMapper(), selectValues, selectSt.getTypes()); if (rows != null) { diff --git a/symmetric-jdbc/src/main/java/org/jumpmind/db/util/BasicDataSourceFactory.java b/symmetric-jdbc/src/main/java/org/jumpmind/db/util/BasicDataSourceFactory.java index 31a1f2557c..021cdb2995 100644 --- a/symmetric-jdbc/src/main/java/org/jumpmind/db/util/BasicDataSourceFactory.java +++ b/symmetric-jdbc/src/main/java/org/jumpmind/db/util/BasicDataSourceFactory.java @@ -102,9 +102,9 @@ public static ResettableBasicDataSource create(TypedProperties properties, dataSource.setPassword(password); dataSource.setInitialSize(properties.getInt( BasicDataSourcePropertyConstants.DB_POOL_INITIAL_SIZE, 2)); - dataSource.setMaxActive(properties.getInt( + dataSource.setMaxTotal(properties.getInt( BasicDataSourcePropertyConstants.DB_POOL_MAX_ACTIVE, 10)); - dataSource.setMaxWait(properties.getInt(BasicDataSourcePropertyConstants.DB_POOL_MAX_WAIT, + dataSource.setMaxWaitMillis(properties.getInt(BasicDataSourcePropertyConstants.DB_POOL_MAX_WAIT, 5000)); dataSource.setMaxIdle(properties.getInt(BasicDataSourcePropertyConstants.DB_POOL_MAX_IDLE, 8)); diff --git a/symmetric-jdbc/src/main/java/org/jumpmind/db/util/ResettableBasicDataSource.java b/symmetric-jdbc/src/main/java/org/jumpmind/db/util/ResettableBasicDataSource.java index 30d180e7c7..205a34b175 100644 --- a/symmetric-jdbc/src/main/java/org/jumpmind/db/util/ResettableBasicDataSource.java +++ b/symmetric-jdbc/src/main/java/org/jumpmind/db/util/ResettableBasicDataSource.java @@ -22,11 +22,9 @@ import java.sql.SQLException; -import org.apache.commons.dbcp.AbandonedConfig; -import org.apache.commons.dbcp.BasicDataSource; -import org.apache.commons.dbcp.ConnectionFactory; -import org.apache.commons.dbcp.PoolableConnectionFactory; -import org.apache.commons.pool.KeyedObjectPoolFactory; +import javax.sql.DataSource; + +import org.apache.commons.dbcp2.BasicDataSource; /** * A subclass of {@link BasicDataSource} which allows for a data source to be @@ -35,6 +33,8 @@ */ public class ResettableBasicDataSource extends BasicDataSource { + protected boolean closed; + public ResettableBasicDataSource() { setAccessToUnderlyingConnectionAllowed(true); } @@ -42,42 +42,18 @@ public ResettableBasicDataSource() { @Override public synchronized void close() { try { - try { - super.close(); - } catch (SQLException e) { - } - } finally { - closed = false; + closed = true; + super.close(); + } catch (SQLException e) { } - } - + @Override - protected void createPoolableConnectionFactory(ConnectionFactory driverConnectionFactory, - KeyedObjectPoolFactory statementPoolFactory, AbandonedConfig configuration) throws SQLException { - PoolableConnectionFactory connectionFactory = null; - try { - connectionFactory = - new PoolableConnectionFactory(driverConnectionFactory, - connectionPool, - statementPoolFactory, - validationQuery, - validationQueryTimeout, - connectionInitSqls, - defaultReadOnly, - defaultAutoCommit, - defaultTransactionIsolation, - defaultCatalog, - configuration); - validateConnectionFactory(connectionFactory); - } catch (Exception e) { - try { - connectionPool.close(); - } catch (Exception e1) { - } - throw new SQLException("Cannot create PoolableConnectionFactory (" + e.getMessage() + ")", e); + protected DataSource createDataSource() throws SQLException { + if (closed) { + closed = false; + super.start(); } + return super.createDataSource(); } - - } diff --git a/symmetric-sqlexplorer/build.gradle b/symmetric-sqlexplorer/build.gradle index 428bfc1506..d4f2d806fb 100644 --- a/symmetric-sqlexplorer/build.gradle +++ b/symmetric-sqlexplorer/build.gradle @@ -50,7 +50,7 @@ dependencies { compile project(":symmetric-io") compile "org.apache.commons:commons-lang3:$commonsLangVersion" - compile "commons-dbcp:commons-dbcp:$commonsDbcpVersion" + compile "org.apache.commons:commons-dbcp2:$commonsDbcpVersion" compile "commons-io:commons-io:$commonsIoVersion" compile "org.springframework:spring-webmvc:$springVersion" diff --git a/symmetric-sqlexplorer/src/test/java/org/jumpmind/vaadin/ui/sqlexplorer/DemoUI.java b/symmetric-sqlexplorer/src/test/java/org/jumpmind/vaadin/ui/sqlexplorer/DemoUI.java index 473c837163..1189cdf722 100644 --- a/symmetric-sqlexplorer/src/test/java/org/jumpmind/vaadin/ui/sqlexplorer/DemoUI.java +++ b/symmetric-sqlexplorer/src/test/java/org/jumpmind/vaadin/ui/sqlexplorer/DemoUI.java @@ -6,7 +6,7 @@ import javax.servlet.annotation.WebServlet; import javax.websocket.server.ServerContainer; -import org.apache.commons.dbcp.BasicDataSource; +import org.apache.commons.dbcp2.BasicDataSource; import org.atmosphere.container.JSR356AsyncSupport; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletHolder;