package org.peerbox.app.manager.user; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import org.hive2hive.core.file.IFileAgent; final class FileAgent implements IFileAgent { private final Path root; private final Path cache; public FileAgent(final Path root, final Path cache) { this.root = root; this.cache = cache; } @Override public File getRoot() { return root.toFile(); } @Override public void writeCache(String key, byte[] data) throws IOException { if (cache == null) { return; } if (key == null) { return; } if (data == null) { return; } ensureCacheDirExists(); Path cacheFile = cache.resolve(key); try { Files.write(cacheFile, data); } catch (IOException e) { // could not write } } @Override public byte[] readCache(String key) { if (cache == null) { return null; } if (key == null) { return null; } Path cacheFile = cache.resolve(key); if (!Files.exists(cacheFile)) { return null; } try { return Files.readAllBytes(cacheFile); } catch (IOException e) { // could not read } return null; } private void ensureCacheDirExists() throws IOException { if (!Files.exists(cache)) { Files.createDirectories(cache); } } }