Provide descriptive message for NoSuchProjectException

NoSuchProjectExceptions' message was just the plain project name key,
without giving any textual hint, what this means or what had happened.
Hence, upon catching the exception, the message had to be reformatted
before being shown to the user, even if only a default problem
description was needed. The exception's message now states that the
respective project could not be found, before giving the project's
name key.

Change-Id: I901da0a368f9674d0f60100c48da9a6564612c1c
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/args4j/ProjectControlHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/ProjectControlHandler.java
index c43be89..7b44c02 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/args4j/ProjectControlHandler.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/ProjectControlHandler.java
@@ -65,7 +65,7 @@
       Project.NameKey nameKey = new Project.NameKey(nameWithoutSuffix);
       control = projectControlFactory.validateFor(nameKey, ProjectControl.OWNER | ProjectControl.VISIBLE);
     } catch (NoSuchProjectException e) {
-      throw new CmdLineException(owner, "'" + projectName + "': is not a Gerrit project");
+      throw new CmdLineException(owner, e.getMessage());
     }
 
     setter.addValue(control);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/NoSuchProjectException.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/NoSuchProjectException.java
index 2ac494d..aa6fb16 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/NoSuchProjectException.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/NoSuchProjectException.java
@@ -20,11 +20,13 @@
 public class NoSuchProjectException extends Exception {
   private static final long serialVersionUID = 1L;
 
+  private static final String MESSAGE = "Project not found: ";
+
   public NoSuchProjectException(final Project.NameKey key) {
     this(key, null);
   }
 
   public NoSuchProjectException(final Project.NameKey key, final Throwable why) {
-    super(key.toString(), why);
+    super(MESSAGE + key.toString(), why);
   }
 }
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/BaseCommand.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/BaseCommand.java
index 3abad87..98b740c 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/BaseCommand.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/BaseCommand.java
@@ -428,7 +428,7 @@
           try {
             thunk.run();
           } catch (NoSuchProjectException e) {
-            throw new UnloggedFailure(1, e.getMessage() + " no such project");
+            throw new UnloggedFailure(1, e.getMessage());
           } catch (NoSuchChangeException e) {
             throw new UnloggedFailure(1, e.getMessage() + " no such change");
           }