pgm: Open RevWalk and TreeWalk in try-with-resource

To prevent potential resource leaks.

Change-Id: I2039af04d9fb75405f8e13abf508623b7d4ef324
Signed-off-by: David Pursehouse <david.pursehouse@sonymobile.com>
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTree.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTree.java
index d89053c..32adf6d 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTree.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTree.java
@@ -74,46 +74,47 @@ void tree_0(final AbstractTreeIterator c) {
 
 	@Override
 	protected void run() throws Exception {
-		final TreeWalk walk = new TreeWalk(db);
-		walk.setRecursive(recursive);
-		for (final AbstractTreeIterator i : trees)
-			walk.addTree(i);
-		walk.setFilter(AndTreeFilter.create(TreeFilter.ANY_DIFF, pathFilter));
+		try (final TreeWalk walk = new TreeWalk(db)) {
+			walk.setRecursive(recursive);
+			for (final AbstractTreeIterator i : trees)
+				walk.addTree(i);
+			walk.setFilter(AndTreeFilter.create(TreeFilter.ANY_DIFF, pathFilter));
 
-		final int nTree = walk.getTreeCount();
-		while (walk.next()) {
-			for (int i = 1; i < nTree; i++)
-				outw.print(':');
-			for (int i = 0; i < nTree; i++) {
-				final FileMode m = walk.getFileMode(i);
-				final String s = m.toString();
-				for (int pad = 6 - s.length(); pad > 0; pad--)
-					outw.print('0');
-				outw.print(s);
-				outw.print(' ');
+			final int nTree = walk.getTreeCount();
+			while (walk.next()) {
+				for (int i = 1; i < nTree; i++)
+					outw.print(':');
+				for (int i = 0; i < nTree; i++) {
+					final FileMode m = walk.getFileMode(i);
+					final String s = m.toString();
+					for (int pad = 6 - s.length(); pad > 0; pad--)
+						outw.print('0');
+					outw.print(s);
+					outw.print(' ');
+				}
+
+				for (int i = 0; i < nTree; i++) {
+					outw.print(walk.getObjectId(i).name());
+					outw.print(' ');
+				}
+
+				char chg = 'M';
+				if (nTree == 2) {
+					final int m0 = walk.getRawMode(0);
+					final int m1 = walk.getRawMode(1);
+					if (m0 == 0 && m1 != 0)
+						chg = 'A';
+					else if (m0 != 0 && m1 == 0)
+						chg = 'D';
+					else if (m0 != m1 && walk.idEqual(0, 1))
+						chg = 'T';
+				}
+				outw.print(chg);
+
+				outw.print('\t');
+				outw.print(walk.getPathString());
+				outw.println();
 			}
-
-			for (int i = 0; i < nTree; i++) {
-				outw.print(walk.getObjectId(i).name());
-				outw.print(' ');
-			}
-
-			char chg = 'M';
-			if (nTree == 2) {
-				final int m0 = walk.getRawMode(0);
-				final int m1 = walk.getRawMode(1);
-				if (m0 == 0 && m1 != 0)
-					chg = 'A';
-				else if (m0 != 0 && m1 == 0)
-					chg = 'D';
-				else if (m0 != m1 && walk.idEqual(0, 1))
-					chg = 'T';
-			}
-			outw.print(chg);
-
-			outw.print('\t');
-			outw.print(walk.getPathString());
-			outw.println();
 		}
 	}
 }
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsTree.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsTree.java
index 4b16ed8..872ea67 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsTree.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsTree.java
@@ -72,27 +72,28 @@ class LsTree extends TextBuiltin {
 
 	@Override
 	protected void run() throws Exception {
-		final TreeWalk walk = new TreeWalk(db);
-		walk.reset(); // drop the first empty tree, which we do not need here
-		if (paths.size() > 0)
-			walk.setFilter(PathFilterGroup.createFromStrings(paths));
-		walk.setRecursive(recursive);
-		walk.addTree(tree);
+		try (final TreeWalk walk = new TreeWalk(db)) {
+			walk.reset(); // drop the first empty tree, which we do not need here
+			if (paths.size() > 0)
+				walk.setFilter(PathFilterGroup.createFromStrings(paths));
+			walk.setRecursive(recursive);
+			walk.addTree(tree);
 
-		while (walk.next()) {
-			final FileMode mode = walk.getFileMode(0);
-			if (mode == FileMode.TREE)
-				outw.print('0');
-			outw.print(mode);
-			outw.print(' ');
-			outw.print(Constants.typeString(mode.getObjectType()));
+			while (walk.next()) {
+				final FileMode mode = walk.getFileMode(0);
+				if (mode == FileMode.TREE)
+					outw.print('0');
+				outw.print(mode);
+				outw.print(' ');
+				outw.print(Constants.typeString(mode.getObjectType()));
 
-			outw.print(' ');
-			outw.print(walk.getObjectId(0).name());
+				outw.print(' ');
+				outw.print(walk.getObjectId(0).name());
 
-			outw.print('\t');
-			outw.print(QuotedString.GIT_PATH.quote(walk.getPathString()));
-			outw.println();
+				outw.print('\t');
+				outw.print(QuotedString.GIT_PATH.quote(walk.getPathString()));
+				outw.println();
+			}
 		}
 	}
 }
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java
index fc32d4f..e0ff058 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java
@@ -207,12 +207,13 @@ protected void run() throws Exception {
 
 	private boolean isMergedInto(Ref oldHead, AnyObjectId src)
 			throws IOException {
-		RevWalk revWalk = new RevWalk(db);
-		ObjectId oldHeadObjectId = oldHead.getPeeledObjectId();
-		if (oldHeadObjectId == null)
-			oldHeadObjectId = oldHead.getObjectId();
-		RevCommit oldHeadCommit = revWalk.lookupCommit(oldHeadObjectId);
-		RevCommit srcCommit = revWalk.lookupCommit(src);
-		return revWalk.isMergedInto(oldHeadCommit, srcCommit);
+		try (RevWalk revWalk = new RevWalk(db)) {
+			ObjectId oldHeadObjectId = oldHead.getPeeledObjectId();
+			if (oldHeadObjectId == null)
+				oldHeadObjectId = oldHead.getObjectId();
+			RevCommit oldHeadCommit = revWalk.lookupCommit(oldHeadObjectId);
+			RevCommit srcCommit = revWalk.lookupCommit(src);
+			return revWalk.isMergedInto(oldHeadCommit, srcCommit);
+		}
 	}
 }
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Show.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Show.java
index b668139..c5986b0 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Show.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Show.java
@@ -251,16 +251,17 @@ private void show(RevTag tag) throws IOException {
 
 	private void show(RevTree obj) throws MissingObjectException,
 			IncorrectObjectTypeException, CorruptObjectException, IOException {
-		final TreeWalk walk = new TreeWalk(db);
-		walk.reset();
-		walk.addTree(obj);
+		try (final TreeWalk walk = new TreeWalk(db)) {
+			walk.reset();
+			walk.addTree(obj);
 
-		while (walk.next()) {
-			outw.print(walk.getPathString());
-			final FileMode mode = walk.getFileMode(0);
-			if (mode == FileMode.TREE)
-				outw.print("/"); //$NON-NLS-1$
-			outw.println();
+			while (walk.next()) {
+				outw.print(walk.getPathString());
+				final FileMode mode = walk.getFileMode(0);
+				if (mode == FileMode.TREE)
+					outw.print("/"); //$NON-NLS-1$
+				outw.println();
+			}
 		}
 	}
 
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java
index 582094d..45fceb5 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java
@@ -85,8 +85,9 @@ protected void run() throws Exception {
 						.setMessage(message).setName(tagName);
 
 				if (object != null) {
-					RevWalk walk = new RevWalk(db);
-					command.setObjectId(walk.parseAny(object));
+					try (RevWalk walk = new RevWalk(db)) {
+						command.setObjectId(walk.parseAny(object));
+					}
 				}
 				try {
 					command.call();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java
index 24d717d..df7ebb7 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java
@@ -173,9 +173,9 @@ private void run(Repository db) throws Exception {
 		int maxN = 0;
 
 		AbbreviatedObjectId startId;
-		try (ObjectReader or = db.newObjectReader()) {
+		try (ObjectReader or = db.newObjectReader();
+			RevWalk rw = new RevWalk(or)) {
 			final MutableObjectId id = new MutableObjectId();
-			RevWalk rw = new RevWalk(or);
 			TreeWalk tw = new TreeWalk(or);
 			tw.setFilter(TreeFilter.ANY_DIFF);
 			tw.setRecursive(true);
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java
index 7b5cdbf..d3eb245 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java
@@ -75,7 +75,10 @@ class ShowPackDelta extends TextBuiltin {
 	@Override
 	protected void run() throws Exception {
 		ObjectReader reader = db.newObjectReader();
-		RevObject obj = new RevWalk(reader).parseAny(objectId);
+		RevObject obj;
+		try (RevWalk rw = new RevWalk(reader)) {
+			obj = rw.parseAny(objectId);
+		}
 		byte[] delta = getDelta(reader, obj);
 
 		// We're crossing our fingers that this will be a delta. Double
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/TextHashFunctions.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/TextHashFunctions.java
index dcfa8cf..dcbc37b 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/TextHashFunctions.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/TextHashFunctions.java
@@ -300,10 +300,10 @@ private void run(Repository db) throws Exception {
 
 		long fileCnt = 0;
 		long lineCnt = 0;
-		try (ObjectReader or = db.newObjectReader()) {
-			final MutableObjectId id = new MutableObjectId();
+		try (ObjectReader or = db.newObjectReader();
 			RevWalk rw = new RevWalk(or);
-			TreeWalk tw = new TreeWalk(or);
+			TreeWalk tw = new TreeWalk(or)) {
+			final MutableObjectId id = new MutableObjectId();
 			tw.reset(rw.parseTree(db.resolve(Constants.HEAD)));
 			tw.setRecursive(true);