From f683baf5ddecaf119e1a386b154192d9c77164b7 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Thu, 11 Oct 2018 20:47:11 +0300 Subject: [PATCH] use io.File#exists instead of nio.Files#exists due to poor performance with jdk 8 https://rules.sonarsource.com/java/RSPEC-3725 https://bugs.openjdk.java.net/browse/JDK-8153414 https://bugs.openjdk.java.net/browse/JDK-8154077 --- .../execution/testDiscovery/TestDiscoveryIndex.java | 3 +-- .../jetbrains/jps/model/serialization/JpsProjectLoader.java | 2 +- .../jetbrains/intellij/build/images/IconsClassGenerator.kt | 4 ++-- .../org/jetbrains/intellij/build/images/ImageCollector.kt | 6 ++---- platform/projectModel-api/src/com/intellij/util/io/path.kt | 2 +- .../src/com/intellij/testFramework/rules/TempDirectory.java | 4 ++-- 6 files changed, 9 insertions(+), 12 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryIndex.java b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryIndex.java index 5bb985357d09..656e91dd9baa 100644 --- a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryIndex.java +++ b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryIndex.java @@ -14,7 +14,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.IOException; -import java.nio.file.Files; import java.nio.file.Path; import java.util.Collection; import java.util.Collections; @@ -37,7 +36,7 @@ public class TestDiscoveryIndex implements Disposable { public TestDiscoveryIndex(final Project project, @NotNull Path basePath) { myBasePath = basePath; - if (Files.exists(basePath)) { + if (basePath.toFile().exists()) { StartupManager.getInstance(project).registerPostStartupActivity(() -> ApplicationManager.getApplication().executeOnPooledThread(() -> { getHolder(); // proactively init with maybe io costly compact })); diff --git a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java index 431ff0d7d1d2..40ee47d0be99 100644 --- a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java +++ b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java @@ -308,7 +308,7 @@ public class JpsProjectLoader extends JpsLoaderBase { } Set unloadedModules = new HashSet<>(); - if (!myLoadUnloadedModules && Files.exists(workspaceFile)) { + if (!myLoadUnloadedModules && workspaceFile.toFile().exists()) { Element unloadedModulesList = JDomSerializationUtil.findComponent(loadRootElement(workspaceFile), "UnloadedModulesList"); for (Element element : JDOMUtil.getChildren(unloadedModulesList, "module")) { unloadedModules.add(element.getAttributeValue("name")); diff --git a/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/IconsClassGenerator.kt b/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/IconsClassGenerator.kt index 79d82104799b..7bb224598021 100644 --- a/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/IconsClassGenerator.kt +++ b/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/IconsClassGenerator.kt @@ -81,7 +81,7 @@ class IconsClassGenerator(private val projectHome: File, val util: JpsModule, pr outFile = targetRoot.resolve("$className.java") } - val oldText = if (Files.exists(outFile)) Files.readAllBytes(outFile).toString(StandardCharsets.UTF_8) else null + val oldText = if (outFile.toFile().exists()) Files.readAllBytes(outFile).toString(StandardCharsets.UTF_8) else null val newText = generate(module, className, packageName, customLoad, getCopyrightComment(oldText)) val oldLines = oldText?.lines() ?: emptyList() @@ -309,7 +309,7 @@ class IconsClassGenerator(private val projectHome: File, val util: JpsModule, pr assert(isIcon(imageFile)) { "Overriding icon should be valid: $iconName - $imageFile" } } - val size = if (Files.exists(imageFile)) imageSize(imageFile) else null + val size = if (imageFile.toFile().exists()) imageSize(imageFile) else null val comment: String when { size != null -> comment = " // ${size.width}x${size.height}" diff --git a/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/ImageCollector.kt b/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/ImageCollector.kt index a861c34af278..45de30907104 100644 --- a/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/ImageCollector.kt +++ b/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/ImageCollector.kt @@ -88,9 +88,7 @@ internal class ImageCollector(private val projectHome: Path, private val iconsOn private fun processRoot(sourceRoot: JpsModuleSourceRoot) { val root = Paths.get(JpsPathUtil.urlToPath(sourceRoot.url)) - if (!Files.exists(root)) { - return - } + if (!root.toFile().exists()) return val answer = downToRoot(root, root, null, IconRobotsData(), 0) val iconsRoot = (if (answer == null || Files.isDirectory(answer)) answer else answer.parent) ?: return @@ -231,7 +229,7 @@ internal class ImageCollector(private val projectHome: Path, private val iconsOn fun fork(dir: Path, root: Path): IconRobotsData { val robots = dir.resolve(ROBOTS_FILE_NAME) - if (!Files.exists(robots)) { + if (!robots.toFile().exists()) { return this } diff --git a/platform/projectModel-api/src/com/intellij/util/io/path.kt b/platform/projectModel-api/src/com/intellij/util/io/path.kt index c114bf0bb354..210c4703edc2 100644 --- a/platform/projectModel-api/src/com/intellij/util/io/path.kt +++ b/platform/projectModel-api/src/com/intellij/util/io/path.kt @@ -12,7 +12,7 @@ import java.nio.file.attribute.BasicFileAttributes import java.nio.file.attribute.FileTime import java.util.* -fun Path.exists(): Boolean = Files.exists(this) +fun Path.exists(): Boolean = this.toFile().exists() fun Path.createDirectories(): Path { // symlink or existing regular file - Java SDK do this check, but with as `isDirectory(dir, LinkOption.NOFOLLOW_LINKS)`, i.e. links are not checked diff --git a/platform/testFramework/src/com/intellij/testFramework/rules/TempDirectory.java b/platform/testFramework/src/com/intellij/testFramework/rules/TempDirectory.java index 0657852b2fbf..7902c669bb05 100644 --- a/platform/testFramework/src/com/intellij/testFramework/rules/TempDirectory.java +++ b/platform/testFramework/src/com/intellij/testFramework/rules/TempDirectory.java @@ -68,7 +68,7 @@ public class TempDirectory extends TemporaryFolder { @Override public File newFolder(String directoryName) throws IOException { Path dir = Paths.get(getRoot().getPath(), directoryName); - if (Files.exists(dir)) throw new IOException("Already exists: " + dir); + if (dir.toFile().exists()) throw new IOException("Already exists: " + dir); Files.createDirectories(dir); return dir.toFile(); } @@ -77,7 +77,7 @@ public class TempDirectory extends TemporaryFolder { @Override public File newFile(String fileName) throws IOException { Path file = Paths.get(getRoot().getPath(), fileName); - if (Files.exists(file)) throw new IOException("Already exists: " + file); + if (file.toFile().exists()) throw new IOException("Already exists: " + file); makeDirectories(file.getParent()); Files.createFile(file); return file.toFile();