Refactor MergeOpRepoManager#openRepo to return the OpenRepo
Most of the time, when the openRepo method is called, the next step is
to get the OpenRepo by calling a separate method getRepo, which is no
longer needed if the openRepo method returns the OpenRepo.
Change-Id: I7d19d34e8fa0e4687f2418678dc37915185116d9
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/GitModules.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/GitModules.java
index e0c72c6..a5cb18d 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/GitModules.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/GitModules.java
@@ -64,12 +64,12 @@
this.submissionId = orm.getSubmissionId();
Project.NameKey project = branch.getParentKey();
logDebug("Loading .gitmodules of {} for project {}", branch, project);
+ OpenRepo or;
try {
- orm.openRepo(project, false);
+ or = orm.openRepo(project, false);
} catch (NoSuchProjectException e) {
throw new IOException(e);
}
- OpenRepo or = orm.getRepo(project);
ObjectId id = or.repo.resolve(branch.get());
if (id == null) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOpRepoManager.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOpRepoManager.java
index 2bfe5b7..33e4c66 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOpRepoManager.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOpRepoManager.java
@@ -185,16 +185,17 @@
return or;
}
- public void openRepo(Project.NameKey project, boolean abortIfOpen)
+ public OpenRepo openRepo(Project.NameKey project, boolean abortIfOpen)
throws NoSuchProjectException, IOException {
if (abortIfOpen) {
checkState(!openRepos.containsKey(project),
"repo already opened: %s", project);
- } else {
- if (openRepos.containsKey(project)) {
- return;
- }
}
+
+ if (openRepos.containsKey(project)) {
+ return openRepos.get(project);
+ }
+
ProjectState projectState = projectCache.get(project);
if (projectState == null) {
throw new NoSuchProjectException(project);
@@ -203,6 +204,7 @@
OpenRepo or =
new OpenRepo(repoManager.openRepository(project), projectState);
openRepos.put(project, or);
+ return or;
} catch (RepositoryNotFoundException e) {
throw new NoSuchProjectException(project);
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
index f016da7..3e34a8d 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
@@ -227,14 +227,15 @@
if (r.matchSource(src.get())) {
if (r.getDestination() == null) {
// no need to care for wildcard, as we matched already
+ OpenRepo or;
try {
- orm.openRepo(s.getProject(), false);
+ or = orm.openRepo(s.getProject(), false);
} catch (NoSuchProjectException e) {
// A project listed a non existent project to be allowed
// to subscribe to it. Allow this for now.
continue;
}
- OpenRepo or = orm.getRepo(s.getProject());
+
for (Ref ref : or.repo.getRefDatabase().getRefs(
RefNames.REFS_HEADS).values()) {
ret.add(new Branch.NameKey(s.getProject(), ref.getName()));
@@ -269,8 +270,7 @@
for (Branch.NameKey targetBranch : branches) {
Project.NameKey targetProject = targetBranch.getParentKey();
try {
- orm.openRepo(targetProject, false);
- OpenRepo or = orm.getRepo(targetProject);
+ OpenRepo or = orm.openRepo(targetProject, false);
ObjectId id = or.repo.resolve(targetBranch.get());
if (id == null) {
logDebug("The branch " + targetBranch + " doesn't exist.");
@@ -307,9 +307,9 @@
if (dst.containsKey(project)) {
superProjects.add(project);
// get a new BatchUpdate for the super project
- orm.openRepo(project, false);
+ OpenRepo or = orm.openRepo(project, false);
for (Branch.NameKey branch : dst.get(project)) {
- addOp(orm.getRepo(project).getUpdate(), branch);
+ addOp(or.getUpdate(), branch);
}
}
}
@@ -325,12 +325,12 @@
*/
public CodeReviewCommit composeGitlinksCommit(final Branch.NameKey subscriber)
throws IOException, SubmoduleException {
+ OpenRepo or;
try {
- orm.openRepo(subscriber.getParentKey(), false);
+ or = orm.openRepo(subscriber.getParentKey(), false);
} catch (NoSuchProjectException | IOException e) {
throw new SubmoduleException("Cannot access superproject", e);
}
- OpenRepo or = orm.getRepo(subscriber.getParentKey());
CodeReviewCommit currentCommit;
Ref r = or.repo.exactRef(subscriber.get());
@@ -383,12 +383,12 @@
public CodeReviewCommit composeGitlinksCommit(
final Branch.NameKey subscriber, CodeReviewCommit currentCommit)
throws IOException, SubmoduleException {
+ OpenRepo or;
try {
- orm.openRepo(subscriber.getParentKey(), false);
+ or = orm.openRepo(subscriber.getParentKey(), false);
} catch (NoSuchProjectException | IOException e) {
throw new SubmoduleException("Cannot access superproject", e);
}
- OpenRepo or = orm.getRepo(subscriber.getParentKey());
StringBuilder msgbuf = new StringBuilder("");
DirCache dc = readTree(or.rw, currentCommit);
@@ -423,12 +423,12 @@
private RevCommit updateSubmodule(DirCache dc, DirCacheEditor ed,
StringBuilder msgbuf, final SubmoduleSubscription s)
throws SubmoduleException, IOException {
+ OpenRepo subOr;
try {
- orm.openRepo(s.getSubmodule().getParentKey(), false);
+ subOr = orm.openRepo(s.getSubmodule().getParentKey(), false);
} catch (NoSuchProjectException | IOException e) {
throw new SubmoduleException("Cannot access submodule", e);
}
- OpenRepo subOr = orm.getRepo(s.getSubmodule().getParentKey());
DirCacheEntry dce = dc.getEntry(s.getPath());
RevCommit oldCommit = null;