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() {

Reply via email to