summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2010-04-19 12:30:48 +0200
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2010-04-19 12:30:48 +0200
commitce32f503cec0025c5ec9193669cd0a9a2da3480e (patch)
tree451ec7489a03c64e38b85a4a020c2afa148acc8f
parent3be404f4827c9e8e24dba80b03936c8fb81a406b (diff)
downloadgimd-ce32f503cec0025c5ec9193669cd0a9a2da3480e.tar.gz
Extract implementation of fileType-based tree filter out of JGitSnapshot.HEADmaster
Such a filter is general enough that it's better to extract it it's own object so it can be reused. Change-Id: I30635577f6d1ca8dbfacec99c85de9919451a9da Signed-off-by: Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com>
-rw-r--r--src/main/scala/com/google/gimd/jgit/FileTypeTreeFilter.scala38
-rw-r--r--src/main/scala/com/google/gimd/jgit/JGitSnapshot.scala18
2 files changed, 39 insertions, 17 deletions
diff --git a/src/main/scala/com/google/gimd/jgit/FileTypeTreeFilter.scala b/src/main/scala/com/google/gimd/jgit/FileTypeTreeFilter.scala
new file mode 100644
index 0000000..217c693
--- /dev/null
+++ b/src/main/scala/com/google/gimd/jgit/FileTypeTreeFilter.scala
@@ -0,0 +1,38 @@
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.gimd.jgit
+
+import org.spearce.jgit.lib.FileMode
+import com.google.gimd.file.FileType
+import org.spearce.jgit.treewalk.filter.{AndTreeFilter, PathFilter, PathSuffixFilter, TreeFilter}
+import org.spearce.jgit.treewalk.TreeWalk
+
+
+object FileTypeTreeFilter {
+
+ def apply[T](fileType: FileType[T]): TreeFilter =
+ AndTreeFilter.create(
+ Array(
+ RegularFileFilter,
+ fileType.pathPrefix.map(PathFilter.create(_)).getOrElse(TreeFilter.ALL),
+ fileType.pathSuffix.map(PathSuffixFilter.create(_)).getOrElse(TreeFilter.ALL)
+ )
+ )
+
+ private object RegularFileFilter extends TreeFilter {
+ def shouldBeRecursive = false
+ def include(treeWalk: TreeWalk) =
+ treeWalk.isSubtree || FileMode.REGULAR_FILE.equals(treeWalk.getFileMode(0))
+ override def clone = this
+ }
+
+}
diff --git a/src/main/scala/com/google/gimd/jgit/JGitSnapshot.scala b/src/main/scala/com/google/gimd/jgit/JGitSnapshot.scala
index 094577a..ab1e7d3 100644
--- a/src/main/scala/com/google/gimd/jgit/JGitSnapshot.scala
+++ b/src/main/scala/com/google/gimd/jgit/JGitSnapshot.scala
@@ -27,7 +27,7 @@ final class JGitSnapshot(val branch: JGitBranch, val commit: RevCommit) extends
val treeWalk = new TreeWalk(branch.repository)
treeWalk.reset(commit.getTree)
treeWalk.setRecursive(true)
- treeWalk.setFilter(treeFilter(fileType))
+ treeWalk.setFilter(FileTypeTreeFilter(fileType))
val fileIterator = new Iterator[File[T]] {
private var doesHasNext = treeWalk.next
@@ -44,20 +44,4 @@ final class JGitSnapshot(val branch: JGitBranch, val commit: RevCommit) extends
fileIterator
}
- private def treeFilter[T](fileType: FileType[T]): TreeFilter =
- AndTreeFilter.create(
- Array(
- RegularFileFilter,
- fileType.pathPrefix.map(PathFilter.create(_)).getOrElse(TreeFilter.ALL),
- fileType.pathSuffix.map(PathSuffixFilter.create(_)).getOrElse(TreeFilter.ALL)
- )
- )
-
- private object RegularFileFilter extends TreeFilter {
- def shouldBeRecursive = false
- def include(treeWalk: TreeWalk) =
- treeWalk.isSubtree || FileMode.REGULAR_FILE.equals(treeWalk.getFileMode(0))
- override def clone = this
- }
-
}