From: Marco Zanon <info@marcozanon.com> Date: Sat, 15 Jul 2017 11:00:24 +0000 (+0000) Subject: Enforced closing of useless connections. X-Git-Tag: SVN-to-Git~65 X-Git-Url: https://gitweb.marcozanon.com/?a=commitdiff_plain;h=ddd9a3e59e04f161a5ce8e845359a4edd639f105;p=Macaco Enforced closing of useless connections. --- diff --git a/5.x/src/java/com/marcozanon/macaco/database/MDatabaseConnectionPool.java b/5.x/src/java/com/marcozanon/macaco/database/MDatabaseConnectionPool.java index d971298..bbb0323 100644 --- a/5.x/src/java/com/marcozanon/macaco/database/MDatabaseConnectionPool.java +++ b/5.x/src/java/com/marcozanon/macaco/database/MDatabaseConnectionPool.java @@ -47,6 +47,23 @@ public class MDatabaseConnectionPool extends MObject { } } + protected void closeConnections() { + LinkedList<MDatabaseConnection> databaseConnections = this.getDatabaseConnections(); + while (0 < databaseConnections.size()) { + MDatabaseConnection databaseConnection = databaseConnections.removeLast(); + // + try { + databaseConnection.close(); + } + catch (MDatabaseConnectionFailureException exception) { + } + } + } + + protected void finalize() { + this.closeConnections(); + } + /* Database connection generator. */ protected MDatabaseConnectionGenerator getDatabaseConnectionGenerator() { @@ -86,16 +103,18 @@ public class MDatabaseConnectionPool extends MObject { if (null == databaseConnection) { throw new IllegalArgumentException("Invalid 'databaseConnection': null."); } - else if (!this.getDatabaseConnectionGenerator().isGeneratorFor(databaseConnection)) { - throw new IllegalArgumentException("Invalid 'databaseConnection': not compatible with this database connection pool."); - } else if (databaseConnection.isClosed()) { throw new IllegalArgumentException("Invalid 'databaseConnection': closed."); } // - LinkedList<MDatabaseConnection> databaseConnections = this.getDatabaseConnections(); - if (this.getMaximumSize() >= databaseConnections.size()) { - databaseConnections.add(databaseConnection); + if (!this.getDatabaseConnectionGenerator().isGeneratorFor(databaseConnection)) { + databaseConnection.close(); + } + else { + LinkedList<MDatabaseConnection> databaseConnections = this.getDatabaseConnections(); + if (this.getMaximumSize() >= databaseConnections.size()) { + databaseConnections.add(databaseConnection); + } } }