BuckUtils: Support missing buck.properties

In I8658a2b0, the very change where I added support for building
without Eclipse, I justified not handling a missing buck.properties on
the basis of it's always there if you're using Eclipse. Well that was
wrong.

Just ignore missing buck.properties. This doesn't handle the case
where buck is not on $PATH, but that's harder to do unless we build
buck.properties into the war, which we'd rather not as it makes the
wars non-hermetic across machines.

Change-Id: Iadd149cdc8bf3bd7ac574e4e75e06a44ea25a42f
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/BuckUtils.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/BuckUtils.java
index a182663..0b4a02e 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/BuckUtils.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/BuckUtils.java
@@ -14,9 +14,9 @@
 
 package com.google.gerrit.httpd.raw;
 
+import static com.google.common.base.MoreObjects.firstNonNull;
 import static java.nio.charset.StandardCharsets.UTF_8;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.escape.Escaper;
 import com.google.common.html.HtmlEscapers;
 import com.google.common.io.ByteStreams;
@@ -27,12 +27,12 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InterruptedIOException;
 import java.io.PrintWriter;
+import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Properties;
@@ -47,7 +47,7 @@
       throws IOException, BuildFailureException {
     log.info("buck build " + target);
     Properties properties = loadBuckProperties(gen);
-    String buck = MoreObjects.firstNonNull(properties.getProperty("buck"), "buck");
+    String buck = firstNonNull(properties.getProperty("buck"), "buck");
     ProcessBuilder proc = new ProcessBuilder(buck, "build", target)
         .directory(root.toFile())
         .redirectErrorStream(true);
@@ -77,12 +77,13 @@
     log.info(String.format("UPDATED    %s in %.3fs", target, time / 1000.0));
   }
 
-  private static Properties loadBuckProperties(Path gen)
-      throws FileNotFoundException, IOException {
+  private static Properties loadBuckProperties(Path gen) throws IOException {
     Properties properties = new Properties();
-    try (InputStream in = new FileInputStream(
-        gen.resolve(Paths.get("tools/buck/buck.properties")).toFile())) {
+    Path p = gen.resolve(Paths.get("tools/buck/buck.properties"));
+    try (InputStream in = Files.newInputStream(p)) {
       properties.load(in);
+    } catch (NoSuchFileException e) {
+      // Ignore; will be run from PATH, with a descriptive error if it fails.
     }
     return properties;
   }