You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/25 20:37:05 UTC

git commit: Remove redundant binder implementations in GCE.

Repository: jclouds-labs-google
Updated Branches:
  refs/heads/master 953b49876 -> 3f59166b0


Remove redundant binder implementations in GCE.


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/commit/3f59166b
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/3f59166b
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/3f59166b

Branch: refs/heads/master
Commit: 3f59166b0e36ce05288396c0571de287de3bd9c5
Parents: 953b498
Author: Adrian Cole <ad...@gmail.com>
Authored: Sat Oct 25 08:36:54 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Sat Oct 25 11:36:59 2014 -0700

----------------------------------------------------------------------
 .../binders/BucketAccessControlsBinder.java     | 43 -------------------
 .../binders/BucketBinder.java                   | 43 -------------------
 .../binders/ComposeObjectBinder.java            | 43 -------------------
 .../DefaultObjectAccessControlsBinder.java      | 43 -------------------
 .../binders/MultipartUploadBinder.java          | 27 +++++-------
 .../binders/ObjectAccessControlsBinder.java     | 43 -------------------
 .../binders/ResumableUploadBinder.java          | 44 --------------------
 .../binders/UploadBinder.java                   |  7 +---
 .../features/BucketAccessControlsApi.java       |  6 +--
 .../googlecloudstorage/features/BucketApi.java  |  9 +---
 .../DefaultObjectAccessControlsApi.java         | 10 ++---
 .../features/ObjectAccessControlsApi.java       | 11 ++---
 .../googlecloudstorage/features/ObjectApi.java  | 14 +++----
 .../features/ResumableUploadApi.java            |  6 +--
 14 files changed, 31 insertions(+), 318 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/BucketAccessControlsBinder.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/BucketAccessControlsBinder.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/BucketAccessControlsBinder.java
deleted file mode 100644
index 94cd73f..0000000
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/BucketAccessControlsBinder.java
+++ /dev/null
@@ -1,43 +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.googlecloudstorage.binders;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-
-import org.jclouds.googlecloudstorage.domain.templates.BucketAccessControlsTemplate;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-public class BucketAccessControlsBinder implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      BucketAccessControlsTemplate postBucket = (BucketAccessControlsTemplate) postParams.get("template");
-      return bindToRequest(request, postBucket);
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/BucketBinder.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/BucketBinder.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/BucketBinder.java
deleted file mode 100644
index 1aa8dd9..0000000
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/BucketBinder.java
+++ /dev/null
@@ -1,43 +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.googlecloudstorage.binders;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-
-import org.jclouds.googlecloudstorage.domain.templates.BucketTemplate;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-public class BucketBinder implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) throws IllegalArgumentException {
-      BucketTemplate postBucket = (BucketTemplate) postParams.get("template");
-      return bindToRequest(request, postBucket);
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ComposeObjectBinder.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ComposeObjectBinder.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ComposeObjectBinder.java
deleted file mode 100644
index 9401ad6..0000000
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ComposeObjectBinder.java
+++ /dev/null
@@ -1,43 +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.googlecloudstorage.binders;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-
-import org.jclouds.googlecloudstorage.domain.templates.ComposeObjectTemplate;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-public class ComposeObjectBinder implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) throws IllegalArgumentException{
-      ComposeObjectTemplate postCompose = (ComposeObjectTemplate) postParams.get("template");
-      return bindToRequest(request, postCompose);
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/DefaultObjectAccessControlsBinder.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/DefaultObjectAccessControlsBinder.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/DefaultObjectAccessControlsBinder.java
deleted file mode 100644
index 0588eec..0000000
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/DefaultObjectAccessControlsBinder.java
+++ /dev/null
@@ -1,43 +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.googlecloudstorage.binders;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-
-import org.jclouds.googlecloudstorage.domain.templates.DefaultObjectAccessControlsTemplate;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-public class DefaultObjectAccessControlsBinder implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      DefaultObjectAccessControlsTemplate template = (DefaultObjectAccessControlsTemplate) postParams.get("template");
-      return bindToRequest(request, template);
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/MultipartUploadBinder.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/MultipartUploadBinder.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/MultipartUploadBinder.java
index b286d28..f8f1451 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/MultipartUploadBinder.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/MultipartUploadBinder.java
@@ -16,10 +16,11 @@
  */
 package org.jclouds.googlecloudstorage.binders;
 
-import java.util.Map;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static javax.ws.rs.core.HttpHeaders.CONTENT_TYPE;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
+import java.util.Map;
 
 import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate;
 import org.jclouds.http.HttpRequest;
@@ -32,40 +33,32 @@ import org.jclouds.rest.MapBinder;
 
 import com.google.gson.Gson;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
 public class MultipartUploadBinder implements MapBinder {
 
-   private final String BOUNDARY_HEADER = "multipart_boundary";
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams)
-            throws IllegalArgumentException {
+   private static final String BOUNDARY_HEADER = "multipart_boundary";
 
+   @Override public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
       ObjectTemplate template = (ObjectTemplate) postParams.get("template");
       Payload payload = (Payload) postParams.get("payload");
 
       String contentType = checkNotNull(template.getContentType(), "contentType");
-      Long length = checkNotNull(template.getSize(), "contetLength");
+      Long length = checkNotNull(template.getSize(), "contentLength");
 
       StringPayload jsonPayload = Payloads.newStringPayload(new Gson().toJson(template));
 
       payload.getContentMetadata().setContentLength(length);
 
-      Part jsonPart = Part.create("Metadata", jsonPayload,
-               new Part.PartOptions().contentType(MediaType.APPLICATION_JSON));
+      Part jsonPart = Part.create("Metadata", jsonPayload, new Part.PartOptions().contentType(APPLICATION_JSON));
       Part mediaPart = Part.create(template.getName(), payload, new Part.PartOptions().contentType(contentType));
 
       MultipartForm compPayload = new MultipartForm(BOUNDARY_HEADER, jsonPart, mediaPart);
       request.setPayload(compPayload);
       // HeaderPart
-      request.toBuilder().replaceHeader(HttpHeaders.CONTENT_TYPE, "Multipart/related; boundary= " + BOUNDARY_HEADER)
-               .build();
+      request.toBuilder().replaceHeader(CONTENT_TYPE, "Multipart/related; boundary= " + BOUNDARY_HEADER).build();
       return request;
    }
 
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
+   @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) {
       return request;
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ObjectAccessControlsBinder.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ObjectAccessControlsBinder.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ObjectAccessControlsBinder.java
deleted file mode 100644
index 77218db..0000000
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ObjectAccessControlsBinder.java
+++ /dev/null
@@ -1,43 +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.googlecloudstorage.binders;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-
-import org.jclouds.googlecloudstorage.domain.templates.ObjectAccessControlsTemplate;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-public class ObjectAccessControlsBinder implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) throws IllegalArgumentException{
-      ObjectAccessControlsTemplate postBucket = (ObjectAccessControlsTemplate) postParams.get("template");
-      return bindToRequest(request, postBucket);
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ResumableUploadBinder.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ResumableUploadBinder.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ResumableUploadBinder.java
deleted file mode 100644
index bfa29c9..0000000
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/ResumableUploadBinder.java
+++ /dev/null
@@ -1,44 +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.googlecloudstorage.binders;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-
-import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-public class ResumableUploadBinder implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams)
-            throws IllegalArgumentException {
-      ObjectTemplate template = (ObjectTemplate) postParams.get("template");
-      return bindToRequest(request, template);
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/UploadBinder.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/UploadBinder.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/UploadBinder.java
index a218ec0..9b6fa4b 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/UploadBinder.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/binders/UploadBinder.java
@@ -24,9 +24,7 @@ import org.jclouds.rest.MapBinder;
 
 public class UploadBinder implements MapBinder {
 
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams)
-            throws IllegalArgumentException {
+   @Override public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
       Payload payload = (Payload) postParams.get("payload");
 
       request.getPayload().getContentMetadata().setContentType(payload.getContentMetadata().getContentType());
@@ -34,8 +32,7 @@ public class UploadBinder implements MapBinder {
       return bindToRequest(request, payload);
    }
 
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
+   @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) {
       return request;
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApi.java
index 34d090c..338b3ba 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApi.java
@@ -30,7 +30,6 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.googlecloudstorage.binders.BucketAccessControlsBinder;
 import org.jclouds.googlecloudstorage.domain.BucketAccessControls;
 import org.jclouds.googlecloudstorage.domain.ListBucketAccessControls;
 import org.jclouds.googlecloudstorage.domain.templates.BucketAccessControlsTemplate;
@@ -40,9 +39,7 @@ import org.jclouds.oauth.v2.config.OAuthScopes;
 import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PATCH;
-import org.jclouds.rest.annotations.PayloadParam;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.SkipEncoding;
 import org.jclouds.rest.binders.BindToJsonPayload;
@@ -96,9 +93,8 @@ public interface BucketAccessControlsApi {
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("/b/{bucket}/acl")
    @OAuthScopes(STORAGE_FULLCONTROL_SCOPE)
-   @MapBinder(BucketAccessControlsBinder.class)
    BucketAccessControls createBucketAccessControls(@PathParam("bucket") String bucketName,
-            @PayloadParam("template") BucketAccessControlsTemplate template);
+            @BinderParam(BindToJsonPayload.class) BucketAccessControlsTemplate template);
 
    /**
     * Permanently deletes the ACL entry for the specified entity on the specified bucket.

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketApi.java
index 71f6d95..ebb120d 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketApi.java
@@ -35,7 +35,6 @@ import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.Fallbacks.TrueOnNotFoundOr404;
 import org.jclouds.blobstore.BlobStoreFallbacks.NullOnKeyAlreadyExists;
-import org.jclouds.googlecloudstorage.binders.BucketBinder;
 import org.jclouds.googlecloudstorage.domain.Bucket;
 import org.jclouds.googlecloudstorage.domain.ListPage;
 import org.jclouds.googlecloudstorage.domain.templates.BucketTemplate;
@@ -50,9 +49,7 @@ import org.jclouds.oauth.v2.config.OAuthScopes;
 import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PATCH;
-import org.jclouds.rest.annotations.PayloadParam;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.SkipEncoding;
 import org.jclouds.rest.binders.BindToJsonPayload;
@@ -136,9 +133,8 @@ public interface BucketApi {
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("/b")
    @OAuthScopes(STORAGE_FULLCONTROL_SCOPE)
-   @MapBinder(BucketBinder.class)
    @Fallback(NullOnBucketAlreadyExists.class)
-   Bucket createBucket(@QueryParam("project") String projectId, @PayloadParam("template") BucketTemplate bucketTemplate);
+   Bucket createBucket(@QueryParam("project") String projectId, @BinderParam(BindToJsonPayload.class) BucketTemplate bucketTemplate);
 
    /**
     * Creates a new Bucket
@@ -158,10 +154,9 @@ public interface BucketApi {
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("/b")
    @OAuthScopes(STORAGE_FULLCONTROL_SCOPE)
-   @MapBinder(BucketBinder.class)
    @Fallback(NullOnKeyAlreadyExists.class)
    Bucket createBucket(@QueryParam("project") String projectId,
-            @PayloadParam("template") BucketTemplate bucketTemplate, InsertBucketOptions options);
+            @BinderParam(BindToJsonPayload.class) BucketTemplate bucketTemplate, InsertBucketOptions options);
 
    /**
     * Permanently deletes an empty Bucket.If bucket is not empty 409 error to indicate the conflict.  

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApi.java
index a1cb2a2..54dca83 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApi.java
@@ -31,20 +31,17 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.googlecloudstorage.binders.DefaultObjectAccessControlsBinder;
 import org.jclouds.googlecloudstorage.domain.DefaultObjectAccessControls;
-import org.jclouds.googlecloudstorage.domain.ListDefaultObjectAccessControls;
 import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole;
-import org.jclouds.http.HttpResponse;
+import org.jclouds.googlecloudstorage.domain.ListDefaultObjectAccessControls;
 import org.jclouds.googlecloudstorage.domain.templates.DefaultObjectAccessControlsTemplate;
+import org.jclouds.http.HttpResponse;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
 import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PATCH;
-import org.jclouds.rest.annotations.PayloadParam;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.SkipEncoding;
 import org.jclouds.rest.binders.BindToJsonPayload;
@@ -97,9 +94,8 @@ public interface DefaultObjectAccessControlsApi {
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/b/{bucket}/defaultObjectAcl")
    @OAuthScopes(STORAGE_FULLCONTROL_SCOPE)
-   @MapBinder(DefaultObjectAccessControlsBinder.class)
    DefaultObjectAccessControls createDefaultObjectAccessControls(@PathParam("bucket") String bucketName,
-            @PayloadParam("template") DefaultObjectAccessControlsTemplate template);
+            @BinderParam(BindToJsonPayload.class) DefaultObjectAccessControlsTemplate template);
 
    /**
     * Permanently deletes the DefaultObjectAcessControl entry for the specified entity on the specified bucket.

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectAccessControlsApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectAccessControlsApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectAccessControlsApi.java
index 2836c8f..5645757 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectAccessControlsApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectAccessControlsApi.java
@@ -31,7 +31,6 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.googlecloudstorage.binders.ObjectAccessControlsBinder;
 import org.jclouds.googlecloudstorage.domain.ListObjectAccessControls;
 import org.jclouds.googlecloudstorage.domain.ObjectAccessControls;
 import org.jclouds.googlecloudstorage.domain.templates.ObjectAccessControlsTemplate;
@@ -40,9 +39,7 @@ import org.jclouds.oauth.v2.config.OAuthScopes;
 import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PATCH;
-import org.jclouds.rest.annotations.PayloadParam;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.SkipEncoding;
 import org.jclouds.rest.binders.BindToJsonPayload;
@@ -126,9 +123,9 @@ public interface ObjectAccessControlsApi {
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/b/{bucket}/o/{object}/acl")
    @OAuthScopes(STORAGE_FULLCONTROL_SCOPE)
-   @MapBinder(ObjectAccessControlsBinder.class)
    ObjectAccessControls createObjectAccessControls(@PathParam("bucket") String bucketName,
-            @PathParam("object") String objectName, @PayloadParam("template") ObjectAccessControlsTemplate template);
+            @PathParam("object") String objectName,
+            @BinderParam(BindToJsonPayload.class) ObjectAccessControlsTemplate template);
 
    /**
     * Creates a new acl entry for specified object
@@ -150,9 +147,9 @@ public interface ObjectAccessControlsApi {
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/b/{bucket}/o/{object}/acl")
    @OAuthScopes(STORAGE_FULLCONTROL_SCOPE)
-   @MapBinder(ObjectAccessControlsBinder.class)
    ObjectAccessControls createObjectAccessControls(@PathParam("bucket") String bucketName,
-            @PathParam("object") String objectName, @PayloadParam("template") ObjectAccessControlsTemplate template,
+            @PathParam("object") String objectName,
+            @BinderParam(BindToJsonPayload.class) ObjectAccessControlsTemplate template,
             @QueryParam("generation") Long generation);
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java
index 93f67ad..77d6cf0 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java
@@ -34,7 +34,6 @@ import javax.ws.rs.core.MediaType;
 import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.Fallbacks.TrueOnNotFoundOr404;
-import org.jclouds.googlecloudstorage.binders.ComposeObjectBinder;
 import org.jclouds.googlecloudstorage.binders.MultipartUploadBinder;
 import org.jclouds.googlecloudstorage.binders.UploadBinder;
 import org.jclouds.googlecloudstorage.domain.GCSObject;
@@ -59,10 +58,10 @@ import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PATCH;
 import org.jclouds.rest.annotations.PayloadParam;
+import org.jclouds.rest.annotations.QueryParams;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
 import org.jclouds.rest.annotations.SkipEncoding;
-import org.jclouds.rest.annotations.QueryParams;
 import org.jclouds.rest.binders.BindToJsonPayload;
 
 /**
@@ -387,10 +386,9 @@ public interface ObjectApi {
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("storage/v1/b/{destinationBucket}/o/{destinationObject}/compose")
    @OAuthScopes(STORAGE_FULLCONTROL_SCOPE)
-   @MapBinder(ComposeObjectBinder.class)
    GCSObject composeObjects(@PathParam("destinationBucket") String destinationBucket,
             @PathParam("destinationObject") String destinationObject,
-            @PayloadParam("template") ComposeObjectTemplate composeObjectTemplate);
+            @BinderParam(BindToJsonPayload.class) ComposeObjectTemplate composeObjectTemplate);
 
    /**
     * Concatenates a list of existing objects into a new object in the same bucket.
@@ -411,10 +409,10 @@ public interface ObjectApi {
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("storage/v1/b/{destinationBucket}/o/{destinationObject}/compose")
    @OAuthScopes(STORAGE_FULLCONTROL_SCOPE)
-   @MapBinder(ComposeObjectBinder.class)
    GCSObject composeObjects(@PathParam("destinationBucket") String destinationBucket,
             @PathParam("destinationObject") String destinationObject,
-            @PayloadParam("template") ComposeObjectTemplate composeObjectTemplate, ComposeObjectOptions options);
+            @BinderParam(BindToJsonPayload.class) ComposeObjectTemplate composeObjectTemplate,
+            ComposeObjectOptions options);
 
    /**
     * Copies an object to a specified location. Optionally overrides metadata.
@@ -485,6 +483,6 @@ public interface ObjectApi {
    @OAuthScopes(STORAGE_FULLCONTROL_SCOPE)
    @MapBinder(MultipartUploadBinder.class)
    GCSObject multipartUpload(@PathParam("bucket") String bucketName,
-            @PayloadParam("template") ObjectTemplate objectTemplate, @PayloadParam("payload") Payload payload);
-
+            @BinderParam(BindToJsonPayload.class) ObjectTemplate objectTemplate,
+            @PayloadParam("payload") Payload payload);
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/3f59166b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ResumableUploadApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ResumableUploadApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ResumableUploadApi.java
index 91d822c..3f68e30 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ResumableUploadApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ResumableUploadApi.java
@@ -29,7 +29,6 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
-import org.jclouds.googlecloudstorage.binders.ResumableUploadBinder;
 import org.jclouds.googlecloudstorage.binders.UploadBinder;
 import org.jclouds.googlecloudstorage.domain.ResumableUpload;
 import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate;
@@ -38,12 +37,14 @@ import org.jclouds.googlecloudstorage.parser.ParseToResumableUpload;
 import org.jclouds.io.Payload;
 import org.jclouds.oauth.v2.config.OAuthScopes;
 import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PayloadParam;
 import org.jclouds.rest.annotations.QueryParams;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
 import org.jclouds.rest.annotations.SkipEncoding;
+import org.jclouds.rest.binders.BindToJsonPayload;
 
 /**
  * Provides Resumable Upload support via Rest API
@@ -105,12 +106,11 @@ public interface ResumableUploadApi {
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("/upload/storage/v1/b/{bucket}/o")
    @OAuthScopes(STORAGE_FULLCONTROL_SCOPE)
-   @MapBinder(ResumableUploadBinder.class)
    @ResponseParser(ParseToResumableUpload.class)
    ResumableUpload initResumableUpload(@PathParam("bucket") String bucketName,
             @HeaderParam("X-Upload-Content-Type") String contentType,
             @HeaderParam("X-Upload-Content-Length") Long contentLength,
-            @PayloadParam("template") ObjectTemplate metadata);
+            @BinderParam(BindToJsonPayload.class) ObjectTemplate metadata);
 
    /**
     * Stores a new object