azkaban-aplcache

Implemented delete API for local Storage (#1340) Delete

8/15/2017 7:07:34 PM

Details

diff --git a/azkaban-common/src/main/java/azkaban/storage/LocalStorage.java b/azkaban-common/src/main/java/azkaban/storage/LocalStorage.java
index 56d4143..0db7ab5 100644
--- a/azkaban-common/src/main/java/azkaban/storage/LocalStorage.java
+++ b/azkaban-common/src/main/java/azkaban/storage/LocalStorage.java
@@ -65,12 +65,16 @@ public class LocalStorage implements Storage {
     return baseDirectory;
   }
 
+  private File getFile(final String key) {
+    return new File(this.rootDirectory, key);
+  }
+
   /**
    * @param key Relative path of the file from the baseDirectory
    */
   @Override
   public InputStream get(final String key) throws IOException {
-    return new FileInputStream(new File(this.rootDirectory, key));
+    return new FileInputStream(getFile(key));
   }
 
   @Override
@@ -106,6 +110,13 @@ public class LocalStorage implements Storage {
 
   @Override
   public boolean delete(final String key) {
-    throw new UnsupportedOperationException("delete has not been implemented.");
+    final File file = getFile(key);
+    final boolean result = file.exists() && file.delete();
+    if (result) {
+      log.warn("Deleted file: " + file.getAbsolutePath());
+    } else {
+      log.warn("Unable to delete file: " + file.getAbsolutePath());
+    }
+    return result;
   }
 }
diff --git a/azkaban-common/src/test/java/azkaban/storage/LocalStorageTest.java b/azkaban-common/src/test/java/azkaban/storage/LocalStorageTest.java
index 5b9d0ff..dbaaafd 100644
--- a/azkaban-common/src/test/java/azkaban/storage/LocalStorageTest.java
+++ b/azkaban-common/src/test/java/azkaban/storage/LocalStorageTest.java
@@ -26,6 +26,7 @@ import azkaban.AzkabanCommonModuleConfig;
 import azkaban.spi.StorageMetadata;
 import azkaban.utils.Md5Hasher;
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import org.apache.commons.io.FileUtils;
@@ -58,7 +59,7 @@ public class LocalStorageTest {
   }
 
   @Test
-  public void testPutGet() throws Exception {
+  public void testPutGetDelete() throws Exception {
     final ClassLoader classLoader = getClass().getClassLoader();
     final File testFile = new File(classLoader.getResource(SAMPLE_FILE).getFile());
 
@@ -86,6 +87,17 @@ public class LocalStorageTest {
     final File getFile = new File("tmp.get");
     FileUtils.copyInputStreamToFile(getIs, getFile);
     assertTrue(FileUtils.contentEquals(testFile, getFile));
+
+    // Cleanup temp file
     getFile.delete();
+
+    assertTrue(this.localStorage.delete(key));
+    boolean exceptionThrown = false;
+    try {
+      this.localStorage.get(key);
+    } catch (final FileNotFoundException e) {
+      exceptionThrown = true;
+    }
+    assertTrue(exceptionThrown);
   }
 }