RenameCommand: use ProjectState instead of String project name
To avoid having NullPointerException when non-existing project is
provided through ssh command, old project name is passed as old project
state instead of project name.
This solution is based on how delete-project handles the same problem.
Change-Id: I906c112ed2481fdb65c5714f0640fc2af51b2ec0
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
index 4478ee6..80b1306 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
@@ -19,10 +19,9 @@
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.CurrentUser;
-import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.project.ProjectResource;
+import com.google.gerrit.server.project.ProjectState;
import com.google.gerrit.sshd.CommandMetaData;
import com.google.gerrit.sshd.SshCommand;
import com.google.inject.Inject;
@@ -41,23 +40,18 @@
@CommandMetaData(name = "rename", description = "Rename project")
public final class RenameCommand extends SshCommand {
@Argument(index = 0, required = true, metaVar = "OLDPROJECT", usage = "project to rename")
- private String projectControl;
+ private ProjectState projectState;
@Argument(index = 1, required = true, metaVar = "NEWNAME", usage = "new name for the project")
private String newProjectName;
private static final Logger log = LoggerFactory.getLogger(RenameCommand.class);
private final RenameProject renameProject;
- private final Provider<ProjectCache> projectCacheProvider;
private final Provider<CurrentUser> self;
@Inject
- protected RenameCommand(
- RenameProject renameProject,
- Provider<ProjectCache> projectCacheProvider,
- Provider<CurrentUser> self) {
+ protected RenameCommand(RenameProject renameProject, Provider<CurrentUser> self) {
this.renameProject = renameProject;
- this.projectCacheProvider = projectCacheProvider;
this.self = self;
}
@@ -66,9 +60,7 @@
try {
RenameProject.Input input = new RenameProject.Input();
input.name = newProjectName;
- ProjectResource rsrc =
- new ProjectResource(
- projectCacheProvider.get().get(new Project.NameKey(projectControl)), self.get());
+ ProjectResource rsrc = new ProjectResource(projectState, self.get());
try (CommandProgressMonitor monitor = new CommandProgressMonitor(stdout)) {
renameProject.assertCanRename(rsrc, input, Optional.of(monitor));
List<Change.Id> changeIds = renameProject.getChanges(rsrc, Optional.of(monitor));