Merge branch 'stable-3.0'
* stable-3.0:
Bump bazel version to 1.0.0
Change-Id: I461f769d02ffe220de70949eb1e5807be0834d3a
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java
index 5bf75c5..f72b338 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java
@@ -27,14 +27,12 @@
import com.google.gerrit.extensions.common.ProjectInfo;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
-import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.client.Branch;
+import com.google.gerrit.reviewdb.client.BranchNameKey;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.permissions.GlobalPermission;
import com.google.gerrit.server.permissions.PermissionBackend;
-import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.permissions.ProjectPermission;
import com.google.gerrit.server.project.ProjectResource;
import com.google.gerrit.server.query.change.ChangeData;
@@ -136,29 +134,30 @@
}
private void assertHasNoChildProjects(ProjectResource rsrc) throws CannotDeleteProjectException {
+ List<ProjectInfo> children;
try {
- List<ProjectInfo> children = listChildProjectsProvider.get().withLimit(1).apply(rsrc);
- if (!children.isEmpty()) {
- throw new CannotDeleteProjectException(
- "Cannot delete project because it has at least one child: "
- + Iterables.getOnlyElement(children).name);
- }
- } catch (StorageException | PermissionBackendException | RestApiException e) {
+ children = listChildProjectsProvider.get().withLimit(1).apply(rsrc).value();
+ } catch (Exception e) {
throw new CannotDeleteProjectException(
String.format("Unable to verify if '%s' has children projects.", rsrc.getName()));
}
+ if (!children.isEmpty()) {
+ throw new CannotDeleteProjectException(
+ "Cannot delete project because it has at least one child: "
+ + Iterables.getOnlyElement(children).name);
+ }
}
private void assertIsNotSubmodule(Project.NameKey projectNameKey)
throws CannotDeleteProjectException {
try (Repository repo = repoManager.openRepository(projectNameKey);
MergeOpRepoManager mergeOp = mergeOpProvider.get()) {
- Set<Branch.NameKey> branches =
+ Set<BranchNameKey> branches =
repo.getRefDatabase().getRefsByPrefix(REFS_HEADS).stream()
- .map(ref -> Branch.nameKey(projectNameKey, ref.getName()))
+ .map(ref -> BranchNameKey.create(projectNameKey, ref.getName()))
.collect(toSet());
SubmoduleOp sub = subOpFactory.create(branches, mergeOp);
- for (Branch.NameKey b : branches) {
+ for (BranchNameKey b : branches) {
if (!sub.superProjectSubscriptionsForSubmoduleBranch(b).isEmpty()) {
throw new CannotDeleteProjectException("Project is subscribed by other projects.");
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
index 4ffd01c..bca13cc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
@@ -66,7 +66,7 @@
}
@Override
- public Object apply(ProjectResource rsrc, Input input) throws IOException, RestApiException {
+ public Response<?> apply(ProjectResource rsrc, Input input) throws IOException, RestApiException {
preConditions.assertDeletePermission(rsrc);
preConditions.assertCanBeDeleted(rsrc, input);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
index b2cc319..b56eacf 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
@@ -28,6 +28,7 @@
import com.google.gerrit.extensions.common.ProjectInfo;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
+import com.google.gerrit.extensions.restapi.Response;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.git.GitRepositoryManager;
@@ -139,7 +140,7 @@
ListChildProjects childProjects = mock(ListChildProjects.class);
when(listChildProjectsProvider.get()).thenReturn(childProjects);
when(childProjects.withLimit(1)).thenReturn(childProjects);
- when(childProjects.apply(rsrc)).thenReturn(ImmutableList.of(new ProjectInfo()));
+ when(childProjects.apply(rsrc)).thenReturn(Response.ok(ImmutableList.of(new ProjectInfo())));
expectedException.expect(ResourceConflictException.class);
expectedException.expectMessage("Cannot delete project because it has at least one child:");
preConditions.assertCanBeDeleted(rsrc, new DeleteProject.Input());
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
index 1bc8b72..b58430e 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
@@ -15,7 +15,9 @@
package com.googlesource.gerrit.plugins.deleteproject;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static com.google.gerrit.acceptance.GitUtil.pushHead;
+import static com.google.gerrit.acceptance.testsuite.project.TestProjectUpdate.allow;
import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
@@ -26,6 +28,7 @@
import com.google.gerrit.acceptance.TestPlugin;
import com.google.gerrit.acceptance.UseLocalDisk;
import com.google.gerrit.acceptance.UseSsh;
+import com.google.gerrit.acceptance.testsuite.project.ProjectOperations;
import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations;
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.extensions.client.ProjectState;
@@ -61,6 +64,7 @@
private static final String ARCHIVE_FOLDER = "archiveFolder";
private static final String PARENT_FOLDER = "parentFolder";
+ @Inject private ProjectOperations projectOperations;
@Inject private RequestScopeOperations requestScopeOperations;
private File archiveFolder;
@@ -191,7 +195,11 @@
@UseLocalDisk
@GerritConfig(name = "plugin.delete-project.allowDeletionOfReposWithTags", value = "false")
public void testDeleteProjWithTags() throws Exception {
- grant(project, "refs/tags/*", Permission.CREATE, false, REGISTERED_USERS);
+ projectOperations
+ .project(project)
+ .forUpdate()
+ .add(allow(Permission.CREATE).ref("refs/tags/*").group(REGISTERED_USERS))
+ .update();
pushTagOldCommitNotForce();
String cmd = createDeleteCommand(project.get());
@@ -280,13 +288,17 @@
commitBuilder().ident(user.newIdent()).message("subject (" + System.nanoTime() + ")").create();
String tagName = "v1_" + System.nanoTime();
- grant(project, "refs/for/refs/heads/master", Permission.SUBMIT, false, REGISTERED_USERS);
+ projectOperations
+ .project(project)
+ .forUpdate()
+ .add(allow(Permission.SUBMIT).ref("refs/for/refs/heads/master").group(REGISTERED_USERS))
+ .update();
pushHead(testRepo, "refs/for/master%submit");
String tagRef = RefNames.REFS_TAGS + tagName;
PushResult r = pushHead(testRepo, tagRef, false, false);
RemoteRefUpdate refUpdate = r.getRemoteUpdate(tagRef);
- assertThat(refUpdate.getStatus()).named("LIGHTWEIGHT").isEqualTo(Status.OK);
+ assertWithMessage("LIGHTWEIGHT").that(refUpdate.getStatus()).isEqualTo(Status.OK);
}
private boolean isEmpty(Path dir) throws IOException {