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);
+            }
         }
     }