Merge branch 'stable-2.14' into stable-2.15
* stable-2.14:
Format build files with buildifier 0.15.0
Close JDBC objects in try-with-resources
Avoid NPE when trying to delete changes for a project
Update bazlets to latest stable-2.14 to use 2.14.11 API
Update bazlets to latest stable-2.14 to use 2.14.10 API
Update bazlets to latest stable-2.14 to use 2.14.9 API
Change-Id: I3149352fdf2c2c9ac0a7e2e913df9bce8a89c1b4
diff --git a/BUILD b/BUILD
index 89097bb..46ddcfe 100644
--- a/BUILD
+++ b/BUILD
@@ -1,9 +1,9 @@
load("//tools/bzl:junit.bzl", "junit_tests")
load(
"//tools/bzl:plugin.bzl",
- "gerrit_plugin",
"PLUGIN_DEPS",
"PLUGIN_TEST_DEPS",
+ "gerrit_plugin",
)
gerrit_plugin(
diff --git a/bazlets.bzl b/bazlets.bzl
index e14e488..f97b72c 100644
--- a/bazlets.bzl
+++ b/bazlets.bzl
@@ -1,17 +1,16 @@
NAME = "com_googlesource_gerrit_bazlets"
def load_bazlets(
- commit,
- local_path = None
- ):
- if not local_path:
- native.git_repository(
- name = NAME,
- remote = "https://gerrit.googlesource.com/bazlets",
- commit = commit,
- )
- else:
- native.local_repository(
- name = NAME,
- path = local_path,
- )
+ commit,
+ local_path = None):
+ if not local_path:
+ native.git_repository(
+ name = NAME,
+ remote = "https://gerrit.googlesource.com/bazlets",
+ commit = commit,
+ )
+ else:
+ native.local_repository(
+ name = NAME,
+ path = local_path,
+ )
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
index 43d72aa..7efc19c 100644
--- a/external_plugin_deps.bzl
+++ b/external_plugin_deps.bzl
@@ -1,33 +1,33 @@
load("//tools/bzl:maven_jar.bzl", "maven_jar")
def external_plugin_deps():
- maven_jar(
- name = "mockito",
- artifact = "org.mockito:mockito-core:2.16.0",
- sha1 = "a022ee494c753789a1e7cae75099de81d8a5cea6",
- deps = [
- "@byte_buddy//jar",
- "@byte_buddy_agent//jar",
- "@objenesis//jar",
- ],
- )
+ maven_jar(
+ name = "mockito",
+ artifact = "org.mockito:mockito-core:2.16.0",
+ sha1 = "a022ee494c753789a1e7cae75099de81d8a5cea6",
+ deps = [
+ "@byte_buddy//jar",
+ "@byte_buddy_agent//jar",
+ "@objenesis//jar",
+ ],
+ )
- BYTE_BUDDY_VERSION = "1.7.9"
+ BYTE_BUDDY_VERSION = "1.7.9"
- maven_jar(
- name = "byte_buddy",
- artifact = "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
- sha1 = "51218a01a882c04d0aba8c028179cce488bbcb58",
- )
+ maven_jar(
+ name = "byte_buddy",
+ artifact = "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
+ sha1 = "51218a01a882c04d0aba8c028179cce488bbcb58",
+ )
- maven_jar(
- name = "byte_buddy_agent",
- artifact = "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
- sha1 = "a6c65f9da7f467ee1f02ff2841ffd3155aee2fc9",
- )
+ maven_jar(
+ name = "byte_buddy_agent",
+ artifact = "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
+ sha1 = "a6c65f9da7f467ee1f02ff2841ffd3155aee2fc9",
+ )
- maven_jar(
- name = "objenesis",
- artifact = "org.objenesis:objenesis:2.6",
- sha1 = "639033469776fd37c08358c6b92a4761feb2af4b",
- )
+ maven_jar(
+ name = "objenesis",
+ artifact = "org.objenesis:objenesis:2.6",
+ sha1 = "639033469776fd37c08358c6b92a4761feb2af4b",
+ )
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 bf726cb..b99735b 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
@@ -67,7 +67,7 @@
public class DatabaseDeleteHandler {
private static final Logger log = LoggerFactory.getLogger(DatabaseDeleteHandler.class);
- private final ReviewDb db;
+ private final Provider<ReviewDb> dbProvider;
private final Provider<InternalChangeQuery> queryProvider;
private final GitRepositoryManager repoManager;
private final SubmoduleOp.Factory subOpFactory;
@@ -80,7 +80,7 @@
@Inject
public DatabaseDeleteHandler(
- ReviewDb db,
+ Provider<ReviewDb> dbProvider,
Provider<InternalChangeQuery> queryProvider,
GitRepositoryManager repoManager,
SubmoduleOp.Factory subOpFactory,
@@ -92,7 +92,7 @@
Provider<WatchConfig.Accessor> watchConfig) {
this.accountQueryProvider = accountQueryProvider;
this.watchConfig = watchConfig;
- this.db = ReviewDbUtil.unwrapDb(db);
+ this.dbProvider = dbProvider;
this.queryProvider = queryProvider;
this.repoManager = repoManager;
this.subOpFactory = subOpFactory;
@@ -115,21 +115,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(project, changeIds);
+ atomicDelete(db, project, getChangesList(project, conn));
conn.commit();
} finally {
conn.setAutoCommit(true);
@@ -144,7 +135,23 @@
}
}
- private final void deleteChanges(Project.NameKey project, List<Change.Id> changeIds)
+ 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 {
for (Change.Id id : changeIds) {
@@ -153,10 +160,9 @@
} catch (NoSuchChangeException e) {
// we can ignore the exception during delete
}
- ResultSet<PatchSet> patchSets = null;
- patchSets = db.patchSets().byChange(id);
+ ResultSet<PatchSet> patchSets = db.patchSets().byChange(id);
if (patchSets != null) {
- deleteFromPatchSets(patchSets);
+ deleteFromPatchSets(db, patchSets);
}
// In the future, use schemaVersion to decide what to delete.
@@ -175,7 +181,8 @@
}
}
- private final void deleteFromPatchSets(final ResultSet<PatchSet> patchSets) throws OrmException {
+ private final void deleteFromPatchSets(ReviewDb db, final ResultSet<PatchSet> patchSets)
+ throws OrmException {
for (PatchSet patchSet : patchSets) {
accountPatchReviewStore.get().clearReviewed(patchSet.getId());
db.patchSets().delete(Collections.singleton(patchSet));
@@ -207,9 +214,10 @@
}
}
- public void atomicDelete(Project project, List<Change.Id> changeIds) throws OrmException {
+ public void atomicDelete(ReviewDb db, Project project, List<Change.Id> changeIds)
+ throws OrmException {
- deleteChanges(project.getNameKey(), changeIds);
+ deleteChanges(db, project.getNameKey(), changeIds);
for (AccountState a : accountQueryProvider.get().byWatchedProject(project.getNameKey())) {
Account.Id accountId = a.getAccount().getId();
diff --git a/tools/bzl/classpath.bzl b/tools/bzl/classpath.bzl
index dfcbe9c..d5764f7 100644
--- a/tools/bzl/classpath.bzl
+++ b/tools/bzl/classpath.bzl
@@ -1,2 +1,4 @@
-load("@com_googlesource_gerrit_bazlets//tools:classpath.bzl",
- "classpath_collector")
+load(
+ "@com_googlesource_gerrit_bazlets//tools:classpath.bzl",
+ "classpath_collector",
+)
diff --git a/tools/bzl/plugin.bzl b/tools/bzl/plugin.bzl
index a2e438f..0b25d23 100644
--- a/tools/bzl/plugin.bzl
+++ b/tools/bzl/plugin.bzl
@@ -1,6 +1,6 @@
load(
"@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
- "gerrit_plugin",
"PLUGIN_DEPS",
"PLUGIN_TEST_DEPS",
+ "gerrit_plugin",
)