项目:ibm-cos-sdk-java
文件:AmazonS3Client.java
@Override
public VersionListing listVersions(ListVersionsRequest listVersionsRequest)
throws SdkClientException,AmazonServiceException {
listVersionsRequest = beforeClientExecution(listVersionsRequest);
rejectNull(listVersionsRequest.getBucketName(),"The bucket name parameter must be specified when listing versions in a bucket");
/**
* This flag shows whether we need to url decode S3 key names. This flag is enabled
* only when the customers don't explicitly call {@link listVersionsRequest#setEncodingType(String)},* otherwise,it will be disabled for maintaining backwards compatibility.
*/
final boolean shouldSDKDecodeResponse = listVersionsRequest.getEncodingType() == null;
Request<ListVersionsRequest> request = createRequest(listVersionsRequest.getBucketName(),null,listVersionsRequest,HttpMethodName.GET);
request.addParameter("versions",null);
addParameterIfNotNull(request,"prefix",listVersionsRequest.getPrefix());
addParameterIfNotNull(request,"key-marker",listVersionsRequest.getKeyMarker());
addParameterIfNotNull(request,"version-id-marker",listVersionsRequest.getVersionIdMarker());
addParameterIfNotNull(request,"delimiter",listVersionsRequest.getDelimiter());
if (listVersionsRequest.getMaxResults() != null && listVersionsRequest.getMaxResults() >= 0) request.addParameter("max-keys",listVersionsRequest.getMaxResults().toString());
request.addParameter("encoding-type",shouldSDKDecodeResponse ? Constants.URL_ENCODING : listVersionsRequest.getEncodingType());
return invoke(request,new Unmarshallers.VersionListUnmarshaller(shouldSDKDecodeResponse),listVersionsRequest.getBucketName(),null);
}
项目:alfresco-lambda-java-utils
文件:S3Cleaner.java
/**
* Empties the contents of the given bucket and optionally deletes the bucket
*
* @param s3 The S3 client object to use
* @param bucketName The bucket to empty
* @param deleteBucket Flag to determine whether to delete the bucket after emptying
* @param context Lambda context object
*/
public static void emptyBucket(AmazonS3 s3,String bucketName,boolean deleteBucket,Context context)
{
if (s3.doesBucketExistV2(bucketName))
{
logDebug("Emptying bucket '" + bucketName + "'...",context);
VersionListing versionListing = s3.listVersions(new ListVersionsRequest().withBucketName(bucketName));
while (true)
{
for (S3VersionSummary vs : versionListing.getVersionSummaries())
{
s3.deleteVersion(bucketName,vs.getKey(),vs.getVersionId());
}
if (versionListing.isTruncated())
{
logDebug("Fetching next batch of versions for bucket '" + bucketName + "'",context);
versionListing = s3.listNextBatchOfVersions(versionListing);
}
else
{
break;
}
}
logInfo("Successfully emptied bucket '" + bucketName + "'",context);
if (deleteBucket)
{
logDebug("Deleting bucket '" + bucketName + "'...",context);
s3.deleteBucket(bucketName);
logInfo("Successfully deleted bucket '" + bucketName + "'",context);
}
}
else
{
logWarn("Bucket '" + bucketName + "' does not exist",context);
}
}
项目:ibm-cos-sdk-java
文件:AmazonS3Client.java
@Override
public VersionListing listVersions(String bucketName,String prefix,String keyMarker,String versionIdMarker,String delimiter,Integer maxKeys)
throws SdkClientException,AmazonServiceException {
ListVersionsRequest request = new ListVersionsRequest()
.withBucketName(bucketName)
.withPrefix(prefix)
.withDelimiter(delimiter)
.withKeyMarker(keyMarker)
.withVersionIdMarker(versionIdMarker)
.withMaxResults(maxKeys);
return listVersions(request);
}
项目:ibm-cos-sdk-java
文件:S3Versions.java
private void prepareCurrentListing() {
while (currentListing == null
|| (!currentIterator.hasNext() && currentListing
.isTruncated())) {
if (currentListing == null) {
ListVersionsRequest req = new ListVersionsRequest();
req.setBucketName(getBucketName());
if (getKey() != null) {
req.setPrefix(getKey());
} else {
req.setPrefix(getPrefix());
}
req.setMaxResults(getBatchSize());
currentListing = getS3().listVersions(req);
} else {
currentListing = getS3().listNextBatchOfVersions(
currentListing);
}
currentIterator = currentListing.getVersionSummaries()
.iterator();
}
if (nextSummary == null && currentIterator.hasNext()) {
nextSummary = currentIterator.next();
}
}
void deleteAngularjsApp(String websiteBucket,LambdaLogger logger) {
logger.log("Removing AngularjsApp content from website versioned S3 bucket");
// We need to delete every version of every key
ListVersionsRequest listVersionsRequest = new ListVersionsRequest()
.withBucketName(websiteBucket);
VersionListing versionListing;
AmazonS3 client = TransferManagerBuilder.defaultTransferManager().getAmazonS3Client();
do {
versionListing = client.listVersions(listVersionsRequest);
versionListing
.getVersionSummaries()
.stream()
.filter(k -> (k.getKey().startsWith("app")))
.forEach(
k -> {
logger.log("About to delete version: " + k.getVersionId()
+ " of AngularjsApp page: " + k.getKey());
DeleteVersionRequest deleteVersionRequest = new DeleteVersionRequest(websiteBucket,k.getKey(),k.getVersionId());
client.deleteVersion(deleteVersionRequest);
logger.log("Successfully deleted version: " + k.getVersionId()
+ " of AngularjsApp page: " + k.getKey());
});
listVersionsRequest.setKeyMarker(versionListing.getNextKeyMarker());
} while (versionListing.isTruncated());
logger.log("Finished removing AngularjsApp content from website S3 bucket");
}
void removeSdkFromS3(LambdaLogger logger) {
logger.log("About to remove apigateway sdk from website versioned S3 bucket");
// We need to delete every version of every key
ListVersionsRequest listVersionsRequest = new ListVersionsRequest()
.withBucketName(squashWebsiteBucket);
VersionListing versionListing;
IS3TransferManager transferManager = getS3TransferManager();
AmazonS3 client = transferManager.getAmazonS3Client();
do {
versionListing = client.listVersions(listVersionsRequest);
versionListing
.getVersionSummaries()
.stream()
.filter(
k -> !(k.getKey().startsWith("20") || k.getKey().equals("today.html") || k.getKey()
.equals("bookings.html")))
.forEach(
k -> {
logger.log("About to delete version: " + k.getVersionId() + " of API SDK: "
+ k.getKey());
DeleteVersionRequest deleteVersionRequest = new DeleteVersionRequest(
squashWebsiteBucket,k.getVersionId());
client.deleteVersion(deleteVersionRequest);
logger.log("Successfully deleted version: " + k.getVersionId()
+ " of API SDK key: " + k.getKey());
});
listVersionsRequest.setKeyMarker(versionListing.getNextKeyMarker());
} while (versionListing.isTruncated());
logger.log("Finished remove apigateway sdk from website S3 bucket");
}
@Test
public void testDeleteDirectoryNoS3VersionsExist()
{
// Create an S3 file transfer request parameters DTO to access S3 objects.
S3FileTransferRequestParamsDto s3FileTransferRequestParamsDto = new S3FileTransferRequestParamsDto();
s3FileTransferRequestParamsDto.setS3BucketName(S3_BUCKET_NAME);
s3FileTransferRequestParamsDto.setS3KeyPrefix(S3_KEY_PREFIX);
// Create a retry policy.
RetryPolicy retryPolicy =
new RetryPolicy(PredefinedRetryPolicies.DEFAULT_RETRY_CONDITION,PredefinedRetryPolicies.DEFAULT_BACKOFF_STRATEGY,INTEGER_VALUE,true);
// Create an empty version listing.
VersionListing versionListing = new VersionListing();
// Mock the external calls.
when(retryPolicyFactory.getRetryPolicy()).thenReturn(retryPolicy);
when(s3Operations.listVersions(any(ListVersionsRequest.class),any(AmazonS3Client.class))).thenReturn(versionListing);
// Call the method under test.
s3DaoImpl.deleteDirectory(s3FileTransferRequestParamsDto);
// Verify the external calls.
verify(retryPolicyFactory).getRetryPolicy();
verify(s3Operations).listVersions(any(ListVersionsRequest.class),any(AmazonS3Client.class));
verifyNoMoreInteractionsHelper();
}
项目:elasticsearch_my
文件:AmazonS3Wrapper.java
@Override
public VersionListing listVersions(ListVersionsRequest listVersionsRequest) throws AmazonClientException,AmazonServiceException {
return delegate.listVersions(listVersionsRequest);
}
@Override
public VersionListing listVersions(ListVersionsRequest listVersionsRequest) throws AmazonClientException,AmazonServiceException {
throw new UnsupportedOperationException();
}
项目:connectors
文件:AmazonS3ClientMock.java
@Override
public VersionListing listVersions(ListVersionsRequest listVersionsRequest) throws AmazonClientException,AmazonServiceException {
throw new UnsupportedOperationException();
}
项目:ibm-cos-sdk-java
文件:AmazonS3Client.java
@Override
public VersionListing listVersions(String bucketName,String prefix)
throws SdkClientException,AmazonServiceException {
return listVersions(new ListVersionsRequest(bucketName,prefix,null));
}
项目:S3Decorators
文件:S3Decorator.java
@Override
public VersionListing listVersions(ListVersionsRequest listVersionsRequest) throws SdkClientException,AmazonServiceException {
return call(() -> getDelegate().listVersions(listVersionsRequest));
}
项目:aws-doc-sdk-examples
文件:DeleteBucket.java
public static void main(String[] args)
{
final String USAGE = "\n" +
"To run this example,supply the name of an S3 bucket\n" +
"\n" +
"Ex: DeleteBucket <bucketname>\n";
if (args.length < 1) {
System.out.println(USAGE);
System.exit(1);
}
String bucket_name = args[0];
System.out.println("Deleting S3 bucket: " + bucket_name);
final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();
try {
System.out.println(" - removing objects from bucket");
ObjectListing object_listing = s3.listObjects(bucket_name);
while (true) {
for (Iterator<?> iterator =
object_listing.getobjectSummaries().iterator();
iterator.hasNext();) {
S3ObjectSummary summary = (S3ObjectSummary)iterator.next();
s3.deleteObject(bucket_name,summary.getKey());
}
// more object_listing to retrieve?
if (object_listing.isTruncated()) {
object_listing = s3.listNextBatchOfObjects(object_listing);
} else {
break;
}
};
System.out.println(" - removing versions from bucket");
VersionListing version_listing = s3.listVersions(
new ListVersionsRequest().withBucketName(bucket_name));
while (true) {
for (Iterator<?> iterator =
version_listing.getVersionSummaries().iterator();
iterator.hasNext();) {
S3VersionSummary vs = (S3VersionSummary)iterator.next();
s3.deleteVersion(
bucket_name,vs.getVersionId());
}
if (version_listing.isTruncated()) {
version_listing = s3.listNextBatchOfVersions(
version_listing);
} else {
break;
}
}
System.out.println(" OK,bucket ready to delete!");
s3.deleteBucket(bucket_name);
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
System.exit(1);
}
System.out.println("Done!");
}
项目:Camel
文件:AmazonS3ClientMock.java
@Override
public VersionListing listVersions(ListVersionsRequest listVersionsRequest) throws AmazonClientException,AmazonServiceException {
throw new UnsupportedOperationException();
}
项目:herd
文件:S3OperationsImpl.java
@Override
public VersionListing listVersions(ListVersionsRequest listVersionsRequest,AmazonS3 s3Client)
{
return s3Client.listVersions(listVersionsRequest);
}
项目:herd
文件:S3DaoImpl.java
@Override
public List<DeleteObjectsRequest.keyversion> listVersions(final S3FileTransferRequestParamsDto params)
{
Assert.isTrue(!isRootKeyPrefix(params.getS3KeyPrefix()),"Listing of S3 key versions from root directory is not allowed.");
AmazonS3Client s3Client = getAmazonS3(params);
List<DeleteObjectsRequest.keyversion> keyversions = new ArrayList<>();
try
{
ListVersionsRequest listVersionsRequest = new ListVersionsRequest().withBucketName(params.getS3BucketName()).withPrefix(params.getS3KeyPrefix());
VersionListing versionListing;
do
{
versionListing = s3Operations.listVersions(listVersionsRequest,s3Client);
for (S3VersionSummary versionSummary : versionListing.getVersionSummaries())
{
keyversions.add(new DeleteObjectsRequest.keyversion(versionSummary.getKey(),versionSummary.getVersionId()));
}
listVersionsRequest.setKeyMarker(versionListing.getNextKeyMarker());
listVersionsRequest.setVersionIdMarker(versionListing.getNextVersionIdMarker());
}
while (versionListing.isTruncated());
}
catch (AmazonS3Exception amazonS3Exception)
{
if (S3Operations.ERROR_CODE_NO_SUCH_BUCKET.equals(amazonS3Exception.getErrorCode()))
{
throw new IllegalArgumentException("The specified bucket '" + params.getS3BucketName() + "' does not exist.",amazonS3Exception);
}
throw new IllegalStateException("Error accessing S3",amazonS3Exception);
}
catch (AmazonClientException e)
{
throw new IllegalStateException(String
.format("Failed to list keys/key versions with prefix \"%s\" from bucket \"%s\". Reason: %s",params.getS3KeyPrefix(),params.getS3BucketName(),e.getMessage()),e);
}
finally
{
// Shutdown the AmazonS3Client instance to release resources.
s3Client.shutdown();
}
return keyversions;
}
项目:herd
文件:MockS3OperationsImpl.java
/**
* {@inheritDoc}
* <p/>
* If the bucket does not exist,returns a listing with an empty list. If a prefix is specified in listVersionsRequest,only versions starting with the
* prefix will be returned.
*/
@Override
public VersionListing listVersions(ListVersionsRequest listVersionsRequest,AmazonS3 s3Client)
{
LOGGER.debug("listVersions(): listVersionsRequest.getBucketName() = " + listVersionsRequest.getBucketName());
String bucketName = listVersionsRequest.getBucketName();
if (MOCK_S3_BUCKET_NAME_NO_SUCH_BUCKET_EXCEPTION.equals(bucketName))
{
AmazonS3Exception amazonS3Exception = new AmazonS3Exception(MOCK_S3_BUCKET_NAME_NO_SUCH_BUCKET_EXCEPTION);
amazonS3Exception.setErrorCode("NoSuchBucket");
throw amazonS3Exception;
}
else if (MOCK_S3_BUCKET_NAME_INTERNAL_ERROR.equals(bucketName))
{
throw new AmazonServiceException(S3Operations.ERROR_CODE_INTERNAL_ERROR);
}
VersionListing versionListing = new VersionListing();
versionListing.setBucketName(bucketName);
MockS3Bucket mockS3Bucket = mockS3Buckets.get(bucketName);
if (mockS3Bucket != null)
{
for (MockS3Object mockS3Object : mockS3Bucket.getVersions().values())
{
String s3ObjectKey = mockS3Object.getKey();
if (listVersionsRequest.getPrefix() == null || s3ObjectKey.startsWith(listVersionsRequest.getPrefix()))
{
S3VersionSummary s3VersionSummary = new S3VersionSummary();
s3VersionSummary.setBucketName(bucketName);
s3VersionSummary.setKey(s3ObjectKey);
s3VersionSummary.setVersionId(mockS3Object.getVersion());
s3VersionSummary.setSize(mockS3Object.getData().length);
s3VersionSummary.setStorageClass(mockS3Object.getobjectMetadata() != null ? mockS3Object.getobjectMetadata().getStorageClass() : null);
versionListing.getVersionSummaries().add(s3VersionSummary);
}
}
}
return versionListing;
}
@Test
public void testDeleteDirectoryMultiObjectDeleteException()
{
// Create an S3 file transfer request parameters DTO to access S3 objects.
S3FileTransferRequestParamsDto s3FileTransferRequestParamsDto = new S3FileTransferRequestParamsDto();
s3FileTransferRequestParamsDto.setS3BucketName(S3_BUCKET_NAME);
s3FileTransferRequestParamsDto.setS3KeyPrefix(S3_KEY_PREFIX);
// Create a retry policy.
RetryPolicy retryPolicy =
new RetryPolicy(PredefinedRetryPolicies.DEFAULT_RETRY_CONDITION,true);
// Create an S3 version summary.
S3VersionSummary s3VersionSummary = new S3VersionSummary();
s3VersionSummary.setKey(S3_KEY);
s3VersionSummary.setVersionId(S3_VERSION_ID);
// Create a version listing.
VersionListing versionListing = new VersionListing();
versionListing.setVersionSummaries(Arrays.asList(s3VersionSummary));
// Create a delete error.
MultiObjectDeleteException.DeleteError deleteError = new MultiObjectDeleteException.DeleteError();
deleteError.setKey(S3_KEY);
deleteError.setVersionId(S3_VERSION_ID);
deleteError.setCode(ERROR_CODE);
deleteError.setMessage(ERROR_MESSAGE);
// Create a multi object delete exception.
MultiObjectDeleteException multiObjectDeleteException = new MultiObjectDeleteException(Arrays.asList(deleteError),new ArrayList<>());
// Mock the external calls.
when(retryPolicyFactory.getRetryPolicy()).thenReturn(retryPolicy);
when(s3Operations.listVersions(any(ListVersionsRequest.class),any(AmazonS3Client.class))).thenReturn(versionListing);
when(s3Operations.deleteObjects(any(DeleteObjectsRequest.class),any(AmazonS3Client.class))).thenThrow(multiObjectDeleteException);
// Try to call the method under test.
try
{
s3DaoImpl.deleteDirectory(s3FileTransferRequestParamsDto);
}
catch (IllegalStateException e)
{
assertEquals(String.format("Failed to delete keys/key versions with prefix \"%s\" from bucket \"%s\". " +
"Reason: One or more objects Could not be deleted (Service: null; Status Code: 0; Error Code: null; Request ID: null; S3 Extended Request ID: null)",S3_KEY_PREFIX,S3_BUCKET_NAME),e.getMessage());
}
// Verify the external calls.
verify(retryPolicyFactory,times(2)).getRetryPolicy();
verify(s3Operations).listVersions(any(ListVersionsRequest.class),any(AmazonS3Client.class));
verify(s3Operations).deleteObjects(any(DeleteObjectsRequest.class),any(AmazonS3Client.class));
verifyNoMoreInteractionsHelper();
}
项目:presto
文件:MockAmazonS3.java
@Override
public VersionListing listVersions(ListVersionsRequest listVersionsRequest)
throws AmazonClientException
{
return null;
}
项目:Scribengin
文件:AmazonS3Mock.java
@Override
public VersionListing listVersions(ListVersionsRequest listVersionsRequest) throws AmazonClientException,AmazonServiceException {
// Todo Auto-generated method stub
return null;
}
项目:herd
文件:S3Operations.java
/**
* Returns a list of summary information about the versions in the specified bucket.
*
* @param listVersionsRequest the request object containing all options for listing the versions in a specified bucket
* @param s3Client the {@link AmazonS3} implementation to use
*
* @return the listing of the versions in the specified bucket
*/
public VersionListing listVersions(ListVersionsRequest listVersionsRequest,AmazonS3 s3Client);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。