Extract fetching commit messages into injectable class As other parts besides GerritHookFilter need to obtain commit messages, we extract that method into an injectable class. Change-Id: I40027347e1b8ef70b424ef056060465f08f2f404
diff --git a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/CommitMessageFetcher.java b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/CommitMessageFetcher.java new file mode 100644 index 0000000..a04b175 --- /dev/null +++ b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/CommitMessageFetcher.java
@@ -0,0 +1,50 @@ +package com.googlesource.gerrit.plugins.hooks.util; + +import java.io.IOException; + +import com.google.gerrit.reviewdb.client.Project.NameKey; +import com.google.gerrit.server.git.GitRepositoryManager; +import com.google.inject.Inject; + +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; +import org.eclipse.jgit.revwalk.RevWalk; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CommitMessageFetcher { + private static final Logger log = LoggerFactory.getLogger( + CommitMessageFetcher.class); + + private final GitRepositoryManager repoManager; + + @Inject + CommitMessageFetcher(GitRepositoryManager repoManager) { + this.repoManager = repoManager; + } + + public String fetch(String projectName, String commitId) throws IOException { + final Repository repo = + repoManager.openRepository(new NameKey(projectName)); + try { + RevWalk revWalk = new RevWalk(repo); + RevCommit commit = revWalk.parseCommit(ObjectId.fromString(commitId)); + + return commit.getFullMessage(); + } finally { + repo.close(); + } + } + + public String fetchGuarded(String projectName, String commitId) { + String ret = ""; + try { + ret = fetch(projectName, commitId); + } catch (IOException e) { + log.error("Could not fetch commit message for commit " + commitId + + " of project " + projectName, e); + } + return ret; + } +}
diff --git a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/workflow/GerritHookFilter.java b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/workflow/GerritHookFilter.java index 4d2ed8d..0bb1046 100644 --- a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/workflow/GerritHookFilter.java +++ b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/workflow/GerritHookFilter.java
@@ -16,15 +16,10 @@ import java.io.IOException; -import org.eclipse.jgit.lib.ObjectId; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.revwalk.RevCommit; -import org.eclipse.jgit.revwalk.RevWalk; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.gerrit.common.ChangeListener; -import com.google.gerrit.reviewdb.client.Project.NameKey; import com.google.gerrit.server.events.ChangeAbandonedEvent; import com.google.gerrit.server.events.ChangeEvent; import com.google.gerrit.server.events.ChangeMergedEvent; @@ -35,6 +30,7 @@ import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; +import com.googlesource.gerrit.plugins.hooks.util.CommitMessageFetcher; public class GerritHookFilter implements ChangeListener { private static final Logger log = LoggerFactory.getLogger(GerritHookFilter.class); @@ -42,19 +38,12 @@ @Inject private GitRepositoryManager repoManager; + @Inject + private CommitMessageFetcher commitMessageFetcher; + public String getComment(String projectName, String commitId) throws IOException { - - final Repository repo = - repoManager.openRepository(new NameKey(projectName)); - try { - RevWalk revWalk = new RevWalk(repo); - RevCommit commit = revWalk.parseCommit(ObjectId.fromString(commitId)); - - return commit.getFullMessage(); - } finally { - repo.close(); - } + return commitMessageFetcher.fetch(projectName, commitId); } public void doFilter(PatchSetCreatedEvent hook) throws IOException,