From 12964f32a82108dea98775075c56b61151ed3b97 Mon Sep 17 00:00:00 2001 From: Marco Zanon Date: Sat, 15 Jul 2017 11:00:24 +0000 Subject: [PATCH] Enforced closing of useless connections. --- .../database/MDatabaseConnectionPool.java | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/java/com/marcozanon/macaco/database/MDatabaseConnectionPool.java b/src/java/com/marcozanon/macaco/database/MDatabaseConnectionPool.java index d971298..bbb0323 100644 --- a/src/java/com/marcozanon/macaco/database/MDatabaseConnectionPool.java +++ b/src/java/com/marcozanon/macaco/database/MDatabaseConnectionPool.java @@ -47,6 +47,23 @@ public class MDatabaseConnectionPool extends MObject { } } + protected void closeConnections() { + LinkedList 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 databaseConnections = this.getDatabaseConnections(); - if (this.getMaximumSize() >= databaseConnections.size()) { - databaseConnections.add(databaseConnection); + if (!this.getDatabaseConnectionGenerator().isGeneratorFor(databaseConnection)) { + databaseConnection.close(); + } + else { + LinkedList databaseConnections = this.getDatabaseConnections(); + if (this.getMaximumSize() >= databaseConnections.size()) { + databaseConnections.add(databaseConnection); + } } } -- 2.30.2