created FileFilter implementation which filters files by extension
authornik <Nikolay.Chashnikov@jetbrains.com>
Thu, 25 Jun 2015 07:34:18 +0000 (10:34 +0300)
committernik <Nikolay.Chashnikov@jetbrains.com>
Thu, 25 Jun 2015 07:34:52 +0000 (10:34 +0300)
java/testFramework/src/com/intellij/execution/ExecutionTestCase.java
jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java
platform/util-rt/src/com/intellij/openapi/util/io/FileUtilRt.java

index bb8c0d097d36be9c450b135de8534feb5f18d12f..1cfdd4e552688bec896149f82b545f968e422154 100644 (file)
@@ -24,6 +24,7 @@ import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl;
 import com.intellij.openapi.roots.ModuleRootManager;
 import com.intellij.openapi.util.Key;
 import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.openapi.util.io.FileUtilRt;
 import com.intellij.openapi.vfs.LocalFileSystem;
 import com.intellij.openapi.vfs.VfsUtilCore;
 import com.intellij.openapi.vfs.VirtualFile;
@@ -37,7 +38,6 @@ import junit.framework.TestCase;
 import org.jetbrains.annotations.NonNls;
 
 import java.io.File;
-import java.io.FilenameFilter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -263,12 +263,7 @@ public abstract class ExecutionTestCase extends IdeaTestCase {
       args.add(junitLibRoot);
     }
     
-    final File[] files = new File(appPath, SRC).listFiles(new FilenameFilter() {
-      @Override
-      public boolean accept(File dir, String name) {
-        return name.endsWith(".java");
-      }
-    });
+    final File[] files = new File(appPath, SRC).listFiles(FileUtilRt.createFilterByExtension("java"));
     if (files == null) return 0; // Nothing to compile
 
     for (File file : files) {
index ea214fbaf3164a5d2892e7a0808d4a1d0ae2c08c..04b1f96e8457ed14c38afe5ab8da6c0dff3cd626 100644 (file)
@@ -19,8 +19,8 @@ import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.util.Comparing;
 import com.intellij.openapi.util.Key;
 import com.intellij.openapi.util.Pair;
-import com.intellij.openapi.util.SystemInfo;
 import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.openapi.util.io.FileUtilRt;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.util.SystemProperties;
 import com.intellij.util.concurrency.SequentialTaskExecutor;
@@ -61,8 +61,7 @@ import org.jetbrains.jps.model.serialization.PathMacroUtil;
 import org.jetbrains.jps.service.JpsServiceManager;
 import org.jetbrains.jps.service.SharedThreadPool;
 
-import javax.tools.Diagnostic;
-import javax.tools.JavaFileObject;
+import javax.tools.*;
 import java.io.*;
 import java.net.ServerSocket;
 import java.util.*;
@@ -78,7 +77,6 @@ public class JavaBuilder extends ModuleLevelBuilder {
   private static final Logger LOG = Logger.getInstance("#org.jetbrains.jps.incremental.java.JavaBuilder");
   public static final String BUILDER_NAME = "java";
   private static final String JAVA_EXTENSION = "java";
-  private static final String DOT_JAVA_EXTENSION = "." + JAVA_EXTENSION;
   private static final Key<Integer> JAVA_COMPILER_VERSION_KEY = Key.create("_java_compiler_version_");
   public static final Key<Boolean> IS_ENABLED = Key.create("_java_compiler_enabled_");
   private static final Key<JavaCompilingTool> COMPILING_TOOL = Key.create("_java_compiling_tool_");
@@ -91,18 +89,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
     "-g", "-deprecation", "-nowarn", "-verbose", "-proc:none", "-proc:only", "-proceedOnError"
   ));
 
-  public static final FileFilter JAVA_SOURCES_FILTER =
-    SystemInfo.isFileSystemCaseSensitive?
-    new FileFilter() {
-      public boolean accept(File file) {
-        return file.getPath().endsWith(DOT_JAVA_EXTENSION);
-      }
-    } :
-    new FileFilter() {
-      public boolean accept(File file) {
-        return StringUtil.endsWithIgnoreCase(file.getPath(), DOT_JAVA_EXTENSION);
-      }
-    };
+  public static final FileFilter JAVA_SOURCES_FILTER = FileUtilRt.createFilterByExtension(JAVA_EXTENSION);
   private static final String RT_JAR_PATH_SUFFIX = File.separator + "rt.jar";
 
   private final Executor myTaskRunner;
index b5ab4834ecb24f6d7ae7621f1ba06e6e418ac53b..47ee0ddc73b484cdd3cf43696d633d5d38417dfd 100644 (file)
@@ -168,6 +168,15 @@ public class FileUtilRt {
     }
   }
 
+  public static FileFilter createFilterByExtension(@NotNull final String extension) {
+    return new FileFilter() {
+      @Override
+      public boolean accept(File pathname) {
+        return extensionEquals(pathname.getPath(), extension);
+      }
+    };
+  }
+
   @NotNull
   public static String getExtension(@NotNull String fileName) {
     int index = fileName.lastIndexOf('.');
@@ -182,14 +191,15 @@ public class FileUtilRt {
     return fileName.subSequence(index + 1, fileName.length());
   }
 
-  public static boolean extensionEquals(@NotNull String fileName, @NotNull String extension) {
+  public static boolean extensionEquals(@NotNull String filePath, @NotNull String extension) {
     int extLen = extension.length();
     if (extLen == 0) {
-      return fileName.indexOf('.') == -1;
+      int lastSlash = Math.max(filePath.lastIndexOf('/'), filePath.lastIndexOf('\\'));
+      return filePath.indexOf('.', lastSlash+1) == -1;
     }
-    int extStart = fileName.length() - extLen;
-    return extStart >= 1 && fileName.charAt(extStart-1) == '.'
-           && fileName.regionMatches(!SystemInfoRt.isFileSystemCaseSensitive, extStart, extension, 0, extLen);
+    int extStart = filePath.length() - extLen;
+    return extStart >= 1 && filePath.charAt(extStart-1) == '.'
+           && filePath.regionMatches(!SystemInfoRt.isFileSystemCaseSensitive, extStart, extension, 0, extLen);
   }
 
   @NotNull