You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2016/10/03 06:35:52 UTC

cayenne git commit: JDBC resource leak - fixing...

Repository: cayenne
Updated Branches:
  refs/heads/master b716b7be7 -> e8e2f733c


JDBC resource leak  - fixing...


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/e8e2f733
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/e8e2f733
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/e8e2f733

Branch: refs/heads/master
Commit: e8e2f733c6c6122d0068c4c40a28d57e9592aa33
Parents: b716b7b
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Mon Oct 3 09:35:46 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Mon Oct 3 09:35:46 2016 +0300

----------------------------------------------------------------------
 .../cayenne/tools/DbImporterMojoTest.java       | 72 +++++++++++---------
 1 file changed, 41 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/e8e2f733/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
index 775cca2..a736faf 100644
--- a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
+++ b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
@@ -18,12 +18,12 @@
  ****************************************************************/
 package org.apache.cayenne.tools;
 
-import org.apache.cayenne.test.jdbc.SQLReader;
-import org.apache.cayenne.test.resource.ResourceUtil;
-import org.apache.cayenne.tools.dbimport.DbImportConfiguration;
 import org.apache.cayenne.dbimport.Catalog;
 import org.apache.cayenne.dbimport.IncludeTable;
 import org.apache.cayenne.dbimport.Schema;
+import org.apache.cayenne.test.jdbc.SQLReader;
+import org.apache.cayenne.test.resource.ResourceUtil;
+import org.apache.cayenne.tools.dbimport.DbImportConfiguration;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.codehaus.plexus.util.FileUtils;
@@ -315,37 +315,47 @@ public class DbImporterMojoTest extends AbstractMojoTestCase {
 
     private void cleanDb(DbImportConfiguration dbImportConfiguration) throws ClassNotFoundException,
             IllegalAccessException, InstantiationException, SQLException {
+
+        // TODO: refactor to common DB management code... E.g. bootique-jdbc-test?
+        // TODO: with in-memory Derby, it is easier to just stop and delete the database.. again see bootique-jdbc-test
+
         Class.forName(dbImportConfiguration.getDriver()).newInstance();
-        // Get a connection
-        Connection connection = DriverManager.getConnection(dbImportConfiguration.getUrl());
-        Statement stmt = connection.createStatement();
-
-        ResultSet views = connection.getMetaData().getTables(null, null, null, new String[]{"VIEW"});
-        while (views.next()) {
-            String schema = views.getString("TABLE_SCHEM");
-            execute(stmt, "DROP VIEW " + (isBlank(schema) ? "" : schema + ".") + views.getString("TABLE_NAME"));
-        }
 
-        ResultSet tables = connection.getMetaData().getTables(null, null, null, new String[]{"TABLE"});
-        while (tables.next()) {
-            String schema = tables.getString("TABLE_SCHEM");
-            String tableName = tables.getString("TABLE_NAME");
-            String tableNameFull = (isBlank(schema) ? "" : schema + ".") + tableName;
+        try (Connection connection = DriverManager.getConnection(dbImportConfiguration.getUrl())) {
 
-            ResultSet keys = connection.getMetaData().getExportedKeys(null, schema, tableName);
-            while (keys.next()) {
-                execute(stmt, "ALTER TABLE " + keys.getString("FKTABLE_NAME") + " DROP CONSTRAINT " + keys.getString("FK_NAME"));
-            }
+            try (Statement stmt = connection.createStatement();) {
 
-            String sql = "DROP TABLE " + tableNameFull;
-            execute(stmt, sql);
-        }
+                try (ResultSet views = connection.getMetaData().getTables(null, null, null, new String[]{"VIEW"});) {
+                    while (views.next()) {
+                        String schema = views.getString("TABLE_SCHEM");
+                        execute(stmt, "DROP VIEW " + (isBlank(schema) ? "" : schema + ".") + views.getString("TABLE_NAME"));
+                    }
+                }
 
-        ResultSet schemas = connection.getMetaData().getSchemas();
-        while (schemas.next()) {
-            String schem = schemas.getString("TABLE_SCHEM");
-            if (schem.startsWith("SCHEMA")) {
-                execute(stmt, "DROP SCHEMA " + schem + " RESTRICT");
+                try (ResultSet tables = connection.getMetaData().getTables(null, null, null, new String[]{"TABLE"});) {
+                    while (tables.next()) {
+                        String schema = tables.getString("TABLE_SCHEM");
+                        String tableName = tables.getString("TABLE_NAME");
+                        String tableNameFull = (isBlank(schema) ? "" : schema + ".") + tableName;
+
+                        ResultSet keys = connection.getMetaData().getExportedKeys(null, schema, tableName);
+                        while (keys.next()) {
+                            execute(stmt, "ALTER TABLE " + keys.getString("FKTABLE_NAME") + " DROP CONSTRAINT " + keys.getString("FK_NAME"));
+                        }
+
+                        String sql = "DROP TABLE " + tableNameFull;
+                        execute(stmt, sql);
+                    }
+                }
+
+                try (ResultSet schemas = connection.getMetaData().getSchemas();) {
+                    while (schemas.next()) {
+                        String schem = schemas.getString("TABLE_SCHEM");
+                        if (schem.startsWith("SCHEMA")) {
+                            execute(stmt, "DROP SCHEMA " + schem + " RESTRICT");
+                        }
+                    }
+                }
             }
         }
     }
@@ -378,7 +388,7 @@ public class DbImporterMojoTest extends AbstractMojoTestCase {
 
     private void prepareDatabase(String sqlFile, DbImportConfiguration dbImportConfiguration) throws Exception {
 
-        URL dbUrl = Objects.requireNonNull(ResourceUtil.getResource(getClass(), "dbimport/" + sqlFile + ".sql"));
+        URL sqlUrl = Objects.requireNonNull(ResourceUtil.getResource(getClass(), "dbimport/" + sqlFile + ".sql"));
 
         // TODO: refactor to common DB management code... E.g. bootique-jdbc-test?
 
@@ -386,7 +396,7 @@ public class DbImporterMojoTest extends AbstractMojoTestCase {
 
         try (Connection connection = DriverManager.getConnection(dbImportConfiguration.getUrl())) {
             try (Statement stmt = connection.createStatement();) {
-                for (String sql : SQLReader.statements(dbUrl, ";")) {
+                for (String sql : SQLReader.statements(sqlUrl, ";")) {
                     stmt.execute(sql);
                 }
             }