Merge "Merge branch 'stable-2.15'"
diff --git a/Documentation/rest-api-projects.txt b/Documentation/rest-api-projects.txt
index a7c26b8..5c1a29e 100644
--- a/Documentation/rest-api-projects.txt
+++ b/Documentation/rest-api-projects.txt
@@ -1364,7 +1364,6 @@
{
"ref": "HEAD",
"revision": "master",
- "can_delete": false
}
]
----
@@ -1388,7 +1387,6 @@
{
"ref": "HEAD",
"revision": "master",
- "can_delete": false
}
]
----
@@ -2722,7 +2720,7 @@
|Field Name ||Description
|`ref` ||The ref of the branch.
|`revision` ||The revision to which the branch points.
-|`can_delete`|`false` if not set|
+|`can_delete`|not set if `false`|
Whether the calling user can delete this branch.
|`web_links` |optional|
Links to the branch in external sites as a list of
@@ -3281,7 +3279,7 @@
the signature.
|`tagger`|Only set for annotated tags, if present in the tag.|The tagger as a
link:rest-api-changes.html#git-person-info[GitPersonInfo] entity.
-|`can_delete`|`false` if not set|
+|`can_delete`|not set if `false`|
Whether the calling user can delete this tag.
|`web_links` |optional|
Links to the tag in external sites as a list of
diff --git a/java/com/google/gerrit/extensions/api/projects/TagInfo.java b/java/com/google/gerrit/extensions/api/projects/TagInfo.java
index c7b1b94..99fc6ec 100644
--- a/java/com/google/gerrit/extensions/api/projects/TagInfo.java
+++ b/java/com/google/gerrit/extensions/api/projects/TagInfo.java
@@ -24,7 +24,7 @@
public GitPerson tagger;
public List<WebLinkInfo> webLinks;
- public TagInfo(String ref, String revision, boolean canDelete, List<WebLinkInfo> webLinks) {
+ public TagInfo(String ref, String revision, Boolean canDelete, List<WebLinkInfo> webLinks) {
this.ref = ref;
this.revision = revision;
this.canDelete = canDelete;
@@ -37,7 +37,7 @@
String object,
String message,
GitPerson tagger,
- boolean canDelete,
+ Boolean canDelete,
List<WebLinkInfo> webLinks) {
this(ref, revision, canDelete, webLinks);
this.object = object;
diff --git a/java/com/google/gerrit/server/project/ListTags.java b/java/com/google/gerrit/server/project/ListTags.java
index a58f316..d57234a 100644
--- a/java/com/google/gerrit/server/project/ListTags.java
+++ b/java/com/google/gerrit/server/project/ListTags.java
@@ -190,7 +190,7 @@
WebLinks links)
throws MissingObjectException, IOException {
RevObject object = rw.parseAny(ref.getObjectId());
- boolean canDelete = perm.testOrFalse(RefPermission.DELETE);
+ Boolean canDelete = perm.testOrFalse(RefPermission.DELETE) ? true : null;
List<WebLinkInfo> webLinks = links.getTagLinks(projectName.get(), ref.getName());
if (object instanceof RevTag) {
// Annotated or signed tag
diff --git a/javatests/com/google/gerrit/acceptance/rest/project/DeleteBranchIT.java b/javatests/com/google/gerrit/acceptance/rest/project/DeleteBranchIT.java
index d5bb2fd..c8f2fef 100644
--- a/javatests/com/google/gerrit/acceptance/rest/project/DeleteBranchIT.java
+++ b/javatests/com/google/gerrit/acceptance/rest/project/DeleteBranchIT.java
@@ -139,6 +139,7 @@
}
private void assertDeleteSucceeds() throws Exception {
+ assertThat(branch().get().canDelete).isTrue();
String branchRev = branch().get().revision;
branch().delete();
eventRecorder.assertRefUpdatedEvents(
@@ -148,6 +149,7 @@
}
private void assertDeleteForbidden() throws Exception {
+ assertThat(branch().get().canDelete).isNull();
exception.expect(AuthException.class);
exception.expectMessage("delete not permitted");
branch().delete();
diff --git a/javatests/com/google/gerrit/acceptance/rest/project/DeleteTagIT.java b/javatests/com/google/gerrit/acceptance/rest/project/DeleteTagIT.java
index dd65f7c..0cbbe44 100644
--- a/javatests/com/google/gerrit/acceptance/rest/project/DeleteTagIT.java
+++ b/javatests/com/google/gerrit/acceptance/rest/project/DeleteTagIT.java
@@ -14,6 +14,7 @@
package com.google.gerrit.acceptance.rest.project;
+import static com.google.common.truth.Truth.assertThat;
import static com.google.gerrit.server.group.SystemGroupBackend.ANONYMOUS_USERS;
import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS;
import static org.eclipse.jgit.lib.Constants.R_TAGS;
@@ -22,6 +23,7 @@
import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.extensions.api.projects.TagApi;
+import com.google.gerrit.extensions.api.projects.TagInfo;
import com.google.gerrit.extensions.api.projects.TagInput;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
@@ -111,7 +113,9 @@
}
private void assertDeleteSucceeds() throws Exception {
- String tagRev = tag().get().revision;
+ TagInfo tagInfo = tag().get();
+ assertThat(tagInfo.canDelete).isTrue();
+ String tagRev = tagInfo.revision;
tag().delete();
eventRecorder.assertRefUpdatedEvents(project.get(), TAG, null, tagRev, tagRev, null);
exception.expect(ResourceNotFoundException.class);
@@ -119,6 +123,7 @@
}
private void assertDeleteForbidden() throws Exception {
+ assertThat(tag().get().canDelete).isNull();
exception.expect(AuthException.class);
exception.expectMessage("delete not permitted");
tag().delete();
diff --git a/javatests/com/google/gerrit/acceptance/rest/project/TagsIT.java b/javatests/com/google/gerrit/acceptance/rest/project/TagsIT.java
index 6851650..548043d 100644
--- a/javatests/com/google/gerrit/acceptance/rest/project/TagsIT.java
+++ b/javatests/com/google/gerrit/acceptance/rest/project/TagsIT.java
@@ -186,7 +186,7 @@
setApiUser(user);
result = tag(input.ref).get();
- assertThat(result.canDelete).isFalse();
+ assertThat(result.canDelete).isNull();
eventRecorder.assertRefUpdatedEvents(project.get(), result.ref, null, result.revision);
}