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));