You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by za...@apache.org on 2016/10/25 22:23:51 UTC
jclouds git commit: Ensure that jclouds consistently uses /,
works with \\, and uses File.separator on the filesystem level.
Repository: jclouds
Updated Branches:
refs/heads/master 199e17ab2 -> fc91f6429
Ensure that jclouds consistently uses /, works with \\, and uses File.separator on the filesystem level.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/fc91f642
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/fc91f642
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/fc91f642
Branch: refs/heads/master
Commit: fc91f64290bbfcd5f67a9f764f3e2b611025ff7b
Parents: 199e17a
Author: Zack Shoylev <za...@rackspace.com>
Authored: Fri Oct 21 17:15:50 2016 -0500
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Tue Oct 25 17:23:32 2016 -0500
----------------------------------------------------------------------
.../FilesystemBlobKeyValidatorImpl.java | 7 +--
.../FilesystemContainerNameValidatorImpl.java | 7 +--
.../internal/FilesystemStorageStrategyImpl.java | 44 +++++++--------
.../filesystem/FilesystemBlobStoreTest.java | 56 +++++++++++---------
.../FilesystemStorageStrategyImplTest.java | 4 +-
5 files changed, 57 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc91f642/apis/filesystem/src/main/java/org/jclouds/filesystem/predicates/validators/internal/FilesystemBlobKeyValidatorImpl.java
----------------------------------------------------------------------
diff --git a/apis/filesystem/src/main/java/org/jclouds/filesystem/predicates/validators/internal/FilesystemBlobKeyValidatorImpl.java b/apis/filesystem/src/main/java/org/jclouds/filesystem/predicates/validators/internal/FilesystemBlobKeyValidatorImpl.java
index 5b92bcc..9855e52 100644
--- a/apis/filesystem/src/main/java/org/jclouds/filesystem/predicates/validators/internal/FilesystemBlobKeyValidatorImpl.java
+++ b/apis/filesystem/src/main/java/org/jclouds/filesystem/predicates/validators/internal/FilesystemBlobKeyValidatorImpl.java
@@ -16,8 +16,6 @@
*/
package org.jclouds.filesystem.predicates.validators.internal;
-import java.io.File;
-
import org.jclouds.filesystem.predicates.validators.FilesystemBlobKeyValidator;
import com.google.inject.Singleton;
@@ -38,9 +36,8 @@ public class FilesystemBlobKeyValidatorImpl extends FilesystemBlobKeyValidator {
throw new IllegalArgumentException("Blob key can't be null or empty");
//blobkey cannot start with / (or \ in Windows) character
- if (name.startsWith(File.separator))
- throw new IllegalArgumentException(String.format(
- "Blob key '%s' cannot start with character %s", name, File.separator));
+ if (name.startsWith("\\") || name.startsWith("/"))
+ throw new IllegalArgumentException("Blob key '%s' cannot start with \\ or /");
}
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc91f642/apis/filesystem/src/main/java/org/jclouds/filesystem/predicates/validators/internal/FilesystemContainerNameValidatorImpl.java
----------------------------------------------------------------------
diff --git a/apis/filesystem/src/main/java/org/jclouds/filesystem/predicates/validators/internal/FilesystemContainerNameValidatorImpl.java b/apis/filesystem/src/main/java/org/jclouds/filesystem/predicates/validators/internal/FilesystemContainerNameValidatorImpl.java
index accdf10..0d48ec9 100644
--- a/apis/filesystem/src/main/java/org/jclouds/filesystem/predicates/validators/internal/FilesystemContainerNameValidatorImpl.java
+++ b/apis/filesystem/src/main/java/org/jclouds/filesystem/predicates/validators/internal/FilesystemContainerNameValidatorImpl.java
@@ -16,8 +16,6 @@
*/
package org.jclouds.filesystem.predicates.validators.internal;
-import java.io.File;
-
import org.jclouds.filesystem.predicates.validators.FilesystemContainerNameValidator;
import com.google.inject.Singleton;
@@ -38,9 +36,8 @@ public class FilesystemContainerNameValidatorImpl extends FilesystemContainerNam
throw new IllegalArgumentException("Container name can't be null or empty");
//container name cannot contains / (or \ in Windows) character
- if (name.contains(File.separator))
- throw new IllegalArgumentException(String.format(
- "Container name '%s' cannot contain character %s", name, File.separator));
+ if (name.contains("\\") || name.contains("/"))
+ throw new IllegalArgumentException("Container name '%s' cannot contain \\ or /");
}
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc91f642/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
----------------------------------------------------------------------
diff --git a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
index 319633b..0c0a59a 100644
--- a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
+++ b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
@@ -109,8 +109,6 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
private static final byte[] DIRECTORY_MD5 =
Hashing.md5().hashBytes(new byte[0]).asBytes();
- private static final String BACK_SLASH = "\\";
-
@Resource
protected Logger logger = Logger.NULL;
@@ -315,7 +313,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
populateBlobKeysInContainer(containerFile, blobNames, new Function<String, String>() {
@Override
public String apply(String string) {
- return string.substring(containerPathLength);
+ return denormalize(string.substring(containerPathLength));
}
});
return blobNames;
@@ -614,7 +612,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
@Override
public String getSeparator() {
- return File.separator;
+ return "/";
}
public boolean createContainer(String container) {
@@ -745,28 +743,26 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
}
/**
- * Substitutes all the file separator occurrences in the path with a file separator for the
- * current operative system
+ * Convert path to the current OS filesystem standard
*
- * @param pathToBeNormalized
+ * @param path
* @return
*/
- private static String normalize(String pathToBeNormalized) {
- if (null != pathToBeNormalized && pathToBeNormalized.contains(BACK_SLASH)) {
- if (!BACK_SLASH.equals(File.separator)) {
- return pathToBeNormalized.replace(BACK_SLASH, File.separator);
- }
+ private static String normalize(String path) {
+ if (null != path) {
+ return path.replace("/", File.separator).replace("\\", File.separator);
}
- return pathToBeNormalized;
+ return path;
}
- private static String denormalize(String pathToDenormalize) {
- if (null != pathToDenormalize && pathToDenormalize.contains("/")) {
- if (BACK_SLASH.equals(File.separator)) {
- return pathToDenormalize.replace("/", BACK_SLASH);
- }
+ /**
+ * Convert path to jclouds standard (/)
+ */
+ private static String denormalize(String path) {
+ if (null != path) {
+ return path.replace("\\", "/");
}
- return pathToDenormalize;
+ return path;
}
/**
@@ -786,10 +782,11 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
// search for separator chars
if (!onlyTrailing) {
- if (pathToBeCleaned.substring(0, 1).equals(File.separator))
+ if (pathToBeCleaned.charAt(0) == '/' || pathToBeCleaned.charAt(0) == '\\')
beginIndex = 1;
}
- if (pathToBeCleaned.substring(pathToBeCleaned.length() - 1).equals(File.separator))
+ if (pathToBeCleaned.charAt(pathToBeCleaned.length() - 1) == '/' ||
+ pathToBeCleaned.charAt(pathToBeCleaned.length() - 1) == '\\')
endIndex--;
return pathToBeCleaned.substring(beginIndex, endIndex);
@@ -803,10 +800,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
* @param blobKey
*/
private void removeDirectoriesTreeOfBlobKey(String container, String blobKey) {
- String normalizedBlobKey = denormalize(blobKey);
- // exists is no path is present in the blobkey
- if (!normalizedBlobKey.contains(File.separator))
- return;
+ String normalizedBlobKey = normalize(blobKey);
File file = new File(normalizedBlobKey);
// TODO
http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc91f642/apis/filesystem/src/test/java/org/jclouds/filesystem/FilesystemBlobStoreTest.java
----------------------------------------------------------------------
diff --git a/apis/filesystem/src/test/java/org/jclouds/filesystem/FilesystemBlobStoreTest.java b/apis/filesystem/src/test/java/org/jclouds/filesystem/FilesystemBlobStoreTest.java
index d27924f..e23bebd 100644
--- a/apis/filesystem/src/test/java/org/jclouds/filesystem/FilesystemBlobStoreTest.java
+++ b/apis/filesystem/src/test/java/org/jclouds/filesystem/FilesystemBlobStoreTest.java
@@ -173,9 +173,11 @@ public class FilesystemBlobStoreTest {
checkForContainerContent(CONTAINER_NAME, null);
// creates blobs in first container
- Set<String> blobsExpected = TestUtils.createBlobsInContainer(CONTAINER_NAME, "bbb" + File.separator + "ccc"
- + File.separator + "ddd" + File.separator + "1234.jpg", "4rrr.jpg", "rrr" + File.separator + "sss"
- + File.separator + "788.jpg", "xdc" + File.separator + "wert.kpg");
+ Set<String> blobsExpected = TestUtils.createBlobsInContainer(CONTAINER_NAME,
+ "bbb/ccc/ddd/1234.jpg",
+ "4rrr.jpg",
+ "rrr/sss/788.jpg",
+ "xdc/wert.kpg");
checkForContainerContent(CONTAINER_NAME, blobsExpected);
}
@@ -220,17 +222,19 @@ public class FilesystemBlobStoreTest {
// creates blobs in first container
- Set<String> blobNamesCreatedInContainer1 = TestUtils.createBlobsInContainer(CONTAINER_NAME, "bbb"
- + File.separator + "ccc" + File.separator + "ddd" + File.separator + "1234.jpg",
- TestUtils.createRandomBlobKey(), "rrr" + File.separator + "sss" + File.separator + "788.jpg", "xdc"
- + File.separator + "wert.kpg");
+ Set<String> blobNamesCreatedInContainer1 = TestUtils.createBlobsInContainer(CONTAINER_NAME,
+ "bbb/ccc/ddd/1234.jpg",
+ TestUtils.createRandomBlobKey(),
+ "rrr/sss/788.jpg",
+ "xdc/wert.kpg");
// creates blobs in second container
blobStore.createContainerInLocation(null, CONTAINER_NAME2);
- Set<String> blobNamesCreatedInContainer2 = TestUtils.createBlobsInContainer(CONTAINER_NAME2, "asd"
- + File.separator + "bbb" + File.separator + "ccc" + File.separator + "ddd" + File.separator + "1234.jpg",
- TestUtils.createRandomBlobKey(), "rrr" + File.separator + "sss" + File.separator + "788.jpg", "xdc"
- + File.separator + "wert.kpg");
+ Set<String> blobNamesCreatedInContainer2 = TestUtils.createBlobsInContainer(CONTAINER_NAME2,
+ "asd/bbb/ccc/ddd/1234.jpg",
+ TestUtils.createRandomBlobKey(),
+ "rrr/sss/788.jpg",
+ "xdc/wert.kpg");
// test blobs in first container
checkForContainerContent(CONTAINER_NAME, blobNamesCreatedInContainer1);
@@ -244,12 +248,14 @@ public class FilesystemBlobStoreTest {
checkForContainerContent(CONTAINER_NAME, null);
// creates blobs in first container
- Set<String> blobsExpected = TestUtils.createBlobsInContainer(CONTAINER_NAME, "bbb" + File.separator + "ccc"
- + File.separator + "ddd" + File.separator + "1234.jpg", "4rrr.jpg", "rrr" + File.separator + "sss"
- + File.separator + "788.jpg", "rrr" + File.separator + "wert.kpg");
+ Set<String> blobsExpected = TestUtils.createBlobsInContainer(CONTAINER_NAME,
+ "bbb/ccc/ddd/1234.jpg",
+ "4rrr.jpg",
+ "rrr/sss/788.jpg",
+ "rrr/wert.kpg");
// remove not expected values
- blobsExpected.remove("bbb" + File.separator + "ccc" + File.separator + "ddd" + File.separator + "1234.jpg");
+ blobsExpected.remove("bbb/ccc/ddd/1234.jpg");
blobsExpected.remove("4rrr.jpg");
checkForContainerContent(CONTAINER_NAME, "rrr", blobsExpected);
@@ -271,17 +277,19 @@ public class FilesystemBlobStoreTest {
blobStore.createContainerInLocation(null, CONTAINER_NAME2);
// creates blobs in first container
- Set<String> blobNamesCreatedInContainer1 = TestUtils.createBlobsInContainer(CONTAINER_NAME, "bbb"
- + File.separator + "ccc" + File.separator + "ddd" + File.separator + "1234.jpg",
- TestUtils.createRandomBlobKey(), "rrr" + File.separator + "sss" + File.separator + "788.jpg", "xdc"
- + File.separator + "wert.kpg");
+ Set<String> blobNamesCreatedInContainer1 = TestUtils.createBlobsInContainer(CONTAINER_NAME,
+ "bbb/ccc/ddd/1234.jpg",
+ TestUtils.createRandomBlobKey(),
+ "rrr/sss/788.jpg",
+ "xdc/wert.kpg");
// creates blobs in second container
blobStore.createContainerInLocation(null, CONTAINER_NAME2);
- Set<String> blobNamesCreatedInContainer2 = TestUtils.createBlobsInContainer(CONTAINER_NAME2, "asd"
- + File.separator + "bbb" + File.separator + "ccc" + File.separator + "ddd" + File.separator + "1234.jpg",
- TestUtils.createRandomBlobKey(), "rrr" + File.separator + "sss" + File.separator + "788.jpg", "xdc"
- + File.separator + "wert.kpg");
+ Set<String> blobNamesCreatedInContainer2 = TestUtils.createBlobsInContainer(CONTAINER_NAME2,
+ "asd/bbb/ccc/ddd/1234.jpg",
+ TestUtils.createRandomBlobKey(),
+ "rrr/sss/788.jpg",
+ "xdc/wert.kpg");
// test blobs in containers
checkForContainerContent(CONTAINER_NAME, blobNamesCreatedInContainer1);
@@ -329,7 +337,7 @@ public class FilesystemBlobStoreTest {
blobStore.removeBlob(CONTAINER_NAME, BLOB_KEY);
result = blobStore.blobExists(CONTAINER_NAME, BLOB_KEY);
assertFalse(result, "Blob still exists");
- TestUtils.fileExists(TARGET_CONTAINER_NAME + File.separator + BLOB_KEY, false);
+ TestUtils.fileExists(TARGET_CONTAINER_NAME + "/" + BLOB_KEY, false);
}
public void testRemoveBlob_TwoSimpleBlobKeys() throws IOException {
http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc91f642/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 9079fa0..6eb4238 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
@@ -605,8 +605,8 @@ public class FilesystemStorageStrategyImplTest {
Set<String> createBlobKeys = TestUtils.createBlobsInContainer(CONTAINER_NAME, new String[] {
TestUtils.createRandomBlobKey("GetBlobKeys-", ".jpg"),
TestUtils.createRandomBlobKey("GetBlobKeys-", ".jpg"),
- TestUtils.createRandomBlobKey("563" + FS + "g3sx2" + FS + "removeBlob-", ".jpg"),
- TestUtils.createRandomBlobKey("563" + FS + "g3sx2" + FS + "removeBlob-", ".jpg") });
+ TestUtils.createRandomBlobKey("563" + "/" + "g3sx2" + "/" + "removeBlob-", ".jpg"),
+ TestUtils.createRandomBlobKey("563" + "/" + "g3sx2" + "/" + "removeBlob-", ".jpg") });
storageStrategy.getBlobKeysInsideContainer(CONTAINER_NAME);
List<String> retrievedBlobKeys = Lists.newArrayList();