aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-10-16 12:16:02 +0200
committerMartin Polden <mpolden@mpolden.no>2019-10-16 12:20:12 +0200
commit48d7efe8bf25b597a0313443a1217c90116a7436 (patch)
treeb9cf2d50b4d50dc21c9d49ce8417afde406f1624 /node-admin
parent38299f5fc89504356b9237d36e6dc55877d5ef1a (diff)
Add readBytesIfExists to UnixPath
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java11
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPathTest.java11
2 files changed, 22 insertions, 0 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
index de3555b24a5..20a02e91bce 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
@@ -72,6 +72,17 @@ public class UnixPath {
return uncheck(() -> Files.readAllBytes(path));
}
+ /** Reads and returns all bytes contained in this path, if any such path exists. */
+ public Optional<byte[]> readBytesIfExists() {
+ try {
+ return Optional.of(Files.readAllBytes(path));
+ } catch (NoSuchFileException ignored) {
+ return Optional.empty();
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+
public UnixPath writeUtf8File(String content, OpenOption... options) {
return writeBytes(content.getBytes(StandardCharsets.UTF_8), options);
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPathTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPathTest.java
index 6dfbc258474..802ca43ef56 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPathTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPathTest.java
@@ -9,6 +9,7 @@ import java.nio.file.FileSystem;
import java.nio.file.Files;
import java.nio.file.Path;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -17,6 +18,7 @@ import static org.junit.Assert.assertTrue;
* @author hakonhall
*/
public class UnixPathTest {
+
private final FileSystem fs = TestFileSystem.create();
@Test
@@ -87,4 +89,13 @@ public class UnixPathTest {
UnixPath link = path.createSymbolicLink(fs.getPath("link-to-example.txt"));
assertEquals(original, link.readUtf8File());
}
+
+ @Test
+ public void readBytesIfExists() {
+ UnixPath path = new UnixPath(fs.getPath("example.txt"));
+ assertFalse(path.readBytesIfExists().isPresent());
+ path.writeBytes(new byte[]{42});
+ assertArrayEquals(new byte[]{42}, path.readBytesIfExists().get());
+ }
+
}