Repository: jclouds
Updated Branches:
  refs/heads/2.0.x 1a23a1634 -> 9bf7c5da5


fix for deleting an invalid file

If the file for delete is invalid (typically a wrong filename) an IOException 
will be thrown.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/9bf7c5da
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/9bf7c5da
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/9bf7c5da

Branch: refs/heads/2.0.x
Commit: 9bf7c5da5acdfeac1e9298964cb591a142b48afd
Parents: 1a23a16
Author: Tomas Tulka <[email protected]>
Authored: Mon May 8 09:32:56 2017 +0200
Committer: Andrew Gaul <[email protected]>
Committed: Wed May 10 01:02:48 2017 -0700

----------------------------------------------------------------------
 .../main/java/org/jclouds/filesystem/util/Utils.java  | 14 +++++++++++---
 .../internal/FilesystemStorageStrategyImplTest.java   | 11 +++++++++++
 2 files changed, 22 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/9bf7c5da/apis/filesystem/src/main/java/org/jclouds/filesystem/util/Utils.java
----------------------------------------------------------------------
diff --git 
a/apis/filesystem/src/main/java/org/jclouds/filesystem/util/Utils.java 
b/apis/filesystem/src/main/java/org/jclouds/filesystem/util/Utils.java
index 8119e98..e9439f9 100644
--- a/apis/filesystem/src/main/java/org/jclouds/filesystem/util/Utils.java
+++ b/apis/filesystem/src/main/java/org/jclouds/filesystem/util/Utils.java
@@ -27,6 +27,7 @@ import java.nio.file.DirectoryNotEmptyException;
 import java.nio.file.Files;
 import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
+import java.nio.file.InvalidPathException;
 import java.nio.file.attribute.AclEntry;
 import java.nio.file.attribute.AclEntryPermission;
 import java.nio.file.attribute.AclEntryType;
@@ -77,10 +78,17 @@ public class Utils {
    }
 
    public static void delete(File file) throws IOException {
+      Path path;
+      try {
+         path = file.toPath();
+      } catch (InvalidPathException ipe) {
+         throw new IOException("Invalid file: " + file, ipe);
+      }
+
       for (int n = 0; n < 10; n++) {
          try {
-            Files.delete(file.toPath());
-            if (Files.exists(file.toPath())) {
+            Files.delete(path);
+            if (Files.exists(path)) {
                Uninterruptibles.sleepUninterruptibly(200, 
TimeUnit.MILLISECONDS);
                continue;
             }
@@ -98,7 +106,7 @@ public class Utils {
          }
       }
       // File could not be deleted multiple times. It is very likely locked in 
another process
-      throw new IOException("Could not delete: " + file.toPath());
+      throw new IOException("Could not delete: " + path);
    }
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/9bf7c5da/apis/filesystem/src/test/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImplTest.java
----------------------------------------------------------------------
diff --git 
a/apis/filesystem/src/test/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImplTest.java
 
b/apis/filesystem/src/test/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImplTest.java
index 6eb4238..3c0c948 100644
--- 
a/apis/filesystem/src/test/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImplTest.java
+++ 
b/apis/filesystem/src/test/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImplTest.java
@@ -29,6 +29,7 @@ import static org.testng.Assert.fail;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.nio.file.InvalidPathException;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -685,6 +686,16 @@ public class FilesystemStorageStrategyImplTest {
       }
    }
 
+   @Test
+   public void testDeletingInvalidPathFileEndsNormally() {
+      String invalidPathBlobKey = "A<!:!@#$%^&*?]8 /\0";
+      try {
+         storageStrategy.removeBlob(CONTAINER_NAME, invalidPathBlobKey);
+      } catch (InvalidPathException ipe) {
+         fail("Deleting an invalid path ended with an InvalidPathException.", 
ipe);
+      }
+   }
+
    // ---------------------------------------------------------- Private 
methods
 
    /**

Reply via email to