diff options
author | Dave Borowitz <dborowitz@google.com> | 2012-06-14 15:06:09 -0700 |
---|---|---|
committer | Dave Borowitz <dborowitz@google.com> | 2012-06-15 11:43:22 -0700 |
commit | 458f64c6ea94da114cd99243302dfaacc7194d7c (patch) | |
tree | 229ac831c65bf03869b65f8223e210e678b7782f /org.eclipse.jgit/src/org/eclipse/jgit | |
parent | 2656ac1b5acb9b73c6b47e2cf8830a0a0b2cc214 (diff) | |
download | jgit-458f64c6ea94da114cd99243302dfaacc7194d7c.tar.gz jgit-458f64c6ea94da114cd99243302dfaacc7194d7c.zip |
Add a release() method to SubmoduleWalk
We need a way to release the underlying TreeWalk. Also, use this
method to release walks from the static factory methods on error or
when submodules are not found.
Change-Id: I6bedc2db78bcd577aef2cfe6715bb981a26dcfd7
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java index d18f1e1ea6..f037a7c52e 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java @@ -102,12 +102,18 @@ public class SubmoduleWalk { public static SubmoduleWalk forPath(Repository repository, AnyObjectId treeId, String path) throws IOException { SubmoduleWalk generator = new SubmoduleWalk(repository); - generator.setTree(treeId); - PathFilter filter = PathFilter.create(path); - generator.setFilter(filter); - while (generator.next()) - if (filter.isDone(generator.walk)) - return generator; + try { + generator.setTree(treeId); + PathFilter filter = PathFilter.create(path); + generator.setFilter(filter); + while (generator.next()) + if (filter.isDone(generator.walk)) + return generator; + } catch (IOException e) { + generator.release(); + throw e; + } + generator.release(); return null; } @@ -124,12 +130,18 @@ public class SubmoduleWalk { public static SubmoduleWalk forPath(Repository repository, AbstractTreeIterator iterator, String path) throws IOException { SubmoduleWalk generator = new SubmoduleWalk(repository); - generator.setTree(iterator); - PathFilter filter = PathFilter.create(path); - generator.setFilter(filter); - while (generator.next()) - if (filter.isDone(generator.walk)) - return generator; + try { + generator.setTree(iterator); + PathFilter filter = PathFilter.create(path); + generator.setFilter(filter); + while (generator.next()) + if (filter.isDone(generator.walk)) + return generator; + } catch (IOException e) { + generator.release(); + throw e; + } + generator.release(); return null; } @@ -511,4 +523,9 @@ public class SubmoduleWalk { String url = getModulesUrl(); return url != null ? getSubmoduleRemoteUrl(repository, url) : null; } + + /** Release any resources used by this walker's reader. */ + public void release() { + walk.release(); + } } |