Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   *
   * Licensed under the Apache License, Version 2.0 (the "License").
   * You may not use this file except in compliance with the License.
   * A copy of the License is located at
   *
   *  http://aws.amazon.com/apache2.0
   *
  * or in the "license" file accompanying this file. This file is distributed
  * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
  * express or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
 package com.amazonaws.services.s3.iterable;
 
 
Provides an easy way to iterate Amazon S3 object versions in a "foreach" statement. For example:
 for ( S3VersionSummary summary : S3Versions.forPrefix(s3, "my-bucket", "photos/") ) {
     System.out.printf("Version '%s' of key '%s'\n", summary.getVersionId(), summary.getKey());
 }
 

The list of com.amazonaws.services.s3.model.S3VersionSummarys will be fetched lazily, a page at a time, as they are needed. The size of the page can be controlled with the withBatchSize(int) method.

 
 public class S3Versions implements Iterable<S3VersionSummary> {
 
     private AmazonS3 s3;
     private String bucketName;
     private String prefix;
     private String key;
     private Integer batchSize;
 
     private S3Versions(AmazonS3 s3String bucketName) {
         this. = s3;
         this. = bucketName;
     }

    
Constructs an iterable that covers all the object versions in an Amazon S3 bucket.

Parameters:
s3 The Amazon S3 client.
bucketName The bucket name.
Returns:
An iterator for object version summaries.
 
     public static S3Versions inBucket(AmazonS3 s3String bucketName) {
         return new S3Versions(s3bucketName);
     }

    
Constructs an iterable that covers the versions in an Amazon S3 bucket where the object key begins with the given prefix.

Parameters:
s3 The Amazon S3 client.
bucketName The bucket name.
prefix The prefix.
Returns:
An iterator for object version summaries.
 
     public static S3Versions withPrefix(AmazonS3 s3String bucketName,
             String prefix) {
         S3Versions versions = new S3Versions(s3bucketName);
         versions.prefix = prefix;
         return versions;
     }

    
Constructs an iterable that covers the versions of a single Amazon S3 object.

Parameters:
s3 The Amazon S3 client.
bucketName The bucket name.
key The key.
Returns:
An iterator for object version summaries.
 
     public static S3Versions forKey(AmazonS3 s3String bucketNameString key) {
         S3Versions versions = new S3Versions(s3bucketName);
         versions.key = key;
         return versions;
    }

    
Sets the batch size, i.e., how many com.amazonaws.services.s3.model.S3VersionSummarys will be fetched at once.

Parameters:
batchSize How many object summaries to fetch at once.
    public S3Versions withBatchSize(int batchSize) {
        this. = batchSize;
        return this;
    }
    public Integer getBatchSize() {
        return ;
    }
    public String getPrefix() {
        return ;
    }
    public String getKey() {
        return ;
    }
    public AmazonS3 getS3() {
        return ;
    }
    public String getBucketName() {
        return ;
    }
    private class VersionIterator implements Iterator<S3VersionSummary> {
        private VersionListing currentListing = null;
        private Iterator<S3VersionSummarycurrentIterator = null;
        private S3VersionSummary nextSummary = null;
        @Override
        public boolean hasNext() {
            prepareCurrentListing();
            return nextMatchingSummary() != null;
        }
        @Override
        public S3VersionSummary next() {
            prepareCurrentListing();
            S3VersionSummary returnValue = nextMatchingSummary();
             = null;
            return returnValue;
        }
        @Override
        public void remove() {
            throw new UnsupportedOperationException();
        }
        private S3VersionSummary nextMatchingSummary() {
            if (getKey() == null
                    || ( != null && .getKey().equals(
                            getKey()))) {
                return ;
            } else {
                return null;
            }
        }
        private void prepareCurrentListing() {
            while ( == null
                    || (!.hasNext() && 
                            .isTruncated())) {
                if ( == null) {
                    ListVersionsRequest req = new ListVersionsRequest();
                    req.setBucketName(getBucketName());
                    if (getKey() != null) {
                        req.setPrefix(getKey());
                    } else {
                        req.setPrefix(getPrefix());
                    }
                    req.setMaxResults(getBatchSize());
                     = getS3().listVersions(req);
                } else {
                     = getS3().listNextBatchOfVersions(
                            );
                }
                 = .getVersionSummaries()
                        .iterator();
            }
            if ( == null && .hasNext()) {
                 = .next();
            }
        }
    }
    @Override
    public Iterator<S3VersionSummaryiterator() {
        return new VersionIterator();
    }
New to GrepCode? Check out our FAQ X