Update to JGit 4.0.0.201505191015-rc1.19-g1773002 Use try-with-resources to handle clean upreaders and walk instances that now use close() instead of release(). Change-Id: I884d87715bdd920f4e9ef82864d5b962a5b3b065
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java index dbbb28f..851723f 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java
@@ -79,8 +79,7 @@ } private ObjectId getTree(GitilesView view, Repository repo, Revision rev) throws IOException { - RevWalk rw = new RevWalk(repo); - try { + try (RevWalk rw = new RevWalk(repo)) { RevTree tree = rw.parseTree(rev.getId()); if (Strings.isNullOrEmpty(view.getPathPart())) { return tree; @@ -92,8 +91,6 @@ return tw.getObjectId(0); } catch (IncorrectObjectTypeException e) { return ObjectId.zeroId(); - } finally { - rw.release(); } }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java index 107f1e1..f0352ac 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
@@ -119,11 +119,8 @@ result.sha = c.copy(); } if (fs.contains(Field.ABBREV_SHA)) { - ObjectReader reader = repo.getObjectDatabase().newReader(); - try { + try (ObjectReader reader = repo.getObjectDatabase().newReader()) { result.abbrev = reader.abbreviate(c); - } finally { - reader.release(); } } if (fs.contains(Field.URL)) { @@ -245,14 +242,11 @@ } AbstractTreeIterator newTree = getTreeIterator(commit); - DiffFormatter diff = new DiffFormatter(NullOutputStream.INSTANCE); - try { + try (DiffFormatter diff = new DiffFormatter(NullOutputStream.INSTANCE)) { diff.setRepository(repo); diff.setDetectRenames(true); result.entries = diff.scan(oldTree, newTree); return result; - } finally { - diff.release(); } } }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java index 3e81703..788eb07 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
@@ -62,14 +62,12 @@ GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); - RevWalk walk = new RevWalk(repo); - TreeWalk tw = null; - try { + try (RevWalk walk = new RevWalk(repo); + TreeWalk tw = newTreeWalk(walk, view)) { boolean showCommit, isFile; AbstractTreeIterator oldTree; AbstractTreeIterator newTree; try { - tw = newTreeWalk(walk, view); if (tw == null && !view.getPathPart().isEmpty()) { res.setStatus(SC_NOT_FOUND); return; @@ -108,15 +106,10 @@ } setCacheHeaders(res); - try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.diffDetail", data)) { - DiffFormatter diff = new HtmlDiffFormatter(renderer, view, out); + try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.diffDetail", data); + DiffFormatter diff = new HtmlDiffFormatter(renderer, view, out)) { formatDiff(repo, oldTree, newTree, view.getPathPart(), diff); } - } finally { - if (tw != null) { - tw.release(); - } - walk.release(); } } @@ -126,8 +119,7 @@ GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); - RevWalk walk = new RevWalk(repo); - try { + try (RevWalk walk = new RevWalk(repo)) { AbstractTreeIterator oldTree; AbstractTreeIterator newTree; try { @@ -139,11 +131,10 @@ } try (Writer writer = startRenderText(req, res); - OutputStream out = BaseEncoding.base64().encodingStream(writer)) { - formatDiff(repo, oldTree, newTree, view.getPathPart(), new DiffFormatter(out)); + OutputStream out = BaseEncoding.base64().encodingStream(writer); + DiffFormatter diff = new DiffFormatter(out)) { + formatDiff(repo, oldTree, newTree, view.getPathPart(), diff); } - } finally { - walk.release(); } } @@ -173,16 +164,12 @@ private static void formatDiff(Repository repo, AbstractTreeIterator oldTree, AbstractTreeIterator newTree, String path, DiffFormatter diff) throws IOException { - try { - if (!path.isEmpty()) { - diff.setPathFilter(PathFilter.create(path)); - } - diff.setRepository(repo); - diff.setDetectRenames(true); - diff.format(oldTree, newTree); - } finally { - diff.release(); + if (!path.isEmpty()) { + diff.setPathFilter(PathFilter.create(path)); } + diff.setRepository(repo); + diff.setDetectRenames(true); + diff.format(oldTree, newTree); } private static AbstractTreeIterator getTreeIterator(RevWalk walk, ObjectId id)
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java index 48215c6..e1594fc 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -130,7 +130,7 @@ res.setStatus(SC_INTERNAL_SERVER_ERROR); return; } finally { - paginator.getWalk().release(); + paginator.getWalk().close(); } } @@ -161,7 +161,7 @@ } renderJson(req, res, result, new TypeToken<Map<String, Object>>() {}.getType()); } finally { - paginator.getWalk().release(); + paginator.getWalk().close(); } } @@ -174,14 +174,11 @@ if (headRef == null) { return null; } - RevWalk walk = new RevWalk(repo); - try { + try (RevWalk walk = new RevWalk(repo)) { return GitilesView.log() .copyFrom(view) .setRevision(Revision.peel(Constants.HEAD, walk.parseAny(headRef.getObjectId()), walk)) .build(); - } finally { - walk.release(); } } @@ -260,7 +257,7 @@ try { start = getStart(view.getParameters(), walk.getObjectReader()); } catch (IOException e) { - walk.release(); + walk.close(); throw e; } if (start == null) {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java index 7e9df71..d08062f 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
@@ -125,10 +125,8 @@ GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); - RevWalk rw = new RevWalk(repo); - WalkResult wr = null; - try { - wr = WalkResult.forPath(rw, view); + try (RevWalk rw = new RevWalk(repo); + WalkResult wr = WalkResult.forPath(rw, view)) { if (wr == null) { res.setStatus(SC_NOT_FOUND); return; @@ -154,11 +152,6 @@ } } catch (LargeObjectException e) { res.setStatus(SC_INTERNAL_SERVER_ERROR); - } finally { - if (wr != null) { - wr.release(); - } - rw.release(); } } @@ -167,10 +160,8 @@ GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); - RevWalk rw = new RevWalk(repo); - WalkResult wr = null; - try { - wr = WalkResult.forPath(rw, view); + try (RevWalk rw = new RevWalk(repo); + WalkResult wr = WalkResult.forPath(rw, view)) { if (wr == null) { res.setStatus(SC_NOT_FOUND); return; @@ -195,11 +186,6 @@ } } catch (LargeObjectException e) { res.setStatus(SC_INTERNAL_SERVER_ERROR); - } finally { - if (wr != null) { - wr.release(); - } - rw.release(); } } @@ -248,10 +234,8 @@ GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); - RevWalk rw = new RevWalk(repo); - WalkResult wr = null; - try { - wr = WalkResult.forPath(rw, view); + try (RevWalk rw = new RevWalk(repo); + WalkResult wr = WalkResult.forPath(rw, view)) { if (wr == null) { res.setStatus(SC_NOT_FOUND); return; @@ -266,11 +250,6 @@ } } catch (LargeObjectException e) { res.setStatus(SC_INTERNAL_SERVER_ERROR); - } finally { - if (wr != null) { - wr.release(); - } - rw.release(); } } @@ -356,7 +335,7 @@ * Unlike {@link TreeWalk} itself, supports positioning at the root tree. * Includes information to help the auto-dive routine as well. */ - private static class WalkResult { + private static class WalkResult implements AutoCloseable { private static WalkResult forPath(RevWalk rw, GitilesView view) throws IOException { RevTree root = getRoot(view, rw); String path = view.getPathPart(); @@ -385,7 +364,7 @@ } catch (IOException | RuntimeException e) { // Fallthrough. } - tw.release(); + tw.close(); return null; } @@ -410,8 +389,9 @@ return tw.getObjectReader(); } - private void release() { - tw.release(); + @Override + public void close() { + tw.close(); } } @@ -534,12 +514,13 @@ private void showGitlink(HttpServletRequest req, HttpServletResponse res, WalkResult wr) throws IOException { GitilesView view = ViewFilter.getView(req); - SubmoduleWalk sw = SubmoduleWalk.forPath(ServletUtils.getRepository(req), wr.root, - view.getPathPart()); - String modulesUrl; String remoteUrl = null; - try { + + try (SubmoduleWalk sw = SubmoduleWalk.forPath( + ServletUtils.getRepository(req), + wr.root, + view.getPathPart())) { modulesUrl = sw.getModulesUrl(); if (modulesUrl != null && (modulesUrl.startsWith("./") || modulesUrl.startsWith("../"))) { String moduleRepo = PathUtil.simplifyPathUpToRoot(modulesUrl, view.getRepositoryName()); @@ -551,8 +532,6 @@ } } catch (ConfigInvalidException e) { throw new IOException(e); - } finally { - sw.release(); } Map<String, Object> data = Maps.newHashMap();
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java index c9c3b57..b5a0636 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
@@ -65,12 +65,9 @@ res.setStatus(SC_NOT_FOUND); return; } - RevWalk walk = new RevWalk(ServletUtils.getRepository(req)); List<Map<String, Object>> tags; - try { + try (RevWalk walk = new RevWalk(ServletUtils.getRepository(req))) { tags = getTagsSoyData(req, timeCache, walk, 0); - } finally { - walk.release(); } renderHtml(req, res, "gitiles.refsDetail", ImmutableMap.of("branches", getBranchesSoyData(req, 0), "tags", tags));
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java index 46ab655..2965923 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
@@ -66,9 +66,8 @@ GitilesAccess access = getAccess(req); RepositoryDescription desc = access.getRepositoryDescription(); - RevWalk walk = new RevWalk(repo); - Paginator paginator = null; - try { + try (RevWalk walk = new RevWalk(repo)) { + Paginator paginator = null; Map<String, Object> data = Maps.newHashMapWithExpectedSize(7); List<Map<String, Object>> tags = RefServlet.getTagsSoyData(req, timeCache, walk, REF_LIMIT); ObjectId headId = repo.resolve(Constants.HEAD); @@ -117,8 +116,6 @@ } else { renderHtml(req, res, "gitiles.repositoryIndex", data); } - } finally { - walk.release(); } }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java index 3e3448e..ab89b1f 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java
@@ -109,8 +109,7 @@ if (path.startsWith("/")) { path = path.substring(1); } - RevWalk walk = new RevWalk(repo); - try { + try (RevWalk walk = new RevWalk(repo)) { Revision oldRevision = null; StringBuilder b = new StringBuilder(); @@ -194,8 +193,6 @@ first = false; } return null; - } finally { - walk.release(); } }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java index c8336c7..9887195 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
@@ -80,8 +80,7 @@ GitilesAccess access = getAccess(req); Config cfg = getAccess(req).getConfig(); - RevWalk walk = new RevWalk(repo); - try { + try (RevWalk walk = new RevWalk(repo)) { DateFormatter df = new DateFormatter(access, Format.DEFAULT); List<RevObject> objects = listObjects(walk, view.getRevision()); List<Map<String, ?>> soyObjects = Lists.newArrayListWithCapacity(objects.size()); @@ -142,8 +141,6 @@ "objects", soyObjects, "hasBlob", hasBlob, "hasReadme", hasReadme)); - } finally { - walk.release(); } } @@ -151,8 +148,7 @@ protected void doGetText(HttpServletRequest req, HttpServletResponse res) throws IOException { GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); - ObjectReader reader = repo.newObjectReader(); - try { + try (ObjectReader reader = repo.newObjectReader()) { ObjectLoader loader = reader.open(view.getRevision().getId()); if (loader.getType() != OBJ_COMMIT) { res.setStatus(SC_NOT_FOUND); @@ -163,8 +159,6 @@ loader.copyTo(out); } } - } finally { - reader.release(); } } @@ -173,8 +167,7 @@ GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); - RevWalk walk = new RevWalk(repo); - try { + try (RevWalk walk = new RevWalk(repo)) { DateFormatter df = new DateFormatter(getAccess(req), Format.DEFAULT); RevObject obj = walk.parseAny(view.getRevision().getId()); switch (obj.getType()) { @@ -189,8 +182,6 @@ res.setStatus(SC_NOT_FOUND); break; } - } finally { - walk.release(); } }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameCacheImpl.java b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameCacheImpl.java index b41e000..e921672 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameCacheImpl.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameCacheImpl.java
@@ -133,8 +133,7 @@ public ObjectId findLastCommit(Repository repo, ObjectId commitId, String path) throws IOException { // Default implementation does no caching. - RevWalk rw = new RevWalk(repo); - try { + try (RevWalk rw = new RevWalk(repo)) { rw.markStart(rw.parseCommit(commitId)); rw.setRewriteParents(false); // Don't use rename detection, even though BlameGenerator does. It is not @@ -144,20 +143,13 @@ PathFilterGroup.createFromStrings(path), TreeFilter.ANY_DIFF)); return rw.next(); - } finally { - rw.release(); } } public static List<Region> loadBlame(Key key) throws IOException { - try { - BlameGenerator gen = new BlameGenerator(key.repo, key.path); - try { - gen.push(null, key.commitId); - return loadRegions(gen); - } finally { - gen.release(); - } + try (BlameGenerator gen = new BlameGenerator(key.repo, key.path)) { + gen.push(null, key.commitId); + return loadRegions(gen); } finally { key.repo = null; }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java index 10867e7..c8ba7be 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java
@@ -74,8 +74,7 @@ GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); - RevWalk rw = new RevWalk(repo); - try { + try (RevWalk rw = new RevWalk(repo)) { GitilesAccess access = getAccess(req); RegionResult result = getRegions(view, access, repo, rw, res); if (result == null) { @@ -98,8 +97,6 @@ "breadcrumbs", view.getBreadcrumbs(), "data", blobData)); } - } finally { - rw.release(); } } @@ -108,8 +105,7 @@ GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); - RevWalk rw = new RevWalk(repo); - try { + try (RevWalk rw = new RevWalk(repo)) { RegionResult result = getRegions(view, getAccess(req), repo, rw, res); if (result == null) { return; @@ -124,8 +120,6 @@ } renderJson(req, res, ImmutableMap.of("regions", result.regions), new TypeToken<Map<String, List<Region>>>() {}.getType()); - } finally { - rw.release(); } }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java index d4ae488..1f96847 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java
@@ -84,8 +84,7 @@ GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); - RevWalk rw = new RevWalk(repo); - try { + try (RevWalk rw = new RevWalk(repo)) { String path = view.getPathPart(); RevTree root; try { @@ -139,8 +138,6 @@ res.setHeader(HttpHeaders.ETAG, curEtag); showDoc(req, res, view, cfg, img, nav, doc); - } finally { - rw.release(); } }
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/PaginatorTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/PaginatorTest.java index 2491107..e8af92e 100644 --- a/gitiles-servlet/src/test/java/com/google/gitiles/PaginatorTest.java +++ b/gitiles-servlet/src/test/java/com/google/gitiles/PaginatorTest.java
@@ -50,7 +50,7 @@ @After public void tearDown() throws Exception { - walk.release(); + walk.close(); } @Test
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java index 4e4d603..467a65e 100644 --- a/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java +++ b/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java
@@ -364,12 +364,9 @@ } private List<?> buildTagsSoyData() throws Exception { - RevWalk rw = new RevWalk(repo.getRepository()); - try { + try (RevWalk rw = new RevWalk(repo.getRepository())) { return RefServlet.getTagsSoyData(buildSoyRequest(), new TimeCache(TimeCache.defaultBuilder()), rw, Integer.MAX_VALUE); - } finally { - rw.release(); } }
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java index 6481101..8317363 100644 --- a/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java +++ b/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java
@@ -116,13 +116,10 @@ builder.setObjectId(commit); builder.setTag("tag"); builder.setMessage(""); - ObjectInserter ins = repo.getRepository().newObjectInserter(); ObjectId id; - try { + try (ObjectInserter ins = repo.getRepository().newObjectInserter()) { id = ins.insert(builder); ins.flush(); - } finally { - ins.release(); } assertEquals(start + 1, getTime(commit)); assertEquals(start + 1, getTime(id)); @@ -139,13 +136,10 @@ builder.setObjectId(tag); builder.setTag("tagtag"); builder.setMessage(""); - ObjectInserter ins = repo.getRepository().newObjectInserter(); ObjectId tagTagId; - try { + try (ObjectInserter ins = repo.getRepository().newObjectInserter()) { tagTagId = ins.insert(builder); ins.flush(); - } finally { - ins.release(); } assertEquals(start + 1, getTime(commit)); assertEquals(start + 2, getTime(tag));