Merge "GetArchive: Simplify RevWalk with try-with-resources"
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetArchive.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetArchive.java
index ccc7645..28ec2c4 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetArchive.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetArchive.java
@@ -96,42 +96,40 @@
     final Repository repo = repoManager
         .openRepository(rsrc.getControl().getProject().getNameKey());
     try {
-      final RevWalk rw = new RevWalk(repo);
-      try {
-        final RevCommit commit =
-            rw.parseCommit(ObjectId.fromString(rsrc.getPatchSet()
-                .getRevision().get()));
-        BinaryResult bin = new BinaryResult() {
-          @Override
-          public void writeTo(OutputStream out) throws IOException {
-            try {
-              new ArchiveCommand(repo)
-                  .setFormat(f.name())
-                  .setTree(commit.getTree())
-                  .setOutputStream(out).call();
-            } catch (GitAPIException e) {
-              throw new IOException(e);
-            }
-          }
-
-          @Override
-          public void close() throws IOException {
-            rw.close();
-            repo.close();
-          }
-        };
-
-        bin.disableGzip()
-            .setContentType(f.getMimeType())
-            .setAttachmentName(name(f, rw, commit));
-
-        close = false;
-        return bin;
-      } finally {
-        if (close) {
-          rw.close();
-        }
+      final RevCommit commit;
+      String name;
+      try (RevWalk rw = new RevWalk(repo)) {
+        commit = rw.parseCommit(ObjectId.fromString(
+            rsrc.getPatchSet().getRevision().get()));
+        name = name(f, rw, commit);
       }
+
+      BinaryResult bin = new BinaryResult() {
+        @Override
+        public void writeTo(OutputStream out) throws IOException {
+          try {
+            new ArchiveCommand(repo)
+                .setFormat(f.name())
+                .setTree(commit.getTree())
+                .setOutputStream(out)
+                .call();
+          } catch (GitAPIException e) {
+            throw new IOException(e);
+          }
+        }
+
+        @Override
+        public void close() throws IOException {
+          repo.close();
+        }
+      };
+
+      bin.disableGzip()
+          .setContentType(f.getMimeType())
+          .setAttachmentName(name);
+
+      close = false;
+      return bin;
     } finally {
       if (close) {
         repo.close();