You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2011/08/18 22:39:25 UTC
svn commit: r1159408 -
/camel/trunk/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Endpoint.java
Author: cmueller
Date: Thu Aug 18 20:39:24 2011
New Revision: 1159408
URL: http://svn.apache.org/viewvc?rev=1159408&view=rev
Log:
CAMEL-4344: S3Endpoint requires ListAllMyBuckets permission
Thanks Brendan Long for the patch
Modified:
camel/trunk/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Endpoint.java
Modified: camel/trunk/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Endpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Endpoint.java?rev=1159408&r1=1159407&r2=1159408&view=diff
==============================================================================
--- camel/trunk/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Endpoint.java (original)
+++ camel/trunk/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Endpoint.java Thu Aug 18 20:39:24 2011
@@ -16,13 +16,12 @@
*/
package org.apache.camel.component.aws.s3;
-import java.util.List;
-
+import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3Client;
-import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.CreateBucketRequest;
+import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.S3Object;
@@ -76,11 +75,14 @@ public class S3Endpoint extends Schedule
String bucketName = getConfiguration().getBucketName();
LOG.trace("Quering whether bucket [{}] already exists...", bucketName);
- List<Bucket> buckets = getS3Client().listBuckets();
- for (Bucket bucket : buckets) {
- if (bucketName.equals(bucket.getName())) {
- LOG.trace("Bucket [{}] already exist", bucketName);
- return;
+ try {
+ getS3Client().listObjects(new ListObjectsRequest(bucketName, null, null, null, 0));
+ LOG.trace("Bucket [{}] already exists", bucketName);
+ return;
+ } catch (AmazonServiceException ase) {
+ /* 404 means the bucket doesn't exist */
+ if (ase.getStatusCode() != 404) {
+ throw ase;
}
}