SitePaths: Convert tmp_dir to Path Change-Id: I99571bae7580c3b024489ac10049fc6daf99c375
diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/FileUtil.java b/gerrit-common/src/main/java/com/google/gerrit/common/FileUtil.java index bed10d6..aa2fcbc 100644 --- a/gerrit-common/src/main/java/com/google/gerrit/common/FileUtil.java +++ b/gerrit-common/src/main/java/com/google/gerrit/common/FileUtil.java
@@ -21,6 +21,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.nio.file.Path; import java.util.Arrays; public class FileUtil { @@ -42,6 +43,11 @@ } } + public static void chmod(final int mode, final Path path) { + // TODO(dborowitz): Is there a portable way to do this with NIO? + chmod(mode, path.toFile()); + } + public static void chmod(final int mode, final File path) { path.setReadable(false, false /* all */); path.setWritable(false, false /* all */); @@ -63,4 +69,4 @@ private FileUtil() { } -} \ No newline at end of file +}
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java index 9a7cab0..a185985 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java
@@ -62,6 +62,7 @@ import java.io.PrintWriter; import java.net.URI; import java.net.URISyntaxException; +import java.nio.file.Files; import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; @@ -143,10 +144,11 @@ private void makeSiteConfig(final SitePaths site, final GerritConfig gerritConfig) throws IOException { - if (!site.tmp_dir.exists()) { - site.tmp_dir.mkdirs(); + if (!Files.exists(site.tmp_dir)) { + Files.createDirectories(site.tmp_dir); } - File myconf = File.createTempFile("gitweb_config", ".perl", site.tmp_dir); + File myconf = Files.createTempFile(site.tmp_dir, "gitweb_config", ".perl") + .toFile(); // To make our configuration file only readable or writable by us; // this reduces the chances of someone tampering with the file.
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/api/InitUtil.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/api/InitUtil.java index 881208d..ac911a4 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/api/InitUtil.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/api/InitUtil.java
@@ -34,6 +34,8 @@ import java.net.URISyntaxException; import java.net.UnknownHostException; import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.nio.file.Path; /** Utility functions to help initialize a site. */ public class InitUtil { @@ -51,9 +53,18 @@ } } - public static void mkdir(final File path) { - if (!path.isDirectory() && !path.mkdir()) { - throw die("Cannot make directory " + path); + public static void mkdir(File file) { + mkdir(file.toPath()); + } + + public static void mkdir(Path path) { + if (Files.isDirectory(path)) { + return; + } + try { + Files.createDirectory(path); + } catch (IOException e) { + throw die("Cannot make directory " + path, e); } }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/SitePaths.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/SitePaths.java index 1cd8fb2..c39d7ba 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/SitePaths.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/SitePaths.java
@@ -33,7 +33,7 @@ public final File bin_dir; public final File etc_dir; public final File lib_dir; - public final File tmp_dir; + public final Path tmp_dir; public final File logs_dir; public final File plugins_dir; public final File data_dir; @@ -68,11 +68,12 @@ public SitePaths(final @SitePath Path sitePath) throws FileNotFoundException { // TODO(dborowitz): Convert all of these to Paths. site_path = sitePath.toFile(); + Path p = sitePath; bin_dir = new File(site_path, "bin"); etc_dir = new File(site_path, "etc"); lib_dir = new File(site_path, "lib"); - tmp_dir = new File(site_path, "tmp"); + tmp_dir = p.resolve("tmp"); plugins_dir = new File(site_path, "plugins"); data_dir = new File(site_path, "data"); logs_dir = new File(site_path, "logs");
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/JarPluginProvider.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/JarPluginProvider.java index 53f39f1..5c0b41c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/JarPluginProvider.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/JarPluginProvider.java
@@ -31,6 +31,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; +import java.nio.file.Files; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -47,7 +48,8 @@ @Inject JarPluginProvider(SitePaths sitePaths) { - tmpDir = sitePaths.tmp_dir; + // TODO(dborowitz): Convert to NIO. + tmpDir = sitePaths.tmp_dir.toFile(); } @Override @@ -111,10 +113,11 @@ public static File storeInTemp(String pluginName, InputStream in, SitePaths sitePaths) throws IOException { - if (!sitePaths.tmp_dir.exists()) { - sitePaths.tmp_dir.mkdirs(); + if (!Files.exists(sitePaths.tmp_dir)) { + Files.createDirectories(sitePaths.tmp_dir); } - return asTemp(in, tempNameFor(pluginName), ".jar", sitePaths.tmp_dir); + return asTemp(in, tempNameFor(pluginName), ".jar", + sitePaths.tmp_dir.toFile()); } private ServerPlugin loadJarPlugin(String name, File srcJar,