SetParent: Explicitly set to All-Projects when not specified
Change-Id: I694b7d6099fc65706ca6e07d8ea2870c900e8f87
This commit is contained in:
@@ -20,6 +20,7 @@ import static com.google.gerrit.acceptance.GitUtil.createProject;
|
||||
import com.google.gerrit.acceptance.AbstractDaemonTest;
|
||||
import com.google.gerrit.acceptance.RestResponse;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.server.config.AllProjectsNameProvider;
|
||||
import com.google.gerrit.server.project.SetParent;
|
||||
|
||||
import org.apache.http.HttpStatus;
|
||||
@@ -53,6 +54,19 @@ public class SetParentIT extends AbstractDaemonTest {
|
||||
newGson().fromJson(r.getReader(), String.class);
|
||||
assertThat(newParent).isEqualTo(parent);
|
||||
r.consume();
|
||||
|
||||
// When the parent name is not explicitly set, it should be
|
||||
// set to "All-Projects".
|
||||
r = adminSession.put("/projects/" + project.get() + "/parent",
|
||||
newParentInput(null));
|
||||
assertThat(r.getStatusCode()).isEqualTo(HttpStatus.SC_OK);
|
||||
r.consume();
|
||||
|
||||
r = adminSession.get("/projects/" + project.get() + "/parent");
|
||||
assertThat(r.getStatusCode()).isEqualTo(HttpStatus.SC_OK);
|
||||
newParent = newGson().fromJson(r.getReader(), String.class);
|
||||
assertThat(newParent).isEqualTo(AllProjectsNameProvider.DEFAULT);
|
||||
r.consume();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -14,6 +14,8 @@
|
||||
|
||||
package com.google.gerrit.server.project;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Strings;
|
||||
@@ -64,21 +66,21 @@ public class SetParent implements RestModifyView<ProjectResource, Input> {
|
||||
throws AuthException, ResourceConflictException,
|
||||
ResourceNotFoundException, UnprocessableEntityException, IOException {
|
||||
ProjectControl ctl = rsrc.getControl();
|
||||
validateParentUpdate(ctl, input.parent, true);
|
||||
String parentName = MoreObjects.firstNonNull(
|
||||
Strings.emptyToNull(input.parent), allProjects.get());
|
||||
validateParentUpdate(ctl, parentName, true);
|
||||
IdentifiedUser user = (IdentifiedUser) ctl.getCurrentUser();
|
||||
try {
|
||||
MetaDataUpdate md = updateFactory.create(rsrc.getNameKey());
|
||||
try {
|
||||
ProjectConfig config = ProjectConfig.read(md);
|
||||
Project project = config.getProject();
|
||||
project.setParentName(Strings.emptyToNull(input.parent));
|
||||
project.setParentName(parentName);
|
||||
|
||||
String msg = Strings.emptyToNull(input.commitMessage);
|
||||
if (msg == null) {
|
||||
msg = String.format(
|
||||
"Changed parent to %s.\n",
|
||||
MoreObjects.firstNonNull(project.getParentName(),
|
||||
allProjects.get()));
|
||||
"Changed parent to %s.\n", parentName);
|
||||
} else if (!msg.endsWith("\n")) {
|
||||
msg += "\n";
|
||||
}
|
||||
@@ -87,8 +89,9 @@ public class SetParent implements RestModifyView<ProjectResource, Input> {
|
||||
config.commit(md);
|
||||
cache.evict(ctl.getProject());
|
||||
|
||||
Project.NameKey parentName = project.getParent(allProjects);
|
||||
return parentName != null ? parentName.get() : "";
|
||||
Project.NameKey parent = project.getParent(allProjects);
|
||||
checkNotNull(parent);
|
||||
return parent.get();
|
||||
} finally {
|
||||
md.close();
|
||||
}
|
||||
|
Reference in New Issue
Block a user