@Override public ListVersionsResult listMoreVersions(ListVersionsResult lastResult) { return listVersions(new ListVersionsRequest(lastResult.getBucketName()) .withPrefix(lastResult.getPrefix()) .withDelimiter(lastResult.getDelimiter()) .withEncodingType(lastResult.getEncodingType()) .withMaxKeys(lastResult.getMaxKeys()) .withKeyMarker(lastResult.getNextKeyMarker()) .withVersionIdMarker(lastResult.getNextVersionIdMarker())); }
private void getNextVersionBatch() { if (versionListing == null) { versionListing = time(new Function<ListVersionsResult>() { @Override public ListVersionsResult call() { ListVersionsRequest request = new ListVersionsRequest(config.getBucketName()); request.setPrefix("".equals(prefix) ? null : prefix); if (config.isUrlEncodeKeys()) request.setEncodingType(EncodingType.url); return s3.listVersions(request); } }, OPERATION_LIST_VERSIONS); } else { versionListing = time(new Function<ListVersionsResult>() { @Override public ListVersionsResult call() { return s3.listMoreVersions(versionListing); } }, OPERATION_LIST_VERSIONS); } versionIterator = versionListing.getVersions().iterator(); } }
private AbstractVersion getNextVersion() { // look for deleted objects in versioned bucket if (versionListing == null || (!versionIterator.hasNext() && versionListing.isTruncated())) { getNextVersionBatch(); } if (versionIterator.hasNext()) { return versionIterator.next(); } // no more versions return null; }
private List<AbstractVersion> getS3Versions(final String key) { List<AbstractVersion> versions = new ArrayList<>(); ListVersionsResult listing = null; do { final ListVersionsResult fListing = listing; listing = time(new Function<ListVersionsResult>() { @Override public ListVersionsResult call() { if (fListing == null) { return s3.listVersions(new ListVersionsRequest(config.getBucketName()).withPrefix(key).withDelimiter("/")); } else { return s3.listMoreVersions(fListing); } } }, OPERATION_LIST_VERSIONS); listing.setMaxKeys(1000); // Google Storage compatibility for (final AbstractVersion version : listing.getVersions()) { if (version.getKey().equals(key)) versions.add(version); } } while (listing.isTruncated()); return versions; }