GitFile: Catch RepositoryNotFoundException and rethrow as NoSuchProjectException
Change-Id: Iebf1b7a807c3d16e06b0e92bf5c98bd71bc92d5b
diff --git a/src/main/java/com/google/gerrit/server/git/meta/GitFile.java b/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
index 0ff7aa1..beca5b3 100644
--- a/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
+++ b/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
@@ -16,6 +16,7 @@
import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.File;
+import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.gerrit.server.git.VersionedMetaData;
@@ -24,6 +25,7 @@
import com.google.inject.assistedinject.Assisted;
import java.io.IOException;
import org.eclipse.jgit.errors.ConfigInvalidException;
+import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.CommitBuilder;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
@@ -54,20 +56,26 @@
}
public String read() throws ConfigInvalidException, IOException, NoSuchProjectException {
- try (Repository repo = repos.openRepository(branch.getParentKey())) {
+ Project.NameKey project = branch.getParentKey();
+ try (Repository repo = repos.openRepository(project)) {
load(repo);
return text;
+ } catch (RepositoryNotFoundException e) {
+ throw new NoSuchProjectException(project);
}
}
public RevCommit write(String fileContent, String commitMessage)
throws ConfigInvalidException, IOException, NoSuchProjectException {
- try (MetaDataUpdate md = metaDataUpdateFactory.create(branch.getParentKey())) {
+ Project.NameKey project = branch.getParentKey();
+ try (MetaDataUpdate md = metaDataUpdateFactory.create(project)) {
load(md);
text = fileContent;
md.getCommitBuilder().setCommitter(metaDataUpdateFactory.getUserPersonIdent());
md.setMessage(commitMessage);
return commit(md);
+ } catch (RepositoryNotFoundException e) {
+ throw new NoSuchProjectException(project);
}
}