summaryrefslogtreecommitdiff
path: root/java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java')
-rw-r--r--java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java b/java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java
new file mode 100644
index 000000000000..9a7f00be3dc3
--- /dev/null
+++ b/java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java
@@ -0,0 +1,53 @@
+package com.intellij.compilerOutputIndex.api.fs;
+
+import com.intellij.openapi.project.Project;
+import com.intellij.util.Consumer;
+
+import java.io.File;
+
+/**
+ * @author Dmitry Batkovich <dmitry.batkovich@jetbrains.com>
+ */
+public interface FileVisitorService {
+
+ interface Visitor {
+ void visit(File file);
+ }
+
+ void visit(final Consumer<File> visitor);
+
+ class ProjectClassFiles implements FileVisitorService {
+ private final Project myProject;
+
+ public ProjectClassFiles(final Project project) {
+ myProject = project;
+ }
+
+ @Override
+ public void visit(final Consumer<File> visitor) {
+ CompilerOutputFilesUtil.iterateProjectClassFiles(myProject, visitor);
+ }
+ }
+
+ class DirectoryClassFiles implements FileVisitorService {
+ private final File myDir;
+
+ public DirectoryClassFiles(final File dir) {
+ if (!dir.isDirectory()) {
+ throw new IllegalArgumentException();
+ }
+ myDir = dir;
+ }
+
+ @Override
+ public void visit(final Consumer<File> visitor) {
+ //noinspection ConstantConditions
+ for (final File file : myDir.listFiles()) {
+ if (file.getName().endsWith(CompilerOutputFilesUtil.CLASS_FILES_SUFFIX)) {
+ visitor.consume(file);
+ }
+ }
+ }
+ }
+}
+