Skip to content
This repository has been archived by the owner on Jul 25, 2020. It is now read-only.

Commit

Permalink
JCLOUDS-929: Implement delimiter support in S3.
Browse files Browse the repository at this point in the history
Plumb the delimiter option to the S3 API.
  • Loading branch information
timuralp authored and gaul committed Jul 13, 2015
1 parent 6ec11fd commit fe13b07
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 17 deletions.
Expand Up @@ -24,7 +24,6 @@

import org.jclouds.blobstore.domain.PageSet;
import org.jclouds.blobstore.domain.StorageMetadata;
import org.jclouds.blobstore.domain.StorageType;
import org.jclouds.blobstore.domain.internal.PageSetImpl;
import org.jclouds.s3.domain.ListBucketResponse;

Expand Down Expand Up @@ -60,10 +59,7 @@ public PageSet<? extends StorageMetadata> apply(ListBucketResponse from) {

Map<String, StorageMetadata> nameToMd = Maps.uniqueIndex(contents, indexer);
for (String prefix : from.getCommonPrefixes()) {
prefix = prefix.endsWith("/") ? prefix.substring(0, prefix.lastIndexOf('/')) : prefix;
if (!nameToMd.containsKey(prefix)
|| nameToMd.get(prefix).getType() != StorageType.RELATIVE_PATH)
contents.add(prefix2ResourceMd.apply(prefix));
contents.add(prefix2ResourceMd.apply(prefix));
}
return new PageSetImpl<StorageMetadata>(contents, from.getNextMarker());
}
Expand Down
Expand Up @@ -36,12 +36,22 @@ public ListBucketOptions apply(ListContainerOptions from) {

ListBucketOptions httpOptions = new ListBucketOptions();
if (!from.isRecursive()) {
httpOptions.delimiter("/");
if (from.getDelimiter() != null) {
httpOptions.delimiter(from.getDelimiter().toString());
} else {
httpOptions.delimiter("/");
}
}
if (from.getDir() != null) {// TODO unit test
String path = from.getDir();
if (!path.endsWith("/"))
path = path + "/";
if (from.getDelimiter() != null) {
if (!path.endsWith(from.getDelimiter().toString())) {
path += from.getDelimiter();
}
} else {
if (!path.endsWith("/"))
path = path + "/";
}
httpOptions.withPrefix(path);
}
if (from.getPrefix() != null) {
Expand Down
Expand Up @@ -30,8 +30,8 @@ public ListContainerOptions apply(ListBucketOptions[] optionsList) {
if (optionsList.length != 0) {
if (optionsList[0].getDelimiter() == null) {
options.recursive();
} else if (!optionsList[0].getDelimiter().equals("/")) {
throw new IllegalArgumentException("only '/' is allowed as a blobstore delimiter");
} else {
options.delimiter(optionsList[0].getDelimiter());
}
if (optionsList[0].getMarker() != null) {
options.afterMarker(optionsList[0].getMarker());
Expand Down
Expand Up @@ -18,7 +18,6 @@

import org.jclouds.blobstore.integration.internal.BaseBlobStoreIntegrationTest;
import org.jclouds.blobstore.integration.internal.BaseContainerLiveTest;
import org.testng.SkipException;
import org.testng.annotations.Test;

@Test(groups = "live", testName = "S3ContainerLiveTest")
Expand All @@ -28,10 +27,4 @@ public S3ContainerLiveTest() {
provider = "s3";
BaseBlobStoreIntegrationTest.SANITY_CHECK_RETURNED_BUCKET_NAME = true;
}

@Override
@Test
public void testDelimiterList() {
throw new SkipException("not yet implemented");
}
}

0 comments on commit fe13b07

Please sign in to comment.