Close JDBC objects in try-with-resources Change-Id: Idb563a70821e4aa3fdfeafc7c055735e41ad1b4d
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java index 4c2c116..5e0a2f8 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java +++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java
@@ -114,22 +114,12 @@ } public void delete(Project project) throws OrmException { - // TODO(davido): Why not to use 1.7 features? - // http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.20.3.2 ReviewDb db = ReviewDbUtil.unwrapDb(dbProvider.get()); Connection conn = ((JdbcSchema) db).getConnection(); try { conn.setAutoCommit(false); try { - PreparedStatement changesForProject = - conn.prepareStatement("SELECT change_id FROM changes WHERE dest_project_name = ?"); - changesForProject.setString(1, project.getName()); - java.sql.ResultSet resultSet = changesForProject.executeQuery(); - List<Change.Id> changeIds = new ArrayList<>(); - while (resultSet.next()) { - changeIds.add(new Change.Id(resultSet.getInt(1))); - } - atomicDelete(db, project, changeIds); + atomicDelete(db, project, getChangesList(project, conn)); conn.commit(); } finally { conn.setAutoCommit(true); @@ -144,6 +134,22 @@ } } + private List<Change.Id> getChangesList(Project project, Connection conn) throws SQLException { + try (PreparedStatement changesForProject = + conn.prepareStatement("SELECT change_id FROM changes WHERE dest_project_name = ?")) { + changesForProject.setString(1, project.getName()); + try (java.sql.ResultSet resultSet = changesForProject.executeQuery()) { + List<Change.Id> changeIds = new ArrayList<>(); + while (resultSet.next()) { + changeIds.add(new Change.Id(resultSet.getInt(1))); + } + return changeIds; + } + } catch (SQLException e) { + throw new SQLException("Unable to get list of changes for project " + project.getName(), e); + } + } + private final void deleteChanges(ReviewDb db, Project.NameKey project, List<Change.Id> changeIds) throws OrmException {