2828import com .google .api .client .util .Lists ;
2929import com .google .common .collect .ImmutableList ;
3030import com .google .common .collect .ImmutableMap ;
31+ import com .google .common .collect .ImmutableSet ;
3132import com .google .gcloud .Page ;
3233import com .google .gcloud .ReadChannel ;
3334import com .google .gcloud .RestorableState ;
3435import com .google .gcloud .WriteChannel ;
35- import com .google .gcloud .storage .BatchRequest ;
36- import com .google .gcloud .storage .BatchResponse ;
37- import com .google .gcloud .storage .Blob ;
38- import com .google .gcloud .storage .BlobId ;
39- import com .google .gcloud .storage .BlobInfo ;
40- import com .google .gcloud .storage .Bucket ;
41- import com .google .gcloud .storage .BucketInfo ;
42- import com .google .gcloud .storage .CopyWriter ;
43- import com .google .gcloud .storage .HttpMethod ;
44- import com .google .gcloud .storage .Storage ;
36+ import com .google .gcloud .storage .*;
4537import com .google .gcloud .storage .Storage .BlobField ;
4638import com .google .gcloud .storage .Storage .BucketField ;
47- import com .google .gcloud .storage .StorageException ;
4839import com .google .gcloud .storage .testing .RemoteGcsHelper ;
4940
5041import org .junit .AfterClass ;
6354import java .util .List ;
6455import java .util .Map ;
6556import java .util .Random ;
57+ import java .util .Set ;
6658import java .util .concurrent .ExecutionException ;
6759import java .util .concurrent .TimeUnit ;
6860import java .util .logging .Level ;
@@ -302,8 +294,7 @@ public void testListBlobsSelectedFields() {
302294 Blob remoteBlob2 = storage .create (blob2 );
303295 assertNotNull (remoteBlob1 );
304296 assertNotNull (remoteBlob2 );
305- Page <Blob > page =
306- storage .list (BUCKET ,
297+ Page <Blob > page = storage .list (BUCKET ,
307298 Storage .BlobListOption .prefix ("test-list-blobs-selected-fields-blob" ),
308299 Storage .BlobListOption .fields (BlobField .METADATA ));
309300 int index = 0 ;
@@ -331,8 +322,7 @@ public void testListBlobsEmptySelectedFields() {
331322 Blob remoteBlob2 = storage .create (blob2 );
332323 assertNotNull (remoteBlob1 );
333324 assertNotNull (remoteBlob2 );
334- Page <Blob > page = storage .list (
335- BUCKET ,
325+ Page <Blob > page = storage .list (BUCKET ,
336326 Storage .BlobListOption .prefix ("test-list-blobs-empty-selected-fields-blob" ),
337327 Storage .BlobListOption .fields ());
338328 int index = 0 ;
@@ -345,6 +335,41 @@ public void testListBlobsEmptySelectedFields() {
345335 assertTrue (remoteBlob2 .delete ());
346336 }
347337
338+ @ Test
339+ public void testListBlobsVersioned () throws ExecutionException , InterruptedException {
340+ String bucketName = RemoteGcsHelper .generateBucketName ();
341+ Bucket bucket = storage .create (BucketInfo .builder (bucketName ).versioningEnabled (true ).build ());
342+ try {
343+ String [] blobNames = {"test-list-blobs-versioned-blob1" , "test-list-blobs-versioned-blob2" };
344+ BlobInfo blob1 = BlobInfo .builder (bucket , blobNames [0 ])
345+ .contentType (CONTENT_TYPE )
346+ .build ();
347+ BlobInfo blob2 = BlobInfo .builder (bucket , blobNames [1 ])
348+ .contentType (CONTENT_TYPE )
349+ .build ();
350+ Blob remoteBlob1 = storage .create (blob1 );
351+ Blob remoteBlob2 = storage .create (blob2 );
352+ Blob remoteBlob3 = storage .create (blob2 );
353+ assertNotNull (remoteBlob1 );
354+ assertNotNull (remoteBlob2 );
355+ assertNotNull (remoteBlob3 );
356+ Page <Blob > page = storage .list (bucketName ,
357+ Storage .BlobListOption .prefix ("test-list-blobs-versioned-blob" ),
358+ Storage .BlobListOption .versions (true ));
359+ Set <String > blobSet = ImmutableSet .of (blobNames [0 ], blobNames [1 ]);
360+ for (Blob remoteBlob : page .values ()) {
361+ assertEquals (bucketName , remoteBlob .bucket ());
362+ assertTrue (blobSet .contains (remoteBlob .name ()));
363+ assertNotNull (remoteBlob .generation ());
364+ }
365+ assertTrue (remoteBlob1 .delete ());
366+ assertTrue (remoteBlob2 .delete ());
367+ assertTrue (remoteBlob3 .delete ());
368+ } finally {
369+ RemoteGcsHelper .forceDelete (storage , bucketName , 5 , TimeUnit .SECONDS );
370+ }
371+ }
372+
348373 @ Test
349374 public void testUpdateBlob () {
350375 String blobName = "test-update-blob" ;
0 commit comments