You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2015/08/21 03:10:35 UTC
[2/4] jclouds-labs-google git commit: JCLOUDS-929: Plumb delimiter
and prefix to GCS.
JCLOUDS-929: Plumb delimiter and prefix to GCS.
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/commit/6e00fb45
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/6e00fb45
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/6e00fb45
Branch: refs/heads/master
Commit: 6e00fb45fa06db534fef780f9e590b9f912f24f4
Parents: 082fc9a
Author: Timur Alperovich <ti...@gmail.com>
Authored: Thu Aug 20 15:29:41 2015 -0700
Committer: Timur Alperovich <ti...@gmail.com>
Committed: Thu Aug 20 17:55:48 2015 -0700
----------------------------------------------------------------------
...ListContainerOptionsToListObjectOptions.java | 11 ++++++-
.../functions/ObjectListToStorageMetadata.java | 30 ++++++++------------
...loudStorageContainerIntegrationLiveTest.java | 10 -------
3 files changed, 22 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6e00fb45/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobStoreListContainerOptionsToListObjectOptions.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobStoreListContainerOptionsToListObjectOptions.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobStoreListContainerOptionsToListObjectOptions.java
index 581e9ce..15b5f4f 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobStoreListContainerOptionsToListObjectOptions.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobStoreListContainerOptionsToListObjectOptions.java
@@ -26,18 +26,27 @@ import com.google.common.base.Function;
public class BlobStoreListContainerOptionsToListObjectOptions implements
Function<ListContainerOptions, ListObjectOptions> {
public ListObjectOptions apply(ListContainerOptions from) {
+ if (from.getDir() != null && (from.getPrefix() != null || from.getDelimiter() != null)) {
+ throw new IllegalArgumentException("Cannot pass both directory and prefix/delimiter");
+ }
checkNotNull(from, "set options to instance NONE instead of passing null");
ListObjectOptions httpOptions = new ListObjectOptions();
- if (!from.isRecursive()) {
+ if (!from.isRecursive() && from.getDelimiter() == null) {
httpOptions = httpOptions.delimiter("/");
}
+ if (from.getDelimiter() != null) {
+ httpOptions = httpOptions.delimiter(from.getDelimiter());
+ }
if (from.getDir() != null) {
String path = from.getDir();
if (!path.endsWith("/"))
path += "/";
httpOptions = httpOptions.prefix(path);
}
+ if (from.getPrefix() != null) {
+ httpOptions.prefix(from.getPrefix());
+ }
if (from.getMarker() != null) {
httpOptions = httpOptions.pageToken(from.getMarker());
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6e00fb45/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectListToStorageMetadata.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectListToStorageMetadata.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectListToStorageMetadata.java
index 22f00da..4f7f1d0 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectListToStorageMetadata.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectListToStorageMetadata.java
@@ -16,22 +16,22 @@
*/
package org.jclouds.googlecloudstorage.blobstore.functions;
-import java.util.Map;
+import java.util.SortedSet;
import javax.inject.Inject;
-import org.jclouds.blobstore.domain.BlobMetadata;
+import org.jclouds.blobstore.domain.MutableStorageMetadata;
import org.jclouds.blobstore.domain.PageSet;
import org.jclouds.blobstore.domain.StorageMetadata;
import org.jclouds.blobstore.domain.StorageType;
+import org.jclouds.blobstore.domain.internal.MutableStorageMetadataImpl;
import org.jclouds.blobstore.domain.internal.PageSetImpl;
-import org.jclouds.blobstore.domain.internal.StorageMetadataImpl;
import org.jclouds.googlecloudstorage.domain.GoogleCloudStorageObject;
import org.jclouds.googlecloudstorage.domain.ListPageWithPrefixes;
import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
public class ObjectListToStorageMetadata
implements Function<ListPageWithPrefixes<GoogleCloudStorageObject>, PageSet<? extends StorageMetadata>> {
@@ -46,19 +46,13 @@ public class ObjectListToStorageMetadata
from = ListPageWithPrefixes.create(null, null, null);
}
- return new PageSetImpl<StorageMetadata>(Iterables.transform(Iterables.transform(from, object2blobMd),
- new Function<BlobMetadata, StorageMetadata>() {
- public StorageMetadata apply(BlobMetadata input) {
- Map<String, String> userMetaData = (input != null && input.getUserMetadata() != null) ? input
- .getUserMetadata() : ImmutableMap.<String, String> of();
- if (input.getContentMetadata().getContentType().equals("application/directory")) {
- return new StorageMetadataImpl(StorageType.RELATIVE_PATH, input.getProviderId(), input
- .getName(), input.getLocation(), input.getUri(), input.getETag(), input
- .getCreationDate(), input.getLastModified(), userMetaData,
- input.getSize());
- }
- return input;
- }
- }), from.nextPageToken());
+ SortedSet<StorageMetadata> results = Sets.<StorageMetadata> newTreeSet(Iterables.transform(from, object2blobMd));
+ for (String prefix : from.prefixes()) {
+ MutableStorageMetadata metadata = new MutableStorageMetadataImpl();
+ metadata.setType(StorageType.RELATIVE_PATH);
+ metadata.setName(prefix);
+ results.add(metadata);
+ }
+ return new PageSetImpl<StorageMetadata>(results, from.nextPageToken());
}
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6e00fb45/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerIntegrationLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerIntegrationLiveTest.java
index d4f5fb8..c129ae8 100644
--- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerIntegrationLiveTest.java
+++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerIntegrationLiveTest.java
@@ -105,14 +105,4 @@ public class GoogleCloudStorageContainerIntegrationLiveTest extends BaseContaine
public void testListMarkerAfterLastKey() throws Exception {
throw new SkipException("cannot specify arbitrary markers");
}
-
- @Override
- public void testContainerListWithPrefix() {
- throw new SkipException("Prefix option has not been plumbed down to GCS");
- }
-
- @Override
- public void testDelimiterList() {
- throw new SkipException("Prefix option has not been plumbed down to GCS");
- }
}