http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/domain/CannedAccessPolicy.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/CannedAccessPolicy.java b/apis/s3/src/main/java/org/jclouds/s3/domain/CannedAccessPolicy.java index 75eb991..46a4caf 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/CannedAccessPolicy.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/CannedAccessPolicy.java @@ -30,9 +30,6 @@ package org.jclouds.s3.domain; * is written with the private access control policy (even if, in the case of an * object, the object already exists with some other pre-existing access control * policy). - * - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html? - * RESTAccessPolicy.html" /> */ public enum CannedAccessPolicy {
http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/domain/CanonicalUser.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/CanonicalUser.java b/apis/s3/src/main/java/org/jclouds/s3/domain/CanonicalUser.java index 4742a8b..f4fbc55 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/CanonicalUser.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/CanonicalUser.java @@ -21,9 +21,6 @@ package org.jclouds.s3.domain; * The owner of a bucket or object cannot be changed. However, if the object is overwritten by * another user (deleted and rewritten), the new object will have a new owner. * <p/> - * - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html? - * RESTAccessPolicy.html" /> */ public class CanonicalUser { private final String id; @@ -40,7 +37,7 @@ public class CanonicalUser { /** * To locate the CanonicalUser ID for a user, the user must perform the - * {@link org.jclouds.s3.blobstore.S3AsyncBlobStore#list(String)} and retrieve + * {@link org.jclouds.s3.blobstore.S3BlobStore#list(String)} and retrieve * {@link BucketMetadata#getOwner()} */ public String getId() { http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/domain/ListBucketResponse.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/ListBucketResponse.java b/apis/s3/src/main/java/org/jclouds/s3/domain/ListBucketResponse.java index ede375b..cb6f434 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/ListBucketResponse.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/ListBucketResponse.java @@ -37,8 +37,6 @@ import java.util.Set; * addressable using the REST API under the domain bucketname.s3.amazonaws.com. For example, if the * object homepage.html?is stored in the Amazon S3 bucket mybucket its address would be * http://mybucket.s3.amazonaws.com/homepage.html? - * - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html" /> */ public interface ListBucketResponse extends Set<ObjectMetadata> { http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/domain/MutableObjectMetadata.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/MutableObjectMetadata.java b/apis/s3/src/main/java/org/jclouds/s3/domain/MutableObjectMetadata.java index 12fdd77..5af1025 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/MutableObjectMetadata.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/MutableObjectMetadata.java @@ -26,14 +26,10 @@ import org.jclouds.s3.domain.internal.MutableObjectMetadataImpl; import com.google.inject.ImplementedBy; /** - * /** Amazon S3 is designed to store objects. Objects are stored in {@link S3BucketListing buckets} - * and consist of a {@link org.jclouds.s3.domain.S3Object#getData() value}, a - * {@link S3Object#getKey key}, {@link MutableObjectMetadata#getUserMetadata() metadata}, and an + * /** Amazon S3 is designed to store objects. Objects are stored in {@link ListBucketResponse buckets} + * and consist of a {@link S3Object#getPayload()} value}, a + * {@link MutableObjectMetadata#getKey key}, {@link MutableObjectMetadata#getUserMetadata() metadata}, and an * access control policy. - * - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?UsingObjects.html" - * - * @see <a href= "http://docs.amazonwebservices.com/AmazonS3/2006-03-01/UsingMetadata.html" /> */ @ImplementedBy(MutableObjectMetadataImpl.class) public interface MutableObjectMetadata extends ObjectMetadata { @@ -42,8 +38,6 @@ public interface MutableObjectMetadata extends ObjectMetadata { * The key is the handle that you assign to an object that allows you retrieve it later. A key is * a sequence of Unicode characters whose UTF-8 encoding is at most 1024 bytes long. Each object * in a bucket must have a unique key. - * - * @see <a href= "http://docs.amazonwebservices.com/AmazonHTTP/2006-03-01/UsingKeys.html" /> */ void setKey(String key); @@ -63,7 +57,7 @@ public interface MutableObjectMetadata extends ObjectMetadata { /** * Can be used to specify caching behavior along the request/reply chain. - * + * * @link http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html?sec14.9. */ void setCacheControl(String cacheControl); http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadata.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadata.java b/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadata.java index 7f3bd91..18002c0 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadata.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadata.java @@ -27,10 +27,6 @@ import org.jclouds.io.ContentMetadata; * and consist of a {@link org.jclouds.s3.domain.S3Object#getData() value}, a * {@link S3Object#getKey key}, {@link ObjectMetadata#getUserMetadata() metadata}, and an access * control policy. - * - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?UsingObjects.html" - * - * @see <a href= "http://docs.amazonwebservices.com/AmazonS3/2006-03-01/UsingMetadata.html" /> */ public interface ObjectMetadata extends Comparable<ObjectMetadata> { http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/domain/Payer.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/Payer.java b/apis/s3/src/main/java/org/jclouds/s3/domain/Payer.java index 3cce03c..487e96e 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/Payer.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/Payer.java @@ -52,9 +52,6 @@ import com.google.common.base.CaseFormat; * You cannot use a Requester Pays bucket as the target bucket for end user logging, or vice versa. * However, you can turn on end user logging on a Requester Pays bucket where the target bucket is a * non Requester Pays bucket. - * - * @see <a href= - * "http://docs.amazonwebservices.com/AmazonS3/latest/index.html?RESTrequestPaymentGET.html" /> */ public enum Payer { REQUESTER, BUCKET_OWNER, UNRECOGNIZED; http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/domain/S3Object.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/S3Object.java b/apis/s3/src/main/java/org/jclouds/s3/domain/S3Object.java index 9010b48..5de2f4f 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/S3Object.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/S3Object.java @@ -23,11 +23,8 @@ import com.google.common.collect.Multimap; /** * Amazon S3 is designed to store objects. Objects are stored in buckets and consist of a - * {@link ObjectMetadataS3Object#getInput() value}, a {@link ObjectMetadata#getKey key}, + * {@link PayloadEnclosing#getPayload() value}, a {@link ObjectMetadata#getKey key}, * {@link ObjectMetadata#getUserMetadata() metadata}, and an access control policy. - * - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?UsingObjects.html" - * /> */ public interface S3Object extends PayloadEnclosing, Comparable<S3Object> { public interface Factory { http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/domain/package-info.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/package-info.java b/apis/s3/src/main/java/org/jclouds/s3/domain/package-info.java index 41d5b56..6443a40 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/package-info.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/package-info.java @@ -16,6 +16,5 @@ */ /** * This package contains the core components of S3. - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/latest/Components.html" /> */ package org.jclouds.s3.domain; http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/filters/RequestAuthorizeSignature.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/filters/RequestAuthorizeSignature.java b/apis/s3/src/main/java/org/jclouds/s3/filters/RequestAuthorizeSignature.java index d2ba819..e8009e4 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/filters/RequestAuthorizeSignature.java +++ b/apis/s3/src/main/java/org/jclouds/s3/filters/RequestAuthorizeSignature.java @@ -67,10 +67,6 @@ import com.google.common.net.HttpHeaders; /** * Signs the S3 request. - * - * @see <a href= - * "http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/index.html?RESTAuthentication.html" - * /> */ @Singleton public class RequestAuthorizeSignature implements HttpRequestFilter, RequestSigner { http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/filters/package-info.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/filters/package-info.java b/apis/s3/src/main/java/org/jclouds/s3/filters/package-info.java index d55b206..ad4a4e1 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/filters/package-info.java +++ b/apis/s3/src/main/java/org/jclouds/s3/filters/package-info.java @@ -16,6 +16,5 @@ */ /** * This package contains HttpRequestFilters needed to operate the REST api. - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/latest/RESTAuthentication.html" /> */ package org.jclouds.s3.filters; http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/functions/ParseObjectMetadataFromHeaders.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/functions/ParseObjectMetadataFromHeaders.java b/apis/s3/src/main/java/org/jclouds/s3/functions/ParseObjectMetadataFromHeaders.java index a1bd1f5..71d81f0 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/functions/ParseObjectMetadataFromHeaders.java +++ b/apis/s3/src/main/java/org/jclouds/s3/functions/ParseObjectMetadataFromHeaders.java @@ -37,12 +37,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.net.HttpHeaders; -/** - * This parses @{link {@link org.jclouds.s3.domain.internal.MutableObjectMetadata} from HTTP - * headers. - * - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/latest/RESTObjectGET.html" /> - */ +/** This parses {@ link MutableObjectMetadata} from HTTP headers. */ public class ParseObjectMetadataFromHeaders implements Function<HttpResponse, MutableObjectMetadata>, InvocationContext<ParseObjectMetadataFromHeaders> { private final ParseSystemAndUserMetadataFromHeaders blobMetadataParser; @@ -61,10 +56,7 @@ public class ParseObjectMetadataFromHeaders implements Function<HttpResponse, Mu // used as content-md5, so filter etags that contain hyphens static final Pattern MD5_FROM_ETAG = Pattern.compile("^\"?([0-9a-f]+)\"?$"); - /** - * parses the http response headers to create a new - * {@link org.jclouds.s3.domain.internal.MutableObjectMetadata} object. - */ + /** parses the http response headers to create a new {@link MutableObjectMetadata} object. */ public MutableObjectMetadata apply(HttpResponse from) { BlobMetadata base = blobMetadataParser.apply(from); MutableObjectMetadata to = blobToObjectMetadata.apply(base); http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/options/CopyObjectOptions.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/options/CopyObjectOptions.java b/apis/s3/src/main/java/org/jclouds/s3/options/CopyObjectOptions.java index f39e428..25f833c 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/options/CopyObjectOptions.java +++ b/apis/s3/src/main/java/org/jclouds/s3/options/CopyObjectOptions.java @@ -67,10 +67,6 @@ import com.google.common.collect.Multimap; * ifSourceModifiedSince(new Date().minusDays(1)) * ); * <code> - * - * @see <a - * href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?RESTObjectCOPY.html?" - * /> */ public class CopyObjectOptions extends BaseHttpRequestOptions { private static final DateService dateService = new SimpleDateFormatDateService(); @@ -121,7 +117,6 @@ public class CopyObjectOptions extends BaseHttpRequestOptions { * conditional copy headers. * * @return valid HTTP date - * @see <a href="http://rfc.net/rfc2616.html?s3.3"/> * @see CopyObjectOptions#ifSourceModifiedSince(Date) */ public String getIfModifiedSince() { @@ -138,7 +133,6 @@ public class CopyObjectOptions extends BaseHttpRequestOptions { * conditional copy headers. * * @return valid HTTP date - * @see <a href="http://rfc.net/rfc2616.html?s3.3"/> * @see CopyObjectOptions#ifSourceUnmodifiedSince(Date) */ public String getIfUnmodifiedSince() { http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/options/ListBucketOptions.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/options/ListBucketOptions.java b/apis/s3/src/main/java/org/jclouds/s3/options/ListBucketOptions.java index 7ab2561..480b79e 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/options/ListBucketOptions.java +++ b/apis/s3/src/main/java/org/jclouds/s3/options/ListBucketOptions.java @@ -31,12 +31,8 @@ import org.jclouds.http.options.BaseHttpRequestOptions; * import static org.jclouds.s3.commands.options.GetBucketOptions.Builder.* * <p/> * S3Client connection = // get connection - * Future<S3Bucket> bucket = connection.listBucket("bucketName",withPrefix("home/users").maxKeys(1000)); + * ListBucketResponse bucket = connection.listBucket("bucketName",withPrefix("home/users").maxKeys(1000)); * <code> - * - * @see <a - * href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?RESTBucketGET.html?" - * /> */ public class ListBucketOptions extends BaseHttpRequestOptions implements Cloneable { public static final ListBucketOptions NONE = new ListBucketOptions(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/options/PutBucketOptions.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/options/PutBucketOptions.java b/apis/s3/src/main/java/org/jclouds/s3/options/PutBucketOptions.java index 5146f8c..5028688 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/options/PutBucketOptions.java +++ b/apis/s3/src/main/java/org/jclouds/s3/options/PutBucketOptions.java @@ -44,12 +44,8 @@ import com.google.common.collect.Multimap; * import org.jclouds.s3.S3Client; * <p/> * S3Client connection = // get connection - * Future<Boolean> createdInEu = connection.putBucketIfNotExists("bucketName",createIn(EU)); + * boolean createdInEu = connection.putBucketIfNotExists("bucketName",createIn(EU)); * <code> - * - * @see <a - * href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?RESTBucketPUT.html?" - * /> */ public class PutBucketOptions extends BaseHttpRequestOptions { private CannedAccessPolicy acl = CannedAccessPolicy.PRIVATE; http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/options/PutObjectOptions.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/options/PutObjectOptions.java b/apis/s3/src/main/java/org/jclouds/s3/options/PutObjectOptions.java index 6b65ff7..3ae6d30 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/options/PutObjectOptions.java +++ b/apis/s3/src/main/java/org/jclouds/s3/options/PutObjectOptions.java @@ -46,12 +46,8 @@ import com.google.common.collect.Multimap; * import org.jclouds.s3.S3Client; * * S3Client connection = // get connection - * Future<Boolean> publicly readable = connection.putObject("bucketName",new S3Object("key","value"), withAcl(CannedAccessPolicy.PUBLIC_READ)); + * boolean publiclyReadable = connection.putObject("bucketName",new S3Object("key","value"), withAcl(CannedAccessPolicy.PUBLIC_READ)); * <code> - * - * @see <a - * href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?RESTObjectPUT.html?" - * /> */ public class PutObjectOptions extends BaseHttpRequestOptions { public static final PutObjectOptions NONE = new PutObjectOptions(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/options/package-info.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/options/package-info.java b/apis/s3/src/main/java/org/jclouds/s3/options/package-info.java index fd186a8..30fe8b0 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/options/package-info.java +++ b/apis/s3/src/main/java/org/jclouds/s3/options/package-info.java @@ -16,7 +16,5 @@ */ /** * This package contains request options for S3 REST commands. - * - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/latest/RESTAPI.html" /> */ package org.jclouds.s3.options; http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/package-info.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/package-info.java b/apis/s3/src/main/java/org/jclouds/s3/package-info.java index b6eb727..0a28d71 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/package-info.java +++ b/apis/s3/src/main/java/org/jclouds/s3/package-info.java @@ -16,7 +16,5 @@ */ /** * This package contains an Amazon S3 client implemented by {@link org.jclouds.http.HttpCommandExecutorService} commands. - * - * @see <a href="http://amazon.com/s3"/> */ package org.jclouds.s3; http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/reference/S3Headers.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/reference/S3Headers.java b/apis/s3/src/main/java/org/jclouds/s3/reference/S3Headers.java index acc7ddc..64fd11a 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/reference/S3Headers.java +++ b/apis/s3/src/main/java/org/jclouds/s3/reference/S3Headers.java @@ -16,13 +16,7 @@ */ package org.jclouds.s3.reference; -/** - * Additional headers specified by Amazon S3 REST API. - * - * @see <a - * href="http://docs.amazonwebservices.com/AmazonS3/latest/index.html?RESTAuthentication.html" - * /> - */ +/** Additional headers specified by Amazon S3 REST API. */ public final class S3Headers { /** http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/xml/AccessControlListHandler.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/xml/AccessControlListHandler.java b/apis/s3/src/main/java/org/jclouds/s3/xml/AccessControlListHandler.java index ec7c8de..8a55672 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/xml/AccessControlListHandler.java +++ b/apis/s3/src/main/java/org/jclouds/s3/xml/AccessControlListHandler.java @@ -33,8 +33,6 @@ import org.xml.sax.Attributes; * Parses the following XML document: * <p/> * AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/" - * - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAccessPolicy.html"/> */ public class AccessControlListHandler extends ParseSax.HandlerWithResult<AccessControlList> { private AccessControlList acl = new AccessControlList(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/xml/BucketLoggingHandler.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/xml/BucketLoggingHandler.java b/apis/s3/src/main/java/org/jclouds/s3/xml/BucketLoggingHandler.java index 7cde74b..a5194d9 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/xml/BucketLoggingHandler.java +++ b/apis/s3/src/main/java/org/jclouds/s3/xml/BucketLoggingHandler.java @@ -36,8 +36,6 @@ import com.google.common.collect.Sets; * Parses the following XML document: * <p/> * BucketLoggingStatus xmlns="http://s3.amazonaws.com/doc/2006-03-01/" - * - * @see <a href="http://docs.amazonwebservices.com/AmazonS3/latest/index.html?ServerLogs.html"/> */ public class BucketLoggingHandler extends ParseSax.HandlerWithResult<BucketLogging> { private Set<Grant> targetGrants = Sets.newHashSet(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/xml/CopyObjectHandler.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/xml/CopyObjectHandler.java b/apis/s3/src/main/java/org/jclouds/s3/xml/CopyObjectHandler.java index d53bc12..3f3fabb 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/xml/CopyObjectHandler.java +++ b/apis/s3/src/main/java/org/jclouds/s3/xml/CopyObjectHandler.java @@ -31,8 +31,6 @@ import org.jclouds.s3.domain.internal.CopyObjectResult; * Parses the response from Amazon S3 COPY Object command. * <p/> * CopyObjectResult is the document we expect to parse. - * - * @see <a href= "http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTObjectCOPY.html" /> */ public class CopyObjectHandler extends ParseSax.HandlerWithResult<ObjectMetadata> { http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/xml/ListAllMyBucketsHandler.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/xml/ListAllMyBucketsHandler.java b/apis/s3/src/main/java/org/jclouds/s3/xml/ListAllMyBucketsHandler.java index 51dda0d..91a5b3b 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/xml/ListAllMyBucketsHandler.java +++ b/apis/s3/src/main/java/org/jclouds/s3/xml/ListAllMyBucketsHandler.java @@ -34,10 +34,6 @@ import com.google.common.collect.Sets; * Parses the following XML document: * <p/> * SetAllMyBucketsResult xmlns="http://doc.s3.amazonaws.com/2006-03-01" - * - * @see <a - * href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?RESTServiceGET.html" - * /> */ public class ListAllMyBucketsHandler extends ParseSax.HandlerWithResult<Set<BucketMetadata>> { http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/xml/ListBucketHandler.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/xml/ListBucketHandler.java b/apis/s3/src/main/java/org/jclouds/s3/xml/ListBucketHandler.java index d7ed117..c5fdb73 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/xml/ListBucketHandler.java +++ b/apis/s3/src/main/java/org/jclouds/s3/xml/ListBucketHandler.java @@ -41,10 +41,6 @@ import com.google.common.collect.ImmutableSet.Builder; * Parses the following XML document: * <p/> * ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01" - * - * @see <a - * href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?RESTBucketGET.html" - * /> */ public class ListBucketHandler extends ParseSax.HandlerWithResult<ListBucketResponse> { private Builder<ObjectMetadata> contents = ImmutableSet.builder(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/xml/LocationConstraintHandler.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/xml/LocationConstraintHandler.java b/apis/s3/src/main/java/org/jclouds/s3/xml/LocationConstraintHandler.java index b4a4702..415f345 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/xml/LocationConstraintHandler.java +++ b/apis/s3/src/main/java/org/jclouds/s3/xml/LocationConstraintHandler.java @@ -33,10 +33,6 @@ import com.google.common.cache.LoadingCache; * Parses the response from Amazon S3 GET Bucket Location * <p/> * Region is the document we expect to parse. - * - * @see <a href= - * "http://docs.amazonwebservices.com/AmazonS3/latest/RESTBucketLocationGET.html" - * /> */ public class LocationConstraintHandler extends ParseSax.HandlerWithResult<String> { private final LoadingCache<String, Optional<String>> bucketToRegion; http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/main/java/org/jclouds/s3/xml/PayerHandler.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/xml/PayerHandler.java b/apis/s3/src/main/java/org/jclouds/s3/xml/PayerHandler.java index 14ac098..8bb614f 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/xml/PayerHandler.java +++ b/apis/s3/src/main/java/org/jclouds/s3/xml/PayerHandler.java @@ -25,8 +25,6 @@ import org.jclouds.s3.domain.Payer; * Parses the response from Amazon S3 GET Request Payment * <p/> * RequestPaymentConfiguration is the document we expect to parse. - * - * @see <a href= "http://docs.amazonwebservices.com/AmazonS3/latest/RESTrequestPaymentGET.html" /> */ public class PayerHandler extends ParseSax.HandlerWithResult<Payer> { private StringBuilder currentText = new StringBuilder(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/test/java/org/jclouds/s3/S3AsyncClientTest.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/test/java/org/jclouds/s3/S3AsyncClientTest.java b/apis/s3/src/test/java/org/jclouds/s3/S3AsyncClientTest.java deleted file mode 100644 index c0561f4..0000000 --- a/apis/s3/src/test/java/org/jclouds/s3/S3AsyncClientTest.java +++ /dev/null @@ -1,490 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License 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 org.jclouds.s3; - -import static org.jclouds.reflect.Reflection2.method; -import static org.testng.Assert.assertEquals; - -import java.io.IOException; - -import org.jclouds.Fallbacks.VoidOnNotFoundOr404; -import org.jclouds.aws.domain.Region; -import org.jclouds.blobstore.BlobStoreFallbacks.FalseOnContainerNotFound; -import org.jclouds.blobstore.BlobStoreFallbacks.FalseOnKeyNotFound; -import org.jclouds.blobstore.BlobStoreFallbacks.NullOnKeyNotFound; -import org.jclouds.blobstore.BlobStoreFallbacks.ThrowContainerNotFoundOn404; -import org.jclouds.blobstore.BlobStoreFallbacks.ThrowKeyNotFoundOn404; -import org.jclouds.blobstore.binders.BindBlobToMultipartFormTest; -import org.jclouds.date.TimeStamp; -import org.jclouds.http.functions.ParseETagHeader; -import org.jclouds.http.functions.ParseSax; -import org.jclouds.http.functions.ReleasePayloadAndReturn; -import org.jclouds.http.functions.ReturnTrueIf2xx; -import org.jclouds.http.options.GetOptions; -import org.jclouds.rest.ConfiguresRestClient; -import org.jclouds.rest.internal.GeneratedHttpRequest; -import org.jclouds.s3.S3Fallbacks.TrueOn404OrNotFoundFalseOnIllegalState; -import org.jclouds.s3.config.S3RestClientModule; -import org.jclouds.s3.domain.AccessControlList; -import org.jclouds.s3.domain.AccessControlList.EmailAddressGrantee; -import org.jclouds.s3.domain.AccessControlList.Grant; -import org.jclouds.s3.domain.AccessControlList.Permission; -import org.jclouds.s3.domain.BucketLogging; -import org.jclouds.s3.domain.CannedAccessPolicy; -import org.jclouds.s3.domain.Payer; -import org.jclouds.s3.domain.S3Object; -import org.jclouds.s3.fallbacks.FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists; -import org.jclouds.s3.functions.ParseObjectFromHeadersAndHttpContent; -import org.jclouds.s3.functions.ParseObjectMetadataFromHeaders; -import org.jclouds.s3.internal.BaseS3AsyncClientTest; -import org.jclouds.s3.options.CopyObjectOptions; -import org.jclouds.s3.options.ListBucketOptions; -import org.jclouds.s3.options.PutBucketOptions; -import org.jclouds.s3.options.PutObjectOptions; -import org.jclouds.s3.xml.AccessControlListHandler; -import org.jclouds.s3.xml.BucketLoggingHandler; -import org.jclouds.s3.xml.CopyObjectHandler; -import org.jclouds.s3.xml.ListAllMyBucketsHandler; -import org.jclouds.s3.xml.ListBucketHandler; -import org.jclouds.s3.xml.LocationConstraintHandler; -import org.jclouds.s3.xml.PayerHandler; -import org.jclouds.util.Strings2; -import org.testng.annotations.Test; - -import com.google.common.base.Supplier; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; -import com.google.common.reflect.Invokable; -import com.google.inject.Module; -/** - * Tests behavior of {@code S3AsyncClient} - */ -// NOTE:without testName, this will not call @Before* and fail w/NPE during surefire -@Test(groups = "unit", testName = "S3AsyncClientTest") -public abstract class S3AsyncClientTest<T extends S3AsyncClient> extends BaseS3AsyncClientTest<T> { - - protected String url = "s3.amazonaws.com"; - - public void testAllRegions() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "putBucketInRegion", String.class, String.class, - PutBucketOptions[].class); - for (String region : Region.DEFAULT_S3) { - processor.createRequest(method, ImmutableList.<Object> of(region, "bucket-" + region)); - } - } - - public void testGetBucketLocation() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "getBucketLocation", String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); - - assertRequestLineEquals(request, "GET https://bucket." + url + "/?location HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - request = (GeneratedHttpRequest) filter.filter(request); - - assertRequestLineEquals(request, "GET https://bucket." + url + "/?location HTTP/1.1"); - assertNonPayloadHeadersEqual(request, - "Authorization: AWS identity:2fFTeYJTDwiJmaAkKj732RjNbOg=\nDate: 2009-11-08T15:54:08.897Z\nHost: bucket." - + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, LocationConstraintHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testGetBucketPayer() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "getBucketPayer", String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); - - assertRequestLineEquals(request, "GET https://bucket." + url + "/?requestPayment HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, PayerHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testSetBucketPayerOwner() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "setBucketPayer", String.class, Payer.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", Payer.BUCKET_OWNER)); - - assertRequestLineEquals(request, "PUT https://bucket." + url + "/?requestPayment HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, "<RequestPaymentConfiguration xmlns=\"http://" + url - + "/doc/2006-03-01/\"><Payer>BucketOwner</Payer></RequestPaymentConfiguration>", "text/xml", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testSetBucketPayerRequester() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "setBucketPayer", String.class, Payer.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", Payer.REQUESTER)); - - assertRequestLineEquals(request, "PUT https://bucket." + url + "/?requestPayment HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, "<RequestPaymentConfiguration xmlns=\"http://" + url - + "/doc/2006-03-01/\"><Payer>Requester</Payer></RequestPaymentConfiguration>", "text/xml", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testListBucket() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "listBucket", String.class, - ListBucketOptions[].class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); - - assertRequestLineEquals(request, "GET https://bucket." + url + "/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, ListBucketHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testBucketExists() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "bucketExists", String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); - - assertRequestLineEquals(request, "HEAD https://bucket." + url + "/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, FalseOnContainerNotFound.class); - - checkFilters(request); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testCopyObjectInvalidName() throws ArrayIndexOutOfBoundsException, SecurityException, - IllegalArgumentException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "copyObject", String.class, String.class, String.class, - String.class, CopyObjectOptions[].class); - processor.createRequest(method, ImmutableList.<Object> of("sourceBucket", "sourceObject", "destinationBucket", "destinationObject")); - - } - - public void testCopyObject() throws ArrayIndexOutOfBoundsException, SecurityException, IllegalArgumentException, - NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "copyObject", String.class, String.class, String.class, - String.class, CopyObjectOptions[].class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("sourceBucket", "sourceObject", "destinationbucket", - "destinationObject")); - - assertRequestLineEquals(request, "PUT https://destinationbucket." + url + "/destinationObject HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: destinationbucket." + url - + "\nx-amz-copy-source: /sourceBucket/sourceObject\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, CopyObjectHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testDeleteBucketIfEmpty() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "deleteBucketIfEmpty", String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); - - assertRequestLineEquals(request, "DELETE https://bucket." + url + "/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, TrueOn404OrNotFoundFalseOnIllegalState.class); - - checkFilters(request); - } - - public void testDeleteObject() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "deleteObject", String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "object")); - - assertRequestLineEquals(request, "DELETE https://bucket." + url + "/object HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, VoidOnNotFoundOr404.class); - - checkFilters(request); - } - - public void testGetBucketACL() throws SecurityException, NoSuchMethodException, IOException { - - Invokable<?, ?> method = method(S3AsyncClient.class, "getBucketACL", String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); - - assertRequestLineEquals(request, "GET https://bucket." + url + "/?acl HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, AccessControlListHandler.class); - assertFallbackClassEquals(method, ThrowContainerNotFoundOn404.class); - - checkFilters(request); - } - - public void testGetObject() throws ArrayIndexOutOfBoundsException, SecurityException, IllegalArgumentException, - NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "getObject", String.class, String.class, GetOptions[].class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "object")); - - assertRequestLineEquals(request, "GET https://bucket." + url + "/object HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ParseObjectFromHeadersAndHttpContent.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, NullOnKeyNotFound.class); - - checkFilters(request); - } - - public void testGetObjectACL() throws SecurityException, NoSuchMethodException, IOException { - - Invokable<?, ?> method = method(S3AsyncClient.class, "getObjectACL", String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "object")); - - assertRequestLineEquals(request, "GET https://bucket." + url + "/object?acl HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, AccessControlListHandler.class); - assertFallbackClassEquals(method, ThrowKeyNotFoundOn404.class); - - checkFilters(request); - } - - public void testObjectExists() throws SecurityException, NoSuchMethodException, IOException { - - Invokable<?, ?> method = method(S3AsyncClient.class, "objectExists", String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "object")); - - assertRequestLineEquals(request, "HEAD https://bucket." + url + "/object HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, FalseOnKeyNotFound.class); - - checkFilters(request); - } - - public void testHeadObject() throws SecurityException, NoSuchMethodException, IOException { - - Invokable<?, ?> method = method(S3AsyncClient.class, "headObject", String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "object")); - - assertRequestLineEquals(request, "HEAD https://bucket." + url + "/object HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ParseObjectMetadataFromHeaders.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, NullOnKeyNotFound.class); - - checkFilters(request); - } - - public void testListOwnedBuckets() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "listOwnedBuckets"); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.of()); - - assertRequestLineEquals(request, "GET https://" + url + "/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: " + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, ListAllMyBucketsHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testNewS3Object() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "newS3Object"); - assertEquals(method.getReturnType().getRawType(), S3Object.class); - } - - public void testPutBucketACL() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "putBucketACL", String.class, AccessControlList.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", AccessControlList.fromCannedAccessPolicy( - CannedAccessPolicy.PRIVATE, "1234"))); - - assertRequestLineEquals(request, "PUT https://bucket." + url + "/?acl HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals( - request, - "<AccessControlPolicy xmlns=\"http://" - + url - + "/doc/2006-03-01/\"><Owner><ID>1234</ID></Owner><AccessControlList><Grant><Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"CanonicalUser\"><ID>1234</ID></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>", - "text/xml", false); - - assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testPutBucketDefault() throws ArrayIndexOutOfBoundsException, SecurityException, - IllegalArgumentException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "putBucketInRegion", String.class, String.class, - PutBucketOptions[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList((String) null, "bucket")); - - assertRequestLineEquals(request, "PUT https://bucket." + url + "/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists.class); - - checkFilters(request); - } - - public void testPutObject() throws ArrayIndexOutOfBoundsException, SecurityException, IllegalArgumentException, - NoSuchMethodException, IOException { - - Invokable<?, ?> method = method(S3AsyncClient.class, "putObject", String.class, S3Object.class, PutObjectOptions[].class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", blobToS3Object - .apply(BindBlobToMultipartFormTest.TEST_BLOB))); - - assertRequestLineEquals(request, "PUT https://bucket." + url + "/hello HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, "hello", "text/plain", false); - - assertResponseParserClassEquals(method, request, ParseETagHeader.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testPutObjectACL() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "putObjectACL", String.class, String.class, AccessControlList.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "key", AccessControlList.fromCannedAccessPolicy( - CannedAccessPolicy.PRIVATE, "1234"))); - - assertRequestLineEquals(request, "PUT https://bucket." + url + "/key?acl HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals( - request, - "<AccessControlPolicy xmlns=\"http://" - + url - + "/doc/2006-03-01/\"><Owner><ID>1234</ID></Owner><AccessControlList><Grant><Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"CanonicalUser\"><ID>1234</ID></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>", - "text/xml", false); - - assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testGetBucketLogging() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "getBucketLogging", String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); - - assertRequestLineEquals(request, "GET https://bucket." + url + "/?logging HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, null, null, false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, BucketLoggingHandler.class); - assertFallbackClassEquals(method, ThrowContainerNotFoundOn404.class); - - checkFilters(request); - } - - public void testDisableBucketLogging() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "disableBucketLogging", String.class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); - - assertRequestLineEquals(request, "PUT https://bucket." + url + "/?logging HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, "<BucketLoggingStatus xmlns=\"http://" + url + "/doc/2006-03-01/\"/>", "text/xml", - false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testEnableBucketLoggingOwner() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(S3AsyncClient.class, "enableBucketLogging", String.class, BucketLogging.class); - GeneratedHttpRequest request = processor - .createRequest(method, ImmutableList.<Object> of("bucket", new BucketLogging("mylogs", "access_log-", ImmutableSet - .<Grant> of(new Grant(new EmailAddressGrantee("[email protected]"), Permission.FULL_CONTROL))))); - - assertRequestLineEquals(request, "PUT https://bucket." + url + "/?logging HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); - assertPayloadEquals(request, Strings2.toStringAndClose(getClass().getResourceAsStream("/bucket_logging.xml")), - "text/xml", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - @ConfiguresRestClient - private static final class TestS3RestClientModule extends S3RestClientModule<S3Client, S3AsyncClient> { - - @Override - protected String provideTimeStamp(@TimeStamp Supplier<String> cache) { - return "2009-11-08T15:54:08.897Z"; - } - } - - @Override - protected Module createModule() { - return new TestS3RestClientModule(); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java b/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java index d94fda1..04fd5a3 100644 --- a/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java +++ b/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java @@ -16,8 +16,6 @@ */ package org.jclouds.s3; -import static org.jclouds.s3.internal.StubS3AsyncClient.TEST_ACL_EMAIL; -import static org.jclouds.s3.internal.StubS3AsyncClient.TEST_ACL_ID; import static org.jclouds.s3.options.CopyObjectOptions.Builder.ifSourceETagDoesntMatch; import static org.jclouds.s3.options.CopyObjectOptions.Builder.ifSourceETagMatches; import static org.jclouds.s3.options.CopyObjectOptions.Builder.ifSourceModifiedSince; @@ -57,12 +55,16 @@ import com.google.common.collect.Maps; @Test(groups = { "integration", "live" }) public class S3ClientLiveTest extends BaseBlobStoreIntegrationTest { + public static final String TEST_ACL_ID = "1a405254c932b52e5b5caaa88186bc431a1bacb9ece631f835daddaf0c47677c"; + public static final String TEST_ACL_EMAIL = "[email protected]"; + public static final String DEFAULT_OWNER_ID = "abc123"; + public S3ClientLiveTest() { this.provider = "s3"; } public S3Client getApi() { - return view.unwrap(S3ApiMetadata.CONTEXT_TOKEN).getApi(); + return view.unwrapApi(S3Client.class); } /** http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/test/java/org/jclouds/s3/S3ClientTest.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/test/java/org/jclouds/s3/S3ClientTest.java b/apis/s3/src/test/java/org/jclouds/s3/S3ClientTest.java new file mode 100644 index 0000000..fb5aeb9 --- /dev/null +++ b/apis/s3/src/test/java/org/jclouds/s3/S3ClientTest.java @@ -0,0 +1,490 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License 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 org.jclouds.s3; + +import static org.jclouds.reflect.Reflection2.method; +import static org.testng.Assert.assertEquals; + +import java.io.IOException; + +import org.jclouds.Fallbacks.VoidOnNotFoundOr404; +import org.jclouds.aws.domain.Region; +import org.jclouds.blobstore.BlobStoreFallbacks.FalseOnContainerNotFound; +import org.jclouds.blobstore.BlobStoreFallbacks.FalseOnKeyNotFound; +import org.jclouds.blobstore.BlobStoreFallbacks.NullOnKeyNotFound; +import org.jclouds.blobstore.BlobStoreFallbacks.ThrowContainerNotFoundOn404; +import org.jclouds.blobstore.BlobStoreFallbacks.ThrowKeyNotFoundOn404; +import org.jclouds.blobstore.binders.BindBlobToMultipartFormTest; +import org.jclouds.date.TimeStamp; +import org.jclouds.http.functions.ParseETagHeader; +import org.jclouds.http.functions.ParseSax; +import org.jclouds.http.functions.ReleasePayloadAndReturn; +import org.jclouds.http.functions.ReturnTrueIf2xx; +import org.jclouds.http.options.GetOptions; +import org.jclouds.rest.ConfiguresHttpApi; +import org.jclouds.rest.internal.GeneratedHttpRequest; +import org.jclouds.s3.S3Fallbacks.TrueOn404OrNotFoundFalseOnIllegalState; +import org.jclouds.s3.config.S3HttpApiModule; +import org.jclouds.s3.domain.AccessControlList; +import org.jclouds.s3.domain.AccessControlList.EmailAddressGrantee; +import org.jclouds.s3.domain.AccessControlList.Grant; +import org.jclouds.s3.domain.AccessControlList.Permission; +import org.jclouds.s3.domain.BucketLogging; +import org.jclouds.s3.domain.CannedAccessPolicy; +import org.jclouds.s3.domain.Payer; +import org.jclouds.s3.domain.S3Object; +import org.jclouds.s3.fallbacks.FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists; +import org.jclouds.s3.functions.ParseObjectFromHeadersAndHttpContent; +import org.jclouds.s3.functions.ParseObjectMetadataFromHeaders; +import org.jclouds.s3.internal.BaseS3ClientTest; +import org.jclouds.s3.options.CopyObjectOptions; +import org.jclouds.s3.options.ListBucketOptions; +import org.jclouds.s3.options.PutBucketOptions; +import org.jclouds.s3.options.PutObjectOptions; +import org.jclouds.s3.xml.AccessControlListHandler; +import org.jclouds.s3.xml.BucketLoggingHandler; +import org.jclouds.s3.xml.CopyObjectHandler; +import org.jclouds.s3.xml.ListAllMyBucketsHandler; +import org.jclouds.s3.xml.ListBucketHandler; +import org.jclouds.s3.xml.LocationConstraintHandler; +import org.jclouds.s3.xml.PayerHandler; +import org.jclouds.util.Strings2; +import org.testng.annotations.Test; + +import com.google.common.base.Supplier; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +import com.google.common.reflect.Invokable; +import com.google.inject.Module; +/** + * Tests behavior of {@code S3Client} + */ +// NOTE:without testName, this will not call @Before* and fail w/NPE during surefire +@Test(groups = "unit", testName = "S3ClientTest") +public abstract class S3ClientTest<T extends S3Client> extends BaseS3ClientTest<T> { + + protected String url = "s3.amazonaws.com"; + + public void testAllRegions() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "putBucketInRegion", String.class, String.class, + PutBucketOptions[].class); + for (String region : Region.DEFAULT_S3) { + processor.createRequest(method, ImmutableList.<Object> of(region, "bucket-" + region)); + } + } + + public void testGetBucketLocation() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "getBucketLocation", String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); + + assertRequestLineEquals(request, "GET https://bucket." + url + "/?location HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + request = (GeneratedHttpRequest) filter.filter(request); + + assertRequestLineEquals(request, "GET https://bucket." + url + "/?location HTTP/1.1"); + assertNonPayloadHeadersEqual(request, + "Authorization: AWS identity:2fFTeYJTDwiJmaAkKj732RjNbOg=\nDate: 2009-11-08T15:54:08.897Z\nHost: bucket." + + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ParseSax.class); + assertSaxResponseParserClassEquals(method, LocationConstraintHandler.class); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testGetBucketPayer() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "getBucketPayer", String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); + + assertRequestLineEquals(request, "GET https://bucket." + url + "/?requestPayment HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ParseSax.class); + assertSaxResponseParserClassEquals(method, PayerHandler.class); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testSetBucketPayerOwner() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "setBucketPayer", String.class, Payer.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", Payer.BUCKET_OWNER)); + + assertRequestLineEquals(request, "PUT https://bucket." + url + "/?requestPayment HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, "<RequestPaymentConfiguration xmlns=\"http://" + url + + "/doc/2006-03-01/\"><Payer>BucketOwner</Payer></RequestPaymentConfiguration>", "text/xml", false); + + assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testSetBucketPayerRequester() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "setBucketPayer", String.class, Payer.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", Payer.REQUESTER)); + + assertRequestLineEquals(request, "PUT https://bucket." + url + "/?requestPayment HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, "<RequestPaymentConfiguration xmlns=\"http://" + url + + "/doc/2006-03-01/\"><Payer>Requester</Payer></RequestPaymentConfiguration>", "text/xml", false); + + assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testListBucket() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "listBucket", String.class, + ListBucketOptions[].class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); + + assertRequestLineEquals(request, "GET https://bucket." + url + "/ HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ParseSax.class); + assertSaxResponseParserClassEquals(method, ListBucketHandler.class); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testBucketExists() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "bucketExists", String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); + + assertRequestLineEquals(request, "HEAD https://bucket." + url + "/ HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, FalseOnContainerNotFound.class); + + checkFilters(request); + } + + @Test(expectedExceptions = IllegalArgumentException.class) + public void testCopyObjectInvalidName() throws ArrayIndexOutOfBoundsException, SecurityException, + IllegalArgumentException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "copyObject", String.class, String.class, String.class, + String.class, CopyObjectOptions[].class); + processor.createRequest(method, ImmutableList.<Object> of("sourceBucket", "sourceObject", "destinationBucket", "destinationObject")); + + } + + public void testCopyObject() throws ArrayIndexOutOfBoundsException, SecurityException, IllegalArgumentException, + NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "copyObject", String.class, String.class, String.class, + String.class, CopyObjectOptions[].class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("sourceBucket", "sourceObject", "destinationbucket", + "destinationObject")); + + assertRequestLineEquals(request, "PUT https://destinationbucket." + url + "/destinationObject HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: destinationbucket." + url + + "\nx-amz-copy-source: /sourceBucket/sourceObject\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ParseSax.class); + assertSaxResponseParserClassEquals(method, CopyObjectHandler.class); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testDeleteBucketIfEmpty() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "deleteBucketIfEmpty", String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); + + assertRequestLineEquals(request, "DELETE https://bucket." + url + "/ HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, TrueOn404OrNotFoundFalseOnIllegalState.class); + + checkFilters(request); + } + + public void testDeleteObject() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "deleteObject", String.class, String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "object")); + + assertRequestLineEquals(request, "DELETE https://bucket." + url + "/object HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, VoidOnNotFoundOr404.class); + + checkFilters(request); + } + + public void testGetBucketACL() throws SecurityException, NoSuchMethodException, IOException { + + Invokable<?, ?> method = method(S3Client.class, "getBucketACL", String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); + + assertRequestLineEquals(request, "GET https://bucket." + url + "/?acl HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ParseSax.class); + assertSaxResponseParserClassEquals(method, AccessControlListHandler.class); + assertFallbackClassEquals(method, ThrowContainerNotFoundOn404.class); + + checkFilters(request); + } + + public void testGetObject() throws ArrayIndexOutOfBoundsException, SecurityException, IllegalArgumentException, + NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "getObject", String.class, String.class, GetOptions[].class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "object")); + + assertRequestLineEquals(request, "GET https://bucket." + url + "/object HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ParseObjectFromHeadersAndHttpContent.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, NullOnKeyNotFound.class); + + checkFilters(request); + } + + public void testGetObjectACL() throws SecurityException, NoSuchMethodException, IOException { + + Invokable<?, ?> method = method(S3Client.class, "getObjectACL", String.class, String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "object")); + + assertRequestLineEquals(request, "GET https://bucket." + url + "/object?acl HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ParseSax.class); + assertSaxResponseParserClassEquals(method, AccessControlListHandler.class); + assertFallbackClassEquals(method, ThrowKeyNotFoundOn404.class); + + checkFilters(request); + } + + public void testObjectExists() throws SecurityException, NoSuchMethodException, IOException { + + Invokable<?, ?> method = method(S3Client.class, "objectExists", String.class, String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "object")); + + assertRequestLineEquals(request, "HEAD https://bucket." + url + "/object HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, FalseOnKeyNotFound.class); + + checkFilters(request); + } + + public void testHeadObject() throws SecurityException, NoSuchMethodException, IOException { + + Invokable<?, ?> method = method(S3Client.class, "headObject", String.class, String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "object")); + + assertRequestLineEquals(request, "HEAD https://bucket." + url + "/object HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ParseObjectMetadataFromHeaders.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, NullOnKeyNotFound.class); + + checkFilters(request); + } + + public void testListOwnedBuckets() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "listOwnedBuckets"); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.of()); + + assertRequestLineEquals(request, "GET https://" + url + "/ HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: " + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ParseSax.class); + assertSaxResponseParserClassEquals(method, ListAllMyBucketsHandler.class); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testNewS3Object() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "newS3Object"); + assertEquals(method.getReturnType().getRawType(), S3Object.class); + } + + public void testPutBucketACL() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "putBucketACL", String.class, AccessControlList.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", AccessControlList.fromCannedAccessPolicy( + CannedAccessPolicy.PRIVATE, "1234"))); + + assertRequestLineEquals(request, "PUT https://bucket." + url + "/?acl HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals( + request, + "<AccessControlPolicy xmlns=\"http://" + + url + + "/doc/2006-03-01/\"><Owner><ID>1234</ID></Owner><AccessControlList><Grant><Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"CanonicalUser\"><ID>1234</ID></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>", + "text/xml", false); + + assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testPutBucketDefault() throws ArrayIndexOutOfBoundsException, SecurityException, + IllegalArgumentException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "putBucketInRegion", String.class, String.class, + PutBucketOptions[].class); + GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList((String) null, "bucket")); + + assertRequestLineEquals(request, "PUT https://bucket." + url + "/ HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists.class); + + checkFilters(request); + } + + public void testPutObject() throws ArrayIndexOutOfBoundsException, SecurityException, IllegalArgumentException, + NoSuchMethodException, IOException { + + Invokable<?, ?> method = method(S3Client.class, "putObject", String.class, S3Object.class, PutObjectOptions[].class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", blobToS3Object + .apply(BindBlobToMultipartFormTest.TEST_BLOB))); + + assertRequestLineEquals(request, "PUT https://bucket." + url + "/hello HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, "hello", "text/plain", false); + + assertResponseParserClassEquals(method, request, ParseETagHeader.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testPutObjectACL() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "putObjectACL", String.class, String.class, AccessControlList.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket", "key", AccessControlList.fromCannedAccessPolicy( + CannedAccessPolicy.PRIVATE, "1234"))); + + assertRequestLineEquals(request, "PUT https://bucket." + url + "/key?acl HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals( + request, + "<AccessControlPolicy xmlns=\"http://" + + url + + "/doc/2006-03-01/\"><Owner><ID>1234</ID></Owner><AccessControlList><Grant><Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"CanonicalUser\"><ID>1234</ID></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>", + "text/xml", false); + + assertResponseParserClassEquals(method, request, ReturnTrueIf2xx.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testGetBucketLogging() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "getBucketLogging", String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); + + assertRequestLineEquals(request, "GET https://bucket." + url + "/?logging HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ParseSax.class); + assertSaxResponseParserClassEquals(method, BucketLoggingHandler.class); + assertFallbackClassEquals(method, ThrowContainerNotFoundOn404.class); + + checkFilters(request); + } + + public void testDisableBucketLogging() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "disableBucketLogging", String.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket")); + + assertRequestLineEquals(request, "PUT https://bucket." + url + "/?logging HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, "<BucketLoggingStatus xmlns=\"http://" + url + "/doc/2006-03-01/\"/>", "text/xml", + false); + + assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + public void testEnableBucketLoggingOwner() throws SecurityException, NoSuchMethodException, IOException { + Invokable<?, ?> method = method(S3Client.class, "enableBucketLogging", String.class, BucketLogging.class); + GeneratedHttpRequest request = processor + .createRequest(method, ImmutableList.<Object> of("bucket", new BucketLogging("mylogs", "access_log-", ImmutableSet + .<Grant> of(new Grant(new EmailAddressGrantee("[email protected]"), Permission.FULL_CONTROL))))); + + assertRequestLineEquals(request, "PUT https://bucket." + url + "/?logging HTTP/1.1"); + assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n"); + assertPayloadEquals(request, Strings2.toStringAndClose(getClass().getResourceAsStream("/bucket_logging.xml")), + "text/xml", false); + + assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, null); + + checkFilters(request); + } + + @ConfiguresHttpApi + private static final class TestS3HttpApiModule extends S3HttpApiModule<S3Client> { + + @Override + protected String provideTimeStamp(@TimeStamp Supplier<String> cache) { + return "2009-11-08T15:54:08.897Z"; + } + } + + @Override + protected Module createModule() { + return new TestS3HttpApiModule(); + } + +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/test/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfiguredNoPathTest.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/test/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfiguredNoPathTest.java b/apis/s3/src/test/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfiguredNoPathTest.java index 893f291..a673a0d 100644 --- a/apis/s3/src/test/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfiguredNoPathTest.java +++ b/apis/s3/src/test/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfiguredNoPathTest.java @@ -22,8 +22,8 @@ import java.io.IOException; import java.util.Properties; import org.jclouds.rest.internal.GeneratedHttpRequest; -import org.jclouds.s3.S3AsyncClient; -import org.jclouds.s3.internal.BaseS3AsyncClientTest; +import org.jclouds.s3.S3Client; +import org.jclouds.s3.internal.BaseS3ClientTest; import org.testng.annotations.Test; import com.google.common.collect.ImmutableList; @@ -34,11 +34,11 @@ import com.google.common.reflect.Invokable; */ // NOTE:without testName, this will not call @Before* and fail w/NPE during surefire @Test(groups = "unit", testName = "BindAsHostPrefixIfConfiguredNoPathTest") -public class BindAsHostPrefixIfConfiguredNoPathTest extends BaseS3AsyncClientTest<S3AsyncClient> { +public class BindAsHostPrefixIfConfiguredNoPathTest extends BaseS3ClientTest<S3Client> { public void testBucketWithHostnameStyle() throws IOException, SecurityException, NoSuchMethodException { - Invokable<?, ?> method = method(S3AsyncClient.class, "deleteObject", String.class, String.class); + Invokable<?, ?> method = method(S3Client.class, "deleteObject", String.class, String.class); GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("testbucket.example.com", "test.jpg")); assertRequestLineEquals(request, "DELETE https://s3.amazonaws.com/testbucket.example.com/test.jpg HTTP/1.1"); } http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/test/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfiguredTest.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/test/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfiguredTest.java b/apis/s3/src/test/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfiguredTest.java index e8a2e2e..29bcb91 100644 --- a/apis/s3/src/test/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfiguredTest.java +++ b/apis/s3/src/test/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfiguredTest.java @@ -25,8 +25,8 @@ import java.io.IOException; import java.util.Properties; import org.jclouds.http.HttpRequest; -import org.jclouds.s3.S3AsyncClient; -import org.jclouds.s3.internal.BaseS3AsyncClientTest; +import org.jclouds.s3.S3Client; +import org.jclouds.s3.internal.BaseS3ClientTest; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -37,7 +37,7 @@ import com.google.common.reflect.Invokable; */ // NOTE:without testName, this will not call @Before* and fail w/NPE during surefire @Test(groups = "unit", testName = "BindAsHostPrefixIfConfiguredTest") -public class BindAsHostPrefixIfConfiguredTest extends BaseS3AsyncClientTest<S3AsyncClient> { +public class BindAsHostPrefixIfConfiguredTest extends BaseS3ClientTest<S3Client> { public void testBucket() throws IOException { @@ -57,7 +57,7 @@ public class BindAsHostPrefixIfConfiguredTest extends BaseS3AsyncClientTest<S3As request = binder.bindToRequest(request, "testbucket.example.com"); assertEquals(request.getRequestLine(), "GET http://euc/services/Walrus/testbucket.example.com HTTP/1.1"); - Invokable<?, ?> method = method(S3AsyncClient.class, "deleteObject", String.class, String.class); + Invokable<?, ?> method = method(S3Client.class, "deleteObject", String.class, String.class); request = processor.createRequest(method, ImmutableList.<Object> of("testbucket.example.com", "test.jpg")); assertRequestLineEquals(request, "DELETE http://euc/services/Walrus/testbucket.example.com/test.jpg HTTP/1.1"); http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/test/java/org/jclouds/s3/binders/BindNoBucketLoggingToXmlPayloadTest.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/test/java/org/jclouds/s3/binders/BindNoBucketLoggingToXmlPayloadTest.java b/apis/s3/src/test/java/org/jclouds/s3/binders/BindNoBucketLoggingToXmlPayloadTest.java index 58c5030..f70ff90 100644 --- a/apis/s3/src/test/java/org/jclouds/s3/binders/BindNoBucketLoggingToXmlPayloadTest.java +++ b/apis/s3/src/test/java/org/jclouds/s3/binders/BindNoBucketLoggingToXmlPayloadTest.java @@ -21,8 +21,8 @@ import static org.testng.Assert.assertEquals; import java.io.IOException; import org.jclouds.http.HttpRequest; -import org.jclouds.s3.S3AsyncClient; -import org.jclouds.s3.internal.BaseS3AsyncClientTest; +import org.jclouds.s3.S3Client; +import org.jclouds.s3.internal.BaseS3ClientTest; import org.testng.annotations.Test; /** @@ -30,7 +30,7 @@ import org.testng.annotations.Test; */ // NOTE:without testName, this will not call @Before* and fail w/NPE during surefire @Test(groups = "unit", testName = "BindNoBucketLoggingToXmlPayloadTest") -public class BindNoBucketLoggingToXmlPayloadTest extends BaseS3AsyncClientTest<S3AsyncClient> { +public class BindNoBucketLoggingToXmlPayloadTest extends BaseS3ClientTest<S3Client> { public void testApplyInputStream() throws IOException { http://git-wip-us.apache.org/repos/asf/jclouds/blob/b6497556/apis/s3/src/test/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequestTest.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/test/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequestTest.java b/apis/s3/src/test/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequestTest.java index 6d9a81e..b65c2b9 100644 --- a/apis/s3/src/test/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequestTest.java +++ b/apis/s3/src/test/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequestTest.java @@ -25,9 +25,9 @@ import org.jclouds.blobstore.binders.BindMapToHeadersWithPrefix; import org.jclouds.http.HttpRequest; import org.jclouds.io.Payload; import org.jclouds.io.Payloads; -import org.jclouds.s3.S3AsyncClient; +import org.jclouds.s3.S3Client; import org.jclouds.s3.domain.S3Object; -import org.jclouds.s3.internal.BaseS3AsyncClientTest; +import org.jclouds.s3.internal.BaseS3ClientTest; import org.testng.annotations.Test; import com.google.common.collect.ImmutableMap; @@ -38,7 +38,7 @@ import com.google.common.collect.ImmutableMultimap; */ // NOTE:without testName, this will not call @Before* and fail w/NPE during surefire @Test(groups = "unit", testName = "BindS3ObjectMetadataToRequestTest") -public class BindS3ObjectMetadataToRequestTest extends BaseS3AsyncClientTest<S3AsyncClient> { +public class BindS3ObjectMetadataToRequestTest extends BaseS3ClientTest<S3Client> { @Test public void testPassWithMinimumDetailsAndPayload5GB() {
