SimpleJavaLibraryBuilder.java: Use MoreFiles.deleteRecursively to clean up directory
Related: https://github.com/bazelbuild/bazel/issues/5907
RELNOTES: None
PiperOrigin-RevId: 209735282
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/SimpleJavaLibraryBuilder.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/SimpleJavaLibraryBuilder.java
index a90bc06..8f8f4b2 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/SimpleJavaLibraryBuilder.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/SimpleJavaLibraryBuilder.java
@@ -14,6 +14,8 @@
package com.google.devtools.build.buildjar;
+import com.google.common.io.MoreFiles;
+import com.google.common.io.RecursiveDeleteOption;
import com.google.devtools.build.buildjar.instrumentation.JacocoInstrumentationProcessor;
import com.google.devtools.build.buildjar.jarhelper.JarCreator;
import com.google.devtools.build.buildjar.javac.BlazeJavacArguments;
@@ -63,34 +65,16 @@
if (directory == null) {
return;
}
- if (!Files.exists(directory)) {
- Files.createDirectories(directory);
- return;
- }
- try {
- // TODO(b/27069912): handle symlinks
- Files.walkFileTree(
- directory,
- new SimpleFileVisitor<Path>() {
- @Override
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
- throws IOException {
- Files.delete(file);
- return FileVisitResult.CONTINUE;
- }
- @Override
- public FileVisitResult postVisitDirectory(Path dir, IOException exc)
- throws IOException {
- if (!dir.equals(directory)) {
- Files.delete(dir);
- }
- return FileVisitResult.CONTINUE;
- }
- });
- } catch (IOException e) {
- throw new IOException("Cannot clean '" + directory + "'", e);
+ if (Files.exists(directory)) {
+ try {
+ MoreFiles.deleteRecursively(directory, RecursiveDeleteOption.ALLOW_INSECURE);
+ } catch (IOException e) {
+ throw new IOException("Cannot clean '" + directory + "'", e);
+ }
}
+
+ Files.createDirectories(directory);
}
public void buildGensrcJar(JavaLibraryBuildRequest build) throws IOException {
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/VanillaJavaBuilder.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/VanillaJavaBuilder.java
index c090709..db8ec8b 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/VanillaJavaBuilder.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/VanillaJavaBuilder.java
@@ -20,6 +20,8 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+import com.google.common.io.MoreFiles;
+import com.google.common.io.RecursiveDeleteOption;
import com.google.devtools.build.buildjar.jarhelper.JarCreator;
import com.google.devtools.build.buildjar.javac.JavacOptions;
import com.google.devtools.build.buildjar.proto.JavaCompilation.Manifest;
@@ -50,7 +52,6 @@
import javax.tools.JavaCompiler;
import javax.tools.JavaCompiler.CompilationTask;
import javax.tools.JavaFileObject;
-import javax.tools.JavaFileObject.Kind;
import javax.tools.SimpleJavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.StandardLocation;
@@ -370,24 +371,7 @@
private static void createOutputDirectory(Path dir) throws IOException {
if (Files.exists(dir)) {
try {
- // TODO(b/27069912): handle symlinks
- Files.walkFileTree(
- dir,
- new SimpleFileVisitor<Path>() {
- @Override
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
- throws IOException {
- Files.delete(file);
- return FileVisitResult.CONTINUE;
- }
-
- @Override
- public FileVisitResult postVisitDirectory(Path dir, IOException exc)
- throws IOException {
- Files.delete(dir);
- return FileVisitResult.CONTINUE;
- }
- });
+ MoreFiles.deleteRecursively(dir, RecursiveDeleteOption.ALLOW_INSECURE);
} catch (IOException e) {
throw new IOException("Cannot clean output directory '" + dir + "'", e);
}
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/instrumentation/JacocoInstrumentationProcessor.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/instrumentation/JacocoInstrumentationProcessor.java
index 995c95d..35f8019 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/instrumentation/JacocoInstrumentationProcessor.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/instrumentation/JacocoInstrumentationProcessor.java
@@ -14,6 +14,8 @@
package com.google.devtools.build.buildjar.instrumentation;
+import com.google.common.io.MoreFiles;
+import com.google.common.io.RecursiveDeleteOption;
import com.google.devtools.build.buildjar.InvalidCommandLineException;
import com.google.devtools.build.buildjar.JavaLibraryBuildRequest;
import com.google.devtools.build.buildjar.jarhelper.JarCreator;
@@ -92,7 +94,8 @@
public void cleanup() throws IOException {
if (Files.exists(instrumentedClassesDirectory)) {
- recursiveRemove(instrumentedClassesDirectory);
+ MoreFiles.deleteRecursively(
+ instrumentedClassesDirectory, RecursiveDeleteOption.ALLOW_INSECURE);
}
}
@@ -141,24 +144,4 @@
}
});
}
-
- // TODO(b/27069912): handle symlinks
- private static void recursiveRemove(Path path) throws IOException {
- Files.walkFileTree(
- path,
- new SimpleFileVisitor<Path>() {
- @Override
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
- throws IOException {
- Files.delete(file);
- return FileVisitResult.CONTINUE;
- }
-
- @Override
- public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
- Files.delete(dir);
- return FileVisitResult.CONTINUE;
- }
- });
- }
}