SitePaths: Convert bin and related paths to Path
Change-Id: I9fc364f4c90465412c3ba4d7e5fa011d47200d4e
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
index 0b58d06..efc97f9 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
@@ -157,8 +157,8 @@
}
void startDaemon(SiteRun run) {
- final String[] argv = {run.site.gerrit_sh.getAbsolutePath(), "start"};
- final Process proc;
+ String[] argv = {run.site.gerrit_sh.toAbsolutePath().toString(), "start"};
+ Process proc;
try {
System.err.println("Executing " + argv[0] + " " + argv[1]);
proc = Runtime.getRuntime().exec(argv);
@@ -177,7 +177,7 @@
for (;;) {
try {
- final int rc = proc.waitFor();
+ int rc = proc.waitFor();
if (rc != 0) {
System.err.println("error: cannot start Gerrit: exit status " + rc);
}
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitContainer.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitContainer.java
index f830854..60ff665 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitContainer.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitContainer.java
@@ -17,6 +17,7 @@
import static com.google.gerrit.pgm.init.api.InitUtil.die;
import static com.google.gerrit.pgm.init.api.InitUtil.username;
+import com.google.common.io.ByteStreams;
import com.google.gerrit.launcher.GerritLauncher;
import com.google.gerrit.pgm.init.api.ConsoleUI;
import com.google.gerrit.pgm.init.api.InitStep;
@@ -28,11 +29,12 @@
import org.eclipse.jgit.internal.storage.file.LockFile;
import org.eclipse.jgit.util.FS;
-import java.io.File;
-import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
/** Initialize the {@code container} configuration section. */
@Singleton
@@ -56,9 +58,9 @@
container.string("Run as", "user", username());
container.string("Java runtime", "javaHome", javaHome());
- File myWar;
+ Path myWar;
try {
- myWar = GerritLauncher.getDistributionArchive();
+ myWar = GerritLauncher.getDistributionArchive().toPath();
} catch (FileNotFoundException e) {
System.err.println("warn: Cannot find distribution archive (e.g. gerrit.war)");
myWar = null;
@@ -66,53 +68,41 @@
String path = container.get("war");
if (path != null) {
- path = container.string("Gerrit runtime", "war", //
- myWar != null ? myWar.getAbsolutePath() : null);
+ path = container.string("Gerrit runtime", "war",
+ myWar != null ? myWar.toAbsolutePath().toString() : null);
if (path == null || path.isEmpty()) {
throw die("container.war is required");
}
} else if (myWar != null) {
final boolean copy;
- final File siteWar = site.gerrit_war;
- if (siteWar.exists()) {
- copy = ui.yesno(true, "Upgrade %s", siteWar.getPath());
+ final Path siteWar = site.gerrit_war;
+ if (Files.exists(siteWar)) {
+ copy = ui.yesno(true, "Upgrade %s", siteWar);
} else {
- copy = ui.yesno(true, "Copy %s to %s", myWar.getName(), siteWar.getPath());
+ copy = ui.yesno(true, "Copy %s to %s", myWar.getFileName(), siteWar);
if (copy) {
container.unset("war");
} else {
- container.set("war", myWar.getAbsolutePath());
+ container.set("war", myWar.toAbsolutePath().toString());
}
}
if (copy) {
if (!ui.isBatch()) {
- System.err.format("Copying %s to %s", myWar.getName(), siteWar.getPath());
+ System.err.format("Copying %s to %s", myWar.getFileName(), siteWar);
System.err.println();
}
- FileInputStream in = new FileInputStream(myWar);
- try {
- siteWar.getParentFile().mkdirs();
+ try (InputStream in = Files.newInputStream(myWar)) {
+ Files.createDirectories(siteWar.getParent());
- LockFile lf = new LockFile(siteWar, FS.DETECTED);
+ LockFile lf = new LockFile(siteWar.toFile(), FS.DETECTED);
if (!lf.lock()) {
throw new IOException("Cannot lock " + siteWar);
}
-
try {
- final OutputStream out = lf.getOutputStream();
- try {
- final byte[] tmp = new byte[4096];
- for (;;) {
- int n = in.read(tmp);
- if (n < 0) {
- break;
- }
- out.write(tmp, 0, n);
- }
- } finally {
- out.close();
+ try (OutputStream out = lf.getOutputStream()) {
+ ByteStreams.copy(in, out);
}
if (!lf.commit()) {
throw new IOException("Cannot commit " + siteWar);
@@ -120,8 +110,6 @@
} finally {
lf.unlock();
}
- } finally {
- in.close();
}
}
}
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java
index 10c9bad..d4cf24c 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java
@@ -141,7 +141,7 @@
private void extractMailExample(String orig) throws Exception {
File ex = new File(site.mail_dir, orig + ".example");
- extract(ex, OutgoingEmail.class, orig);
+ extract(ex.toPath(), OutgoingEmail.class, orig);
chmod(0444, ex);
}
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 ac911a4..904af2f 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
@@ -16,14 +16,15 @@
import static com.google.gerrit.common.FileUtil.modified;
+import com.google.common.io.ByteStreams;
import com.google.gerrit.common.Die;
import org.eclipse.jgit.internal.storage.file.LockFile;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.util.FS;
-import org.eclipse.jgit.util.IO;
import org.eclipse.jgit.util.SystemReader;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -33,9 +34,10 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.net.UnknownHostException;
-import java.nio.ByteBuffer;
import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
+import java.util.Arrays;
/** Utility functions to help initialize a site. */
public class InitUtil {
@@ -120,12 +122,11 @@
return name;
}
- public static void extract(final File dst, final Class<?> sibling,
- final String name) throws IOException {
+ public static void extract(Path dst, Class<?> sibling, String name)
+ throws IOException {
try (InputStream in = open(sibling, name)) {
if (in != null) {
- ByteBuffer buf = IO.readWholeStream(in, 8192);
- copy(dst, buf);
+ copy(dst, ByteStreams.toByteArray(in));
}
}
}
@@ -147,35 +148,28 @@
return in;
}
- public static void copy(final File dst, final ByteBuffer buf)
+ public static void copy(Path dst, byte[] buf)
throws FileNotFoundException, IOException {
// If the file already has the content we want to put there,
// don't attempt to overwrite the file.
//
- try {
- if (buf.equals(ByteBuffer.wrap(IO.readFully(dst)))) {
+ try (InputStream in = Files.newInputStream(dst)) {
+ if (Arrays.equals(buf, ByteStreams.toByteArray(in))) {
return;
}
- } catch (FileNotFoundException notFound) {
+ } catch (NoSuchFileException notFound) {
// Fall through and write the file.
}
- dst.getParentFile().mkdirs();
- LockFile lf = new LockFile(dst, FS.DETECTED);
+ Files.createDirectories(dst.getParent());
+ LockFile lf = new LockFile(dst.toFile(), FS.DETECTED);
if (!lf.lock()) {
throw new IOException("Cannot lock " + dst);
}
try {
- final OutputStream out = lf.getOutputStream();
- try {
- final byte[] tmp = new byte[4096];
- while (0 < buf.remaining()) {
- int n = Math.min(buf.remaining(), tmp.length);
- buf.get(tmp, 0, n);
- out.write(tmp, 0, n);
- }
- } finally {
- out.close();
+ try (InputStream in = new ByteArrayInputStream(buf);
+ OutputStream out = lf.getOutputStream()) {
+ ByteStreams.copy(in, out);
}
if (!lf.commit()) {
throw new IOException("Cannot commit " + dst);
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 18dd6f5..1a26899 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
@@ -30,7 +30,7 @@
public static final String FOOTER_FILENAME = "GerritSiteFooter.html";
public final File site_path;
- public final File bin_dir;
+ public final Path bin_dir;
public final File etc_dir;
public final File lib_dir;
public final Path tmp_dir;
@@ -43,8 +43,8 @@
public final File themes_dir;
public final File index_dir;
- public final File gerrit_sh;
- public final File gerrit_war;
+ public final Path gerrit_sh;
+ public final Path gerrit_war;
public final File gerrit_config;
public final File secure_config;
@@ -70,7 +70,7 @@
site_path = sitePath.toFile();
Path p = sitePath;
- bin_dir = new File(site_path, "bin");
+ bin_dir = p.resolve("bin");
etc_dir = new File(site_path, "etc");
lib_dir = new File(site_path, "lib");
tmp_dir = p.resolve("tmp");
@@ -83,8 +83,8 @@
themes_dir = new File(site_path, "themes");
index_dir = new File(site_path, "index");
- gerrit_sh = new File(bin_dir, "gerrit.sh");
- gerrit_war = new File(bin_dir, "gerrit.war");
+ gerrit_sh = bin_dir.resolve("gerrit.sh");
+ gerrit_war = bin_dir.resolve("gerrit.war");
gerrit_config = new File(etc_dir, "gerrit.config");
secure_config = new File(etc_dir, "secure.config");
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java
index 591601d..acfbba2 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java
@@ -64,7 +64,7 @@
throw new ProvisionException("Unsupported schema version "
+ currentVer.versionNbr + "; expected schema version " + expectedVer
+ ". Run init to upgrade:\n"
- + "$ java -jar " + site.gerrit_war.getAbsolutePath() + " init -d "
+ + "$ java -jar " + site.gerrit_war.toAbsolutePath() + " init -d "
+ site.site_path.getAbsolutePath());
} else if (currentVer.versionNbr > expectedVer) {
throw new ProvisionException("Unsupported schema version "