public PageSet<? extends StorageMetadata> apply(ListBucketResponse from) { Set<StorageMetadata> contents = Sets.<StorageMetadata> newHashSet(Iterables.transform(from, object2blobMd)); 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)); } return new PageSetImpl<StorageMetadata>(contents, from.getNextMarker()); } }
public PageSet<? extends StorageMetadata> apply(ListBucketResponse from) { Set<StorageMetadata> contents = Sets.<StorageMetadata> newHashSet(Iterables.transform(from, object2blobMd)); 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)); } return new PageSetImpl<StorageMetadata>(contents, from.getNextMarker()); } }
public PageSet<? extends StorageMetadata> apply(ListBucketResponse from) { // S3 lists keys in sorted order; use sorted set to order relative paths correctly SortedSet<StorageMetadata> contents = Sets.<StorageMetadata> newTreeSet(Iterables.transform(from, object2blobMd)); for (String prefix : from.getCommonPrefixes()) { contents.add(prefix2ResourceMd.apply(prefix)); } return new PageSetImpl<StorageMetadata>(contents, from.getNextMarker()); } }
public PageSet<? extends StorageMetadata> apply(ListBucketResponse from) { // S3 lists keys in sorted order; use sorted set to order relative paths correctly SortedSet<StorageMetadata> contents = Sets.<StorageMetadata> newTreeSet(Iterables.transform(from, object2blobMd)); for (String prefix : from.getCommonPrefixes()) { contents.add(prefix2ResourceMd.apply(prefix)); } return new PageSetImpl<StorageMetadata>(contents, from.getNextMarker()); } }
public PageSet<? extends StorageMetadata> apply(ListBucketResponse from) { // S3 lists keys in sorted order; use sorted set to order relative paths correctly SortedSet<StorageMetadata> contents = Sets.<StorageMetadata> newTreeSet(Iterables.transform(from, object2blobMd)); for (String prefix : from.getCommonPrefixes()) { contents.add(prefix2ResourceMd.apply(prefix)); } return new PageSetImpl<StorageMetadata>(contents, from.getNextMarker()); } }
@Test public void testListMyBucketsWithDelimiterSlashAndCommonPrefixesAppsSlash() throws HttpException { ListBucketResponse bucket = createParser().parse( Strings2.toInputStream(listBucketWithSlashDelimiterAndCommonPrefixApps)); assertEquals(bucket.getCommonPrefixes().iterator().next(), "apps/"); assertEquals(bucket.getDelimiter(), "/"); assert bucket.getMarker() == null; }
@Test public void testListMyBucketsWithDelimiterSlashAndCommonPrefixesAppsSlash() throws HttpException { ListBucketResponse bucket = createParser().parse( Strings2.toInputStream(listBucketWithSlashDelimiterAndCommonPrefixApps)); assertEquals(bucket.getCommonPrefixes().iterator().next(), "apps/"); assertEquals(bucket.getDelimiter(), "/"); assert bucket.getMarker() == null; }
public void testListBucketDelimiter() throws InterruptedException, ExecutionException, TimeoutException { String bucketName = getContainerName(); try { String prefix = "apps"; addTenObjectsUnderPrefix(bucketName, prefix); add15UnderRoot(bucketName); ListBucketResponse bucket = getApi().listBucket(bucketName, delimiter("/")); assertEquals(bucket.getDelimiter(), "/"); assert !bucket.isTruncated(); assertEquals(bucket.size(), 15); assertEquals(bucket.getCommonPrefixes().size(), 1); } finally { returnContainer(bucketName); } }
public void testListBucketDelimiter() throws InterruptedException, ExecutionException, TimeoutException { String bucketName = getContainerName(); try { String prefix = "apps"; addTenObjectsUnderPrefix(bucketName, prefix); add15UnderRoot(bucketName); ListBucketResponse bucket = getApi().listBucket(bucketName, delimiter("/")); assertEquals(bucket.getDelimiter(), "/"); assert !bucket.isTruncated(); assertEquals(bucket.size(), 15); assertEquals(bucket.getCommonPrefixes().size(), 1); } finally { returnContainer(bucketName); } }
/** * Tests {@link S3#listBucket(S3Client, String, ListBucketOptions)} where * retrieving all results requires multiple requests. * * @throws Exception * if anything goes wrong */ @Test public void testMultiPageResult() throws Exception { String nextMarker = "FOO"; S3Client api = createMock(S3Client.class); ListBucketOptions options = new ListBucketOptions(); ListBucketResponse response2 = new ListBucketHandlerTest().expected(); ListBucketResponse response1 = new ListBucketResponseImpl(response2.getName(), response2, response2.getPrefix(), null, nextMarker, response2.getMaxKeys(), response2.getDelimiter(), false, response2.getCommonPrefixes()); expect(api.listBucket("bucket", options)).andReturn(response1).once(); expect(api.listBucket("bucket", options.afterMarker(nextMarker))).andReturn(response2).once(); EasyMock.replay(api); PagedIterable<ObjectMetadata> result = S3.listBucket(api, "bucket", options); // number of objects assertEquals(result.concat().size(), 20); }
/** * Tests {@link S3#listBucket(S3Client, String, ListBucketOptions)} where * retrieving all results requires multiple requests. * * @throws Exception * if anything goes wrong */ @Test public void testMultiPageResult() throws Exception { String nextMarker = "FOO"; S3Client api = createMock(S3Client.class); ListBucketOptions options = new ListBucketOptions(); ListBucketResponse response2 = new ListBucketHandlerTest().expected(); ListBucketResponse response1 = new ListBucketResponseImpl(response2.getName(), response2, response2.getPrefix(), null, nextMarker, response2.getMaxKeys(), response2.getDelimiter(), false, response2.getCommonPrefixes()); expect(api.listBucket("bucket", options)).andReturn(response1).once(); expect(api.listBucket("bucket", options.afterMarker(nextMarker))).andReturn(response2).once(); EasyMock.replay(api); PagedIterable<ObjectMetadata> result = S3.listBucket(api, "bucket", options); // number of objects assertEquals(result.concat().size(), 20); }