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